Comportamiento extraño en sensor de temperatura con LM35

Saludos colegas.

Estoy diseñando un sensor de temperatura con un PIC y el integrado LM35. En principio no he tenido mayores problemas, pero obtengo un comportamiento que creo que es un poco extraño, los datos que se leen varían bastante, por ejemplo leo cada 500 ms la temperatura, e imprime 20º, al siguiente 21º, luego 22º. No creo que sea normal que la temperatura ambiente varié 2º en un segundo.

El circuito lo alimento con 5 voltios extraídos de la fuente del ordenador, pongo el famoso condensador de 100µF cerca a la alimentación del micro, y la salida del LM35 la llevo al pin AN0 del micro para realizar con este la conversión análogo-digital.

Ajunto el código para mayor claridad:
Código:
#include <16F887.h> 
#device adc=10 
 
#fuses XT,NOWDT,PUT,MCLR,NOPROTECT 
#use delay(clock = 4000000) 
#use rs232(BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7,BITS=8,PARITY=N) 
 
unsigned int8 temperatura=0; 
 
#int_rda 
void isr_rda( void ){ 
 
   int8 r = getchar(); 
    
   if( r == 'r') 
      putchar(temperatura); 
} 
 
 
#int_timer1 
void isr_timer1( void ){ 
   int16 adc_ = read_adc(); 
   unsigned int8 temp = adc_*(5.0/10.23)+0.4; 
   //printf( "%ud\n\r", temp ); 
    
   if( temp!= temperatura ){ 
      temperatura = temp; 
      putchar(temperatura);       
   }   
} 
 
 
 
void main(void){ 
 
   set_tris_b(0x00); 
 
 
   setup_adc_ports( sAN0 ); //AN0 analogo y VDD como referencia. 
   setup_adc( ADC_CLOCK_INTERNAL ); 
   set_adc_channel( 0 ); 
    
   setup_timer_1( T1_INTERNAL | T1_DIV_BY_8 ); 
 
   set_timer1(3036); 
 
   enable_interrupts(INT_TIMER1); 
   //enable_interrupts(INT_RDA); 
   enable_interrupts(GLOBAL); 
    
    
   while(1); 
}
¿Es normal este comportamiento?
¿Algo que deba chequear?

Saludos y Muchas Gracias por su tiempo y colaboración. :apreton:
 
Hola, me paso exactamente lo mismo y lo solucione asi:

-Agregar un condensador de 1uf en la terminal de salida del LM35, y que este lo mas cerca posible a la entrada del pic.

- Distribuir condensadores electroliticos y ceramicos en toda la linea de alimentacion (VCC y GND) de 100, 220 , 470, 1, 10, 47 uF y de 0.01 uf ceramico, separados lo mas que puedas.

Con estos cambios la temperatura se quedo estable, incluso a veces da la sensacion de que no esta midiendo, pero toco el sensor y la temperatura aumenta y despues vuelve a bajar.

Saludos.
 
Atrás
Arriba