Olá!
Fiz um programa com conversor ad para ler uma temperatura.
O sensor que estou usando é o LM35, mas estou com problemas...
O LM35 libera 0,32V digamos.
Mas o meu PIC le e mostra 32 e a cada 10 segundos por exemplo, da um salto para 35 ou 36 e volta para os 32. Mas no LM35 está sempre 0,32V.
Isso ocorre também quando ligo o pino ao terra.
Fica marcando 0, ai derrepente salta para 4 ou 5...
O programa que fiz foi esse:
long int valor;
int32 val32;
void main()
{
lcd_init();
setup_adc_ports(AN0_AN1_AN3);
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_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_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
set_adc_channel(0);
while(true)
{
valor=read_adc();
if(valor) valor += 1;
val32=(valor*4+((int32)valor*113)/128)/10;
printf(lcd_putc,"\f Temp.=%luC",val32);
delay_ms(200);
}
}
Eu dividi por 10 para mostrar a temperatura em graus.
Porque será que está dando esse problema?
O PIC que eu uso é o 16F877A.
Obrigado!