Saludos amigos de Todopic,
LLevo tiempo trabajando con los PIC24 usando los pines análogos para lectura de variables externas; pero siempre he tenido un inconveniente que hasta el momento no he podido solucionar: " Lecturas diferentes de un mismo valor de entrada de voltaje", estoy usando un PIC24FJ128GB110 con una entrada que varía de 0-10V (Tengo divisor de voltaje), el VCC es 3.7V y los voltajes de referencia para el módulo de análogo son GND y éste VCC.
De esto último digo y me dicen si estoy mal: Resolución 1024-->3.7V, de ahí en adelante los valores leídos los calculo Number=(0.00361328125*a); Esto veamoslo en el método que uso cada vez que hago la lectura:
void readADCANA0(int ch,int type){
float Number;
unsigned int a=0,b=0;
Decenas=0;Unidades=0;Decimas=0;Centesimas=0; Milesimas=0;
AD1CHS = ch; // Seleccion del canal analogo
AD1CON1bits.SAMP = 1; // comenzar muestreo
delay_52us();
AD1CON1bits.SAMP = 0;
while (!AD1CON1bits.DONE); // esperar a que se complete la transmision
a=ADC1BUF0;
Number=(0.00361328125*a); // multiplicar por 3.3/1024
b=(Number*10000)/1;
b=(unsigned int)b;
AnalogInt = b;
//-----------------------------------------------------------------------------
while(b>9999){b=b-10000;Decenas++;};
while(b>999){b=b-1000;Unidades++;}
while(b>99){b=b-100;Decimas++;}
while(b>9){b=b-10;Centesimas++;}
Milesimas=b;
ADC1BUF0=0;
}
El método de inicialización es:
void initADC(){
// AD1PCFG = 0xFFEE; // select analog input pins. zeros are the analog input.
// Config for Explorer16. 0b 1111 1111 1100 1111
// Config for Modem GPRS. 0b 1111 1111 1110 1110
AD1PCFG = 0xFFEE;
AD1CON1 = 0x00E0; // manual conversion sequence control
AD1CSSL = 0; // no scanning required
AD1CON3 = 0x1F02; // Tad = 2 x Tcy = 125ns >75ns
AD1CON2 = 0; // use MUXA, AVss and AVdd are used as Vref+/-
AD1CON1bits.ADON = 1; // turn on the ADC
}
Con base a lo anterior, cada ve que leo por ejemplo una entrada de 1.35V (mostrada en multimetro) el resultado que obtengo de la conversión es 1.1, 900mV, 1.3v, 1.25v y así.... y creo que coincidimos todos que no es la idea.
Espero que por favor me ayuden con esto...
Gracias!!!!!!!