- Descripció del mòdul ADC:
- Esquema de connexions:
- Programació del vostre MSP430 per ADC:
- Provant el vostre resultat.
Una característica comuna que s’utilitza en gairebé totes les aplicacions incrustades és el mòdul ADC (convertidor analògic a digital). Aquests convertidors analògics a digitals poden llegir el voltatge de sensors analògics com el sensor de temperatura, el sensor d’inclinació, el sensor de corrent, el sensor Flex i molt més. Així doncs, en aquest tutorial aprendrem a utilitzar ADC a MSP430G2 per llegir tensions analògiques mitjançant l’energia IDE. Interfocarem un petit potenciòmetre a la placa MSP i subministrarem un voltatge variable a un pin analògic, llegirem el voltatge i el mostrarem al monitor sèrie.
Descripció del mòdul ADC:
Confieu en mi, difícilment trigaria 10 minuts a connectar-se i programar el MSP430G2 per llegir la tensió analògica. Però, dediquem una estona a comprendre el mòdul ADC al tauler MSP per poder utilitzar-lo eficaçment en tots els nostres propers projectes.
Un microcontrolador és un dispositiu digital, és a dir, només pot comprendre 1 i 0. Però al món real, gairebé tot, com la temperatura, la humitat, la velocitat del vent, etc. són de naturalesa analògica. Per interactuar amb aquests canvis analògics, el microcontrolador utilitza un mòdul anomenat ADC. Hi ha molts tipus diferents de mòduls ADC disponibles, l’utilitzat al nostre MSP és l’ ADC de 10 bits SAR de 8 canals.
ADC d'aproximació successiva (SAR): el SAR ADC funciona amb l'ajut d'un comparador i algunes converses lògiques. Aquest tipus d’ADC utilitza un voltatge de referència (que és variable) i compara el voltatge d’entrada amb el voltatge de referència mitjançant un comparador i la diferència, que serà una sortida digital, es guarda des del bit més significatiu (MSB). La velocitat de la comparació depèn de la freqüència de rellotge (Fosc) en què està funcionant el MSP.
Resolució de 10 bits: aquest ADC és un ADC de 10 bits de 8 canals. Aquí el terme de canal 8 implica que hi ha 8 pins ADC amb els quals podem mesurar la tensió analògica. El terme 10 bits implica la resolució de l’ADC. 10 bits significa 2 a la potència de deu (2 10), que és 1024. Aquest és el nombre de passos de mostra per al nostre ADC, de manera que l’interval dels nostres valors ADC serà de 0 a 1023. El valor augmentarà de 0 a 1023 basat en el valor de la tensió per pas, que es pot calcular mitjançant la fórmula següent

Nota: Per defecte, a Energia, el voltatge de referència s'establirà en Vcc (~ 3v), podeu variar el voltatge de referència mitjançant l' opció analogReference () .
Comproveu també com interfacear 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
Esquema de connexions:
Al nostre anterior tutorial ja vam aprendre a relacionar la pantalla LCD amb MSP430G2, ara només afegirem un potenciòmetre al MSP430 per proporcionar-li una tensió variable i mostrar el valor de la tensió a la pantalla LCD. Si no sou conscient de la interfície de la pantalla LCD, torneu a l'enllaç anterior i llegiu-lo, ja que saltaré la informació per evitar el penediment. A continuació es presenta el diagrama complet del circuit.


Com podeu veure, aquí s’utilitzen dos potenciòmetres, un s’utilitza per configurar el contrast de la pantalla LCD mentre que l’altre s’utilitza per subministrar un voltatge variable a la placa. En aquest potenciòmetre, un extrem extrem del potenciòmetre està connectat al Vcc i l’altre extrem està connectat a terra. El pin central (fil blau) està connectat al pin P1.7. Aquest pin P1.7 proporcionarà una tensió variable de 0V (terra) a 3,5V (Vcc). Per tant, hem de programar el pin P1.7 per llegir aquesta tensió variable i mostrar-lo a la pantalla LCD.
A Energia, hem de saber a quin canal analògic pertany el pin P1.7? Es pot trobar fent referència a la imatge següent

