ARDUINO: TERMOMETRO CON SENSORE ATTIVO




INTRODUZIONE

Semplicissimo termometro ambientale realizzato con una scheda Arduino e con  il sensore attivo di temperatura MCP9701 prodotto dalla Microchip. Il sensore ha in uscita una tensione proporzionale alla temperatura misurata e 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 implementare nel codice di Arduino.

ta = (vout- vout0) / tc


IMPLEMENTAZIONE HARDWARE

L'implementazione hardware e' eseguita utilizzando una qualunque scheda Arduino MEGA 2560 o la versione Arduino Nano: 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.

La schede Arduino (Nano,Uno, Mega2650) possono essere acquistate al seguente link:

ELEGOO_Arduino_Nano

ELEGOO Arduino_UNO

ELEGOO Arduino_MEGA2650

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 se si vuole asi può plottarla nel plotter seriale del programma IDE per avere un grafico della evoluzione temporale della temperatura.

 Il codice ( per Arduino mega2560 e Arduino Nano)  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