Come monitorare le temperature con Arduino

Il monitoraggio della temperatura è fondamentale per la maggior parte dei sistemi di acquisizione dati a supporto di esperimenti scientifici. Qualunque sia il tuo esperimento, avrai spesso bisogno di un dispositivo per misurare la temperatura. Termocoppie, termoresistenze, termistori e termometri a infrarossi sono tutti diversi tipi di sensori di temperatura. La scelta dipende da fattori quali sono le temperature massime e minime previste, l’accuratezza necessaria e le condizioni ambientali. Ora illustreremo tre diversi sensori di temperatura interfacciabili ad Arduino ed utili in varie circostanze.

I sensori più popolari sono le termocoppie ed i dispositivi basati sulla resistenza. Supponiamo che tu abbia scelto un sensore: come si acquisiscono i relativi dati con il computer in modo semplice ed economico? La risposta è un’interfaccia di acquisizione dati con software adatto, come Arduino (che puoi trovare qui). L’hardware dell’interfaccia può infatti collegarsi a una porta USB del PC, e il software Arduino IDE permette di programmare la scheda Arduino in modo da monitorare la temperatura e, se è il caso, di eseguire azioni.

Le termocoppie sono sensori di temperatura popolari perché sono economici, versatili e robusti. Consistono di due metalli dissimili uniti insieme, creando un circuito continuo. Se una giunzione ha una temperatura diversa dall’altra, si genera una forza elettromotrice (tensione). Questa tensione varia con la differenza di temperatura tra le giunzioni. Se la temperatura di una giunzione è nota, è dunque possibile calcolare la temperatura sull’altra giunzione.

Una comune termocoppia di tipo K, che è di solito collegata a un apposito datalogger.

I dispositivi (od i rivelatori) della temperatura basati sulla resistenza si basano, invece, sul principio che la resistenza di un metallo aumenta con la temperatura. Quando sono fatti di platino, possono essere noti come termometri a resistenza di platino (PRT) e, ad esempio, quando è specificato che hanno una resistenza di 100 ohm a 0 °C, si chiamano Pt100. Tuttavia, quando la resistenza da misurare è piccola, ciò può influire in modo significativo sulla precisione.

La temperatura ambiente su un display

In questa prima parte vedremo come realizzare un termometro LCD della temperatura ambiente con una scheda Arduino UNO e un sensore di temperatura analogico LM35 usando dei ponticelli e una breadboard. Questo progetto è ottimo per le persone che iniziano a usare Arduino, in quanto non richiede alcuna abilità di programmazione e ci vogliono meno di 10 minuti per realizzarlo.

L’LM35 è un sensore di temperatura ideale per misurare la temperatura ambiente. Fornisce un’uscita lineare proporzionale alla temperatura, con 0 V corrispondenti a 0 °C e una variazione della tensione di uscita di 10 mV per ogni variazione di °C. Gli LM35 sono più facili da usare rispetto ai termistori e alle termocoppie perché sono così lineari e non richiedono il “condizionamento” del segnale (cioè l’adattamento del segnale all’intervallo di ingresso dell’ADC).

Il sensore LM35 con i relativi piedini (a sinistra) e il display LCD (a destra).

L’uscita di un LM35 può essere collegata direttamente a un ingresso analogico Arduino. Poiché il convertitore analogico-digitale (ADC) di Arduino ha una risoluzione di 1024 bit e la tensione di riferimento del sensore è di 5 V, l’equazione utilizzata per calcolare la temperatura dal valore fornito dall’ADC è:

temp = ((5,0 * analogRead (TemperaturePin)) / 1024) * 100,0

Per visualizzare la temperatura, useremo un display a cristalli liquidi (LCD).

Le seguenti sono tutte le parti di cui hai bisogno per costruire il termometro, che puoi acquistare anche separatamente da vari negozi online (Adafruit, SparkFun, Aliexpress, Banggood, Amazon, etc.):

  • Una scheda Arduino UNO
  • Una breadboard
  • Un display LCD 16 x 2
  • Un sensore di temperatura analogico LM35 (o LM36)
  • Un potenziometro da 10 kOhm (per regolare la luminosità del display)
  • N°19 Jumpers per connettere tutto

Seguendo lo schema qui sotto realizzato con Fritzing, collega l’LCD alla breadboard e quindi alla scheda Arduino con i jumper. Successivamente, collega il potenziometro e il sensore nella breadboard, collega i piedini sinistro e destro del potenziometro, rispettivamente a terra ed a + 5 V, e quello centrale al display LCD. Quindi collega il sensore di temperatura a terra ed a +5 V e all’Arduino, ma stai molto attento, perché se lo colleghi male il sensore si riscalda fino a 280+ C e potrebbe danneggiarsi.

Lo schema di collegamento dei vari componenti del progetto.

Per far funzionare il sensore – o, per meglio dire, per poter visualilzzare sul display digitale i valori di temperatura – devi usare un codice opportuno, o sketch, come quello mostrato qui sotto, da caricare sul tuo Arduino usando l’ambiente di sviluppo integrato, chiamato Arduino IDE, che puoi scaricare dalla pagina ufficiale di Arduino e il gioco è fatto. Ma ricordati di caricare prima la necessaria libreria!

Il codice mostrato qui sotto proviene da G. Kerns e può essere utilizzato per leggere i valori di temperatura dal sensore LM35 o LM36. Se non vedi nulla sul display LCD, oppure se vedi solo dei rettangoli, gira il potenziometro in senso orario / antiorario finché non leggi distintamente. Ora hai un termometro e puoi misurare la temperatura dell’aria intorno a te, dentro casa o fuori.

Lo sketch necessario per visualizzare i valori di temperatura forniti dal sensore.

Misurare temperatura e umidità insieme

In questa seconda sezione vedremo come monitorare la temperatura e l’umidità di un ambiente (ad es. della propria stanza) con un piccolo dispositivo. Allo scopo useremo il sensore di temperatura e umidità DHT22 (potete trovarne uno similare cliccando qui) e la scheda Arduino UNO, in modo da ricevere i suoi dati dal monitor seriale di Arduino.

Prima di procedere, vediamo quali sono le caratteristiche del DHT22 (chiamato anche AM2302). Si tratta di un sensore digitale calibrato in uscita. Utilizza un’esclusiva tecnologia di rilevamento dei segnali digitali e dell’umidità, assicurandone affidabilità e stabilità. L’intervallo di umidità è 0-100% e l’intervallo di temperatura va da -40 a +125 °C. I suoi elementi di rilevamento sono collegati con un singolo chip a 8 bit. Ogni sensore di questo modello è compensato in temperatura e calibrato.

L’accuratezza del sensore DHT22 è di +/-0,2% per l’umidità e di +/-0,1 °C per la temperatura. Perciò, è preferibile al sensore DHT11, che ha gli stessi piedini ma misura l’umidità solo nell’intervallo 20-80% (con un’accuratezza di +/-5%) e la temperatura solo nell’intervallo 0-50 °C (con un’accuratezza di +/-2 °C). La connessione ad Arduino del sensore DHT22 è molto semplice, poiché il sensore è dotato di soli 4 piedini. Qui sotto possiamo vedere lo schema dei collegamenti da fare alla Arduino Uno.

Lo schema di collegamento del sensore DHT22 (qui ingrandito) alla scheda Arduino Uno. Potete trovare un buon sensore di temperatura e umidità per Arduino qui.

Come si vede dalla figura qui sopra, il primo piedino del sensore, VCC, va collegato al piedino 5V della scheda Arduino. Il secondo piedino è quello dei dati e va collegato al piedino digitale 7 della scheda Arduino (chiamato D7). Il terzo piedino è chiamato NC ma non viene usato. Infine, il quarto piedino è quello di terra (GND) e va, naturalmente, collegato al GND della scheda Arduino.

Per acquisire i dati dal sensore e mostrarli nel cosiddetto “monitor seriale” occorre caricare su Arduino lo sketch che trovate di seguito (in pratica, prima fate un copia e incolla su Arduino IDE, il software di gestione di Arduino, e poi tramite Arduino IDE lo caricate sulla scheda Arduino Uno). Prima, però, caricate la libreria “DHT.h” richiesta dallo sketch.

