Hola amigos, estoy realizando una aplicación con el PIC 18F4553 donde necesito el conversor AD a 12 bits, sólo he realizado un programa de prueba para verificar el conversor, me sorprende la inestabilidad de los datos, en 300mV presenta un error aproximado de 4 LSB y en 4.6V el error llega a ser hasta de 28 LSB.
En este mismo montaje he probado un 16F877 y el error máximo llega a ser de 1 LSB, he probado con filtros en retardos y no mejora.
Alguien ha tenido alguna experiencia similar con este PIC.
Muchas gracias.
Código de prueba
#include <18f4553.h>
#device adc=12
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_C6,rcv=pin_C7,timeout=4)
#fuses xt,cpudiv1,nomclr,nowdt,noprotect
#define salida portb,0
#define ad_ini adcon0,2
long valor_ad;
char cadena[5];
void conversion_ad();
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#zero_ram //Borrado de la memoria ram
void main() //Rutina principal
{
setup_adc(adc_clock_div_16);
setup_adc_ports(an0);
while(true) //Rutina general
{
delay_ms(250);
conversion_ad();
}
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void conversion_ad()
{
set_adc_channel(0);
delay_us(20);
valor_ad = read_adc();
sprintf(cadena, "%04lu", valor_ad);
puts(cadena);
}