Autor Tema: Problema con ADC PIC18f2550 - Vref EXT  (Leído 3964 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Lucho08

  • PIC10
  • *
  • Mensajes: 24
Problema con ADC PIC18f2550 - Vref EXT
« en: 23 de Junio de 2010, 12:03:35 »
Hola a todos:

Quisiera saber si alguien a configurado el PIC18F2550 para trabajar con VREF+, VREF-, externos (diferente a 5V, en mi caso 3.3v) con fuente del PIC a 5Vdc, quisiera saber que consideraciones se deberian tomar en especial.    El problema que tengo es que al programarlo ese PIC con esos parametros, la lectura que me hace el pic no es precisa. Es decir el dato digital que me da; al ingresarle un valor DC(tension continua)  por el AN1, que es el canal que uso; no es el que espero (igual al calculado matematicamente) o sea (3.3v/1024)* Vin(AN1). En mi caso por ejemplo me deberia indicar 683 y este me indica 736.
Segun revisé en otro foro

http://www.microchip.com/forums/m485505.aspx

alli mencionan de un problema parecido al que tengo pero es con el PIC16F877, en el cual dicen que el parametro que da el fabricante de +VREF - (VREF-) que es de 2 vdc no se cumple, y que afecta su precision, sino que con este PIC a partir de 2.5v de delta de VREF recien se nota precision.
Segun el datasheet del 18F2550 el delta de VREF puede ser minimo de 3Vdc.

En mi caso probé cambiando tambien la referencia a 4.0 Vdc con la REF- a GND y no pasa nada, todavia hay un error, aunque un poco menos.
Cuando cambio la VREF+ a 5Vdc ( vref externo tambien ) alli recien aparecen los valores de Vin por AN1 reflejados en el correcto dato digital calculado ( las pruebas las hice para diferentes valores de  Vin.

La programacion la hago en C18

Cualquier ayuda sera bien recibida
Cordiales saludos

Desconectado irukza

  • PIC12
  • **
  • Mensajes: 87
Re: Problema con ADC PIC18f2550 - Vref EXT
« Respuesta #1 en: 26 de Junio de 2010, 18:10:28 »
Hola Lucho

Yo use el ADC de ese micro con vref 5V. Lo use con el ICD2 y no habia forma de que me diera una lectura correcta. Resulta que la alimentación del circuito la hacía a traves del mismo ICD2 conectado al USB de mi máquina, que por alguna extraña razon hacia una ondulacion a una frecuencia relativamente baja. Me di cuenta xq el mismo proyecto usaba el PWM y ahi se veia la ondulación.
La cuestion es que puse una fuente bien estable y todo funciono perfecto.
Fiajte que esté bien tu fuente, y además asegurate que la tensión que medis con el ADC no tenga un ripple que te pueda afectar la medición.
Supongo que estarás usando las librerías del C18 para el manejo del ADC, así q no debería haber problemas con el código.

Otra cosa importante, sobre todo el punto 2, (Al menos yo la tengo en mi bitacora de proyectos) es un tip del famoso "mid range" aca va:

Question 1: I find that the Analog to Digital Converter result is not always accurate.
                What can I do to improve accuracy?

Answer 1:

1. Make sure you are meeting all of the timing specifications. If you are turning the module
off and on, there is a minimum delay you must wait before taking a sample. If you are
changing input channels, there is a minimum delay you must wait for this as well, and
finally there is TAD, which is the time selected for each bit conversion. This is selected in
ADCON0 and should be between 1.6 and 6 ms. If TAD is too short, the result may not be
fully converted before the conversion is terminated, and if TAD is made too long the voltage
on the sampling capacitor can droop before the conversion is complete. These timing
specifications are provided in the “Electrical Specifications” section. See the device
data sheet for device specific information.

2. Often the source impedance of the analog signal is high (greater than 1k ohms) so the
current drawn from the source to charge the sample capacitor can affect accuracy. If the
input signal does not change too quickly, try putting a 0.1 mF capacitor on the analog input.
This capacitor will charge to the analog voltage being sampled and supply the instantaneous
current needed to charge the 120 pF internal holding capacitor.

3. Finally, straight from the data book: “In systems where the device frequency is low, use of
the A/D clock derived from the device oscillator is preferred...this reduces, to a large
extent, the effects of digital switching noise.” and “In systems where the device will enter
SLEEP mode after start of A/D conversion, the RC clock source selection is required.This
method gives the highest accuracy.”

Desconectado Lucho08

  • PIC10
  • *
  • Mensajes: 24
Re: Problema con ADC PIC18f2550 - Vref EXT
« Respuesta #2 en: 27 de Junio de 2010, 20:19:07 »
Gracias irukza por tu respuesta;

Bueno, la fuente que uso para alimentar a mi circuito usa un IC regulador 7805, con condensadores de filtros adecuados; por si las dudas medí el rizado de Vcc con mi osciloscopio y tiene aprox. 15mv de rizado, lo cual me parece bastante aceptable; considera que para las pruebas estuve usando una bateria de 12Vdc como entrada general a mi circuito.; tambien chequié el riple de Vref y Vin AN1 y andan bien.

Sobre las consideraciones a tomar que indicas en la segunda parte(ingles): Si, he hecho bien los calculos de los tiempos, llamese TAD y /OSC, tambien doy los retardos adecuados, luego de seleccionar el canal y antes de tomar la muestra ; despues coloqué un condensador de 0.1mf en la entrada AN1 y no hay mejoras en cuanto a la precision, y en el tercer punto estoy trabajando el micro a 24MHz, usando el PLL interno, a partir de un cristal externo de 4Mhz.

Hice la consulta del caso en otro foro y me dieron un dato interesante.; que para configurar el PIC18F2550 con la libreria del C18 tenia que hacerlo de la manera adecuada segun el PIC que estoy usando; en un principio la configuracion la hice asi:

 OpenADC(ADC_FOSC_32  & ADC_RIGHT_JUST & ADC_12_TAD, ADC_CH1 & ADC_VREFPLUS_EXT & ADC_VREFMINUS_EXT & ADC_INT_OFF,13);

Pero habia un error; no era la forma correcta; alli me indicaron que tenia que ir al archivo mencionado abajo:

../mcc18/doc/periph-lib/AD Converter.htm

fui a ese archivo en mi maquina y pude ver que no era la manera correcta de configurar el ADC, sino asi:

OpenADC(ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_12_TAD, ADC_CH1 & ADC_INT_OFF & ADC_REF_VREFPLUS_VREFMINUS, ADC_2ANA);

bueno lo hice asi y que crees que pasó,,,,,,, NADA, todo sigue igual, marca el mismo error. Bueno al menos se la manera correcta que hay para configurar cada ADC de los PIC........; Bueno para solucionar mi problema tuve que modificar mi circuito para que me acomode la señal de sensado e ingresarlo por AN1; pero para  poder trabajar con VREF 5Vdc. Bueno ya lo hice y si bien es cierto he perdido algo de resolución, para mi aplicación es aceptable. Pero OJO la precision es buena, marca conforme a lo calculado y he tomado varias muestras. Voy a estar atento a si alguien se topa con este problema y consigue solucionarlo con VREF:3.3Vdc

Muchas gracias

Cordiales saludos
 

Desconectado irukza

  • PIC12
  • **
  • Mensajes: 87
Re: Problema con ADC PIC18f2550 - Vref EXT
« Respuesta #3 en: 28 de Junio de 2010, 09:48:54 »
Bueno, me alegro que puedas seguir adelante.
Es muy frustrante cuando uno sigue al pie de la letra las indicaciones de las hojas de datos y luego te topas con pases mágicos como este.
Saludos y suerte con el proyecto.

Desconectado totuer

  • PIC10
  • *
  • Mensajes: 31
Re: Problema con ADC PIC18f2550 - Vref EXT
« Respuesta #4 en: 07 de Septiembre de 2010, 13:07:46 »
Hola Gente

Mi aporte no es mayusculo pero marca un problema recurrente, publiqué un artículo sobre errores en medición del 18f4620, al leerlo van a encontrar el mismo problema, con el agravante que tengo un código en un 18f452 igualito (otros Fuses) funcionando correctamente, yo programo en CCS osea que el inconveniente proviene del micro y no de la configuración de los compiladores.
Saludos y si alguien le encuentra la vuelta yo me anoto a probar.



 

anything