¿Cómo suavizar los datos analógicos?

1

Estoy intentando leer datos de celdas de carga, pero estos valores son muy fluctuantes. Tengo ADS1230 ADC y lo había configurado para la ganancia interna de 128. Cuatro celdas de carga de medio puente están conectadas en una configuración de puente y la salida del puente se alimenta a ADC. Pero no hay manera de que pueda obtener una lectura estable. Sería genial saber lo que me estoy perdiendo aquí. ¿EMI sería la causa aquí? Cualquier sugerencia sería apreciada.

    
pregunta Arjun

2 respuestas

6

Es probable que su entrada sea simplemente bastante ruidosa. Aplicar alguna forma de promediar aquí es su mejor apuesta.

La solución más sencilla es tomar n muestras y promediarlas juntas para producir un resultado. Esto divide su tasa de muestreo por la cantidad de muestras que utiliza por intervalo de promediación.

Otra opción es usar un filtro digital; la más sencilla de implementar es una respuesta de impulso infinito de primer orden, y se parece a esto:

accumulator = 0.9 * accumulator + input

Donde input es la lectura de ADC. Cada vez que actualiza el filtro con una nueva lectura, está tomando un promedio ponderado de los nuevos datos y todos los datos antiguos. Para obtener el resultado promedio, divida accumulator por la inversa de la ponderación, en este caso, 0.1, así:

value = accumulator / (1 - 0.9)

El valor de ponderación controla la cantidad de promedios que obtiene y la rapidez con la que los resultados convergen cuando hay un cambio en la entrada; en este caso, cada valor depende del 90% del estado anterior y solo del 10% depende de la nueva lectura.

Si selecciona ponderaciones que son potencias de 2, por ejemplo, 1/2, 1/4, etc., puede ejecutar esto de manera muy eficiente en un microcontrolador sin necesidad de costosas operaciones de división. Por ejemplo, al elegir un valor de ponderación de 1/16 (= 6.25%), puede calcular su acumulador de la siguiente manera:

accumulator = accumulator - (accumulator >> 4) + value

y obtén un resultado como este:

result = accumulator >> 4
    
respondido por el Nick Johnson
3

En primer lugar, debe filtrar por paso bajo la señal analógica a una frecuencia de esquina significativamente más baja que la frecuencia de muestreo del ADC para evitar el alias de ruido de alta frecuencia en la conversión de ADC (que no se puede eliminar en el lado digital).

La naturaleza exacta del filtro depende del ruido / interferencia, la frecuencia de muestreo ADC y el tipo. Por ejemplo, sigma-delta permite un filtro de un solo polo, pero es posible que necesite un filtro de alto orden para un sistema significativamente ruidoso con un ADC SAR.

El filtrado digital se logra fácilmente con un filtro digital del tipo: $$ y = (1- \ alpha) x + \ alpha y $$ donde y es la salida, x es la entrada y alfa es un valor como 0.9 o 0.99 (cuanto más cerca de uno es, más filtrado se obtiene).

    
respondido por el akellyirl

Lea otras preguntas en las etiquetas