Hola a toda la gente del foro
Les cuento, desde ayer que me puse a jugar con la entrada analogica del 16f873a simulando una entrada analoga con un potenciometro de 10k a 5Vdc.
La entrada esta configurada para un resolucion de 10 bits. Al principio no podia ver datos claros, existia mucho ruido, por lo que utilice los Vref para colocarle 0V a vref- y 5V a vref+, con eso se normalizo y se vieron datos, despues me percate que cuando la entrada era 0V no displayaba 0 sino que el dato se perdia o aparecia otro numero, por lo que le puse una resistencia bien baja 1ohm a la entrada analogica, con eso ia pude ver el valor minino.
Despues para poder ver el valor 1023 que equivale a 5Vdc era imposible ya que cuando tenia 4.9V me displayaba 999 y cuando pasaba a mas voltage me da cualquier valor. Mi pregunta es por que no llego a ver el valor maximo del escalamiento.
Este es el programa, como ven es muy sencillo, espero que me puedan ayudar con esto, lo probe en proteus y normal llego a visualizar 1023 a 5vdc, pero en el pcb nada :S
#include <16F873A.h>
#device adc=10
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT,NOCPD,NOWRT,NODEBUG
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_C6, rcv=pin_C7, bits=8)
void main(void)
{
int16 value;
setup_adc_ports(AN0_VREF_VREF);
setup_adc(ADC_CLOCK_DIV_32);
set_adc_channel(0);
delay_us(20);
set_tris_c(0);
do
{
delay_ms(10);
value=1023.00*read_adc()/1023;
printf("ADC:%LU \r",value);
delay_ms(150);
}while(TRUE);
}