Leggere la Temperatura con Arduino

Supponiamo adesso di voler leggere una temperatura con il nostro Arduino.

Arduino Uno permette di campionare segnali analogici a 10 bit, con 1024 valori possibili. Cioè

Nmax= 2^n= 2^10= 1024

Se la tensione di ingresso di Arduino varia da 0V a 5 Volt significa che il quanto del convertitore interno di Arduino è 

Q=(Vmax/2^n)= (5Volt/1024)=0,0048875 Volt = 0,5 mV

ossia Arduino Uno riesce a misurare tensioni con passi di precisione di lettura di circa  0,5mV corrispondenti a una temperatura di mezzo grado (corrispondente a 5/10=0,5);

infatti in uscita dal sensore si hanno:

T= 10mV/°C

Se Arduino ha una precisione Q=0,5mV significa che ha una precisione

Err=T/2=(10mV/°C)*(1 °C/2)=0,5 mV    

cioè  di mezzo grado.

Se il sensore fornisce 10mV su grado e la temperatura massima del sensore è di 150°C, significa che il sensore produrrà in uscita una tensione Vo compresa tra 0V e 1,5V

0 V<Vo<1,5 V

 

Esercizio 1

Calcoliamo il valore massimo della tensione in uscita dal sensore.

Tmax (sensore) =150 °C

Vumax(sensore) = (10mV/°C)*Tmax(sensore )= (10mV/°C)*150°C=1,5 Volt

 

Esercizio 2

 Volgiamo sapere a quale numero X del convertitore corrisponde il valore massimo di tensione trovto ,cioè 1,5 V, corrispondente alla temperatura massima di 150°C che possiamo leggere con il nostro sensore.

Dalla proporzione 

1,5 V : X = 5V : 1024

troviamo

X = 1,5*1024/5 = 307

cioè su 1024 valori che l'Arduino ci mette a disposizione, noi al massimo utilizzeremo i primi 307 gradini.

Sembrano pochi, ma avendo detto prima, che l'errore è di mezzo grado, la precisione di mezzo grado ci sembra accettabile per quasi tutte le misure che faremo.

Naturalmente se volessimo avere una precisione maggiore, dovremmo costruirci un circuito di condizionamento che amplifichi il range di uscita del nostro sensore, e lo porti da 1,5V fino a 5 V. Cioè dovremo colegare il nostro sensore con un amplificatore non invertente che ci dia una amplificazione

A= Vomax(Arduino)/ Vomax(sensore)= 5V/1,5V=3,3

Convertiamo la temperatura

Vediamo adesso come convertire i valori letti da Arduino in valori  di temperatura .

Facciamo finta che in un determinato momento Arduino legga un segnale analogico pari a 43.

Sappiamo che in un convertitore

Vo = N*Q     -->      Vo= 43*4,88 mV=210mV

Se il sensore fornisce 210mV questoa tensione corrisponde alla temperatura di 21°C; infatti:

Vo=10mV/°C= 210mV      -->     T= 210mV/10mV=21 °C

Per brevità potremmo dire che basta dividere il valore letto per 10 per avere i gradi corrispondenti.

 

Sketch per leggere la temperatura con il sensore LM35

Come vedete il listato non fa altro che leggere l'ingresso analogico e stampare il valore sulla porta seriale, sia come dato grezzo (valore letto) che come conversione in temperatura (tempC), operazione che ripete ogni secondo.