- Components necessaris i configuració de maquinari
- Diagrama de circuits de Nuvoton N76E003 per llegir la tensió analògica
- Informació sobre els pins GPIO i analògics a N76E003
- Informació sobre el perifèric ADC a N76E003
- Programació N76E003 per ADC
- Parpelleja el codi i la sortida
El convertidor analògic a digital (ADC) és la característica de maquinari més utilitzada en un microcontrolador. Pren tensió analògica i el converteix en un valor digital. Com que els microcontroladors són dispositius digitals i funcionen amb el dígit binari 1 i 0, no podrien processar les dades analògiques directament. Així, s’utilitza un ADC per prendre tensió analògica i convertir-lo en el seu valor digital equivalent que un microcontrolador pugui entendre. Si voleu més informació sobre el convertidor analògic a digital (ADC), podeu consultar l'article enllaçat.
Hi ha diferents sensors disponibles a l'electrònica que proporcionen sortida analògica, com els sensors de gas MQ, el sensor acceleròmetre ADXL335, etc. Per tant, utilitzant el convertidor analògic a digital, es poden connectar aquests sensors amb un microcontrolador. També podeu consultar altres tutorials que es detallen a continuació per utilitzar ADC amb altres microcontroladors.
- Com utilitzar ADC a Arduino Uno?
- Interfície ADC0808 amb microcontrolador 8051
- Ús del mòdul ADC del microcontrolador PIC
- Tutorial ADC de Raspberry Pi
- Com s'utilitza ADC a MSP430G2: mesurament de la tensió analògica
- Com utilitzar ADC a STM32F103C8
En aquest tutorial, utilitzarem el perifèric ADC incorporat de la unitat de microcontrolador N76E003, així que avaluem quin tipus de configuració de maquinari necessitem per a aquesta aplicació.
Components necessaris i configuració de maquinari
Per utilitzar ADC a N76E003, utilitzarem un divisor de tensió mitjançant un potenciòmetre i llegirem la tensió que oscil·la entre 0V-5.0V. El voltatge es mostrarà a la pantalla LCD de 16 x 2 caràcters; si sou nou amb LCD i N76E003, podeu comprovar com connectar LCD amb Nuvoton N76E003. Per tant, el component principal que es requereix per a aquest projecte és la pantalla LCD de 16 x 2 caràcters. Per a aquest projecte, utilitzarem els components següents:
- LCD de caràcters 16x2
- 1k resistència
- Potencióòmetre de 50k o olla de retallada
- Pocs cables de Berg
- Pocs cables de connexió
- Taula de pa
Per no parlar, a part dels components anteriors, necessitem la placa de desenvolupament basada en microcontroladors N76E003, així com el programador Nu-Link. També es requereix una font d’alimentació addicional de 5 V, ja que la pantalla LCD obté una intensitat suficient que el programador no podria proporcionar.
Diagrama de circuits de Nuvoton N76E003 per llegir la tensió analògica

Com podem veure a l'esquema, el port P0 s'utilitza per a la connexió relacionada amb el LCD. A l'extrem esquerre, es mostra la connexió de la interfície de programació. El potenciòmetre actua com a divisor de tensió i es percep per l'entrada analògica 0 (AN0).

Informació sobre els pins GPIO i analògics a N76E003
La imatge següent il·lustra els pins GPIO disponibles a la unitat de microcontroladors N76E003AT20. Tanmateix, dels 20 pins, per a la connexió relacionada amb el LCD, s’utilitza el port P0 (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6 i P0.7). Els passadors analògics es ressalten en colors VERMELL.

