Ciao a tutti,
Sto provando a fare della letture di temperatura tramite Arduino. Ho usato 2 sensori, un NTC e un LM35DZ. Il problema è che a temperatura ambiente le 2 misure sono diverse di un grado e mi sta bene. Ma superati i 40° C la temperatura ricavata dall' NTC è sempre più alta di 6-7 C° rispetto al sensore LM35DZ.
Ora, dove sbaglio??? Ho già fatto molte prove,ma non c'è ne salto fuori.
LMZ è collegato a vcc e l'uscita è direttamente collegata al pin analogico di Arduino, mentre per leggere l' NTC, ho fatto un partitore con una R1 = 10K.
Vi mostro i programmi utilizzati. Per LM35DZ
/*
Programma per lettura di Temperatura LM35DZ/NOPB
*/
int i; //per la media della lettura
float temp; //dichiarazione di variabile che contiene la temperatura
float temp1; // per la media
//int tempPin = A0; //inizializzazione del pin di Arduino
void setup()
{
//analogReference(INTERNAL);
Serial.begin(9600); //apertura porta seriale, set della velocità a 9600 bps
}
void loop()
{
temp = 0;
for (i=0; i < 5; i=i+1)
{
temp1=0;
delay(10);
temp1 = analogRead(A5);
temp1 = (5.0 * temp1 * 100.0)/1023.0;
temp=temp1+temp;
}
temp=temp/5;
//conversione del dato analogico in temperatura
Serial.println(temp); //invia i dati alla seriale
Serial.print(" Celsius, ");
delay(1000); //aspetta 1 secondo prima di ripetere
}
Per NTC
#define Ro 10000 // Valore NTC a 25°C
#define NTCPIN A1 // Pin di collegamento NTC
#define Tnom 25 // Temperatura nominale NTC
#define B 3960 // Coeff. Beta della NTC (dai datasheet)
#define R1 10000
float Temp; //7 serve al sensore
float RNTC;
float x;
float t;
float T;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("Temp=");
Serial.println(misTemp());
delay(1000);
}
// Funzione che misura la temperatura
float misTemp() {
Temp=analogRead(A1);
x=(Temp/1023)*5; // proporzione
RNTC=(R1*5/x)-R1;
t=(1/Tnom)*(log(RNTC/Ro)/B);
T=(1/t)-273,15;
}