ARDUINO: TERMOMETRO CON SENSORE ATTIVO



 

INTRODUZIONE

Termometro basato su sensore attivo MCP9701 della Microchip. Il sensore ha una caratteristica di uscita lineare definita dalla formula: vout = tc * ta + v0 dove v0 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, nota la tensione vout, e'

ta = (vout- vout0)/tc

Il valore di Vout si ottiene facendo la media di 1024 valori acquisendo la tensione sul pin A0 che e' collegato all'uscita del sensore. Il valore di ta sarà' calcolato dalla formula e mostrato sul monitor seriale.

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.

schema collegamento tra il sensore attivo e la scheda arduino

IMPLEMENTAZIONE SOFTWARE

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

/*

  Termometro basato su sensore attivo MCP9701 della Microchip. Il sensore ha una caratteristica di uscita lineare
  definita dalla formula: Vout = tc * ta + v0
  dove v0 e' la tensione a 0°C mentre tc e' il coeffcinete di temperatura.
  tc per il MCP 9071 /A é di 19.5 mV/°C mentre per il MCP9700/A e' di 10 mV/°C
  Vout0 per il MCP9701/A vale 400mV.

  la tempertaura,nota la tensione vout, e'

  ta = (vout- vout0)/tc

  Il valore di Vout si ottiene facendo la media di 1024 valori acquisendo la tensione sul pin A0
  che e' collegato all'uscita del sensore. Il valore di ta sara' calcolato dalla formula e mostrato sul monitor seriale.

*/


// 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