Frecuencia de muestreo ADC - Filtrado de ruido

Tengo que tomar la lectura de dos sensores analógicos de temperatura y nivel de combustible. Ambos son señales analógicas y tengo que eliminar el ruido de esta lectura. Y quiero usar el filtro digital para estos. Mi MCU está funcionando a 32 MHz, también estoy tomando lecturas de ADC para ambos sensores cada 5 mseg.

Ahora quiero reducir el ruido de mi muestra usando un filtro analógico externo y un filtro digital de software (IIR y FIR).

Este enlace dice que debemos seguir los criterios de Nyquist para el muestreo para evitar problemas de alización. https://en.wikipedia.org/wiki/Analog-to-digital_converter

Ahora, para diseñar un filtro IIR digital, este enlace se usa para indicar el uso de la frecuencia de corte. https://stratifylabs.co/embedded%20design%20tips/2013/10/04/Tips-An-Easy-to-Use-Digital-Filter/

Ahora, si tengo razón, entonces los criterios de Nyquist, el alias y la configuración de la frecuencia de muestreo son importantes para la grabación de señales analógicas, donde somos conscientes de que la voz humana es <20,000 HZ.

Pero, ¿cómo establecer estos criterios de (frecuencia de corte de filtro analógico o digital y frecuencia de muestreo y criterios de nyquist) para señales de sensores como temperatura y combustible donde obtenemos simplemente las señales analógicas y no sabemos qué frecuencia es para estas señales?

Por favor recomiende.

Si realiza una medición cada 5 ms, tiene una frecuencia de muestreo de 200 Hz. Esta es la frecuencia que debe usar para determinar la frecuencia de corte del filtro analógico.
Usted es consciente de la frecuencia de estas señales: la temperatura y el nivel de combustible (deberían) cambiar muy lentamente. Tomo filtros de corte de 20 Hz como regla general para tales señales. Si lo desea, puede medir el ancho de banda de su señal mediante la adquisición con un filtro analógico de corte más alto y FFT-ing de las muestras.
@Arsenal Su cálculo de frecuencia es 1/time_5msec, pero el tiempo exacto debe ser 5msec+tiempo de conversión ADC+retraso en el procesamiento del software, ¿verdad?
Del mismo modo, el corte de su filtro digital depende de cuántas muestras elija filtrar. En realidad, empezaste por el lado equivocado. ¿Cuál es la tasa de información que es de interés y cuánto necesita sobremuestrear esto para lograr la SNR que desea?
@Sean Suponga que por sensor elijo 20 muestras para filtrar y cada muestra se toma cada 50 mseg. Entonces, ¿cuál debería ser la frecuencia de corte del filtro IIR digital?
@ user6363 no, si muestrea a 5 ms, muestrea a 5 ms. El tiempo de conversión es solo una compensación del tiempo exacto cuando se toma la muestra, pero no tiene influencia en la frecuencia. Si su software es tan lento y no puede procesar sus muestras en 5 ms, probablemente no muestree en 5 ms.
Si su filtro digital usa 20 muestras, la frecuencia de corte está definida por el perfil del filtro y la frecuencia de muestreo. Los filtros digitales se definen en muestras, no en Hz.
Debe obtener una buena muestra de la señal para determinar dónde está el ruido antes de diseñar un filtro. Además, ¿qué idioma estás usando? Es probable que pueda encontrar una biblioteca para un filtrado simple. Compruebe el intercambio de pila DSP.

Respuestas (2)

Tienes una frecuencia de muestreo de 200 Hz (1/5 ms). Pero no ha indicado el tiempo de respuesta necesario para la salida del filtro. Para encontrar la respuesta a eso, debe preguntarse qué tan lenta puede ser la respuesta antes de que le dé un problema. Es decir. si este es el nivel de combustible y la temperatura de un automóvil, entonces un minuto es suficiente tiempo de respuesta. Pero si se trata de una medida interna de una cámara de combustible para un motor de miniturbina, incluso un segundo retraso podría causarle problemas. No me es posible determinar. (Ok, la turbina es un ejemplo exagerado y casi inútil, no podría pensar en mejores ejemplos donde un tiempo de retraso en la región de un segundo podría causar problemas).

Debe filtrar la señal analógica con un filtro de paso bajo con una frecuencia de corte (frecuencia de -3 dB) inferior a la frecuencia de Nyquist. Lo mismo con la frecuencia de corte en el filtro digital. Mantendría la frecuencia de corte del filtrado analógico lo más cerca posible de la frecuencia de Nyquist. De esa manera, puede modificar las características del filtro a su gusto modificando únicamente el filtro digital.

El otro criterio de diseño del filtro analógico es la profundidad de muestreo (en bits) del ADC. La amortiguación de las señales por encima de la frecuencia de Nyquist debe ser mayor que la relación S/N del ADC. Es decir. ADC de 8 bits, aproximadamente 7 bits S/N -> más de 42 dB de amortiguación en la frecuencia de Nyquist para evitar el aliasing.

Tasa de muestreo de 200 Hz -> frecuencia de Nyquist = 100 Hz. Frecuencia de corte de paso bajo analógico < 100 Hz. Suponiendo 8 bits como en mi ejemplo anterior: Amortiguación a 100 Hz >42 dB

Filtro analógico sugerido: 2. filtro de orden (40 dB/década). Frecuencia de filtro < 8,8 Hz.

