ARDUINO: TERMOMETRO CON SENSORE A DIODO



 

INTRODUZIONE

Termometro ambientale realizzato con Arduino che usa come sensore di temperatura un semplicissimo diodo al silicio come il diodo 1n4148 (o simili come 1n4007). Il termometro si basa sulla caratteristica del diodo al silicio che, al crescere della temperatura, abbassa di 2,2mV / °C la sua tensione diretta (vf). Fissato il valore di Vf= vf0 alla temperatura ambiente t0, il valore della temperatura e' calcolato con la seguente formula:

ta = t0 - (vf(t)- vf0)* K

con K= 1/2,2mV. Il valore di Vf(t)-vf0 = dtemp e' ottenuto facendo la media di 1024 valori acquisendo altrettanti valori di vf per garantire una misura piu accurata e filtrare eventuali rumori che si potrebbero aggiungere alla misura ( vedi la 50 Hz della rete). La misura della temperatura t e' mostrata sul monitor seriale o se si vuole sul plotter seriale del tool IDE dell'Arduino.

IMPLEMENTAZIONE HARDWARE

L'implementazione hardware e' eseguita utiizzando la scheda Arduino MEGA 2560: basta collegare il diodo al silicio 1n4148 con l'anodo sul pin A0 e il catodo a gnd. Il pin A0 e' settato come ingresso con pull up per polarizzare il diodo.

IMPLEMENTAZIONE SOFTWARE

Ecco il codice ( per arduino mega2560) che può essere scaricato tramite il seguente link: DiodoTemp.zip

/*

  Termometro basato su diodo al silicio 1n4148 usato come sensore di temperatura
  Il termometro si basa sulla caratteristica del diodo che al crescere della
  tempertaura abbassa di 2,2mV / °C la sua tensione diretta (VF).
  Fissato il valore di Vf= vf0 a tempertaura ambiente t0, il valore della temperatura 
  e' calcolato con la seguente formula:

  t= t0 - (vf(t)- vf0)* K

  con K= 1/2,2mV

  Il valore di Vf(t)-vf0 = dtemp e' ottenuto facendo la media di 1024 valori acquisendo 
  altrettanti valori di vf 

  Il risultato di t e' mostrato sul monitor seriale 
 
*/


// set pin numbers:

const int in = A0;          // polarizzazione anodo diodoo
const int t0 = 20.3;
const float vf0 = 573.44;
// variables will change:

int i;
float dtemp, dtemp_avg, t;

void setup() {
  Serial.begin(9600);
  pinMode(in, INPUT_PULLUP);            // setta il pin IN conpull up per la polarizzazione

}

void loop() {
  dtemp_avg = 0;
  for (i = 0; i < 1024; i++) {
    float vf = analogRead(A0) * (4976.30 / 1023.000);
    //Serial.println(vf);
    dtemp = (vf - vf0) * 0.4545454;
    dtemp_avg = dtemp_avg + dtemp;
  }
  t = t0 - dtemp_avg / 1024;
  Serial.print("temperatura misurata ( gradi centrigadi)   = " );
  Serial.println(t);
  
  delay (1000);

}

VIDEO

Il video seguente mostra la connessione del sensore alla scheda Arduino Mega 2560 e il monitor del PC in cui gira il programma IDE di arduino nella modalità di monitor seriale