- Vaaditut komponentit ja laitteiston asennus
- Nuvoton N76E003 -piirikaavio analogisen jännitteen lukemiseksi
- Tietoja GPIO- ja analogisista nastoista N76E003: ssa
- Tietoja ADC-oheislaitteesta N76E003: ssa
- N76E003: n ohjelmointi ADC: lle
- Koodin ja lähdön välkkyminen
Analoginen digitaalimuunnin (ADC) on mikro-ohjaimen eniten käytetty laitteisto-ominaisuus. Se ottaa analogisen jännitteen ja muuntaa sen digitaaliseksi arvoksi. Koska mikro-ohjaimet ovat digitaalisia laitteita ja toimivat binäärilukujen 1 ja 0 kanssa, se ei voinut käsitellä analogisia tietoja suoraan. Siten ADC: tä käytetään ottamaan analoginen jännite ja muuntamaan se vastaavaksi digitaaliseksi arvoksi, jonka mikrokontrolleri voi ymmärtää. Jos haluat lisätietoja analogisesta digitaalimuuntimeen (ADC), voit tarkistaa linkitetyn artikkelin.
Elektroniikassa on erilaisia antureita, jotka tuottavat analogista lähtöä, kuten MQ-kaasuanturit, ADXL335-kiihtyvyysanturi jne. Siten, käyttämällä analogista digitaalimuunninta, nämä anturit voidaan liittää mikrokontrolleriyksikköön. Voit myös tarkistaa muita alla lueteltuja oppaita ADC: n käytöstä muiden mikro-ohjainten kanssa.
- 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
- Kuinka käyttää ADC: tä MSP430G2: ssa - Analogisen jännitteen mittaaminen
- Kuinka käyttää ADC: tä STM32F103C8: ssa
Tässä opetusohjelmassa käytämme N76E003-mikrokontrolleriyksikön sisäänrakennettua ADC-oheislaitetta, joten arvioidaan, minkä tyyppisiä laitteistoasetuksia tarvitsemme tälle sovellukselle.
Vaaditut komponentit ja laitteiston asennus
Käyttää ADC on N76E003, käytämme jännitteen jakaja potentiometrillä ja lukea jännite vaihtelee 0V-5.0V. Jännite näkyy 16x2-merkkisessä nestekidenäytössä, jos olet uusi LCD-näytöllä ja N76E003, voit tarkistaa, kuinka LCD-näyttö liitetään Nuvoton N76E003 -laitteeseen. Siksi tärkein komponentti, jota tarvitaan tässä projektissa, on 16x2-merkkinen LCD. Tässä projektissa käytämme seuraavia komponentteja:
- Merkki LCD 16x2
- 1k vastus
- 50k potentiometri tai trimmausastia
- Muutama Berg-johto
- Muutama kytkentäjohto
- Leipälauta
Puhumattakaan, lukuun ottamatta yllä olevia komponentteja, tarvitsemme N76E003-mikrokontrolleripohjaisen kehityskortin sekä Nu-Link-ohjelmoijan. Tarvitaan myös ylimääräinen 5 V: n virtalähde, koska nestekidenäyttö vetää riittävästi virtaa, jota ohjelmoija ei pysty tuottamaan.
Nuvoton N76E003 -piirikaavio analogisen jännitteen lukemiseksi
Kuten kaaviosta voidaan nähdä, porttia P0 käytetään nestekidenäyttöön liittyvään yhteyteen. Vasemmassa reunassa näkyy ohjelmointirajapinnan yhteys. Potentiometri toimii jännitteenjakajana ja sen havaitsee analogitulo 0 (AN0).
Tietoja GPIO- ja analogisista nastoista N76E003: ssa
Seuraava kuva kuvaa N76E003AT20-mikrokontrolleriyksikön GPIO-nastoja. 20 nastasta kuitenkin käytetään LCD-liitäntää varten porttia P0 (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6 ja P0.7). Analogiset nastat on korostettu punaisilla väreillä.
Kuten voimme nähdä, Port P0: lla on maksimissaan analogisia nastoja, mutta niitä käytetään nestekidenäyttöön liittyvään viestintään. Täten P3.0 ja P1.7 ovat saatavana analogisina tulonastoina AIN1 ja AIN0. Koska tämä projekti vaatii vain yhden analogisen nastan, P1.7, joka on analoginen tulokanava 0, käytetään tähän projektiin.
Tietoja ADC-oheislaitteesta N76E003: ssa
N76E003 tarjoaa 12-bittisen SAR ADC: n. Se on N76E003: n erittäin hyvä ominaisuus, että sillä on erittäin hyvä resoluutio ADC: tä. ADC: ssä on 8-kanavaiset tulot yhden päätemoodissa. ADC: n liittäminen on melko yksinkertaista ja suoraviivaista.
Ensimmäinen vaihe on valita ADC-kanavatulo. N76E003-mikrokontrollereissa on käytettävissä 8-kanavaisia tuloja. ADC-tulojen tai I / O-nastojen valitsemisen jälkeen kaikki nastat on asetettava koodin suuntaan. Kaikki analogisessa tulossa käytettävät nastat ovat mikro-ohjaimen tuloliittimiä, joten kaikki nastat on asetettava vain sisääntulotilaksi (korkea impedanssi). Ne voidaan asettaa käyttämällä PxM1- ja PxM2-rekisteriä. Nämä kaksi rekisteriä asettavat I / O-tilat, joissa x tarkoittaa portin numeroa (esimerkiksi portti P1.0, rekisteri on P1M1 ja P1M2, P3.0: lle P3M1 ja P3M2 jne.) Konfigurointi voidaan näkyy alla olevassa kuvassa-
ADC: n konfigurointi tapahtuu kahdella rekisterillä ADCCON0 ja ADCCON1. ADCCON0-rekisterin kuvaus on esitetty alla.
Rekisterin ensimmäisiä 4 bittiä bitistä 0 bittiin 3 käytetään asettamaan ADC-kanavan valinta. Koska käytämme kanavaa AIN0, valinta on 0000 näille neljälle bitille.
Kuudes ja seitsemäs bitti ovat tärkeitä. ADCS: n on asetettava 1 ADC-muunnoksen aloittamista varten, ja ADCF antaa tietoja onnistuneesta ADC-muunnoksesta. Laiteohjelmiston on asetettava se 0: lle ADC-muunnoksen aloittamiseksi. Seuraava rekisteri on ADCCON1-
ADCCON1-rekisteriä käytetään pääasiassa ulkoisten lähteiden käynnistämään ADC-muunnokseen. Normaaleihin kyselyihin liittyviin operaatioihin vaaditaan kuitenkin ensimmäisen bitin ADCEN: n asetettava 1 ADC-piirien kytkemiseksi päälle.
Seuraavaksi ADC-kanavan tuloa on ohjattava AINDIDS- rekisterissä, jossa digitaaliset tulot voidaan irrottaa.
N tarkoittaa kanavan bitin (esimerkiksi AIN0 kanava täytyy ohjata ensimmäisen bitin P17DIDS on AINDIDS -rekisteri). Digitaalinen tulo on sallittava, muuten se lukee 0. Nämä kaikki ovat ADC: n perusasetuksia. Nyt ADCF: n tyhjentäminen ja ADCS: n asettaminen voi aloittaa ADC-muunnoksen. Muunnettu arvo on käytettävissä alla olevissa rekistereissä -
Ja
Molemmat rekisterit ovat 8-bittisiä. Koska ADC tarjoaa 12-bittistä dataa, ADCRH: ta käytetään täysikokoisena (8-bittistä) ja ADCRL: ää puolina (4-bittisenä).
N76E003: n ohjelmointi ADC: lle
Tietyn moduulin koodaus joka kerta on kiireinen työ, joten käytettävissä on yksinkertainen mutta tehokas LCD-kirjasto, josta on hyötyä 16x2-merkkiselle LCD-liitännälle N76E003: n kanssa. 16x2 LCD -kirjasto on saatavana Github-arkistostamme, jonka voi ladata alla olevasta linkistä.
Lataa Nuvoton N76E003: n 16x2 LCD-kirjasto
Ystävällisesti on kirjasto (kloonaamalla tai lataamalla) ja vain kuuluvat lcd.c ja LCD.h tiedostoja Keil N76E003 projekti helppo integrointi 16x2 LCD halutun sovelluksen tai hankkeen. Kirjasto tarjoaa seuraavat hyödylliset näyttöön liittyvät toiminnot
- Alusta nestekidenäyttö.
- Lähetä komento nestekidenäytölle.
- Kirjoita LCD-näyttöön.
- Aseta merkkijono LCD-näyttöön (16 merkkiä).
- Tulosta merkki lähettämällä heksadesimaaliarvo.
- Vieritä pitkiä viestejä, joissa on yli 16 merkkiä.
- Tulosta kokonaisluvut suoraan nestekidenäyttöön.
ADC: n koodaus on yksinkertaista. Asennustoiminnossa Enable_ADC_AIN0; käytetään ADC: n asettamiseen AIN0- tuloon. Tämä on määritelty tiedostossa.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
Joten yllä oleva rivi asettaa nastan tuloksi ja konfiguroi myös ADCCON0-, ADCCON1- rekisterin sekä AINDIDS- rekisterin. Alla oleva toiminto lukee ADC ADCRH- ja ADCRL- rekisteristä, mutta 12-bittisellä tarkkuudella.
unsigned int ADC_read (void) { rekisteröi allekirjoittamaton int adc_value = 0x0000; clr_ADCF; set_ADCS; kun (ADCF == 0); adc_value = ADCRH; adc_value << = 4; adc_value - = ADCRL; return adc_value; }
Bitti siirretään vasemmalle 4 kertaa ja lisätään sitten datamuuttujaan. Päätoiminnossa ADC lukee tietoja ja tulostuu suoraan näytölle. Jännite muunnetaan kuitenkin myös käyttämällä suhdetta tai jännitteen välistä suhdetta jaettuna bittiarvolla.
12-bittinen ADC tarjoaa 4095-bittisen 5.0V-tulon. Näin jakamalla 5,0 V / 4095 = 0,0012210012210012V
Joten yksi numero bittimuutoksia on yhtä suuri kuin muutokset 0,001 V: ssä (suunnilleen). Tämä tehdään alla esitetyssä päätoiminnossa.
void main (void) { int adc_data; perustaa(); lcd_com (0x01); kun (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("ADC-tiedot:"); adc_data = ADC_read (); lcd_print_numero (adc_data); jännite = adc_data * bit_to_voltage_ratio; sprintf (str_jännite, "Voltti:% 0,2fV", jännite); lcd_com (0xC0); lcd_puts (str_jännite); Timer0_Delay1ms (500); } }
Tiedot muunnetaan bittiarvosta jännitteeksi ja käyttämällä sprintf- toimintoa lähtö muunnetaan merkkijonoksi ja lähetetään nestekidenäytölle.
Koodin ja lähdön välkkyminen
Koodi palautti 0 varoituksen ja 0 virhettä, ja Keil välitti sen oletuksena vilkkuvalla menetelmällä. Näet vilkkuvan viestin alla. Jos olet uusi Keil tai Nuvoton, tutustu Nuvoton-mikrokontrollerin käytön aloittamiseen ymmärtääksesi perusteet ja koodin lataamisen.
Uudelleenrakennus aloitettiin: Projekti: ajastin Rakenna uudelleen kohde 'Kohde 1' koottaessa STARTUP.A51… kääntäen main.c… kääntäen lcd.c… kääntäen Delay.c… linkittäen… Ohjelman koko: data = 101.3 xdata = 0 code = 4162 heksatiedoston luominen ". \ Objects \ timer"… ". \ Objects \ timer" - 0 virhettä, 0 varoitusta. Kulunut koontiaika: 00:00:02 Lataa "G: \\ n76E003 \\ Display \\ Objects \\ timer" Flash Erase Done. Flash-kirjoitus valmis: 4162 tavua ohjelmoitu. Flash-vahvistus valmis: 4162 tavua vahvistettu. Salaman lataus päättyi klo 11:56:04
Alla olevassa kuvassa näkyy laitteisto, joka on kytketty virtalähteeseen DC-sovittimen avulla, ja näytössä näkyy potentiometrin asettama jännitelähtö oikealla.
Jos käännämme potentiometriä, myös ADC-nastalle annettu jännite muuttuu ja voimme huomata ADC-arvon ja analogisen jännitteen LCD-näytöllä. Voit tutustua alla olevaan videoon saadaksesi täydellisen esittelyn tästä opetusohjelmasta.
Toivottavasti pidit artikkelista ja opit jotain hyödyllistä. Jos sinulla on kysyttävää, jätä ne alla olevaan kommenttiosioon tai voit käyttää foorumeitamme lähettääksesi muita teknisiä kysymyksiä.