PIC16F77 ADC no produce un resultado de 0v con entrada de 0v

2

He configurado un PIC16F77 para muestrear repetidamente una señal de CC analógica. El problema es que cuando aplico una señal de 0v, el ADC no se lee como 0x00 . Es un ADC de 8 bits y en 0v lee aproximadamente 0x05 - 0x06 . (Estoy usando el pin Vref para escalar, y lo he configurado a 2.55V).

Lo que he hecho para intentar solucionar el problema:

  • Una fuente de alimentación de 5v bien regulada
  • Suavizar los condensadores en el pin Vref
  • Condensadores de suavizado en la fuente de alimentación
  • Ató todas las demás entradas analógicas a tierra
  • Incrementó el retraso de adquisición a aproximadamente 40us (se recomienda 16us)
  • La señal a las entradas analógicas es del orden de unos pocos ohmios: la recomendada es inferior a 10k

La hoja de datos dice que +/- 1LSB debería ser posible, y estoy desconcertado. ¿Puedo esperar algo mejor de este PIC? ¿Y cómo se puede lograr?

¡Gracias!

    
pregunta CL22

1 respuesta

0

El problema desapareció, y no estoy completamente seguro de por qué, ya que no he podido replicar el problema que tuve, ¡una vez que desapareció! Pero hice los siguientes cambios:

  1. Reemplaza el uC. Quizás el otro estaba ligeramente dañado
  2. Se cambió la configuración de los puertos ADC / Digital como se muestra a continuación:

Para citar la hoja de datos en la sección " Configuración de pines de puertos analógicos ":

  

Niveles analógicos en cualquier pin que se define como una entrada digital, pero no   como entrada analógica, puede hacer que el búfer de entrada digital consuma   actual que está fuera de las especificaciones del dispositivo.

Antes, y después del problema, había establecido los bits PCFG2:PCFG00 en 011 ( ADCON1 register) que establece:

  • pines RA0, RA1, RA2, RA5 a entradas analógicas
  • RA3 como el pin Vref
  • RE0, RE1, RE2 como IO digital.

Había atado RA0, RA1, RA2 y RA5 a tierra para probar si estaban generando 0x00 . Antes de los cambios no eran 0x00 , pero después de los cambios , eran 0x00 .

El problema / solución:

Había dejado RE0, RE1 y RE2 como entradas digitales en lugar de salidas. Los dejé flotando. Esto puede haber causado problemas como se describe en el párrafo citado (arriba), posiblemente dañando el chip. En otras palabras, inicialmente había establecido TRISE register en 00000111 .

Creo que la configuración de TRISE a 00000000 puede ser lo que solucionó el problema. Quizás una segunda solución hubiera sido simplemente vincular RE0, RE1 y RE2 a tierra o + 5v.

    
respondido por el CL22

Lea otras preguntas en las etiquetas