Salve ragazzi,
anche io ho lo stesso problema di lettura errata!
Ho fatto un test con due tutorial diversi ed ho risultati totalmente diversi!
-TUTORIAL UNO-Schema Fritzing

Codice usato
/*
An open-source LM35DZ Temperature Sensor for Arduino. This project will be enhanced on a regular basis
(cc) by Walter Esposito , http://www.arduinoproject.it
http://creativecommons.org/license/cc-gpl
*/
float tempC; //dichiarazione di variabile
int tempPin = A0; //inizializzazione del pin di Arduino
void setup()
{
Serial.begin(9600); //apertura porta seriale, set della velocità a 9600 bps
}
void loop()
{
tempC = analogRead(tempPin); //lettura valore del sensore
tempC = (5.0 * tempC * 100.0)/1024.0; //conversione del dato analogico in temperatura
Serial.println(tempC); //invia i dati alla seriale
Serial.print(" Celsius, ");
delay(1000); //aspetta 1 secondo prima di ripetere
}
Uscita seriale
Celsius, 0.00
Celsius, 499.51
Celsius, 499.51
Celsius, 499.51
Celsius, 0.00
Celsius, 0.00
Celsius, 0.00
Celsius, 0.00
Celsius, 0.00
Celsius, 371.09
Celsius, 499.51
Celsius, 499.51
Celsius, 193.36
Celsius, 0.00
Celsius, 0.00
Celsius, 0.00
Celsius, 0.00
Celsius, 380.86
Celsius, 499.51
Celsius, 499.51
A questo punto penso che il mio sensore non funzioni correttamente.
Provo quindi un altro tutorial
-TUTORIAL DUE-Schema Fritzing

Codice usato
//TMP36 Pin Variables
int sensorPin = A0; //the analog pin the TMP36's Vout (sense) pin is connected to
//the resolution is 10 mV / degree centigrade with a
//500 mV offset to allow for negative temperatures
/*
* setup() - this function runs once when you turn your Arduino on
* We initialize the serial connection with the computer
*/
void setup()
{
Serial.begin(9600); //Start the serial connection with the computer
//to view the result open the serial monitor
}
void loop() // run over and over again
{
//getting the voltage reading from the temperature sensor
int reading = analogRead(sensorPin);
// converting that reading to voltage, for 3.3v arduino use 3.3
float voltage = reading * 5.0;
voltage /= 1024.0;
// print out the voltage
Serial.print(voltage); Serial.println(" volts");
// now print out the temperature
float temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset
//to degrees ((volatge - 500mV) times 100)
Serial.print(temperatureC); Serial.println(" degrees C");
// now convert to Fahrenheight
float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
Serial.print(temperatureF); Serial.println(" degrees F");
delay(1000); //waiting a second
}
Uscita seriale
0.15 volts
-35.35 degrees C
-31.63 degrees F
0.15 volts
-35.35 degrees C
-31.63 degrees F
0.14 volts
-35.84 degrees C
-32.51 degrees F
0.15 volts
-35.35 degrees C
-31.63 degrees F
0.15 volts
-35.35 degrees C
-31.63 degrees F
0.15 volts
-35.35 degrees C
-31.63 degrees F
0.14 volts
-35.84 degrees C
-32.51 degrees F
0.14 volts
-35.84 degrees C
-32.51 degrees F
0.14 volts
-35.84 degrees C
-32.51 degrees F
0.15 volts
-35.35 degrees C
-31.63 degrees F
0.15 volts
-35.35 degrees C
-31.63 degrees F
0.15 volts
-35.35 degrees C
-31.63 degrees F
Qua le cose sembrano andare meglio dal punto di vista della stabilità delle letture ma sono sempre errate perché sono tutte negative, forse perché ho un voltaggio di riferimento errato poichè reputo che nella mia stanza ci siano 15/17 gradi!
Per tutti e due i tutorial ho usato la mia Arduino UNO rev.3 con sensore di temperatura LM35DZ.
Potete aiutarmi a capire dove sta l'errore?
Grazie!