ERROR MEDIDA TEMPERATURA ARDUINO DUE SENSOR LM35

Buenas, las temperaturas que me da son 380 ºC y etc

No se si el problema esta en el sensor o en que no estoy convirtiendo en celsius las medidas que toma el sensor

alguien que pueda ayudarme??

Gracias

Hola,
El lm35 es analógico, lo tienes que poner en un pin analógico, por lo tanto tendrás una lectura entre 0 y 1023, con la función map lo mapeas a lo que necesites.
¿como lo estás haciendo? Si pones el código seguro que alguien te puede ayudar.

Hola, si, lo tengo conectado a un pin analógico y uso este codigo:

//Cargo la librería math.h y defino B y R0 (necesarios para leer la temperatura)
#include <math.h>
const int B=4275; // B value of the thermistor
const int R0 = 100000; // R0 = 100k

const int pinTemp = A0; // Grove - Sensor de temperature conectado a A0

float temp, temp_med = 0; // Temperatura en ºC
float acum = 0, Vout; // variables secundarias
float res = 0.010; // en V/ºC
int i, num_muestras = 100;

void setup()
{
Serial.begin(9600);
pinMode(pinTemp, INPUT);

}
void loop()
{
//incio del calculo de la temperatura

acum = 0;
temp_med = 0;
//Calculamos primero para el Lm35C
for (i = 0; i < num_muestras; i++) {
Vout = analogRead(pinTemp) * 0.00488758553275; // step * V/step = V
temp = Vout / res; // V/(V/ºC) = ºC
acum += temp;
temp_med = acum / num_muestras;
delay(10); // Al tener 10 milisegundos y tener 100 muestras tardara 1 segundo en hacer el bucle.

}
Serial.print(temp_med);
Serial.println(" ºC");
//Fin del calculo de la tempertura
}

Y los resultados que me da son:

384C
383.62 ºC
384.42 ºC
383.93 ºC
384.59 ºC
384.32 ºC
384.24 ºC
384.65 ºC
383.87 ºC

etc.

Hola,

Por eso recomiendan poner el código de primeras.

Bien lo primero seria sacar del for temp_med = acum / num_muestras;

Primero acumulas todo y luego haces la media.

¿Que temperatura se supone que tendria que leer? solo por curiosidad, los factores de multiplicación parecen estar bien, seria valor del pin * 4,88758...... y luego el resultado /10.Pero de la forma que lo tienes está un poco dificir de ver a la primera.

De todas formas, si nos puedes indicar que lectura tiene el pin A0, puedes hacer Serial.print(analogRead(pinTemp));

¿Puedes hacer otra prueba?, cambia
Vout = analogRead(pinTemp) * 0.00488758553275; // step * V/step = V
por
Vout = 70 * 0.00488758553275; // step * V/step = V

Con estó te tendria que dar 34,16

Hola,gracias a todos.

Ya esta resuelto, el problema es que estaba usando:

float R = 1023.0/((float)a)-1.0;
//Calculo R si alimentamos a 3.3V

y debía usar:

float R = 1023.0/(3.3/5*(float)a)-1.0;
//Calculo R si alimentamos a 5V

Por lo tanto, se ha quedado así:

void loop()
{
//incio del calculo de la temperatura

int a = analogRead(pinTempSensor );

float R = 1023.0/(3.3/5*(float)a)-1.0;
R = 100000.0*R;

float temperature=1.0/(log(R/100000.0)/B+1/298.15)-273.15;//convert to temperature via datasheet ;
Serial.print(“temperature = “);
Serial.println(temperature);
Serial.println(” ºC”);
delay(2000);

//Fin del calculo de la tempertura