Com podem veure, el port P0 té un màxim de pins analògics, però s’utilitzen per a comunicacions relacionades amb LCD. Per tant, P3.0 i P1.7 estan disponibles com a pins d'entrada analògics AIN1 i AIN0. Com que aquest projecte només requereix un pin analògic, P1.7, que és el canal d'entrada analògic 0, s'utilitza per a aquest projecte.
Informació sobre el perifèric ADC a N76E003
N76E003 proporciona un ADC SAR de 12 bits. És una característica molt bona del N76E003 que té una molt bona resolució d’ADC. L’ADC té entrades de vuit canals en mode extrem únic. La interfície de l'ADC és bastant senzilla i directa.
El primer pas és seleccionar l’ entrada del canal ADC. Hi ha entrades de 8 canals disponibles en microcontroladors N76E003. Després de seleccionar les entrades ADC o els pins d'E / S, cal configurar tots els pins per a la direcció del codi. Tots els pins utilitzats per a l'entrada analògica són pins d'entrada del microcontrolador, per tant, cal configurar tots els pins com a mode només d'entrada (alta impedància). Es poden configurar mitjançant el registre PxM1 i PxM2. Aquests dos registres configuren els modes d'E / S on la x representa el número de port (per exemple, el port P1.0, el registre serà P1M1 i P1M2, per a P3.0 serà P3M1 i P3M2, etc.). es pot veure a la imatge següent

La configuració de l'ADC es realitza mitjançant dos registres ADCCON0 i ADCCON1. A continuació es mostra la descripció del registre ADCCON0.


Els primers 4 bits del registre del bit 0 al bit 3 s’utilitzen per configurar la selecció del canal ADC. Com que estem utilitzant el canal AIN0, la selecció serà 0000 per a aquests quatre bits.
El 6è i el 7è bits són els més importants. Cal que ADCS estableixi 1 per iniciar la conversió ADC i l' ADCF proporcionarà informació sobre la conversió ADC reeixida. El microprogramari ha d’establir 0 per iniciar la conversió ADC. El següent registre és l’ADCCON1-


El registre ADCCON1 s'utilitza principalment per a la conversió ADC activada per fonts externes. Tot i això, per a operacions normals relacionades amb el sondeig, cal que el primer bit ADCEN estableixi 1 per activar els circuits ADC.
A continuació, cal controlar l’entrada del canal ADC al registre AINDIDS on es poden desconnectar les entrades digitals.

La n significa el bit de canal (per exemple, s’haurà de controlar el canal AIN0 mitjançant el primer bit P17DIDS del registre AINDIDS). L'entrada digital s'ha d'habilitar, en cas contrari, es llegirà com a 0. Aquests són tots els paràmetres bàsics de l'ADC. Ara, esborrant l'ADCF i configurant l'ADCS es pot iniciar la conversió d'ADC. El valor convertit estarà disponible als registres següents:

I

Els dos registres són de 8 bits. Com que l'ADC proporciona dades de 12 bits, l'ADCRH s'utilitza com a complet (8 bits) i l'ADCRL s'utilitza com a meitat (4 bits).
Programació N76E003 per ADC
La codificació per a un mòdul específic cada vegada és una tasca trepidant, de manera que es proporciona una biblioteca LCD senzilla però potent que serà molt útil per a la interfície LCD de 16x2 caràcters amb N76E003. La biblioteca LCD de 16 x 2 està disponible al nostre dipòsit de Github, que es pot descarregar des del següent enllaç.
Descarregueu la biblioteca LCD de 16x2 per a Nuvoton N76E003
Si us plau, tingueu la biblioteca (mitjançant la clonació o la descàrrega) i només cal incloure els fitxers lcd.c i LCD.h al vostre projecte Keil N76E003 per facilitar la integració de la pantalla LCD de 16x2 a l’aplicació o projecte desitjat. La biblioteca proporcionarà les següents funcions útils relacionades amb la pantalla:
- Inicialitzeu la pantalla LCD.
- Envia l'ordre a la pantalla LCD.
- Escriviu a la pantalla LCD.
- Col·loqueu una cadena a la pantalla LCD (16 caràcters).
- Imprimiu el caràcter enviant un valor hexadecimal.
- Desplaceu els missatges llargs amb més de 16 caràcters.
- Imprimiu números enters directament a la pantalla LCD.
La codificació per ADC és senzilla. A la funció de configuració Enable_ADC_AIN0; s'utilitza per configurar l' ADC per a l' entrada AIN0 . Això es defineix al fitxer.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
Per tant, la línia anterior estableix el pin com a entrada i configura el registre ADCCON0, ADCCON1 i també el registre AINDIDS . La funció següent mostrarà l'ADC del registre ADCRH i ADCRL però amb una resolució de 12 bits.
unsigned int ADC_read (void) { registre sense signar int adc_value = 0x0000; clr_ADCF; set_ADCS; mentre que (ADCF == 0); adc_value = ADCRH; adc_value << = 4; adc_value - = ADCRL; tornar adc_value; }
El bit es desplaça cap a l'esquerra 4 vegades i després s'afegeix a la variable de dades. A la funció principal, l'ADC està llegint les dades i s'imprimeix directament a la pantalla. No obstant això, la tensió també es converteix mitjançant una relació o la relació entre la tensió dividida pel valor de bit.
Un ADC de 12 bits proporcionarà 4095 bits a l'entrada de 5,0 V. Dividint així el 5,0V / 4095 = 0,0012210012210012V
Per tant, 1 dígit dels canvis de bits serà igual als canvis de 0,001 V (aproximadament). Això es fa a la funció principal que es mostra a continuació.
void main (void) { int adc_data; setup (); lcd_com (0x01); mentre que (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("Dades ADC:"); adc_data = ADC_read (); lcd_print_number (adc_data); voltatge = dades_adc * bit_to_voltage_ratio; sprintf (str_voltage, "Volt:% 0.2fV", voltatge); lcd_com (0xC0); lcd_puts (str_voltage); Temporitzador0_Delay1ms (500); } }
Les dades es converteixen del valor del bit a la tensió i mitjançant una funció sprintf , la sortida es converteix en una cadena i s’envia a la pantalla LCD.
Parpelleja el codi i la sortida
El codi va retornar 0 advertència i 0 errors i el Keil el va mostrar amb el mètode de parpelleig predeterminat. Podeu veure el missatge intermitent a continuació. Si no coneixeu Keil o Nuvoton, consulteu els passos inicials per utilitzar el microcontrolador Nuvoton per entendre els conceptes bàsics i com penjar el codi.
La reconstrucció va començar: Projecte: temporitzador Reconstrueix l'objectiu "Objectiu 1" muntant STARTUP.A51… compilant main.c… compilant lcd.c… compilant Delay.c… enllaçant… Mida del programa: dades = 101,3 xdata = 0 codi = 4162 creant fitxer hexadecimal a partir de ". \ Objects \ temporitzador"… ". \ Objectes \ temporitzador" - 0 error (s), 0 advertència (s). Temps de compilació transcorregut: 00:00:02 Carrega "G: \\ n76E003 \\ Visualitza \\ Objectes \\ temporitzador" Esborrat de flash Fet. Escriptura Flash feta: 4162 bytes programats. Verificació Flash feta: es van verificar 4162 bytes. Flash Load ha finalitzat a les 11:56:04
La imatge següent mostra el maquinari connectat a la font d'alimentació mitjançant un adaptador de corrent continu i la pantalla mostra la sortida de tensió establerta pel potenciòmetre a la dreta.

Si girem el potenciòmetre, la tensió que es dóna al pin ADC també canviarà i podem notar el valor ADC i la tensió analògica que es mostren a la pantalla LCD. Podeu consultar el vídeo següent per veure la demostració completa de treball d’aquest tutorial.
Espero que us hagi agradat l’article i hàgiu après alguna cosa útil, si teniu preguntes, deixeu-les a la secció de comentaris de sota o podeu fer servir els nostres fòrums per enviar altres preguntes tècniques.
