Come leggere le temperature con Arduino

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.


Come Arduino legge la temperatura

Esistono diversi modi per leggere la temperatura con un Arduino. Alcuni di questi includono:

  • Sensori I2C o seriali - Esistono moduli sensore avanzati che spesso possono misurare pressione atmosferica, temperatura, umidità e altre condizioni in un unico pacchetto. Tuttavia questi moduli sono in genere molto più costosi e richiedono l'utilizzo del protocollo I2C o seriale per la lettura. Questi potrebbero essere ottimi per un progetto di sensore meteorologico più avanzato.
  • Sensore analogico termico - Un componente a tre pin che alimenta, mette a terra ed emette una tensione variabile in base alla temperatura implementando un core band gap all'interno di un singolo componente. Questa classe di componenti è utile e la esaminerò in un prossimo tutorial.
  • Termistore - Un resistore che modifica la resistenza in base alla temperatura ambiente.

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:

  1. Lettura di un valore da un pin analogico di Arduino.
  2. Utilizzando un circuito divisore di tensione per leggere i sensori di resistori variabili.

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.


Raccogli le parti

Per questo progetto ti servirà

  • breadboard
  • Arduino (An Uno è usato nei miei esempi, ma ogni modello dovrebbe fare)
  • Termistore da 10K Ohm
  • Resistenza da 10K Ohm (marrone, nero, arancione)
  • Fili di collegamento
  • Computer con IDE Arduino installato (l'installazione e l'utilizzo dell'IDE non sono trattati in questo tutorial)
  • Cavo USB (per collegare Arduino e PC)

Come funziona

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 tensione

Basta teoria, passiamo alla costruzione della breadboard e di Arduino.


Impostare

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 tensione

Programmazione di Arduino

Leggere 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.

  1. Collega l'Ardunio al computer con il cavo USB
  2. Apri l'IDE Arduino
  3. Copia e incolla il codice sottostante
  4. premi il Caricare pulsante per caricare il codice nel tuo Arduino
  5. Aprire il monitor seriale dell'IDE di Arduino premendo CTRL SHIFT M o Selezione del menu Strumenti> Monitor seriale.
 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.


Conversione di valori analogici in temperatura

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.

  1. Copia e incolla il codice qui sotto nell'IDE di Arduino sostituendo l'esempio originale
  2. Clicca sul Caricare pulsante per inviare questo codice al tuo Arduino.
  3. Apri di nuovo la finestra del monitor seriale Arduino perché è scomparsa quando hai caricato il codice.
 #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.

  • Ridurre il valore del ritardo nel loop per vedere quanto velocemente il termistore può reagire alle variazioni di temperatura. (Non suggerisco di cambiare questo sotto il 50 o potresti sovrasfruttare il tuo buffer seriale).
  • Prova a modificare il programma per ottenere valori Celsius (suggerimento: leggi i commenti nel codice)
  • Modificare la breadboard e il codice per utilizzare il pin A1 anziché A0
  • Credito extra: riconfigurare il circuito per utilizzare un mini resistore e documento fotografico da 10 K Ohm analogRead () valori basati su cambiamenti di illuminazione (suggerimento: usa il primo segmento di codice)

Sommario

Questo è tutto ciò che c'è da fare. Ora puoi andare a creare qualsiasi tipo di invenzione usando un termistore molto economico.

  • Hai impiegato le abilità di costruire un circuito breadboard
  • Compilare e caricare uno schizzo sul tuo arduino

Inoltre da questo tutorial hai imparato come:

  • leggere i valori analogici da Arduino usando analogRead ()
  • capire e manipolare il valore restituito dal analogRead () funzione
  • utilizzare un circuito di partizione di tensione per leggere le modifiche a un sensore basato su resistenza come il termistore
  • convertire i valori del termistore analogico in valori di temperatura

Mentre 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.