Corso base di Arduino: misure di temperature

Dopo aver appreso le tecniche per la misura dei segnali analogici nella scorsa puntata, vedremo in questo articolo come leggere la temperatura ambientale da un apposito sensore collegato ad Arduino.

Avatar di Elettronica Open Source

a cura di Elettronica Open Source

banner prova1

Il sensore utilizzato in queste pagine è l'LM35, un termometro universale, economico e abbastanza preciso, incapsulato in un contenitore di tipo TO-92. Esso risulta già tarato per gestire una temperatura espressa in gradi Celsius. La sua scala è lineare e la tensione fornita in uscita varia di 10mV per ogni grado centigrado. È costituito da tre terminali, di cui due per l'alimentazione (tra 4V e 20V) e uno per l'uscita del segnale vero e proprio. La figura 1 mostra il contenitore del termometro, assieme al suo pinout e alla curva di risposta alle varie temperature.

figura 1 lm35
Figura 1: LM35

I collegamenti elettrici

La visualizzazione della temperatura, in questo semplice e didattico progetto, avviene solo sul monitor seriale o sul plotter seriale dell'IDE di Arduino, ma nulla toglie di poterla inviare a qualsiasi altro supporto di visualizzazione come, ad esempio, un display LCD.

Il cablaggio della scheda, visibile in figura 2, mostra le semplici connessioni del termometro ad Arduino, in particolare:

  • Il pin 1 dell'LM35 è collegato all'alimentazione di Arduino (+5V). È possibile anche collegarlo al pin che fornisce la tensione 3.3V oppure a qualsiasi altro pin digitale con un livello logico alto
  • Il pin 2 dell'LM35 è collegato direttamente all'ingresso analogico A0 di Arduino. È possibile utilizzare anche gli altri ingressi analogici (A0~A5) purché si effettuino le relative modifiche allo sketch
  • Il pin 3 dell'LM35 è collegato alla massa della scheda

figura 2 cablaggio
Figura 2: cablaggio

Lo sketch

Il listato sorgente è molto semplice è la sua filosofia si basa sul seguente algoritmo:

  • Legge l'ingresso analogico, sotto forma di valori compresi tra 0 e 1023
  • Converte tale grandezza in temperatura tramite una formula
  • La esporta sulla linea seriale
  • Aspetta un secondo

È importante, adesso, specificare una tecnica al fine di aumentare leggermente la precisione della lettura. Normalmente (e se non diversamente programmato) l'ADC di Arduino lavora all'interno di un range di tensione compreso tra 0V e 5V ed essendo la risoluzione a 10 bit, esso può riuscire a discriminare una minima variazione di tensione pari a 5V/1024=4.88mV. Nel progetto, invece, abbiamo modificato il riferimento massimo di tensione, utilizzando la funzione analogReference(INTERNAL). Essa configura il riferimento a 1.1V per cui, il minimo gradino misurabile è pari a 1.1V/1024=1.07mV. Gli altri parametri di tale potente funzione sono i seguenti:

  • Default: è il riferimento predefinito, che equivale a 5V (nelle schede a 5V) oppure a 3.3V (nelle schede a 3.3V)
  • Internal: imposta il riferimento a 1.1 volt
  • External: considera come tensione di riferimento quella applicata al pin AREF (ovviamente rispettando il massimo di 5V)

È davvero improbabile, infatti che la temperatura ambientale superi 110°C.

figura 3 listato
Figura 3: Listato

Comprendere l'equazione che trasforma la tensione digitale in temperatura è semplice e si può processarla anche passo per passo:

Si converte il dato digitale in valore di tensione, mediante la proporzione 1024:lettura=1.1:x;

Per le specifiche dell'LM35, che fornisce 10mV/°C, si può moltiplicare il valore della tensione da esso generata per 100.

Visualizzazione delle temperature

Grazie alla funzione Serial.println(temperatura) dello sketch, è possibile osservare l'andamento della temperatura sia sul monitor seriale che sul plotter seriale, come si può verificare in figura 4.

figura 4 monitor plotter seriale

Figura 4: Monitor seriale e plotter seriale

Tom's Consiglia

Per chi inizia ora e voglia dotarsi di tutto l'occorrente, Arduino Uno si trova facilmente a un prezzo abbordabile.