- Zahtevane komponente in namestitev strojne opreme
- Shema vezja Nuvoton N76E003 za odčitavanje analogne napetosti
- Informacije o GPIO in analognih zatičih v N76E003
- Informacije o ADC periferni napravi v N76E003
- Programiranje N76E003 za ADC
- Utripanje kode in izhoda
Analogno-digitalni pretvornik (ADC) je najpogosteje uporabljena funkcija strojne opreme mikrokrmilnika. Vzame analogno napetost in jo pretvori v digitalno vrednost. Ker so mikrokrmilniki digitalne naprave in delujejo z binarno številko 1 in 0, analognih podatkov ni mogel obdelati neposredno. Tako se ADC uporablja za sprejem analogne napetosti in njeno pretvorbo v enakovredno digitalno vrednost, ki jo mikrokrmilnik lahko razume. Če želite več o analogno-digitalnem pretvorniku (ADC), lahko preverite povezani članek.
V elektroniki so na voljo različni senzorji, ki zagotavljajo analogni izhod, na primer senzorji plina MQ, senzor pospeška ADXL335 itd. Tako lahko z uporabo analogno-digitalnega pretvornika ti senzorji povežejo z mikrokrmilnikom. Ogledate si lahko tudi druge spodaj navedene vadnice za uporabo ADC z drugimi mikrokrmilniki.
- Kako uporabljati ADC v Arduino Uno?
- Povezava ADC0808 z mikrokrmilnikom 8051
- Uporaba modula ADC mikrokrmilnika PIC
- Vadnica za ADC Raspberry Pi
- Kako uporabljati ADC v MSP430G2 - Merjenje analogne napetosti
- Kako uporabljati ADC v STM32F103C8
V tej vadnici bomo uporabili vgrajeno periferno enoto ADC mikrokrmilne enote N76E003, zato ocenimo, kakšno nastavitev strojne opreme potrebujemo za to aplikacijo.
Zahtevane komponente in namestitev strojne opreme
Za uporabo ADC na N76E003 bomo uporabili napetostni delilnik s pomočjo potenciometra in odčitali napetost od 0V do 5,0V. Napetost bo prikazana na 16-krat značnem LCD-ju. Če ste novi pri LCD-ju in N76E003, lahko preverite, kako vmesnik LCD-ja povežete z Nuvoton N76E003. Tako je glavna komponenta, ki je potrebna za ta projekt, 16-kratni LCD. Za ta projekt bomo uporabili spodnje komponente -
- Znak LCD 16x2
- 1k upor
- 50k potenciometer ali trim lonec
- Nekaj Bergovih žic
- Nekaj priključnih žic
- Breadboard
Da ne omenjam, razen zgornjih komponent potrebujemo razvojno ploščo na osnovi mikrokrmilnika N76E003 in Nu-Link programer. Potrebna je tudi dodatna napajalna enota s 5 V, saj LCD potegne dovolj toka, ki ga programer ni mogel zagotoviti.
Shema vezja Nuvoton N76E003 za odčitavanje analogne napetosti
Kot lahko vidimo v shemi, se vrata P0 uporabljajo za povezavo, povezano z LCD. Skrajno levo je prikazana povezava s programskim vmesnikom. Potenciometer deluje kot delilnik napetosti, ki ga zazna analogni vhod 0 (AN0).
Informacije o GPIO in analognih zatičih v N76E003
Spodnja slika prikazuje zatiče GPIO, ki so na voljo na mikrokrmilni enoti N76E003AT20. Vendar pa se od 20 zatičev za povezavo, povezano z LCD-jem, uporabljajo vrata P0 (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6 in P0.7). Analogni zatiči so označeni v RDEČIH barvah.
Kot lahko vidimo, ima vrata P0 največ analognih zatičev, vendar se ti uporabljajo za komunikacijo, povezano z LCD. Tako sta P3.0 in P1.7 na voljo kot analogna vhodna zatiča AIN1 in AIN0. Ker ta projekt zahteva samo en analogni zatič, se za ta projekt uporablja P1.7, ki je analogni vhodni kanal 0.
Informacije o ADC periferni napravi v N76E003
N76E003 ponuja 12-bitni ADC ADR. Zelo dobra lastnost N76E003 je, da ima zelo dobro ločljivost ADC. ADC ima 8-kanalne vhode v enojnem načinu. Povezava z ADC je precej preprosta in enostavna.
Prvi korak je izbira vhoda kanala ADC. V mikrokrmilnikih N76E003 so na voljo 8-kanalni vhodi. Po izbiri vhodov ADC ali V / I zatiči morajo biti vsi zatiči nastavljeni za smer v kodi. Vsi zatiči, ki se uporabljajo za analogni vhod, so vhodni zatiči mikrokrmilnika, zato morajo biti vsi zatiči nastavljeni kot način samo z vhodom (visoka impedanca). Te lahko nastavite s pomočjo registrov PxM1 in PxM2. Ta dva registra nastavita načina V / I, kjer x pomeni številko vrat (na primer, vrata P1.0 bodo registra P1M1 in P1M2, za P3.0 pa P3M1 in P3M2 itd.) lahko vidite na spodnji sliki-
Konfiguracijo ADC opravita dva registra ADCCON0 in ADCCON1. Opis registra ADCCON0 je prikazan spodaj.
Prvih 4 bitov registra od bita 0 do bita 3 se uporablja za nastavitev izbire kanala ADC. Ker uporabljamo kanal AIN0, bo izbira 0000 za te štiri bite.
Pomembna sta 6. in 7. bit. ADCS mora nastaviti 1 za začetek pretvorbe ADC, ADCF pa bo zagotovil informacije o uspešni pretvorbi ADC. Za zagon pretvorbe ADC mora vdelana programska oprema nastaviti 0. Naslednji register je ADCCON1-
Register ADCCON1 se v glavnem uporablja za pretvorbo ADC, ki jo sprožijo zunanji viri. Za običajne operacije, povezane z anketiranjem, pa mora prvi bit ADCEN nastaviti 1 za vklop vezja ADC.
Nato je treba vhod kanala ADC nadzorovati v registru AINDIDS, kjer je mogoče digitalne vhode odklopiti.
N pomeni bit kanala (na primer, kanal AIN0 bo treba nadzorovati s prvim bitom P17DIDS iz registra AINDIDS). Digitalni vhod mora biti omogočen, sicer se bo zapisal kot 0. Vse to je osnovna nastavitev ADC. Zdaj lahko počistite ADCF in nastavite ADCS pretvorbo ADC. Pretvorjena vrednost bo na voljo v spodnjih registrih -
In
Oba registra sta 8-bitna. Ker ADC zagotavlja 12-bitne podatke, se ADCRH uporablja kot poln (8-bitni), ADCRL pa kot polovica (4-bitni).
Programiranje N76E003 za ADC
Vsakokratno kodiranje določenega modula je grozno delo, zato je na voljo preprosta, a zmogljiva knjižnica LCD, ki bo zelo koristna za 16-kratni znak LCD-povezave z N76E003. Knjižnica LCD 16x2 je na voljo v našem skladišču Github, ki ga lahko prenesete s spodnje povezave.
Prenesite knjižnico LCD 16x2 za Nuvoton N76E003
Na voljo je knjižnica (s kloniranjem ali prenosom) in samo vključite datoteke lcd.c in LCD.h v svoj projekt Keil N76E003 za enostavno integracijo LCD 16x2 v želeno aplikacijo ali projekt. Knjižnica bo nudila naslednje uporabne funkcije, povezane z zaslonom -
- Inicializirajte LCD.
- Pošlji ukaz na LCD.
- Pišite na LCD.
- V LCD vstavite niz (16 znakov).
- Natisni znak s pošiljanjem šestnajstiške vrednosti.
- Pomaknite se po dolgih sporočilih z več kot 16 znaki.
- Natisnite celoštevilčne številke neposredno na LCD.
Kodiranje za ADC je preprosto. V nastavitveni funkciji Enable_ADC_AIN0; se uporablja za nastavitev ADC za vhod AIN0 . To je določeno v datoteki.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
Torej, zgornja vrstica nastavi pin kot vhod in konfigurira register ADCCON0, ADCCON1 in tudi register AINDIDS . Spodnja funkcija bo prebrala ADC iz registra ADCRH in ADCRL, vendar z 12-bitno ločljivostjo.
unsigned int ADC_read (void) { register unsigned int adc_value = 0x0000; clr_ADCF; set_ADCS; medtem ko (ADCF == 0); adc_value = ADCRH; adc_value << = 4; adc_value - = ADCRL; vrni adc_value; }
Bit se 4-krat premakne levo in nato doda podatkovni spremenljivki. V glavni funkciji ADC bere podatke in se natisne neposredno na zaslon. Vendar se napetost pretvori tudi z uporabo razmerja ali razmerja med napetostjo, deljeno z bitno vrednostjo.
12-bitni ADC bo zagotavljal 4095 bit na vhodu 5,0 V. Tako se deli 5,0 V / 4095 = 0,0012210012210012V
Torej, ena števka bitnih sprememb bo enaka spremembam v 0,001V (približno). To se naredi v glavni funkciji, prikazani spodaj.
void main (void) { int adc_data; nastaviti(); lcd_com (0x01); medtem ko (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("ADC podatki:"); adc_data = ADC_read (); lcd_print_number (adc_data); napetost = adc_data * bit_to_voltage_ratio; sprintf (str_voltage, "Volt:% 0,2fV", napetost); lcd_com (0xC0); lcd_puts (str_voltage); Timer0_Delay1ms (500); } }
Podatki se pretvorijo iz bitne vrednosti v napetost in s pomočjo funkcije sprintf se izhod pretvori v niz in pošlje na LCD.
Utripanje kode in izhoda
Koda je vrnila 0 opozoril in 0 napak in jo je Keil utripal z uporabo privzete metode utripanja, utripajoče sporočilo lahko vidite spodaj. Če ste Keil ali Nuvoton prvič, si oglejte uvod v mikrokrmilnik Nuvoton, če želite razumeti osnove in kako naložiti kodo.
Obnova se je začela: Projekt: časovnik Obnova cilja 'Target 1' sestavljanje STARTUP.A51… sestavljanje main.c… sestavljanje lcd.c… sestavljanje Delay.c… povezovanje… Velikost programa: data = 101.3 xdata = 0 code = 4162 ustvarjanje šestnajstiške datoteke iz ". \ Objects \ timer"… ". \ Objects \ timer" - 0 Napake, 0 Opozorila. Čas gradnje potekel: 00:00:02 Naloži "G: \\ n76E003 \\ Display \\ Objects \\ timer" Flash Erase Done. Flash Write Done: programirano 4162 bajtov. Flash Verify Končano: preverjeno 4162 bajtov. Nalaganje bliskavice je končano ob 11:56:04
Spodnja slika prikazuje strojno opremo, priključeno na vir napajanja z enosmernim adapterjem, zaslon pa prikazuje napetost, ki jo nastavi potenciometer na desni.
Če zavrtimo potenciometer, se bo spremenila tudi napetost, podana na zatič ADC, in na LCD-prikazovalniku bomo opazili vrednost ADC in analogno napetost. V spodnjem videoposnetku si lahko ogledate celoten delovni prikaz te vadnice.
Upam, da vam je bil članek všeč in ste se naučili kaj koristnega. Če imate vprašanja, jih pustite v spodnjem oddelku za komentarje ali pa uporabite naše forume za objavo drugih tehničnih vprašanj.