GUIDA 14: Arduino, sensore di temperatura TMP35

Oggi volgio mostrarti la realizzazione di un termometro con Arduino e il sensore TMP35.

Come vedi dal datasheet, l’integrato ha soli 3 pin. Nell’immagine vedi a cosa servono. Mi raccomando a fare attenzione all’ordine di collegamento!datasheet

Il primo pin è collegato a 5V, il secondo è la tensione di uscita che che Arduino “convertirà” in °C: lo collegherai a un pin analogico. Il terzo pin va collegato a massa. Ecco quindi lo schema:

 

schema

Il TMP36 misura temperature che vanno da -40  a +125°C e restituisce in uscita une tensione tra 0.1V e 1.7V. Alla temperatura di 0°C la tensione in uscita è pari a 500mV (0.5V). Questa, come vedi nel grafico, all’aumentare di un grado, aumenta di 10mV.

datasheet2

Ecco uno sketch che visualizza sul monitor seriale la temperatura:

int valADC = 0;
float temp = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
valADC = analogRead(0);
temp = ((valADC * 0.00488) - 0.5) / 0.01;
Serial.println(temp);
delay(300);
}

La formula per convertire il valore ottenuto con analogRead() in °C è la seguente:

Formula

dove:

  • T è la temperatura espressa in °C
  • ValADC è il valore che restituisce la conversione analogico-digitale a 10 bit di Arduino
  • precisioneADC è ottenuto dividendo la massima tensione sul pin analogico (5V) per il numero  massimo restituito dall’ADC (Analog Digital Converter): 1023. 1023:5=0.00488
  • tensioneZeroGradi è la tensione che si ha in uscita quando la temperatura è 0°C
  • variazioneTensione è la variazione dell’output all’aumento di 1°C

Analizziamo quindi il codice. All’inizio sono definite le variabili globali. valADC è di tipo intero, mentre temp  di tipo decimale, float: la temperatura potrà essere espressa con numeri decimali.

Nel setup() inizializziamo la comunicazione seriale a 9600 boud/s.

Nel loop() assegniamo alla variabile valADC la conversione della tensione che si trova sul pin 13 in un numero (da 0 a 1023). Nella riga sotto convertiamo questo numero in gradi centigradi e lo assegniamo alla variabile temp. Successivamente scriviamo sulla porta seriale questa variabile. Infine ho inserito una pausa di 300ms  per rendere più leggibili i dati letti sul monitor seriale.

Nel video sotto puoi vedere il circuito in funzione.