ARDUINO: TERMOMETRO CON SENSORE ATTIVO




INTRODUZIONE

Semplicissimo termometro con scheda Arduino basato su sensore attivo MCP9701 della Microchip. Il sensore ha una caratteristica di uscita lineare definita dalla formula:

vout = tc * ta + vout0

dove vout0 e' la tensione a 0°C mentre tc e' il coefficiente di temperatura. Il tc per il MCP 9071 /A e' di 19.5 mV/°C mentre per il MCP9700/A e' di 10 mV/°C .

La tensione di uscita vout0 per il MCP9701/A vale 400mV. La temperatura misurata dal sensore, nota la tensione vout, e' data dalla formula che andremo a mplementare nel codice di arduino.

ta = (vout- vout0)/tc


IMPLEMENTAZIONE HARDWARE

L'implementazione hardware e' eseguita utiizzando la scheda Arduino MEGA 2560: basta collegare il sensore attivo come mostrato in figura. Il pin A0 e' settato come ingresso analogico per la conversione AD della tensione di uscita del sensore.

microst.it

IMPLEMENTAZIONE SOFTWARE

Per ricavare il valore della temperatura ta bisogna misurare il valore di Vout. Il codice esegue una media del valore letto sul in A0 prendendo 1024 campioni . Il valore di ta sarà' calcolato dalla formula e mostrato sul monitor seriale del programma IDE di Arduino o plottarla nel plotter seriale del programma IDE.

 Il codice ( per arduino mega2560 e Arduino Nano) che può essere copiato direttamente o scaricato tramite il seguente link: ActiveTherm.zip

/*
  Termometro basato su sensore attivo MCP9701 della Microchip. 
*/


// set pin numbers:

const int in = A0;            // ingresso tensione uscita sensore

// set constants:
const float vout0 = 400;   //  tensione di uscita vout in mV del mcp9701 a 0°C
const float tc = 19.53;      /// mV for °C coefficiente di temperatura del MCP9701/A

// variables:

int i, f;
float vout, vout_avg, ta;


// MAIN PROGRAM

void setup() {
 Serial.begin(9600);
 pinMode(in, INPUT);            // setta il pin IN come input
 pinMode(13, OUTPUT);            // setta il pin IN come input
 digitalWrite(13, LOW);
 analogReference(DEFAULT);

}

void loop() {
 vout_avg = 0;
 for (i = 0; i < 1024; i++) {
   vout = analogRead(A0) * (4976.30 / 1023);
   //Serial.println(vout);
   vout_avg = vout_avg + vout;
 }
 vout = vout_avg / 1024;
 //Serial.println(vout);
 ta = (vout - vout0) / tc;
 Serial.print("temperatura misurata ( gradi centigradi)   = " );
 Serial.println(ta);
 delay (1000);
}

VIDEO

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