Pages: [1]   Go Down
Author Topic: Problema con lectura analogica LM35  (Read 626 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola buenas, tengo un problema de software al que no le encuentro solución, quizá alguien me pueda ayudar... Tengo conectado a un pin análogico un sensor de temperatura LM35, al realizar la lectura funciona bien hasta que llega hasta 31,7 grados, a partir de aquí empieza a bajar con un signo menos delante, por ejemplo lo que tendría que ser 33 grados sale -29 grados. Os copio lo que me da:


Tiempo transcurrido desde el inicio de la medicion    0:1:18
Posiciones sobre 1024 Bits: T1, 57 ;T2, 544 ;LUZ, 57
T1 28.32 Grados Celsius
Tiempo transcurrido desde el inicio de la medicion    0:1:25
Posiciones sobre 1024 Bits: T1, 61 ;T2, 544 ;LUZ, 56
T1 29.79 Grados Celsius
Tiempo transcurrido desde el inicio de la medicion    0:1:32
Posiciones sobre 1024 Bits: T1, 63 ;T2, 544 ;LUZ, 57
T1 31.25 Grados Celsius
Tiempo transcurrido desde el inicio de la medicion    0:1:39
Posiciones sobre 1024 Bits: T1, 65 ;T2, 544 ;LUZ, 57
T1 31.74 Grados Celsius
Tiempo transcurrido desde el inicio de la medicion    0:1:46
Posiciones sobre 1024 Bits: T1, 68 ;T2, 544 ;LUZ, 57
T1 -30.31 Grados Celsius
Tiempo transcurrido desde el inicio de la medicion    0:1:53
Posiciones sobre 1024 Bits: T1, 71 ;T2, 545 ;LUZ, 57
T1 -29.33 Grados Celsius
Tiempo transcurrido desde el inicio de la medicion    0:2:0
Posiciones sobre 1024 Bits: T1, 73 ;T2, 545 ;LUZ, 57
T1 -28.36 Grados Celsius


Como se puede ver la temperatura se hace negativa pero la posición sobre 1024 Bits que da el pin análogico sigue subiendo hacia arriba, a continuación muestro la formula que tengo en el código para transformar la posición en temperatura:

Serial.print ("T1");
    Serial.print (" ");
    Serial.print (float(analogRead(0)*5*100)/1024);
    Serial.print (" ");
    Serial.print ("Grados Celsius");


Siendo la posición (analogRead(0)) siempre positiva (0 para 0v y 1024 para 5v) y todos los valores de la formula tambíen positivos no entiendo como puede salir un float negativo. Si alguien puede saber alguna solución se lo agradeceria.
Logged

Oviedo, Spain
Offline Offline
Newbie
*
Karma: 0
Posts: 20
¡A cacharrear!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mmm interesante. Puedes subir el sketch completo y la versión de arduino que estas usando, por favor?  smiley
Logged

e-mail: 1315cesarm@gmail.com
Twitter: @1315cesarm

Cordoba
Offline Offline
God Member
*****
Karma: 29
Posts: 528
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Son 1024 puntos partiendo de 0, debes dividir en 1023
Logged

El que pregunta aprende, el que responde aprende a responder.

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Solucionado, solo habia que ponerle el ".0" a los float y no hacerlo todo tan a la vez, por partes al principio del programa e fragmentado la formula en partes para darle tiempo y funciona perfectamente, lo de 1023 lo pongo aora mismo. Gracias.
Logged

Cordoba
Offline Offline
God Member
*****
Karma: 29
Posts: 528
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

para esto se usa la funcion map

void loop()
{
  int val = analogRead(0);
  val = map(val, 0, 1023, 0, 255);
  analogWrite(9, val);
}

te mapea tu lectura a un valor entre ciertos valores que tu defines.
Logged

El que pregunta aprende, el que responde aprende a responder.

Pages: [1]   Go Up
Jump to: