Go Down

Topic: Lectura de sensor de temperatura LM35 muy inestable [SOLUCIONADO] (Read 2070 times) previous topic - next topic

axelcamos

Hola,

Estoy haciendo um proyecto em el que necessito medir la temperatura, para ello estoy usando um LM35 conectado a la antrada analógica A0. El problema que tengo es que la lectura del sensor varia mucho y cuando digo que varia mucho quiero decir que a cada segundo la temperatura cambia mucho, por ejemplo va de 45º a 16, luego 0, despues a 37 y así todo el rato.
Salido del monitor serie (el primer valor es la lectura em bruto y el segundo ya convertida):
Code: [Select]

14
4.89 C
58
27.86 C
71
33.24 C
68
32.75 C
58
29.33 C
28
15.64 C
0
0.00 C
0
0.00 C



El montaje es simple

LM35 esta conectado a los 5V y a GND del Arduino UNO y la salida al pin A0

El codigo lo he sacado de outro foro y allí les funciono, a mi no...
Code: [Select]

const int sensorPin = A0;
float temp;

void setup() {
 // put your setup code here, to run once:
Serial.begin (9600);
pinMode (sensorPin, INPUT);
}

void loop() {
 float value = analogRead (sensorPin);
 Serial.print (analogRead (sensorPin));
 Serial.println();
 float millivolts = (value *5000L) / 1023;
 float celsius = millivolts /10;
 Serial.print (celsius);
 Serial.print (" C");
 Serial.println();
 delay (1000);

}


He probado colocando condesadores de filtro ente VCC y GND del LM35 y hace lo mismo. He probado con 3 LM35 diferentes y hace lo mismo. He probado con Arduino UNO y con Arduuino mega 2560 y hace lo mismo.


He buscado el problema em um monton de foros, pero parece que nadie há tenido este problema, confio em que alguien me pueda ayudar, porque ya no tengo mas ideas ni se de donde sacarlas...

Un saludo.



 

ddwasil

Hola Alexcamo,estas teniendo problemas de ruido ,hay muchos en internet sobre el tema ,pero el temas es bastante amplio y complicado ,aparte de capacitores tendrias que tener una fuente estable y el cable con malla para empezar .¿Solo tenes conectad este sensor al circuito?

axelcamos

Solo esta conectado el sensor al arduino, la fuente que estoy usando es la del Arduino mismo y el sensor esta conectado al arduino con cables soldados de uma longitude de unos 4cm.

surbyte

Code: [Select]
float millivolts = (value *5000L) / 1023;
 float celsius = millivolts /10;


Esto modificalo por esto
Code: [Select]
float celsius  = (value *500.0) / 1023.0;


Curioso es que una lectura salga con C y otra no.
A ver si mi corrección funciona. No me gusta ese 5000L

axelcamos

Hola surbyte,

Primero comentar que la primera lectura sin la "C" es la lectura en bruto de la entrada analógica.

He hecho el cambio que me comentas y sigue passando lo mismo... esta es la salida del monitor:

Code: [Select]

54.00
26.39 C
75.00
36.66 C
68.00
33.24 C
57.00
27.86 C
40.00
19.55 C
23.00
11.24 C
0.00
0.00 C
0.00
0.00 C



Parece ser ruído, pero creo que no lo es. He probado todas las soluciones al ruído que he encontrado, que son muchas..., y nada funciona. Pero tampoco parece ser SW, no se que puede ser.

surbyte

Por favor, desconeta la salida del LM35 y mide con un tester/multimetro la salida en mV.
Dime si es o no estable.
Verifica que GND del LM35 este conectado a GND del arduino.

axelcamos


Despues de 6 dias peleando con los 3 LM35DZ que compre, hoy he consegido prestado uno que ya estaba montado en um proyecto y que estaba funionando, con este outro LM35 si que me há funcionado el código y extactamente el mismo circuito que ya tenia, así que la conclusion es que los 3 sensor que compre esatan con defetcto.... Vpy a tener que conseguir otros....

Muchas gracias a los 2 por a ayuda!!!

Un saludo!

surbyte

Bueno este problema es muy repetido. Hay que tener cuidado con los LM35DZ
Lei en un hilo que no recuerdo donde que hay un transitor Chino que se vende bajo esa denominación.
Resulta que el autor del hilo media valores propios de un transitor NPN entre sus bornes.

Tal vez sea tu caso.

govalle3

Por favor, desconeta la salida del LM35 y mide con un tester/multimetro la salida en mV.
Dime si es o no estable.
Verifica que GND del LM35 este conectado a GND del arduino.
La salida es estable.
Resulta que utilizo ese mismo sensor en arduino mega y funciona con el mismo codigo.
Pero es pasar el sensor a un arduino uno y sigue ese problema de las variaciones

Go Up