1 votos

¿Cómo suavizar los datos analógicos?

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

8voto

jackrabbit Puntos 2990

Es probable que tu entrada sea simplemente muy ruidosa. Lo mejor es aplicar algún tipo de promediado.

La solución más sencilla consiste en tomar n muestras y promediarlas para obtener un resultado. Esto divide tu frecuencia de muestreo por el número de muestras que utilizas por intervalo de promediado.

Otra opción es utilizar un filtro digital; el más sencillo de implementar es una respuesta al impulso infinita de primer orden, y tiene un aspecto parecido a éste:

accumulator = 0.9 * accumulator + input

Dónde input es la lectura del ADC. Cada vez que actualizas el filtro con una nueva lectura, estás tomando una media ponderada de los nuevos datos y todos los datos antiguos. Para obtener el resultado promediado, divide accumulator por el inverso de la ponderación - en este caso, 0,1, así:

value = accumulator / (1 - 0.9)

El valor de ponderación controla el promedio que se obtiene y la rapidez con la que convergen los resultados cuando se produce un cambio en la entrada; en este caso, cada valor depende en un 90% del estado anterior y sólo en un 10% de la nueva lectura.

Si eliges ponderaciones que sean potencias de 2 - por ejemplo, 1/2, 1/4, etc - puedes ejecutar esto de forma muy eficiente en un microcontrolador sin necesidad de costosas operaciones de división. Por ejemplo, eligiendo un valor de ponderación de 1/16 (=6,25%), puede calcular su acumulador así:

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

y obtener el resultado así:

result = accumulator >> 4

3voto

akellyirl Puntos 3609

En primer lugar, es necesario filtrar la señal analógica a una frecuencia de paso bajo significativamente inferior a la frecuencia de muestreo del ADC, para evitar que el ruido de alta frecuencia entre en la conversión del ADC (que no se puede eliminar en el lado digital).

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

El filtrado digital se consigue 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 se acerque a uno, más filtrado obtendrá).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X