# Duda con ADC y temperaturas bajo 0 ºC



## StrySG (Jul 3, 2010)

Hola , Tengo un problema para mostrar temperaturas bajo 0ºC con el sensor de temperatura LM35.

Estoy utilizando el ADC del ATMEGA32. El problema esta que justo cuando el LM35 esta sometido a temperaturas bajo 0ºC a su salida entrega una tension negativa que no puede ser introducida al microcontrolador.

Ese no es mucho problema por que utilizando AOs podría detectar cuando hay una tensión negativa y luego invertir la señal para introducirla en otra entrada de ADC del microcontrolador.

Pero cuando hay temperaturas bajo 0 ºC, el LM35 no tiene una salida en tension lineal como cuando esta en temperaturas encima de 0ºC, que varia aporximadamente 10mv por ºC en cambio con temperaturas bajo 0ºC, además de ser una tensión negativa la variación entre grados es insignificante casi nula en voltaje y no podría ser detectada por el ADC del microcontrolador , y no tiene una variacion lineal.

Alguno de ustedes sabe alguna solución. O quizá conozcan otro sensor de temperatura con características similares pero que trabaje en temperaturas bajo 0 ºC de igual manera que en temperaturas sobre 0ºC. Les agradecería mucho la ayuda que puedan darme...


----------



## Tomasito (Jul 3, 2010)

Para solucionar el problema de las tensiones negativas, podés hacer una cosa, separar las masas del lm35 y del atmega, y hacer un _offset_ entre ambas (con diodos por ejemplo). Te ahorrás los amplificadores operacionales.




Por el tema de la linearidad, algo estás haciendo mal, porque el LM35 es lineal desde los -55ºC hasta los 150ºC a razón de 10mV/ºC. Mirá la hoja de datos: http://www.national.com/ds/LM/LM35.pdf

Probá midiendo la salida del lm35 con un tester.

PD: Me parece que el ATMega32 tiene la masa analógica separada, podrías poner un divisor resistivo con dos resistencias de 10k por ejemplo, para dejar la masa del ADC por encima de la del ATMega.


----------



## Dr. Zoidberg (Jul 3, 2010)

StrySG dijo:


> Pero cuando hay temperaturas bajo 0 ºC, el LM35 no tiene una salida en tension lineal como cuando esta en temperaturas encima de 0ºC, que varia aporximadamente 10mv por ºC en cambio con temperaturas bajo 0ºC, además de ser una tensión negativa la variación entre grados es insignificante casi nula en voltaje y no podría ser detectada por el ADC del microcontrolador , y no tiene una variacion lineal.



La unica forma de que no sea lineal es que lo estés polarizando mal y parece que eso es lo que estás haciendo si lo alimentás con tensión unipolar sin colocarle el offset que te dice Tomasito. *Si no los "offseteas" NO PODES MEDIR temperaturas bajo cero.*



			
				Tomasito dijo:
			
		

> PD: Me parece que el ATMega32 tiene la masa analógica separada, podrías  poner un divisor resistivo con dos resistencias de 10k por ejemplo, para  dejar la masa del ADC por encima de la del ATMega.



*Y con el offset tenés que hacer una conversión AD en modo diferencial*...


----------



## Tomasito (Jul 3, 2010)

Pero el resto se soluciona muy fácil por software. Le decís que el valor del ADC a partir de X valor, ponga en la variable que use para la temperatura un valor positivo, y por debajo de eso, uno negativo. Más fácil imposible.

Los problemas que surgen por no leer las hojas de datos


----------



## cosmefulanito04 (Jul 3, 2010)

Otra posible solucion seria usar un lm335 en vez del lm35, la diferencia es que te tira grados ºK en vez de ºC, con lo cual:

0ºC --> 273ºK  --> 2,73v
27ºC --> 300ºK --> 3v
-10ºC --> 263ºK --> 2,63v

Entonces, para resumir la diferencia entre ºK y ºC son 273ºk, despues es simplemente lineal por 1ºC tengo 1ºK.


----------



## StrySG (Jul 6, 2010)

Gracias por responder a todos. 

No habia pensado para nada en separar masas, ahora estou utilizando el voltaje de referencia interno del ATMEGA32 que es de 2.56V, ¿tendría que utilizar otro voltaje de referencia externo? o esto no importaría...


----------



## StrySG (Jul 8, 2010)

Hice algunas Pruebas haciendo un off-set como proponieron, y midiendo con el tester se tiene un variacion de voltaje lineal.

Pero el ADC del ATMEGA32 no tiene una tierra separada del GND del ATMEGA32, asi que no puedo detectar esa linealidad y además se tienen voltajes negativos, por seguridad tambien hice pruebas en simulacion con proteus.

Es simulador presenta el mismo problema, al hacer el offset se soluciona el problema de la linealidad pero no el de tensiones negativas. 

Me parece que a estas alturas, la mejor solucion seria cambiar de sensor como propuso *-cosmefulanito04-* por el Lm335, les informaré de mis progresos.


----------



## Dr. Zoidberg (Jul 8, 2010)

Por que no leés lo que puse *hace 5 días*?


ezavalla dijo:


> *Y con el offset tenés que hacer una conversión AD en modo diferencial*...



Haciendolo en modo diferencial, podés conservar la MISMA MASA y sin cambiar nada! y esa conversión diferencial - para esta aplicación - la podés muy fácilmente:


Mandás la salida del LM35 a una entrada del A/D.
Mandás el punto de conexión del ánodo del diodo de arriba y el LM35 a OTRA entrada del A/D.
Convertís ambos valores y restás la primera menos la segunda. Listo: problema resuelto.


----------



## StrySG (Jul 10, 2010)

Leí lo que pusiste pero no entendí bien, como en el Datasheet habían varios circuitos, empecé probando el de los diodos, pero equivocadamente creí que en la salida -VS, debia mandarse a tierra del ADC, como este micro no la tenía hice una serie de conexiones que no funcionaron.

Bueno colocando el -VS a otra entrada de ADC, ya conseguí medir tambien valores de temperatura negativos, modificando el programa, otro circuito que tambien funcionó es el que esta adjunto al final.

Asi se tiene una variacion lineal de casi +0.5 mV en temperaturas bajo 0ºC, y de casi 20mV ºC desde 1 hasta casi 7ºC a partir de este valor para arriba la variación ya no es muy lineal pero por programa también puede solucionarse...

PD: Gracias por la ayuda a todos .


----------



## Edwar09 (Abr 16, 2014)

Hola, yo igual nesecito medir temperatura negativa y hare eso de modo diferencial pero no tengo el 1n914
podria usar un 1n4001 o 1n4148 que sonlos que tengo?


----------



## cosmefulanito04 (Abr 16, 2014)

Dale para adelante, usá el 1n4148 que es más livianito, pero el otro también te sirve.


----------

