- Požadované komponenty a nastavenie hardvéru
- Schéma zapojenia obvodu Nuvoton N76E003 na čítanie analógového napätia
- Informácie o GPIO a analógových kolíkoch v N76E003
- Informácie o ADC Periférne zariadenie v N76E003
- Programovanie N76E003 pre ADC
- Bliká kód a výstup
Analogovo-digitálny prevodník (ADC) je najpoužívanejšou hardvérovou funkciou mikrokontroléra. Prijíma analógové napätie a prevádza ho na digitálnu hodnotu. Pretože mikrokontroléry sú digitálne zariadenia a pracujú s binárnymi číslicami 1 a 0, nemohlo analógové údaje spracovať priamo. ADC sa teda používa na príjem analógového napätia a jeho premenu na ekvivalentnú digitálnu hodnotu, ktorej mikrokontrolér rozumie. Ak chcete viac informácií o analógovo-digitálnom prevodníku (ADC), môžete si pozrieť prepojený článok.
V elektronike sú k dispozícii rôzne senzory, ktoré poskytujú analógový výstup, napríklad senzory plynu MQ, senzor akcelerometra ADXL335 atď. Pomocou analógovo-digitálneho prevodníka je teda možné tieto senzory prepojiť s jednotkou mikrokontroléra. Môžete si tiež pozrieť ďalšie návody uvedené nižšie, ktoré sa týkajú používania ADC s inými mikrokontrolérmi.
- Ako používať ADC v Arduino Uno?
- Prepojenie ADC0808 s mikrokontrolérom 8051
- Pomocou modulu ADC mikrokontroléra PIC
- Výukový program ADC pre Raspberry Pi
- Ako používať ADC v MSP430G2 - Meranie analógového napätia
- Ako používať ADC v STM32F103C8
V tomto tutoriále použijeme zabudovanú perifériu ADC jednotky mikrokontroléra N76E003, takže poďme zhodnotiť, aké nastavenie hardvéru vyžadujeme pre túto aplikáciu.
Požadované komponenty a nastavenie hardvéru
Na použitie ADC na N76E003 použijeme delič napätia pomocou potenciometra a prečítame napätie v rozmedzí od 0V do 5,0V. Napätie sa zobrazí na 16-znakovom LCD displeji. Ak ste noví s LCD a N76E003, môžete skontrolovať, ako prepojiť LCD s Nuvoton N76E003. Hlavnou súčasťou požadovanou pre tento projekt je teda 16x2 znakový LCD. Pre tento projekt použijeme nasledujúce komponenty -
- Znakový LCD 16x2
- 1k rezistor
- 50 000 potenciometer alebo trimovací hrniec
- Niekoľko Bergových drôtov
- Niekoľko pripojovacích káblov
- Nepál
Nehovoriac o tom, že okrem vyššie uvedených komponentov potrebujeme vývojovú dosku na báze mikrokontroléra N76E003, ako aj programátor Nu-Link. Je tiež potrebný ďalší zdroj napájania 5 V, pretože displej LCD odoberá dostatočný prúd, ktorý programátor nemohol poskytnúť.
Schéma zapojenia obvodu Nuvoton N76E003 na čítanie analógového napätia
Ako je vidieť na schéme, port P0 sa používa na pripojenie spojené s LCD. Úplne vľavo je zobrazené pripojenie programovacieho rozhrania. Potenciometer slúži ako delič napätia a je snímaný analógovým vstupom 0 (AN0).
Informácie o GPIO a analógových kolíkoch v N76E003
Nasledujúci obrázok ilustruje piny GPIO dostupné v jednotke mikrokontroléra N76E003AT20. Avšak z 20 pinov sa na pripojenie spojené s LCD používa port P0 (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6 a P0.7). Analógové piny sú zvýraznené ČERVENÝMI farbami.
Ako vidíme, port P0 má maximum analógových pinov, ale tie sa používajú na komunikáciu spojenú s LCD. Preto sú P3.0 a P1.7 k dispozícii ako analógové vstupné piny AIN1 a AIN0. Pretože tento projekt vyžaduje iba jeden analógový pin, pre tento projekt sa použije P1.7, ktorý je analógovým vstupným kanálom 0.
Informácie o ADC Periférne zariadenie v N76E003
N76E003 poskytuje 12-bitový ADC SAR. Je to veľmi dobrá vlastnosť N76E003, že má veľmi dobré rozlíšenie ADC. ADC má 8-kanálové vstupy v režime jedného konca. Rozhranie ADC je dosť jednoduché a priame.
Prvým krokom je výber vstupu kanálu ADC. V mikrokontroléroch N76E003 sú k dispozícii 8-kanálové vstupy. Po výbere vstupov ADC alebo I / O pinov je potrebné nastaviť všetky piny pre smer v kóde. Všetky piny použité pre analógový vstup sú vstupné piny mikrokontroléra, takže všetky piny je potrebné nastaviť ako režim Iba vstup (s vysokou impedanciou). Tieto sa dajú nastaviť pomocou registrov PxM1 a PxM2. Tieto dva registre nastavujú I / O režimy, kde x predstavuje číslo portu (napríklad Port P1.0 bude register P1M1 a P1M2, pre P3.0 to budú P3M1 a P3M2 atď.) Konfiguráciu je možné je vidieť na obrázku nižšie -
Konfigurácia ADC sa vykonáva dvoma registrami ADCCON0 a ADCCON1. Popis registra ADCCON0 je uvedený nižšie.
Prvé 4 bity registra od bitu 0 do bitu 3 sa používajú na nastavenie výberu kanálu ADC. Pretože používame kanál AIN0, výber bude pre tieto štyri bity 0000.
Dôležitá je 6. a 7. bit. ADCS je povinný nastaviť 1 na začatie konverzie ADC a ADCF poskytne informácie o úspešnej konverzii ADC. Je potrebné, aby bol firmvérom nastavený na 0 na spustenie konverzie ADC. Ďalším registrom je ADCCON1-
Register ADCCON1 sa používa hlavne na prevod ADC vyvolaný externými zdrojmi. Pre bežné operácie spojené s dopytovaním je však pri prvom zapnutí ADCEN vyžadované nastavenie 1 na zapnutie obvodov ADC.
Ďalej je potrebné riadiť vstup kanálu ADC v registri AINDIDS, kde je možné digitálne vstupy odpojiť.
N značí kanálového bitu (napríklad AIN0 kanála bude musieť byť riadená pomocou prvý bit P17DIDS z AINDIDS registra). Je potrebné povoliť digitálny vstup, inak bude mať hodnotu 0. Toto všetko je základné nastavenie ADC. Teraz je možné spustiť Prečistenie ADCF a nastavenie ADCS prepočtu ADC. Prepočítaná hodnota bude k dispozícii v registroch nižšie -
A
Oba registre sú 8-bitové. Pretože ADC poskytuje 12-bitové dáta, ADCRH sa používa ako plný (8-bitov) a ADCRL sa používa ako polovičný (4-bitov).
Programovanie N76E003 pre ADC
Zakódovanie konkrétneho modulu je zakaždým hektickou prácou, a preto je k dispozícii jednoduchá, ale výkonná knižnica LCD, ktorá bude veľmi užitočná pre rozhranie LCD s rozmermi 16 x 2 znakov s N76E003. Knižnica LCD 16x2 je k dispozícii v našom úložisku Github, ktoré si môžete stiahnuť z nasledujúceho odkazu.
Stiahnite si 16x2 LCD knižnicu pre Nuvoton N76E003
K dispozícii je knižnica (klonovaním alebo stiahnutím) a do projektu Keil N76E003 jednoducho zahrňte súbory lcd.c a LCD.h pre ľahkú integráciu 16x2 LCD do požadovanej aplikácie alebo projektu. Knižnica bude poskytovať nasledujúce užitočné funkcie súvisiace s displejom -
- Inicializujte LCD.
- Pošlite príkaz na LCD.
- Napíšte na LCD.
- Na LCD vložte reťazec (16 znakov).
- Vytlačte znak zaslaním hexadecimálnej hodnoty.
- Posúvajte dlhé správy s viac ako 16 znakmi.
- Tlačte celé čísla priamo na LCD.
Kódovanie ADC je jednoduché. Vo funkcii nastavenia Enable_ADC_AIN0; sa používa na nastavenie ADC pre vstup AIN0 . Toto je definované v súbore.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
Vyššie uvedený riadok teda nastavuje pin ako vstup a konfiguruje tiež registre ADCCON0, ADCCON1 a AINDIDS . Nasledujúca funkcia načíta ADC z registrov ADCRH a ADCRL, ale s 12-bitovým rozlíšením.
unsigned int ADC_read (void) { register unsigned int adc_value = 0x0000; clr_ADCF; set_ADCS; while (ADCF == 0); adc_value = ADCRH; adc_value << = 4; adc_value - = ADCRL; return adc_value; }
Bit je posunutý doľava 4-krát a potom je pridaný do dátovej premennej. V hlavnej funkcii číta ADC dáta a tlačí sa priamo na displej. Napätie sa však tiež prevádza pomocou pomeru alebo vzťahu medzi napätím vydeleným bitovou hodnotou.
12-bitový ADC poskytne 4095 bitov na vstupe 5,0 V. Teda delenie 5,0V / 4095 = 0,0012210012210012V
Takže 1 číslica bitových zmien sa bude rovnať zmenám v 0,001 V (približne). To sa deje v hlavnej funkcii zobrazenej nižšie.
void main (void) { int adc_data; nastaviť(); lcd_com (0x01); while (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("Údaje ADC:"); adc_data = ADC_read (); lcd_print_number (adc_data); voltage = adc_data * bit_to_voltage_ratio; sprintf (str_voltage, "Volt:% 0,2fV", napätie); lcd_com (0xC0); lcd_puts (str_voltage); Timer0_Delay1ms (500); } }
Dáta sa prevádzajú z bitovej hodnoty na napätie a pomocou funkcie sprintf sa výstup prevedie na reťazec a odošle sa na LCD.
Bliká kód a výstup
Kód vrátil 0 varovaní a 0 chýb a bol bliknutý pomocou predvolenej metódy blikania pomocou Keila, blikajúcu správu vidíte nižšie. Ak ste v Keil alebo Nuvoton nováčikom, pozrite si základné informácie o mikrokontroléri Nuvoton, aby ste pochopili základné informácie a postup načítania kódu.
Opätovné zostavenie bolo zahájené: Projekt: časovač Opätovné zostavenie cieľa „Cieľ 1“, zostavenie STARTUP.A51… kompilácia main.c… kompilácia lcd.c… kompilácia Delay.c… prepojenie… Veľkosť programu: dáta = 101,3 xdata = 0 code = 4162 vytváranie hexadecimálnych súborov z ". \ Objects \ timer"… ". \ Objects \ timer" - 0 chýb, 0 varovaní. Uplynutý čas výstavby: 00:00:02 Načítanie „G: \\ n76E003 \\ Zobrazenie \\ Objekty \\ časovač" Vymazanie blesku Hotovo. Flash Write Done: 4 162 bajtov naprogramovaných. Flash Verify Hotovo: 4 162 bajtov overených. Načítanie blesku sa skončilo o 11:56:04
Obrázok nižšie zobrazuje hardvér pripojený k zdroju napájania pomocou adaptéra DC a na displeji sa zobrazuje výstup napätia nastavený potenciometrom vpravo.
Ak otočíme potenciometer, zmení sa aj napätie dané na pin ADC a na LCD si môžeme všimnúť hodnotu ADC a analógové napätie. Kompletné pracovné ukážky tohto tutoriálu si môžete pozrieť na videu nižšie.
Dúfam, že sa vám článok páčil a dozvedeli ste sa niečo užitočné, ak máte otázky, nechajte ich v sekcii komentárov nižšie alebo môžete použiť naše fóra na zverejnenie ďalších technických otázok.