Descripción del filtro digital:
La entrada del filtro son datos del sensor y la salida se proporcionará a un controlador PID.
Tasa de muestreo: 64kHz
Espectro de ruidos: de DC a 10kHz
Objetivo del filtro: obtener solo el componente de CC y reducir los ruidos tanto como sea posible.
Característica de DC: varía muy lentamente, digamos a 0.000001Hz.
Más sobre el sistema
La entrada del sistema (ref o referencia es cero). Y, en realidad, el objetivo del controlador es mantener la salida del sistema en cero.
En este sistema también hay perturbaciones y ruidos. La perturbación tiene la forma de una rampa, sin embargo, por naturaleza, se parece más a eventos aleatorios a muy baja frecuencia.
El controlador es un controlador PI simple. Se esfuerza por compensar la influencia de las perturbaciones mientras se deshace de los ruidos.
Los ruidos son de sensores y el filtro entre el controlador y el sensor es sobre lo que estoy buscando ayuda aquí.
Mi forma actual de diseño de filtro:
Los datos irán a un diezmador para la aniquilación en primer lugar. El diezmador es un filtro promedio de 320 toques, que promedia cada 320 datos y exporta un resultado promediado. Los resultados serán a 200Hz.
Los datos promediados luego entrarán en un diezmador promedio de 20 toques. Los resultados serán a 10Hz.
Por último, los datos a 10 Hz entrarán en un IIR o, de nuevo, en un filtro de media móvil. El resultado final oscilará entre 1 Hz y 0,2 Hz.
Mis preocupaciones: diseño insuficiente
El diezmador promedio puede no ser lo suficientemente agudo, ya que son básicamente FIR con los mismos coeficientes de 1/320. Dado que los filtros no son lo suficientemente nítidos, el diezmado (reducción de muestreo) puede introducir un mapeo de ruidos de alta frecuencia en los resultados filtrados.
El siguiente diagrama es la respuesta para el filtro promedio 1/320
puede que no sea malo
Dado que las varias etapas de diezmado son básicamente promediar las señales. Los resultados serán componente DC, ya que así se define DC.
Consejo necesario
¿Cómo mejorar mi diseño actual?
Su primer problema no es un diseño insuficiente, sino una especificación insuficiente. Tenga en cuenta que "tanto como sea posible" no es una especificación.
En lugar de preguntarse si algún filtro en particular es lo suficientemente nítido y puede introducir ruidos de alta frecuencia en los resultados, sería más constructivo especificar cuánta atenuación se requiere en qué frecuencias y luego diseñar un filtro que proporcione esta atenuación.
Uno de los primeros puntos de especificación es cuál debe ser la frecuencia de muestreo de salida. La tasa más baja que mencionas es de 10 Hz, pero luego se filtra después de eso. ¿Es esa la tasa de producción, o se reduce? Si su CC varía a 1uHz, ¡entonces incluso 10Hz podría considerarse sobremuestreado!
No estoy seguro de cómo llegaste a usar un filtro de primera etapa de 320 toques.
De todos modos, la aniquilación profunda como la que está haciendo aquí normalmente implicará dos etapas.
Primera etapa: obtenga una gran reducción en la frecuencia de muestreo hasta unas pocas veces su frecuencia final, utilizando un filtro de paso bajo crudo, para tener nulos de rechazo profundos alrededor de su frecuencia de muestreo final, nulos lo suficientemente amplios como para acomodar su ancho de banda final. Este filtro se ejecuta con frecuencia, por lo que deberá ser breve. Este podría ser un filtro CIC, aunque requiere una precisión muy alta, puede necesitar números grandes para un cambio de tasa grande. Un FIR diezmador de bajo orden es quizás una mejor opción para una implementación de software.
Segunda etapa: diseñe un filtro final que elimine el ruido que ha sido alterado por el filtro de la primera etapa y reduzca la tasa a la final deseada. Este filtro rara vez se ejecuta, por lo que puede ser muy largo.
Cuando la tasa de salida sobremuestrea el ancho de banda requerido por un factor importante, puede permitirse ser muy ineficiente con el diseño de su filtro. En estos casos, parece que el caso que describe, un filtro IIR iterado de primer orden es una opción razonable.
La belleza de un filtro IIR de primer orden es que la longitud efectiva se ajusta simplemente estableciendo el valor de k en la relación de recurrencia. Puede iterarlo para mejorar ligeramente la inclinación, o simplemente sobremuestrear mucho para permitir que la pobre banda de parada no influya en sus resultados. Existe el problema muy real de que una k pequeña y/o una relación de diezmado grande pueden llevarlo a problemas de precisión numérica si no tiene cuidado.
Este puede no ser el filtro más fácil de diseñar por foro. Me complace ayudarlo a reafirmar su especificación y ayudarlo a diseñarlo fuera de línea, solo para los lols.
Ha definido su DC como variable a 0.000001Hz. ¿Sabes que esto es 1000000s, o 1,9 años? Si esa es realmente su intención, con una frecuencia de muestreo de 64 000 Hz, ¡necesita promediar 64 000 000 000 muestras para obtener su medición de 1 CC! Me imagino que realmente no se refiere a una tasa de CC tan baja, pero asumiendo algo en la región de Hz bajos, le sugiero que lo haga mediante filtrado analógico y establezca su frecuencia de muestreo mucho más baja. Deje que el filtrado del condensador analógico tome la molestia y realice el muestreo digital mucho más lentamente para evitar desperdiciar la lógica digital.
usuario_1818839
richieqianle
Marko Bursic
richieqianle
tubo
Marko Bursic
richieqianle
richieqianle
Marko Bursic
Marko Bursic
tubo
Marko Bursic
tubo
richieqianle
richieqianle