Y para el filtro digital, puede filtrar tanto como desee siempre que tenga en cuenta el tiempo de respuesta necesario.

gracias... Aclare este punto, ¿qué quiere decir aquí? "Y para el filtro digital, puede filtrar todo lo que quiera siempre que tenga en cuenta el tiempo de respuesta necesario". ¿Quiere decir que puede reducir la frecuencia de corte en el filtro digital, verdad? ¿Qué quiere decir con "tener en cuenta el tiempo de respuesta necesario"? Por favor recomiende.
Como escribí, probablemente hay un tiempo de respuesta que debe tener en cuenta. Si no, simplemente establecería la frecuencia de corte para el filtro digital en 1 Hz. No tengo idea de lo que está haciendo y, por lo tanto, no sé si mi sugerencia es válida. Si nos dice un poco más, lo más probable es que podamos proporcionarle mejores respuestas.
Su filtro analógico debe tener una frecuencia significativamente más baja que 3dB en la frecuencia de nyquist si desea evitar el aliasing.
@Andyaka Sí, y para aclarar que incluí el ejemplo con un filtro de orden 2 y ADC de 8 bits. Espero que el ejemplo ayude a comprender la relación entre la frecuencia de corte, la relación S/R, la frecuencia de Nyquist y los problemas de aliasing.
@Bernie, no tengo ningún requisito específico de algún cliente. Pero he leído la teoría de los filtros IIR de que podemos reducir el ruido usando el filtro IIR y solo quiero implementar eso usando firmware y Mcu ADC. Así que estaba un poco confundido con qué frecuencia debería cortarse exactamente para el filtro IIR en el firmware ... así que planteé esta pregunta.
@Bernie Entonces, según su última publicación, si no tenemos en cuenta el tiempo de respuesta, lo ideal es tomar 1 hz. Y supongamos que el tiempo de respuesta del sensor es de aproximadamente 10 mseg (significa que necesito leer los datos del sensor cada 10 mseg), entonces, la frecuencia de corte del filtro digital debe ser > 1/T donde T=10 mseg. ¿Lo tengo bien?
@ user6363 Sí, el 1 Hz se sacó de la nada, pero creo que se adaptará a sus necesidades. Realice el muestreo a intervalos de 5 ms como indicó en la pregunta original. Y se puede usar el resto de mi solución de ejemplo. También lea en la hoja de datos del ADC para ver si hay algún ejemplo de filtros anti-aliasing (aparte de mi sugerencia para un filtro de orden 2). Algunos ADC tienen filtros incorporados por diseño (es decir, convertidores Sigma-Delta). Es posible que no necesiten mucho filtrado de la señal analógica para evitar el alias. Simplifica el diseño analógico.
¿Alguien podría ayudarme a entender la declaración de @BernieNor? "La amortiguación de las señales por encima de la frecuencia de Nyquist debe ser mayor que la relación S/N del ADC. Es decir, ADC de 8 bits, aproximadamente 7 bits S/N -> más de 42 amortiguación de dB en la frecuencia de Nyquist para evitar el alias". ¿Dónde puedo leer más sobre esto?

Puede muestrearlos de 2 a 20 veces por segundo y luego calcular un promedio móvil durante un segundo. su tiempo de respuesta será de aproximadamente un segundo y no debería haber ruido si su electrónica es remotamente razonable.

A menos que tenga una microturbina interesante y quiera medir el consumo de combustible con precisión, no es probable que necesite una respuesta muy rápida de sus filtros o ADC si sus sensores solo responden de 1 a 10 Hz.

EDITAR:
si tiene o cree que tendrá un ruido eléctrico no aleatorio mucho mayor que 5 veces la resolución que realmente necesita (no lo que se puede calcular), puede obtener beneficios al agregar filtrado analógico. La frecuencia de corte debe ser alrededor de la mitad de su frecuencia de muestreo.

Sin embargo, cualquier filtro de paso bajo por encima de la frecuencia de respuesta deseada sería un beneficio, aunque el filtro de promedio digital ya es un filtro de paso bajo que puede eliminar muchas fuentes de ruido aleatorio. si tiene ruido cerca de algún múltiplo de la frecuencia de muestreo, entonces el ruido con alias puede causar una señal de pulso en la salida que en realidad no está allí, un filtro frontal analógico minimizaría este riesgo.

Si tomo 20 muestras por segundo, esto significa que estoy tomando muestras cada 50 mseg. Entonces, significa guardar 20 muestras en una matriz circular de 20 enteros y luego promediarlos cada 50 mseg para obtener un valor exacto, ¿verdad?
Pero este promedio es el mismo sobre el uso del FIR FIlter. Supongamos que si tengo que leer 40 valores analógicos (por ejemplo, del sensor o de la salida del amplificador operacional o del divisor de potencial) y si uso 20 muestras de cada sensor, consumirá 40*20*tamaño de memoria (int) para realizar esto operación, pérdida de memoria. Quiero usar el filtro IIR para evitar el desperdicio de memoria. Ahora, ¿cómo establecer el valor del parámetro de frecuencia de corte ALPHA según este enlace stratifylabs.co/embedded%20design%20tips/2013/10/04/… ????
Nuevamente, tengo la misma pregunta: ¿cuál debería ser el conjunto de parámetros de frecuencia de corte de estas señales analógicas (procedentes del sensor o la salida del amplificador operacional o divisor potencial) para que el filtro IIR funcione con precisión? Por favor recomiende