Yksi yleinen piirre, jota käytetään melkein kaikissa sulautetuissa sovelluksissa, on ADC-moduuli (analoginen digitaalimuunnin). Nämä analogisesta digitaaliseen muuntimet voivat lukea jännitteen analogisista antureista, kuten lämpötila-anturista, kallistustunnistimesta, virta-anturista, Flex-anturista ja paljon muuta. Joten tässä opetusohjelmassa opimme käyttämään ADC: tä MSP430G2: ssa analogisten jännitteiden lukemiseen Energia IDE: n avulla. Liitämme pienen potentiometrin MSP-korttiin ja syötämme vaihtelevaa jännitettä analogiseen tapiin, luemme jännitteen ja näytämme sen sarjamonitorissa.
ADC-moduulin ymmärtäminen:
Luota minuun, MSP430G2: n yhdistäminen ja ohjelmointi tuskin vie 10 minuuttia lukemaan analogista jännitettä. Vietkäämme kuitenkin jonkin aikaa ymmärtämään MSP-levyn ADC-moduulia, jotta voimme käyttää sitä tehokkaasti kaikissa tulevissa projekteissamme.
Mikrokontrolleri on digitaalinen laite, mikä tarkoittaa, että se voi ymmärtää vain 1: n ja 0: n. Mutta todellisessa maailmassa melkein kaikki, kuten lämpötila, kosteus, tuulen nopeus jne., Ovat luonteeltaan analogisia. Voidakseen olla vuorovaikutuksessa näiden analogisten muutosten kanssa mikro-ohjain käyttää moduulia nimeltä ADC. Saatavilla on monia erityyppisiä ADC-moduuleja, MSP: ssä käytetään SAR-kanavan 10-bittistä ADC: tä.
Peräkkäisen lähentämisen (SAR) ADC: SAR ADC toimii vertailijan ja joidenkin loogisten keskustelujen avulla. Tämän tyyppinen ADC käyttää referenssijännitettä (joka on muuttuva) ja vertaa tulojännitettä vertailujännitteeseen vertailujännitteellä ja ero, joka tulee olemaan digitaalinen lähtö, tallennetaan merkittävimmältä bitiltä (MSB). Vertailun nopeus riippuu kellotaajuudesta (Fosc), jolla MSP toimii.
10-bittinen tarkkuus: Tämä ADC on 8-kanavainen 10-bittinen ADC. Tässä termi 8 kanavaa tarkoittaa, että on olemassa 8 ADC-nastaa, joiden avulla voimme mitata analogista jännitettä. Termi 10-bittinen tarkoittaa ADC: n resoluutiota. 10-bittinen tarkoittaa 2 kymmenen (2 10) tehoon, joka on 1024. Tämä on ADC: n esimerkkivaiheiden määrä, joten ADC-arvojemme alue on 0-1023. Arvo nousee 0: sta arvoon 102 1023 perustuen jännitteen arvoon askelta kohti, joka voidaan laskea alla olevan kaavan avulla
Huomaa: Oletusarvoisesti Energiassa referenssijännite on Vcc (~ 3v), referenssijännitettä voi muuttaa käyttämällä analogReference () -vaihtoehtoa.
Tarkista myös, kuinka ADC liitetään muihin mikrokontrollereihin:
- Kuinka käyttää ADC: tä Arduino Unossa?
- ADC0808: n ja 8051-mikrokontrollerin liitäntä
- Käyttämällä PIC-mikrokontrollerin ADC-moduulia
- Vadelma Pi ADC -opastus
Piirikaavio:
Edellisessä opetusohjelmassa olemme jo oppineet, kuinka LCD-näyttö liitetään MSP430G2: een, nyt aiomme vain lisätä potentiometrin MSP430: een toimittamaan sille muuttuvaa jännitettä ja näyttämään jännitteen arvon LCD-näytöllä. Jos et ole tietoinen nestekidenäytön liittämisestä, palaa takaisin yllä olevaan linkkiin ja lue se läpi, koska ohitan tiedot parannuksen välttämiseksi. Projektin täydellinen piirikaavio on annettu alla.
Kuten näette, täällä on kaksi potentiometriä, yhtä käytetään LCD-näytön kontrastin asettamiseen, kun taas toista käytetään vaihtelevan jännitteen syöttämiseen piirilevylle. Tuossa potentiometrissä potentiometrin toinen pää on kytketty Vcc: hen ja toinen pää maahan. Keskitappi (sininen johto) on kytketty tapiin P1.7. Tämä nasta P1.7 tarjoaa vaihtelevan jännitteen välillä 0 V (maa) - 3,5 V (Vcc). Joten meidän on ohjelmoitava nasta P1.7 lukemaan tämä vaihteleva jännite ja näyttämään se LCD-näytöllä.
Energiassa meidän on tiedettävä, mihin analogiseen kanavaan nasta P1.7 kuuluu? Tämä löytyy viittaamalla alla olevaan kuvaan
Oikealla puolella näkyy P1.7-tappi, tämä tappi kuuluu malliin A7 (kanava 7). Vastaavasti löydämme vastaavan kanavanumeron myös muille nastoille. Voit käyttää mitä tahansa nastoja välillä A0 - A7 analogisten jännitteiden lukemiseen.
MSP430: n ohjelmointi ADC: lle:
MSP430: n ohjelmointi analogisen jännitteen lukemiseen on hyvin yksinkertaista. Tässä ohjelmassa luetaan arvon analogia ja lasketaan jännite tällä arvolla ja näytetään sitten molemmat LCD-näytöllä. Täydellinen ohjelma löytyy alareunassa tämän sivun, alempana olen selittää ohjelman katkelmia auttaa sinua ymmärtämään paremmin.
Aloitamme määrittelemällä LCD-nastat. Nämä määrittävät, mihin MSP430: n tapaan LCD-nastat on kytketty. Voit ohjata yhteyttä, jotta voit varmistaa, että nastat on kytketty vastaavasti
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
Seuraavaksi sisällytämme LCD-näytön otsikkotiedoston. Tämä kutsuu kirjaston, joka sisältää koodin siitä, kuinka MSP: n tulisi olla yhteydessä nestekidenäyttöön. Tämä kirjasto asennetaan oletuksena Energia IDE: hen, joten sinun ei tarvitse vaivautua sen lisäämiseen. Varmista myös, että toimintoa Liquid Crystal kutsutaan edellä määritellyillä pin-nimillä.
#sisältää
Sisällä setup () -toiminto, olisimme vain antaa intro viesti näytetään LCD-näytöllä. En pääse kovin syvälle, koska olemme jo oppineet käyttämään LCD-näyttöä MSP430G2: n kanssa.
lcd.begin (16, 2); // Käytämme 16 * 2 LCD-näyttöä lcd.setCursor (0,0); // Aseta kohdistin ensimmäisen rivin 1. sarakkeeseen lcd.print ("MSP430G2553"); // Näytä intro-viesti lcd.setCursor (0, 1); // aseta kohdistin 1. sarakkeen 2. riville lcd.print ("- CircuitDigest"); // Näytä esittelyviesti
Lopuksi infinite loop () -toimintomme sisällä aloitamme A7-nastalle syötetyn jännitteen lukemisen. Kuten jo keskustelimme, mikrokontrolleri on digitaalinen laite eikä se pysty lukemaan suoraan jännitetasoa. SAR-tekniikkaa käytettäessä jännitetaso kartoitetaan välillä 0 - 1024. Näitä arvoja kutsutaan ADC-arvoiksi, jotta saat tämän ADC-arvon, käytä vain seuraavaa riviä
int val = analoginen luku (A7); // lue ADC-arvo nastasta A7
Tässä funktiota analogRead () käytetään nastan analogiarvon lukemiseen, olemme määritelleet A7: n sen sisällä, koska olemme liittäneet muuttuvan jännitteen tapiin P1.7. Lopuksi tallennamme tämän arvon muuttujaan nimeltä " val ". Tämän muuttujan tyyppi on kokonaisluku, koska saamme tähän arvoon vain arvot, jotka vaihtelevat välillä 0-1024.
Seuraava vaihe olisi laskea jännitteen arvo ADC-arvosta. Tätä varten meillä on seuraavat kaavat
Jännite = (ADC-arvo / ADC-tarkkuus) * Referenssijännite
Tapauksessamme tiedämme jo, että mikrokontrollerimme ADC-resoluutio on 1024. ADC-arvo löytyy myös edelliseltä riviltä ja tallentaa muuttujan nimeltä val. Viite jännite on yhtä suuri kuin jännite, jolla mikro-ohjain toimii. Kun MSP430 lauta on kytketty USB-kaapelin kautta sitten käyttöjännite on 3.6V. Voit myös mitata käyttöjännitteen käyttämällä yleismittaria piirilevyn Vcc: n ja maadoitustapin poikki. Joten yllä oleva kaava sopii tapauksemme alla olevan kuvan mukaisesti
kelluvajännite = (kelluva (val) / 1024) * 3,6; // kaavat ADC-arvon muuntamiseksi jännitteeksi
Saatat olla sekoitettu viivan kelluntaan (val). Tätä käytetään muuttamaan muuttuja "val" int-tietotyypistä "float" -tietotyypiksi. Tätä muunnosta tarvitaan, koska vain jos saamme val / 1024: n tuloksen uimurina, voimme kertoa sen 3,6. Jos arvo vastaanotetaan kokonaislukuna, se on aina 0 ja tulos on myös nolla. Kun olemme laskeneet ADC-arvon ja jännitteen, jäljellä on vain näyttää tulos LCD-näytöllä, joka voidaan tehdä seuraavilla riveillä
lcd.setCursor (0, 0); // aseta kohdistin sarakkeeseen 0, rivi 0 lcd.print ("ADC Val:"); lcd.print (val); // Näytä ADC-arvo lcd.setCursor (0, 1); // aseta kohdistin sarakkeeseen 0, rivi 1 lcd.print ("Jännite:"); lcd.print (jännite); // Näytön jännite
Tässä olemme esittäneet ADC: n arvon ensimmäisellä rivillä ja jännitteen arvon toisella rivillä. Lopuksi annamme 100 millisekunnin viiveen ja tyhjennämme LCD-näytön. Tämä oli arvo päivitetään jokaista 100 mil.
Tuloksen testaaminen!
Lopuksi tulemme hauskaan osaan, joka testaa ohjelmaa ja leikkii sen kanssa. Tee vain liitännät piirikaavion mukaisesti. Olen käyttänyt pientä leipälautaa liitäntöjen tekoon ja yhdysjohtoja liittäen leipälautan MSP430: een. Kun yhteydet on tehty, minun näytti tältä alla.
Lataa sitten alla annettu ohjelma MSP430-kortille Energia IDE: n kautta. Sinun pitäisi pystyä näkemään esittelyteksti nestekidenäytöltä, ellei säädä nestekidenäytön kontrastia potentiometrillä, kunnes näet selkeät sanat. Yritä myös painaa nollauspainiketta. Jos asiat toimivat odotetusti, sinun pitäisi pystyä näkemään seuraava näyttö.
Vaihda nyt potentiometriä ja sinun pitäisi myös nähdä nestekidenäytössä näkyvän jännitteen vaihtelevan. Tarkistetaan, mittaammeko jännite oikein, mittaa jännite POT: n keskipisteen ja maan läpi yleismittarilla. Yleismittarissa näkyvän jännitteen tulee olla lähellä nestekidenäytössä näkyvää arvoa, kuten alla olevassa kuvassa näkyy.
Se on, olemme oppineet mittaamaan analogisen jännitteen MSP430-kortin ADC: llä. Nyt voimme liittää monia analogisia antureita korttiimme lukemaan reaaliaikaisia parametreja. Toivottavasti ymmärrät opetusohjelman ja nautit sen oppimisesta, jos sinulla on ongelmia, ota yhteyttä alla olevan kommenttiosan tai foorumien kautta. Otetaan kiinni toisesta MSP430: n opetusohjelmasta, jossa on uusi uusi aihe.