Leggere la temperatura con un Arduino è una funzione estremamente utile. È il tipo di funzione che è essenziale in molti progetti, dalla costruzione del termostato domestico alla creazione di una stazione meteorologica. Inoltre è abbastanza semplice da essere implementato in pochi minuti con qualsiasi Arduino e solo due semplici componenti.
In questo tutorial, ti mostrerò come utilizzare un Arduino per leggere la temperatura da un termistore e stamparlo sulla porta seriale. Un termistore è un semplice componente elettronico che modifica la resistenza in base alla temperatura. Questo tutorial si concentra sui mezzi più semplici e meno costosi per la lettura della temperatura. Lungo la strada imparerai un semplice ed essenziale componente elettronico che ti consente di esplorare un intero mondo di sensori con il tuo Arduino.
Esistono diversi modi per leggere la temperatura con un Arduino. Alcuni di questi includono:
Questo tutorial si concentra sull'utilizzo del metodo del termistore per diversi motivi. In primo luogo, risponde rapidamente ai cambiamenti di temperatura, in secondo luogo, è economico e, infine, è facile da usare.
Ci sono anche due concetti molto importanti da imparare da questo tutorial:
I sensori a resistenza variabile sono fabbricati per misurare ogni sorta di cose, nel mondo fisico, e la capacità di leggere questi sensori con il tuo Arduino sarà un'eccellente abilità di base da padroneggiare. Rotazione, pressione, deformazione, flex, luce e calore sono tutti esempi di cose che puoi misurare usando un pin analogico e un circuito divisore di tensione.
Per questo progetto ti servirà
I pin analogici di Arduino leggono una tensione che dovrebbe variare tra 0 V e 5 V. Un modo standard per trasformare un cambiamento di resistenza in un termistore in un cambiamento di tensione che il pin analogico di Arduino può leggere è quello di creare un circuito divisore di tensione. Il circuito utilizza due resistori in un circuito di una tensione nota per creare un valore di tensione matematicamente prevedibile: Vout.
È un circuito molto semplice come mostrato di seguito. Quando il valore R1 (resistore 1) cambia, Vout cambia. Nel nostro tutorial R1 sarà il termistore e il suo valore cambierà in relazione alla temperatura. Vout è collegato alla nostra porta analogica su Arduino in modo che possiamo monitorarlo.
Schema del circuito divisore di tensioneBasta teoria, passiamo alla costruzione della breadboard e di Arduino.
Imposta la tua breadboard e la scheda Arduino come in questo schema qui sotto. Il diagramma è stato realizzato con Fritzing, un ottimo strumento per collegare i progetti logicamente prima di afferrare fili e componenti. Il componente grigio in alto è il termistore, o R1, nel diagramma sopra. Questo è uno dei tanti modi per cablare il circuito, l'ho scelto perché è conforme ad alcune buone pratiche di breadboarding di base.
Layout di breadboard con termistore e circuito divisore di tensioneLeggere il pin analogico su un Arduino è abbastanza semplice. I pin etichettati A0 - A5 sull'Arduino sono speciali pin che vengono letti con il analogRead ()
la funzione restituirà il valore da 0 a 1023 dove la tensione di ingresso è compresa tra 0 V e 5 V. Poiché il valore di R1, il termistore, cambia in base alla temperatura, la tensione nel pin A0 cambia in modo prevedibile tra 0 V e 5 V.
Scriviamo un po 'di codice e lo portiamo all'Arduino.
void setup () // Questa funzione viene chiamata quando Arduino avvia Serial.begin (115200); // Questo codice imposta la porta seriale a 115200 baud rate void loop () // Questa funzione esegue il ciclo mentre l'arduino è alimentato int val; // Crea una variabile intera val = analogRead (0); // Legge la porta analogica 0 e memorizza il valore in val Serial.println (val); // Stampa il valore sul ritardo della porta seriale (1000); // Attendi un secondo prima di farlo di nuovo
Mancia: Assicurati che il baud rate del monitor seriale corrisponda a quello che abbiamo impostato nel impostare()
funzione. In questo esempio: 115200.
L'output dovrebbe essere simile a questo:
463
463
463
463
463
463
A meno che la breadboard non sia in un forno molto caldo, questi valori non hanno senso. Questo perché si tratta semplicemente di campioni di tensione tradotti in una scala da 0 a 1023. Quindi, dobbiamo trasformarli in un valore di temperatura utilizzabile.
Sopra ho detto che usare il termistore sarebbe semplice, e questo perché possiamo stare sulle spalle dei giganti. Esiste un'equazione per eseguire la traduzione dal valore campionato alla temperatura chiamata equazione di Steinhart-Hart. (http://en.wikipedia.org/wiki/Thermistor) L'equazione di Steinhart-Hart è già stata tradotta per l'Arduino. Un esempio di questo si può trovare su playground.arduino.cc in un articolo di Milan Malesevic e Zoran Stupic. Ho illustrato la loro funzione Termistore ()
sotto e ha aggiunto commenti su come usarlo.
#includere// carica le funzioni matematiche più avanzate void setup () // Questa funzione viene chiamata quando Arduino avvia Serial.begin (115200); // Questo codice imposta la porta seriale a 115200 baud rate double Thermister (int RawADC) // Funzione per eseguire la matematica elaborata dell'equazione Steinhart-Hart double Temp; Temp = log (((10240000 / RawADC) - 10000)); Temp = 1 / (0,001129148 + (0,000234125 + (0,0000000876741 * Temp * Temp)) * Temp); Temp = Temp - 273,15; // Converti Kelvin in Celsius Temp = (Temp * 9.0) / 5.0 + 32.0; // da Celsius a Fahrenheit: commenta questa riga se hai bisogno di Celsius return Temp; void loop () // Questa funzione esegue il ciclo mentre l'arduino è alimentato int val; // Crea una variabile intera double temp; // Variabile per mantenere un valore di temperatura val = analogRead (0); // Legge la porta analogica 0 e memorizza il valore in val temp = Thermister (val); // Esegue la matematica di fantasia sul valore analogico raw Serial.println (temp); // Stampa il valore sul ritardo della porta seriale (1000); // Attendi un secondo prima di farlo di nuovo
Ora l'output dovrebbe essere molto più simile a questo:
69.22
69.07
69.22
69.22
70.33
72.07
72.86
73.34
74.13
Ora questo ha senso. Il mio laboratorio è davvero 69 gradi Fahrenheit. Durante questo esempio, ho toccato la parte superiore del termistore con il mio dito e ha rilevato l'aumento della temperatura, come potete vedere.
Prova a sperimentare con il tuo setup per sentirti più a tuo agio con queste nuove abilità. Ecco alcuni suggerimenti.
analogRead ()
valori basati su cambiamenti di illuminazione (suggerimento: usa il primo segmento di codice)Questo è tutto ciò che c'è da fare. Ora puoi andare a creare qualsiasi tipo di invenzione usando un termistore molto economico.
Inoltre da questo tutorial hai imparato come:
analogRead ()
analogRead ()
funzioneMentre inizialmente programmare il tuo Arduino per leggere e comprendere il mondo circostante può sembrare complicato, in realtà è disponibile un'intera serie di sensori semplici ed economici che ti permetteranno di interfacciarti con il mondo reale in modo rapido e semplice. Il circuito divisore di tensione e un codice semplice possono dare alla tua prossima creazione nuovi e potenti sensi.