Problemas con temperatura lm35 y 16f876

#1
Hola estoy programando en pbasic,es un proyecto de un termometro con lcd.estoy utilizando un lm35 con un 16f876.la resolucion que elegi para el conversor es de 8 bits porque si elijo para 10 bits la lectura es erronea ya que los valores que me da a medida que aumenta la temperatura son "0","64" y "128" y siempre asi a medida que aumenta la temperatura,no se que pasa.si elijo para 8 bits la temperatura aumenta cada dos grados,no entiendo que pasa.me pueden ayudar?este es el codigo:


TEMPERATURA VAR BYTE
BATERIA var byte
define OSC 20
Define LCD_BITS 8
Define LCD_DREG PORTB
Define LCD_DBIT 0
Define LCD_EREG PORTC
Define LCD_EBIT 6
Define LCD_RSREG PORTC
Define LCD_RSBIT 7
DEFINE LCD_RWREG PORTC
DEFINE LCD_RWBIT 5
DEFINE ADC_BITS 8
DEFINE ADC_SAMPLEUS 5000
ADCON1 = 0
TRISA=$03
TRISB=$00
TRISC=$00
LCDOUT $FE,$0C
pause 100
LCDOUT " "
pause 100
lcdout " "
pause 100
LCDOUT " "
pause 100
LCDOUT "C"
pause 100
lcdout "r"
pause 100
LCDOUT "e"
pause 100
lcdout "a"
pause 100
LCDOUT "d"
pause 100
lcdout "o"
pause 100
LCDOUT " "
pause 100
lcdout "p"
pause 100
LCDOUT "o"
pause 100
lcdout "r"
pause 100
lcdout $FE,$C0
PAUSE100
lcdout "J"
pause 100
LCDOUT "o"
pause 100
lcdout "s"
pause 100
LCDOUT "e"
pause 100
lcdout " "
pause 100
LCDOUT "B"
pause 100
lcdout "i"
pause 100
LCDOUT "a"
pause 100
lcdout "n"
pause 100
LCDOUT "c"
pause 100
lcdout "h"
pause 100
LCDOUT "i"
pause 100
lcdout "m"
pause 100
LCDOUT "a"
pause 100
lcdout "n"
pause 100
LCDOUT "o"
pause 1000
lcdout $FE,1
PAUSE 100
LOOP
ADCIN 0,TEMPERATURA
PAUSE 100
LCDOUT " TEMPERATURA: "
LCDOUT $FE,$C0
LCDOUT " ",DEC3 TEMPERATURA," Grados "
CAMBIO=TEMPERATURA
adcin 1,BATERIA
PAUSE 1000
LCDOUT $FE,1," BATERIA: "
LCDOUT $FE,$C0
LCDOUT " ",DEC3 ((BATERIA*100)/5)," %"
PAUSE 1000
LCDOUT $FE,2
Gosub LOOP
 
#2
Necesitas adjuntar tambien un esquema del circuito ya que en el puede estar el problema. Salu2
 
#3
mira yo trabaje con un lm 35 y lo que hice fue amplificar la señal del mismo casi al doble porque si haces la cuenta tenes

5volt dividido en los 256 valores ya que usas 8 da 0,01953125

y el sensor varia 10mV por grado lo que da 0.01 o sea que cuando varie 2 grados la temperatura recien ahi el micro te va a tomar la variación.

yo amplifique la señal con una ganancia de 1.96 y de esa forma anda muy bien.

suerte
 
#4
Hola amigos,llevo tiempo siguiendo esta pagina y llego el momento de plantear mi duda.

Estoy diseñando un reloj que mustra la temperatura y la hora y minutos en displays de 7 segmentos con un PIC 16f876.
voy a utilizar un sensor de temperatura LM35 y a utilizar la entrada analogica AN0, pero no se como hacer el programa.
En conjunto el reloj va mostrar primero la hora y minutos, y despues mostrara la temperatura, en ciclos alternativos de 5 segundos. el tema de la temporizacion lo tengo solucionado y el parpadeo de los leds tambien, pero el tema de la temperatura no se como hacerlo. La transision de datos va a ser por I2C utilizando el 74HC164

Haber si podeis echarme un cable y asi avanzo porque estoy atascado.

Muchas gracias amigos!!!
 
#5
Hay informacion de la construccion de reloj y termometros (basados en LM35) con PICs aqui en el Foro y en Google. Puede que no este el codigo para el PIC propuesto y te tocara transcribirlo, pero ese ya es el menor de los problemas.
Saludos
 
Arriba