sabato 7 maggio 2016

Tutorial sull' LM35 e Arduino UNO R3

Ciao e ben ritrovati sul Blog Aspettando il bus.
Oggi vi propongo un breve tutorial su come utilizzare il sensore di temperatura LM35 e come collegarlo ad Arduino UNO R3 per fare un semplice termometro.

Fig. 1 - LM35 e Arduino UNO R3 -  foto di Paolo Luongo
Fig. 1 - LM35 e Arduino UNO R3 -  foto di Paolo Luongo

La realizzazione di questo progetto è molto semplice: basta un chip LM35, che costa 1,50 Euro circa, un Arduino UNO R3, e tre fili Maschio/Femmina e il nostro fidato computer.
Iniziamo piano piano ...


Per prima cosa ci dobbiamo procurare il datasheet dell'integrato LM35 : io preferisco quello della Texas Instrument perché ha molte più informazioni rispetto a quello delle altre case costruttrici, ma è questione di gusti. La prima cosa è conoscere come funziona il chip e come si deve collegare.


Fig. 2 - Particolare del datasheet dell' LM35 - Fonte Texas Instrument
Fig. 2 - Particolare del datasheet dell' LM35 - Fonte Texas Instrument

Guardando la Fig.2 notiamo, nel cerchio rosso, le prime informazioni che ci interessano: come collegarlo nella versione in contenitore TO-92. Guardandolo dal basso e leggendo da sinistra a destra abbiamo il positivo di alimentazione, l'uscita  e il polo negativo dell'alimentazione.
Curiosando nel datasheet notiamo che non ha bisogno di una tensione di alimentazione particolarmente stabilizzata, almeno per il normale uso di un hobbista.

Prima di iniziare è meglio fare confidenza con LM35, realizzando un semplice circuito senza utilizzare, almeno per ora, Arduino ma il caro multimetro digitale, la nostra breadboard e l'inesauribile alimentatore economico da 3 Euro. (vedi Fig. 3)

Fig. 3 - Il sensore LM35 collegato sulla breadboard - foto di Paolo Luongo
Fig. 3 - Il sensore LM35 collegato sulla breadboard - foto di Paolo Luongo
Dopo l'alimentazione a 5 Volt basta collegare il nostro multimetro.

Fig. 4 - LM35 col multimetro digitale - foto di Paolo Luongo
Fig. 4 - LM35 col multimetro digitale - foto di Paolo Luongo

Il filo verde (uscita dell'LM35) andrà collegato al polo positivo del multimetro e il filo nero al negativo di alimentazione (GND). Nella foto di Fig. 4, si nota che il multimetro segna 0,230 Volt = 230 mV. 
Nel solito datasheet vediamo che il chip fornisce una tensione proporzionale alla temperatura rilevata pari a 10 mv per ogni grado centigrado. Quindi la temperatura è di 24 Gradi centigradi.

A questo punto possiamo pensare di utilizzare il nostro Arduino UNO R3 come multimetro leggendo la tensione con uno dei suoi ingressi analogici e visualizzando il risultato col monitor seriale.
Però, dobbiamo fare qualche considerazione prima di procedere per evitare grossolani errori di lettura.

Gli ingressi analogici di Arduino UNO R3 hanno una risoluzione di 10 bit, che significa che avremo 1024 valori nella soglia di 0-5 Volt. Quindi ogni bit avrà un peso di 5 Volt / 1024 valori = 4,9 mV circa.


Ora non ci resta che prendere i 3 tre fili Maschio/Femmina e realizzare il circuito di Fig.1. Al momento della realizzazione non avevo disponibile un filo di colore verde ma bianco che ho collegato all'ingresso A0. Il filo rosso ai + 5 Volt ed il nero a GND.

Ho realizzato il primo sketch pensando di utilizzare il monitor seriale. Dopo averlo caricato sulla board bisogna attivarlo andando nell' IDE : da Strumenti -> Monitor Seriale.

Poi ho realizzato un secondo sketch per il plotter seriale: da Strumenti -> Plotter Seriale.

A questo punto mi sono fermato a guardare cosa accadeva ed ho pensato di fare qualche miglioramento allo sketch.
  1. La prima cosa è che il valore letto non è molto stabile e subisce leggere fluttuazioni legate sia a disturbi che a piccole variazione della tensione di alimentazione. 
  2. Volendo utilizzare il sensore per valori di temperatura più utilizzati dagli hobbisti si poteva pensare di cambiare la tensione di riferimento analogica. Arduino UNO R3 ha la possibilità di utilizzare, come riferimento, una tensione interna di 1,1 Volt. L' unico problema è che, in questo modo, la temperatura massima è di 110 gradi centigradi, ma il vantaggio di un notevole aumento della precisione vale questo "modesto" sacrificio. Quindi ogni bit avrà un valore di 1,1 Volt / 1024 valori =  1 mV circa !
  3. Ci sono 2 sketch: uno per il monitor seriale e l'altro per il Plotter seriale.
Dopo un po' di lavoro sul codice ho risolto il punto 1 facendo fare la media degli ultimi 10 valori rilevati. Il numero di valori può essere "adeguato" in base alle proprie esigenze. Attenzione: troppi valori rendono più  lenta la variazione della temperatura; pochi valori rendono la lettura più sensibile ai disturbi.

Fig. 5 - Il nuovo sketch per LM35 ed il monitor seriale di Paolo Luongo
Fig. 5 - Il nuovo sketch per LM35 ed il monitor seriale di Paolo Luongo

Del punto 2 ho già parlato, ora non resta che il punto 3.
Nella Fig. 5 è cerchiato in rosso dove bisogna agire per passare dalla modalità Monitor Seriale a quella Plotter Seriale. Ovviamente si deve ricompilare e ricaricare lo sketch nel nostro Arduino UNO R3.

Fig. 6 - Se si commenta si compila lo sketch per il plotter seriale - Paolo Luongo
Fig. 6 - Se si commenta si compila lo sketch per il plotter seriale - Paolo Luongo
In definitiva basta commentare o non commentare quella riga per attivare lo sketch per il plotter seriale o il monitor seriale.

Vi consiglio di dare uno sguardo al codice perché ho utilizzato la "compilazione condizionale" che include o meno alcune istruzioni. Lo sketch completo lo trovate qui.

Ecco il risultato del monitor seriale (vedi Fig. 7)

Fig. 7 - Uscita dei dati sul monitor seriale - fonte  IDE Arduino
Fig. 7 - Uscita dei dati sul monitor seriale - fonte  IDE Arduino

e del plotter seriale (vedi Fig. 8)

Fig. 8 - Uscita dei dati sul Plotter seriale - fonte IDE Arduino

Nota: In entrambi i casi il risultato si stabilizza dopo circa 10 rilevazioni, con piccole fluttuazioni.

Prima di lasciarvi vi consiglio di dare uno sguardo al datasheet dove troverete utili consigli su come collegare a distanza il sensore LM35 alla board Arduino con un cavetto schermato. (vedi Fig.9)

Fig. 9 - Consigli su come collegare l' LM35 con cavetto schermato - Fonte datasheet T.I.
Fig. 9 - Consigli su come collegare l' LM35 con cavetto schermato - Fonte datasheet T.I.
Ultime considerazioni: Il chip LM35 è distribuito in diversi contenitori e con diverse specifiche di precisione, ma è principalmente destinato ad un uso "civile" non particolarmente esigente sulla precisione.

Vedo avvicinarsi il tanto desiderato ... BUS.
Perciò vi ricordo che ho già realizzato un progetto simile con il DTH11 e vi invito a dare uno sguardo anche agli altri articoli sul blog.

Per ora è tutto: ciao e buon lavoro !
Paolo :-)






Nessun commento: