¿Cómo puedo estabilizar una lectura analógica a digital?

3

He construido un reloj de un PIC16F877, algunos LED y otras cosas ...

Para configurar el tiempo en intervalos de 5 minutos, estoy usando un potenciómetro de 22K ohmios conectado entre GND y + 5V con el contacto conectado a la entrada analógica RA0 en mi MCU.

Funciona, pero fluctúa gravemente entre los valores. Es un ADC de 10 bits, y estoy viendo los 8 bits más significativos, y si obtengo mi pozo aproximadamente en el centro, obtengo una lectura promedio de 128, pero oscila entre 127, 128 y 129 ... incluso si Déjalo solo y no lo toques.

¿Cómo puedo estabilizar la lectura? Probablemente podría escribir firmware para tomar una lectura promedio, lo que puede ayudar un poco, pero antes de perder el tiempo, me pregunto si hay algo que pueda agregar (tapas, resistencias, etc.) a mi circuito para hacerlo más estable. En esta parte del circuito, solo tengo el pot conectado a la MCU, nada más.

    
pregunta BG100

2 respuestas

6

Tienes ruido en tu sistema, simple y llanamente. La forma en que lo maneja es la misma forma en que maneja cualquier otro ruido: elimine la fuente del ruido o filtre el ruido. Algunas cosas a considerar son:

  • Los cables largos pueden causar ruido. Acórtelos, o use cables blindados
  • Use medidas diferenciales, si es posible.
  • Asegúrese de usar una buena distribución de energía, enrutamiento y filtrado.
  • Asegúrese de que su PCB esté diseñado para reducir el ruido en las señales importantes.
  • Poner una tapa en el pin de entrada de ADC, entre el pin y la GND, puede ayudar a reducir el ruido de una olla. Esta C, más la R que es tu olla, forman un filtro de paso bajo RC. Cuanto más grande sea la tapa, mejor será el filtrado (pero más lento el sistema responderá a los cambios de la entrada). Comenzaría con un límite de 0.1 uF y subiría desde allí.
  • Use un POT de valor inferior. 10K, 5K, o incluso 1K ohm. Esto disminuye efectivamente la impedancia de salida de su sensor (la olla) y reduce las posibilidades de captar ruido. Asegúrate de no exceder los límites de potencia en la olla.
  • Filtra la señal en el software. Podría ser tan simple como tener un promedio móvil, o podría hacer un filtro más complejo. Cuanto más largo sea el promedio de la señal, mejor será la resolución efectiva que obtendrá, con los inconvenientes obvios.
  • Asegúrese de que está operando el ADC en la MCU correctamente.
respondido por el user3624
3

Desde la memoria, la entrada ADC en este PIC requiere que la "señal" sea una impedancia de salida "baja" (el potenciómetro de 22 kohm sería demasiado alto) y esto significa que tiene un capacitor a través del pin de entrada. El tipo de ADC en estos dispositivos son "aproximaciones sucesivas" y causarán ruido en el pin de entrada, esto se verá como un error de medición.

En el pasado, he desacoplado las entradas de movimiento lento con 100 nF en la entrada a tierra y he alimentado la entrada con una resistencia en serie de un par de kohm. Para señales de mayor velocidad, usaría un búfer de amplificador operacional decente para lograr una unidad de baja impedancia de salida en la entrada ADC.

También puede tener problemas con las entradas de voltaje de referencia de su ADC: estas pueden seleccionarse internamente para conectarse a su Vcc y tierra, sin embargo, si están conectadas a las referencias de voltaje adecuadas y su potenciómetro de 22k está conectado a través del Vcc a tierra Los cambios en Vcc se lograrán. Asegúrese de tener una medida radiométrica o espere tener este tipo de discrepancias.

    
respondido por el Andy aka

Lea otras preguntas en las etiquetas