In questo post spiegherò come utilizzare un sensore di temperatura MCP9700A con Arduino.
Come prima cosa dobbiamo leggere il Datasheet del componente elettrico per capire le tensioni di utilizzo e come reagisce al variare della temperatura.
Il Datasheet del componente MCP9700A ci fornisce i seguenti parametri:
0°C = 500 mV
0 V = 0 bit
5 V = 1023 bit
Variazione -> 10.0 mV/°C
Quindi ho iniziato a ricavare l’espressione matematica per il calcolo della temperatura.
- TEMP = ( analogRead * [Volt.BIT] ) / [Coeff_mV / °C]
- [Volt.BIT] = VoltMAX / BitMAX -> 5V / 1024bit -> 5 / 1024
- TEMP = [ ( VoltMAX * analogRead ) / BitMAX ] / Coeff_mV / °C
- TEMP = ( VoltMAX * analogRead * °C/Coeff_mV ) / BitMAX
Dove:
analogRead è il valore in bit letto da Arduino dal sensore di temperatura (0 – 1023)
Volt.BIT è la differenza di potenziale che viene applicata ad ogni bit (0.00488) in questo caso dato che ho fornito al sensore di temperatura 5V.
Coeff_mV/°C è la variazione di tensione al variare della temperatura (10 mVolt)
VoltMAX è la tensione massima applicata al sensore di temperatura (5 Volt)
BitMAx sono i 1024 bit che arduino riesce a leggere
Con un po’ di matematica abbiamo l’espressione finale.
Visto che con tutte queste formule il valore che usciva fuori non era corrispondente a quello reale in quanto veniva segnata una temperatura di circa 70°C ma io non stavo affatto cuocendo con un moltiplicatore aggiunto alla fine della funzione ho risolto il problema.
Il moltiplicatore è stato ricavato con un banale ragionamento e una semplicissima espressione che teneva conto della temperatura reale misurata con un termometro a mercurio e il valore che veniva misurato da Arduino, il risultato era il seguente:
[TEMPERATURA REALE] : [X] = [TEMPERATURA ARDUINO] : 1
Questo è il codice Arduino che ho utilizzato per misurare la temperatura di un ambiente con un sensore MCP9700A.
0 1 2 |
TEMP = ( ( 5 * analogRead(PIN) * 100.0 ) / 1024 ); |
Ottimizzando il tutto sono arrivato a questa conclusione
0 1 2 |
TEMP = ( ( analogRead(PIN) * 500 ) / 1024 ) - 50 |
Se la funzione che ho scritto non soddisfi le tue esigenze, Tim N9PUZ, ha creato una libreria che fa al caso tuo. MCP9700A Temperature Sensor Arduino Library
I commenti sono chiusi.