- Požadované součásti a nastavení hardwaru
- Schéma zapojení Nuvoton N76E003 pro čtení analogového napětí
- Informace o GPIO a analogových pinech v N76E003
- Informace o periferních zařízeních ADC v N76E003
- Programování N76E003 pro ADC
- Bliká kód a výstup
Analogově digitální převodník (ADC) je nejpoužívanější hardwarovou funkcí mikrokontroléru. Přijímá analogové napětí a převádí jej na digitální hodnotu. Protože mikrokontroléry jsou digitální zařízení a pracují s binárními číslicemi 1 a 0, nemohl zpracovávat analogová data přímo. ADC se tedy používá k přijímání analogového napětí a jeho převodu na ekvivalentní digitální hodnotu, které mikrokontrolér rozumí. Pokud se chcete dozvědět více o analogově-digitálním převodníku (ADC), můžete si přečíst článek, na který odkazujete.
V elektronice jsou k dispozici různé senzory, které poskytují analogový výstup, jako jsou senzory plynu MQ, senzory akcelerometru ADXL335 atd. Při použití převodníku Analog to Digital lze tyto senzory propojit s jednotkou mikrokontroléru. Můžete si také prohlédnout další výukové programy uvedené níže pro použití ADC s jinými mikrokontroléry.
- Jak používat ADC v Arduino Uno?
- Propojení ADC0808 s mikrokontrolérem 8051
- Pomocí modulu ADC mikrokontroléru PIC
- Výukový program ADC pro Raspberry Pi
- Jak používat ADC v MSP430G2 - Měření analogového napětí
- Jak používat ADC v STM32F103C8
V tomto tutoriálu použijeme zabudovanou periferii ADC jednotky mikrokontroléru N76E003, takže pojďme vyhodnotit, jaké nastavení hardwaru požadujeme pro tuto aplikaci.
Požadované součásti a nastavení hardwaru
Abychom mohli použít ADC na N76E003, použijeme dělič napětí pomocí potenciometru a odečteme napětí v rozsahu 0V - 5,0V. Napětí se zobrazí na 16x2 znakovém LCD, pokud jste nový s LCD a N76E003, můžete zkontrolovat, jak propojit LCD s Nuvoton N76E003. Hlavní komponentou, která je pro tento projekt vyžadována, je tedy 16x2 znakový LCD. Pro tento projekt použijeme níže uvedené komponenty -
- Znakový LCD 16x2
- 1k rezistor
- 50k potenciometr nebo trimovací hrnec
- Několik Berg drátů
- Několik připojovacích vodičů
- Nepájivá deska
Nemluvě o tom, kromě výše uvedených komponent potřebujeme vývojovou desku založenou na mikrokontroléru N76E003 a programátor Nu-Link. Je také zapotřebí další napájecí zdroj 5V, protože LCD odebírá dostatečný proud, který programátor nedokázal poskytnout.
Schéma zapojení Nuvoton N76E003 pro čtení analogového napětí
Jak je vidět na schématu, port P0 se používá pro připojení související s LCD. Zcela vlevo je zobrazeno připojení programovacího rozhraní. Potenciometr funguje jako dělič napětí a je snímán analogovým vstupem 0 (AN0).
Informace o GPIO a analogových pinech v N76E003
Níže uvedený obrázek ilustruje piny GPIO dostupné v jednotce mikrokontroléru N76E003AT20. Z 20 pinů je však pro připojení související s LCD použit port P0 (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6 a P0.7). Analogové piny jsou zvýrazněny ČERVENÝMI barvami.
Jak vidíme, port P0 má maximální analogové piny, ale ty se používají pro komunikaci související s LCD. P3.0 a P1.7 jsou tedy k dispozici jako analogové vstupní piny AIN1 a AIN0. Protože tento projekt vyžaduje pouze jeden analogový pin, pro tento projekt se používá P1.7, což je analogový vstupní kanál 0.
Informace o periferních zařízeních ADC v N76E003
N76E003 poskytuje 12bitový ADC SAR. Je velmi dobrou vlastností N76E003, že má velmi dobré rozlišení ADC. ADC má 8kanálové vstupy v režimu jednoho konce. Rozhraní ADC je docela jednoduché a přímé.
Prvním krokem je výběr vstupu kanálu ADC. V mikrokontrolérech N76E003 jsou k dispozici 8kanálové vstupy. Po výběru vstupů ADC nebo I / O pinů je nutné nastavit všechny piny pro směr v kódu. Všechny piny použité pro analogový vstup jsou vstupními piny mikrokontroléru, takže všechny piny musí být nastaveny jako režim Pouze vstup (vysoká impedance). Ty lze nastavit pomocí registrů PxM1 a PxM2. Tyto dva registry nastavují I / O režimy, kde x znamená číslo portu (například Port P1.0 bude registr P1M1 a P1M2, pro P3.0 to budou P3M1 a P3M2 atd.) Konfiguraci lze být viděn na obrázku níže -
Konfigurace ADC se provádí dvěma registry ADCCON0 a ADCCON1. Popis registru ADCCON0 je uveden níže.
První 4 bity registru od bitu 0 do bitu 3 se používají k nastavení výběru kanálu ADC. Protože používáme kanál AIN0, bude výběr pro tyto čtyři bity 0000.
6. a 7. bit jsou důležité. ADCS je povinen nastavit 1 pro spuštění převodu ADC a ADCF poskytne informace o úspěšném převodu ADC. Je třeba, aby firmware nastavil 0 pro spuštění převodu ADC. Další registr je ADCCON1-
Registr ADCCON1 se používá hlavně pro převod ADC spouštěný externími zdroji. U běžných operací souvisejících s dotazováním je však vyžadován první bit ADCEN pro nastavení 1 pro zapnutí obvodů ADC.
Dále je třeba řídit vstup kanálu ADC v registru AINDIDS, kde lze digitální vstupy odpojit.
N značí kanálového bitu (například AIN0 kanálu bude muset být řízena pomocí první bit P17DIDS z AINDIDS registru). Je třeba povolit digitální vstup, jinak bude číst jako 0. To vše je základní nastavení ADC. Nyní lze začít s vymazáním ADCF a nastavením ADCS na převod ADC. Převáděná hodnota bude k dispozici v níže uvedených registrech -
A
Oba registry jsou 8bitové. Protože ADC poskytuje 12bitová data, ADCRH se používá jako plná (8bitová) a ADCRL se používá jako poloviční (4bitová).
Programování N76E003 pro ADC
Kódování konkrétního modulu je pokaždé hektická práce, a proto je k dispozici jednoduchá, ale výkonná knihovna LCD, která bude velmi užitečná pro rozhraní LCD 16x2 znaků s rozhraním N76E003. Knihovna LCD 16x2 je k dispozici v našem úložišti Github, které lze stáhnout z níže uvedeného odkazu.
Stáhněte si 16x2 LCD knihovnu pro Nuvoton N76E003
Mějte laskavě knihovnu (klonováním nebo stažením) a do svého projektu Keil N76E003 jednoduše vložte soubory lcd.c a LCD.h pro snadnou integraci 16x2 LCD do požadované aplikace nebo projektu. Knihovna poskytne následující užitečné funkce související s displejem -
- Inicializujte LCD.
- Odeslání příkazu na LCD.
- Napište na LCD.
- Vložte řetězec na LCD (16 znaků).
- Vytiskněte znak odesláním hexadecimální hodnoty.
- Posouvejte dlouhé zprávy s více než 16 znaky.
- Tiskněte celá čísla přímo na LCD.
Kódování pro ADC je jednoduché. Ve funkci nastavení Enable_ADC_AIN0; se používá pro nastavení ADC pro vstup AIN0 . To je definováno v souboru.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
Výše uvedený řádek tedy nastavuje pin jako vstup a konfiguruje také registr ADCCON0, ADCCON1 i registr AINDIDS . Níže uvedená funkce načte ADC z registru ADCRH a ADCRL, ale s 12bitovým rozliš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; vrátit adc_value; }
Bit je čtyřikrát posunut doleva a poté přidán do datové proměnné. V hlavní funkci čte ADC Data a tiskne se přímo na displej. Napětí je však také převedeno pomocí poměru nebo vztahu mezi napětím děleným bitovou hodnotou.
12bitový ADC poskytne 4095 bitů na vstupu 5,0 V. Takže dělení 5,0 V / 4095 = 0,0012210012210012V
Takže 1 číslice bitových změn se bude rovnat změnám v 0,001 V (přibližně). To se provádí v hlavní funkci zobrazené níže.
void main (void) { int adc_data; založit(); lcd_com (0x01); while (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("Data ADC:"); adc_data = ADC_read (); lcd_print_number (adc_data); voltage = adc_data * bit_to_voltage_ratio; sprintf (str_voltage, "Volt:% 0.2fV", napětí); lcd_com (0xC0); lcd_puts (str_voltage); Timer0_Delay1ms (500); } }
Data jsou převedena z bitové hodnoty na napětí a pomocí funkce sprintf je výstup převeden na řetězec a odeslán na LCD.
Bliká kód a výstup
Kód vrátil 0 varování a 0 chyb a byl blikán pomocí výchozí metody blikání Keilem, uvidíte blikající zprávu níže. Pokud jste v Keil nebo Nuvoton nováčkem, podívejte se na začátek používání mikrokontroléru Nuvoton, abyste pochopili základy a jak nahrát kód.
Opětovné sestavení zahájeno: Projekt: časovač Znovu sestavit cíl 'Cíl 1' sestavující STARTUP.A51 … kompilace main.c… kompilace lcd.c… kompilace Delay.c… propojení… Velikost programu: data = 101,3 xdata = 0 code = 4162 vytváření hexadecimálního souboru z ". \ Objects \ timer"… ". \ Objects \ timer" - 0 Chyba (y), 0 Varování (y). Uplynul čas sestavení: 00:00:02 Načíst "G: \\ n76E003 \\ Zobrazit \\ Objekty \\ časovač" Vymazat Flash Hotovo. Flash Write Hotovo: 4 162 bajtů naprogramováno. Flash Verify Hotovo: 4 162 bytů ověřeno. Flash zatížení skončilo v 11:56:04
Obrázek níže ukazuje hardware připojený ke zdroji napájení pomocí stejnosměrného adaptéru a displej zobrazuje výstup napětí nastavený potenciometrem vpravo.
Pokud otočíme potenciometr, změní se také napětí dané kolíku ADC a na LCD si můžeme všimnout hodnoty ADC a analogového napětí. Níže si můžete prohlédnout video, kde najdete kompletní pracovní ukázku tohoto tutoriálu.
Doufám, že se vám článek líbil a dozvěděli jste se něco užitečného, pokud máte nějaké dotazy, nechte je v sekci komentářů níže, nebo můžete použít naše fóra k odeslání dalších technických otázek.