Hola a todos
Estoy haciendo un proyecto de temperatura con lm35 y el 16F877A programando en PIC C, el código lo conseguí en Internet y le cambie algunas cosas y lo e terminado. Lo simule en proteus funciona de maravilla sin ningún tipo de errores. Pero el problema es cuando lo pruebo físicamente ya que las lecturas varían mucho y muestran números muy elevados o muy pequeños, las lecturas varían constantemente sin permanecer fijo, ejemplo esta en 70°C y pasa a 120°C o a 10°C o 0°C. No se que puede estar pasando.
Aquí les dejo el código para que lo observen:
Estoy haciendo un proyecto de temperatura con lm35 y el 16F877A programando en PIC C, el código lo conseguí en Internet y le cambie algunas cosas y lo e terminado. Lo simule en proteus funciona de maravilla sin ningún tipo de errores. Pero el problema es cuando lo pruebo físicamente ya que las lecturas varían mucho y muestran números muy elevados o muy pequeños, las lecturas varían constantemente sin permanecer fijo, ejemplo esta en 70°C y pasa a 120°C o a 10°C o 0°C. No se que puede estar pasando.
Aquí les dejo el código para que lo observen:
Código:
#include <LM_35.h>
#include <LCD.c>
void main()
{
lcd_init();
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
//setup_pp(PMP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
//TODO: User Code
float temper,medicion;
printf(LCD_PUTC, "\f"); // limpia o borra el LCD
lcd_gotoxy(1,1);
printf(LCD_PUTC, "Termometro");
delay_ms(2000);
printf(LCD_PUTC, "\f");
lcd_gotoxy(1,1);
printf(LCD_PUTC, "Tempet: ");
delay_ms(2000);
while (true){
lcd_gotoxy(1,1);
printf(LCD_PUTC, "");
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel (0); // Elige canal a medir RA0
delay_us (10);
medicion=read_adc (); // Hace conversión AD
setup_adc (adc_off); // Apaga ADC
temper=medicion*(0.48875); // Pasa binario a °C
printf(lcd_putc,"%02.3f",temper); // xxx.x °C
delay_ms (1000);
}
}
Última edición por un moderador: