- Capire il modulo ADC:
- Schema elettrico:
- Programmazione del tuo MSP430 per ADC:
- Testare il tuo risultato!
Una caratteristica comune utilizzata in quasi tutte le applicazioni integrate è il modulo ADC (convertitore da analogico a digitale). Questi convertitori da analogico a digitale possono leggere la tensione da sensori analogici come sensore di temperatura, sensore di inclinazione, sensore di corrente, sensore di flessione e molto altro. Quindi in questo tutorial impareremo come utilizzare l'ADC in MSP430G2 per leggere le tensioni analogiche utilizzando l'IDE di Energia. Interfacciamo un piccolo potenziometro alla scheda MSP e forniremo una tensione variabile a un pin analogico, leggeremo la tensione e la visualizzeremo sul monitor seriale.
Capire il modulo ADC:
Credetemi, non ci vorrebbero 10 minuti per collegare e programmare l'MSP430G2 per leggere la tensione analogica. Tuttavia, dedichiamo un po 'di tempo alla comprensione del modulo ADC nella scheda MSP in modo da poterlo utilizzare in modo efficace in tutti i nostri prossimi progetti.
Un microcontrollore è un dispositivo digitale, il che significa che può comprendere solo 1 e 0. Ma nel mondo reale, quasi tutto come temperatura, umidità, velocità del vento, ecc. Sono di natura analogica. Per interagire con queste modifiche analogiche, il microcontrollore utilizza un modulo chiamato ADC. Sono disponibili molti tipi diversi di moduli ADC, quello utilizzato nel nostro MSP è l' ADC SAR a 8 canali a 10 bit.
ADC ad approssimazione successiva (SAR): L'ADC SAR funziona con l'aiuto di un comparatore e alcune conversazioni logiche. Questo tipo di ADC utilizza una tensione di riferimento (che è variabile) e confronta la tensione di ingresso con la tensione di riferimento utilizzando un comparatore e la differenza, che sarà un'uscita digitale, viene salvata dal bit più significativo (MSB). La velocità del confronto dipende dalla frequenza di clock (Fosc) su cui sta operando l'MSP.
Risoluzione a 10 bit: questo ADC è un ADC a 10 bit a 8 canali. Qui il termine 8 canali implica che ci sono 8 pin ADC utilizzando i quali possiamo misurare la tensione analogica. Il termine 10 bit implica la risoluzione dell'ADC. 10 bit significa 2 alla potenza di dieci (2 10) che è 1024. Questo è il numero di passi di esempio per il nostro ADC, quindi l'intervallo dei nostri valori ADC sarà da 0 a 1023. Il valore aumenterà da 0 a 1023 in base al valore della tensione per gradino, che può essere calcolato utilizzando la formula seguente
Nota: per impostazione predefinita in Energia la tensione di riferimento sarà impostata su Vcc (~ 3v), è possibile variare la tensione di riferimento utilizzando l' opzione analogReference () .
Controlla anche come interfacciare ADC con altri microcontrollori:
- Come utilizzare ADC in Arduino Uno?
- Interfacciamento ADC0808 con Microcontrollore 8051
- Utilizzo del modulo ADC del microcontrollore PIC
- Tutorial ADC Raspberry Pi
Schema elettrico:
Nel nostro precedente tutorial abbiamo già imparato come interfacciare l'LCD con MSP430G2, ora aggiungeremo un potenziometro all'MSP430 per fornirgli una tensione variabile e visualizzare il valore della tensione sull'LCD. Se non sei a conoscenza dell'interfacciamento del display LCD, torna al collegamento sopra e leggilo, poiché salterò le informazioni per evitare il pentimento. Di seguito viene fornito lo schema elettrico completo del progetto.
Come puoi vedere ci sono due potenziometri usati qui, uno serve per impostare il contrasto dell'LCD mentre l'altro serve per fornire una tensione variabile alla scheda. In quel potenziometro un'estremità del potenziometro è collegata a Vcc e l'altra estremità è collegata a massa. Il pin centrale (filo blu) è collegato al pin P1.7. Questo pin P1.7 fornirà una tensione variabile da 0 V (massa) a 3,5 V (Vcc). Quindi dobbiamo programmare il pin P1.7 per leggere questa tensione variabile e visualizzarla sul display LCD.
In Energia dobbiamo sapere a quale canale analogico appartiene il pin P1.7? Questo può essere trovato facendo riferimento all'immagine sottostante
Puoi vedere il pin P1.7 sul lato destro, questo pin appartiene ad A7 (canale 7). Allo stesso modo, possiamo trovare il rispettivo numero di canale anche per altri pin. Puoi utilizzare qualsiasi pin da A0 a A7 per leggere le tensioni analogiche qui ho selezionato A7.
Programmazione del tuo MSP430 per ADC:
Programmare il tuo MSP430 per leggere la tensione analogica è molto semplice. In questo programma leggerà l'analogo di valore e calcolerà la tensione con quel valore e quindi visualizzerà entrambi sullo schermo LCD. Il programma completo può essere trovato in fondo a questa pagina, più sotto sto spiegando il programma in frammenti per aiutarti a capire meglio.
Iniziamo definendo i pin LCD. Questi definiscono a quale pin dell'MSP430 sono collegati i pin LCD. È possibile fare riferimento alla connessione per assicurarsi che i pin siano collegati rispettivamente
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
Successivamente, includiamo il file di intestazione per il display LCD. Questo richiama la libreria che contiene il codice su come l'MSP dovrebbe comunicare con l'LCD. Questa libreria verrà installata in Energia IDE per impostazione predefinita, quindi non è necessario aggiungerla. Assicurati inoltre che la funzione Liquid Crystal venga chiamata con i nomi dei pin che abbiamo appena definito sopra.
#includere
All'interno della nostra funzione setup () , diamo solo un messaggio di introduzione da visualizzare sullo schermo LCD. Non sto entrando molto in profondità poiché abbiamo già imparato a utilizzare LCD con MSP430G2.
lcd.begin (16, 2); // Stiamo usando un display LCD 16 * 2 lcd.setCursor (0,0); // Posiziona il cursore sulla prima riga della prima colonna lcd.print ("MSP430G2553"); // Visualizza un messaggio introduttivo lcd.setCursor (0, 1); // imposta il cursore sulla 1a colonna 2a riga lcd.print ("- CircuitDigest"); // Visualizza un messaggio introduttivo
Infine, all'interno della nostra funzione infinite loop () , iniziamo a leggere la tensione fornita al pin A7. Come abbiamo già discusso, il microcontrollore è un dispositivo digitale e non può leggere direttamente il livello di tensione. Utilizzando la tecnica SAR il livello di tensione viene mappato da 0 a 1024. Questi valori sono chiamati valori ADC, per ottenere questo valore ADC è sufficiente utilizzare la riga seguente
int val = analogRead (A7); // legge il valore ADC dal pin A7
Qui la funzione analogRead () viene utilizzata per leggere il valore analogico del pin, abbiamo specificato A7 al suo interno poiché abbiamo collegato la tensione variabile al pin P1.7. Infine salviamo questo valore in una variabile chiamata “ val ”. Il tipo di questa variabile è intero perché otterremo solo valori compresi tra 0 e 1024 da memorizzare in questa variabile.
Il prossimo passo sarebbe calcolare il valore di tensione dal valore ADC. Per fare questo abbiamo le seguenti formule
Tensione = (Valore ADC / Risoluzione ADC) * Tensione di riferimento
Nel nostro caso sappiamo già che la risoluzione ADC del nostro microcontrollore è 1024. Il valore ADC si trova anche nella riga precedente e memorizza la variabile chiamata val. La tensione di riferimento è uguale alla tensione alla quale funziona il microcontrollore. Quando la scheda MSP430 è alimentato tramite cavo USB quindi la tensione di funzionamento è 3.6V. È inoltre possibile misurare la tensione di esercizio utilizzando un multimetro tra il Vcc e il pin di terra sulla scheda. Quindi la formula sopra si adatta al nostro caso come mostrato di seguito
tensione flottante = (float (val) / 1024) * 3,6; // formule per convertire il valore ADC in tensione
Potresti essere confuso con la riga float (val). Viene utilizzato per convertire la variabile "val" dal tipo di dati int al tipo di dati "float". Questa conversione è necessaria perché solo se otteniamo il risultato di val / 1024 in float possiamo moltiplicarlo per 3,6. Se il valore viene ricevuto in numero intero sarà sempre 0 e anche il risultato sarà zero. Una volta calcolato il valore e la tensione dell'ADC, non resta che visualizzare il risultato sullo schermo LCD che può essere fatto utilizzando le seguenti righe
lcd.setCursor (0, 0); // imposta il cursore sulla colonna 0, riga 0 lcd.print ("ADC Val:"); lcd.print (val); // Visualizza il valore ADC lcd.setCursor (0, 1); // imposta il cursore sulla colonna 0, riga 1 lcd.print ("Voltage:"); lcd.print (voltaggio); // Visualizza la tensione
Qui abbiamo visualizzato il valore di ADC nella prima riga e il valore di tensione nella seconda riga. Infine diamo un ritardo di 100 mill secondi e cancelliamo lo schermo LCD. Questo era il valore che verrà aggiornato ogni 100 mil.
Testare il tuo risultato!
Infine, veniamo alla parte divertente, che è testare il nostro programma e giocarci. Effettuare i collegamenti come mostrato nello schema del circuito. Ho usato una piccola breadboard per effettuare i miei collegamenti e ho usato cavi jumper per collegare la breadboard a MSP430. Una volta che i collegamenti sono stati effettuati, il mio sembrava questo sotto.
Quindi caricare il programma riportato di seguito sulla scheda MSP430 tramite Energia IDE. Dovresti essere in grado di vedere il testo introduttivo sull'LCD, altrimenti regola il contrasto dell'LCD usando il potenziometro finché non vedi parole chiare. Inoltre, prova a premere il pulsante di ripristino. Se le cose funzionano come previsto, dovresti essere in grado di vedere la seguente schermata.
Ora varia il potenziometro e dovresti anche vedere la tensione visualizzata sull'LCD che varia. Verifichiamo se stiamo misurando la tensione correttamente per farlo, usa un multimetro per misurare la tensione attraverso il centro del POT e la terra. La tensione visualizzata sul multimetro dovrebbe essere vicina al valore visualizzato sull'LCD come mostrato nell'immagine sotto.
Questo è tutto, abbiamo imparato come misurare la tensione analogica utilizzando l'ADC della scheda MSP430. Ora possiamo interfacciare molti sensori analogici con la nostra scheda per leggere i parametri in tempo reale. Spero che tu abbia capito il tutorial e ti sia piaciuto impararlo, in caso di problemi ti preghiamo di contattare la sezione commenti qui sotto o attraverso i forum. Recuperiamo un altro tutorial di MSP430 con un altro nuovo argomento.