Podeu veure el pin P1.7 al costat dret, aquest pin pertany a A7 (canal 7). De la mateixa manera, també podem trobar el número de canal corresponent per a altres pins. Podeu utilitzar qualsevol pin de A0 a A7 per llegir tensions analògiques aquí que he seleccionat A7.
Programació del vostre MSP430 per ADC:
Programar el vostre MSP430 per llegir tensió analògica és molt senzill. En aquest programa es llegirà l'analògic del valor i es calcularà el voltatge amb aquest valor i es mostraran tots dos a la pantalla LCD. El programa complet es troba a la part inferior d’aquesta pàgina; més avall explico el programa en fragments per ajudar-lo a entendre millor.
Comencem definint els pins LCD. Aquests defineixen a quin pin de MSP430 estan connectats els pins LCD. Podeu fer referència a la vostra connexió per assegurar-vos que els pins estan connectats respectivament
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
A continuació, incloem el fitxer de capçalera de la pantalla LCD. Es truca a la biblioteca que conté el codi sobre com s'ha de comunicar l'MSP amb la pantalla LCD. Aquesta biblioteca s'instal·larà per defecte a l'IDE Energia, de manera que no us heu de molestar a afegir-la. Assegureu-vos també que la funció Liquid Crystal es cridi amb els noms dels pins que acabem de definir més amunt.
#incloure
Dins de la nostra funció setup () , només oferiríem un missatge d'introducció que es mostrarà a la pantalla LCD. No estic aprofundint gaire, ja que ja hem après a utilitzar LCD amb MSP430G2.
lcd.begin (16, 2); // Estem utilitzant una pantalla LCD de 16 * 2 lcd.setCursor (0,0); // Col·loqueu el cursor a la primera fila 1a columna lcd.print ("MSP430G2553"); // Mostra un missatge d'introducció lcd.setCursor (0, 1); // configureu el cursor a la primera columna 2a fila lcd.print ("- CircuitDigest"); // Mostra un missatge d'introducció
Finalment, dins de la nostra funció de bucle infinit () , comencem a llegir el voltatge subministrat al pin A7. Com ja hem comentat, el microcontrolador és un dispositiu digital i no pot llegir el nivell de tensió directament. Mitjançant la tècnica SAR, el nivell de voltatge es mapea de 0 a 1024. Aquests valors s’anomenen valors ADC, per obtenir aquest valor ADC només cal que utilitzeu la línia següent
int val = analogRead (A7); // llegiu el valor ADC del pin A7
Aquí s’utilitza la funció analogRead () per llegir el valor analògic del pin, hem especificat A7 al seu interior ja que hem connectat tensió variable al pin P1.7. Finalment guardem aquest valor en una variable anomenada " val ". El tipus d’aquesta variable és sencer perquè només obtindrem valors que oscil·len entre 0 i 1024 en aquesta variable.
El següent pas seria calcular el valor de la tensió a partir del valor ADC. Per fer-ho disposem de les següents fórmules
Voltatge = (valor ADC / resolució ADC) * Voltatge de referència
En el nostre cas, ja sabem que la resolució ADC del nostre microcontrolador és 1024. El valor ADC també es troba a la línia anterior i emmagatzema la variable anomenada val. La tensió de referència és igual a la tensió en què funciona el microcontrolador. Quan el tauler MSP430 és alimentat amb un cable USB, llavors el voltatge de funcionament és 3.6V. També podeu mesurar la tensió de funcionament utilitzant un multímetre a través del Vcc i el pin de terra de la placa. Per tant, la fórmula anterior s’adapta al nostre cas tal com es mostra a continuació
tensió flotant = (flotador (val) / 1024) * 3,6; // fórmules per convertir el valor ADC a voltatge
És possible que us confongueu amb la línia flotant (val). S'utilitza per convertir la variable "val" de tipus de dades int a tipus de dades "float". Aquesta conversió és necessària perquè només si obtenim el resultat de val / 1024 en float podem multiplicar-la per 3,6. Si el valor es rep en enter, sempre serà 0 i el resultat també serà zero. Un cop calculat el valor i la tensió de l’ADC, només queda mostrar el resultat a la pantalla LCD que es pot fer mitjançant les línies següents
lcd.setCursor (0, 0); // configureu el cursor a la columna 0, línia 0 lcd.print ("ADC Val:"); lcd.print (val); // Mostra el valor ADC lcd.setCursor (0, 1); // configureu el cursor a la columna 0, línia 1 lcd.print ("Voltatge:"); lcd.print (voltatge); // Voltatge de visualització
Aquí hem mostrat el valor de l'ADC a la primera línia i el valor de la tensió a la segona línia. Finalment donem un retard de 100 mil segons i esborreu la pantalla LCD. Aquest va ser el valor que s'actualitzarà per cada 100 mil.
Provant el vostre resultat.
Finalment, arribem a la part divertida, que està provant el nostre programa i jugant amb ell. Simplement feu les connexions tal com es mostra al diagrama del circuit. He utilitzat una petita placa de configuració per fer les meves connexions i he utilitzat cables jumper per connectar la placa de configuració a MSP430. Un cop fetes les connexions, la meva semblava a continuació.
A continuació, pengeu el programa que es mostra a continuació al tauler MSP430 a través de l’ENergia IDE. Haureu de poder veure el text introductori a la pantalla LCD, si no, ajusteu el contrast de la pantalla LCD mitjançant el potenciòmetre fins que no vegeu paraules clares. A més, proveu de prémer el botó de restabliment. Si les coses funcionen com s’esperava, hauríeu de poder veure la següent pantalla.

Ara varieu el potenciòmetre i també hauríeu de veure variat el voltatge que es mostra a la pantalla LCD. Verifiquem si mesurem la tensió correctament per fer-ho, utilitzeu un multímetre per mesurar la tensió a través del centre del POT i del terra. La tensió que es mostra al multímetre ha de ser propera al valor que es mostra a la pantalla LCD, tal com es mostra a la imatge següent.

És a dir, hem après a mesurar la tensió analògica mitjançant l'ADC de la placa MSP430. Ara podem connectar molts sensors analògics amb la nostra placa per llegir paràmetres en temps real. Espero que hàgiu entès el tutorial i us hagi agradat aprendre-lo, si teniu algun problema, poseu-vos en contacte amb la secció de comentaris o els fòrums. Vegem un altre tutorial de MSP430 amb un altre tema nou.