Ecco un esempio di ciò che mostrerà a questo punto il monitor seriale:

I valori di umidità e temperatura acquisiti con il sensore DHT22.

Misurazioni “contactless” con un sensore IR

Negli ultimi anni, il termometro a infrarossi senza contatto (o contactless) è sempre più applicato nei trattamenti medici, nel monitoraggio ambientale, nell’automazione domestica, nell’elettronica automobilistica, nell’aviazione e nel campo militare. Qui vediamo come possiamo usare facilmente anche un termometro a infrarossi senza contatto (come quelli mostrati qui) con Arduino.

In effetti si può dividere la misurazione della temperatura in due tipi: con termometri a contatto e con termometri non contatto. Il metodo a contatto può misurare con precisione la temperatura solo quando l’oggetto di prova e il sensore raggiungono l’equilibrio termico. Ciò può significare tempi di risposta più lunghi e leggere imprecisioni compensate dalla temperatura ambiente.

Al contrario, la misurazione senza contatto utilizza la radiazione infrarossa per misurare la temperatura e non richiede un contatto diretto. Inoltre, questo metodo di misurazione può essere letto rapidamente e con precisione. Un modulo di misurazione della temperatura a infrarossi interfacciabile facilmente a una scheda Arduino di qualsiasi tipo (Nano compresa) è il sensore MLX90614, che è in grado di rilevare temperature da -70,0 °C a +382 °C, con una risoluzione di 0,01 °C.

Il sensore infrarosso di temperatura MLX90614, il modulo per Arduino ed i relativi piedini. Potete trovarne alcuni modelli low-cost online cliccando qui.

Questo modulo misura la temperatura della superficie di un oggetto rilevando l’energia della radiazione infrarossa e la distribuzione della lunghezza d’onda. La sonda di temperatura IR è composta da un sistema ottico, un rilevatore fotoelettrico, un amplificatore, un elaboratore di segnali e un modulo di uscita. Il sistema ottico raccoglie la radiazione IR nel suo campo visivo e l’energia della radiazione infrarossa viene convertita in segnali elettrici corrispondenti quando convergono sul rilevatore fotoelettrico.

Dopo essere stato elaborato dall’amplificatore e dal circuito di elaborazione del segnale, il segnale viene convertito in un valore di temperatura. L’MLX90614 è auto-calibrante e ha un amplificatore a basso rumore integrato nel chip di elaborazione del segnale. Il chip stesso è un dispositivo ADC e DSP a 17 bit, che fornisce risultati accurati e affidabili. Insomma, ottimo per esperimenti in cui siano coinvolte alte temperature o per una varietà di applicazioni, come ad es. la creazione di una semplice termocamera.

Ecco lo schema di collegamento del sensore MLX90614 a una scheda Arduino Uno:

Al solito, per acquisire i dati dal sensore e mostrarli nel “monitor seriale” occorre caricare su Arduino uno sketch, che in questo caso trovate cliccando sul presente link. Assicurati però di aver installato le librerie prima di caricare lo sketch! Ecco un esempio di ciò che mostrerà a questo punto il monitor seriale:

Test del sensore di temperatura contactless e cosà apparirà sul monitor seriale.

Prima di utilizzare il modulo di misurazione della temperatura a infrarossi è importante comprendere il concetto di “campo visivo” (FOV, o Field Of View). Il FOV viene determinato quando il sensore termico riceve il 50% della radiazione che costituisce il segnale, e anche in relazione all’asse principale del sensore. Come mostrato nella figura seguente, la dimensione del FOV è indicata sull’asse orizzontale.

Questa temperatura misurata è in realtà la temperatura media ponderata dell’oggetto nel FOV e l’accuratezza della misurazione può essere garantita solo quando l’oggetto di prova copre totalmente il FOV del sensore a infrarossi. Ciò significa che deve essere assicurata la distanza tra il punto terminale di misura e la barra del bus per soddisfare le richieste di garantire l’accuratezza della misurazione della temperatura.

I punti di cui vogliamo misurare la temperatura devono essere nel campo di vista (FOV).

Leave a Reply