Tratar con variables en tiempo real y compensar los errores de adc [cerrado]

0

Intenté implementar sistemas en tiempo real utilizando microcontroladores y, a menudo, usé sensores / adc como entrada para controlar mi entorno, de modo que pudiera ajustarme bien a él. ¿Cómo se debe tratar con las variables en tiempo real? He visto códigos que implementan filtrado de mediana y filtros de paso bajo (en código de firmware) a los datos sin procesar obtenidos de sensor / adc.He visto que las lecturas de adc varían bruscamente cuando se toman continuamente.

¿Cuál es la mejor práctica para evitar anomalías en las lecturas del sensor / adc, de modo que s / m continuará funcionando como se esperaba? ¿Y cómo corregir el umbral y los rangos de la variable? Siento que las variables en tiempo real deben manejarse con cuidado. Entonces, ¿qué tan efectivo es este filtro de mediana y filtros de paso bajo que el procesamiento directo de datos sin procesar? ¿Existe algún método mejor para compensar efectivamente el tiempo de adquisición de datos en bruto y el tiempo de procesamiento de b / w?

ok. Estoy usando el controlador pic18f y también estoy usando los canales adc de él y estoy tomando valores de adc continuamente para monitorear mi sistema (controlador de temperatura). Muestra ligeras variaciones en las conversiones de adc cuando intenté observar esos valores.
Luego escuché sobre este filtro de mediana y las técnicas de filtro de paso bajo implementadas en el sistema integrado para monitorear las variables * continuas (temperatura) * en el mismo.

El propósito de esas técnicas fue filtrar los valores de la chatarra como resultado de EMI o cualquier otra fuente externa, según mi entendimiento.

Así que mi punto es: ¿Es la única técnica que utilizan los sistemas integrados para deshacerse de los datos absurdos que obtienen ... o existen mejores técnicas (ciclos menores)?

Saludos

    
pregunta Rookie91

1 respuesta

1

El filtrado digital es un tema enorme que es muy difícil.

Por supuesto, puedes probar cosas que podrían funcionar al final, pero eso no es lo que llamo "diseño".

Para su problema en particular, hay algo importante que entender: todos los filtros digitales son matemática aplicada. Estas matemáticas son correctas cuando (y solo cuando) se cumplen algunas suposiciones. Uno de los más importantes es el criterio de Nyquist, que básicamente dice que ninguno de los contenidos de frecuencia de la señal de entrada debe ser superior a la mitad de la frecuencia de muestreo.

Por ejemplo, si planea adquirir a 100 kHz (ADC a 100'000 muestras / s), debe asegurarse de que no haya contenido en frecuencias superiores a 50 kHz en la señal analógica en el pin de entrada del ADC. Y esto es muy importante. Si no se asegura de ello (y veremos más adelante cómo hacerlo), no se le permite hacer los cálculos matemáticos de la teoría del procesamiento de señales. No digo que no puedas hacerlos, pero dije que podría ser que tu filtro digital de paso bajo no se comporte como tal o que veas comportamientos inesperados.

Es posible que su sensor tenga un ancho de banda limitado, entonces usted sabe que nunca verá ninguna frecuencia por encima de un umbral determinado. Luego puede ingresar el ADC directamente (si se cumplen los criterios de Nyquist, o el curso). Pero si no es el caso, lo que normalmente hace para evitar esto es colocar un filtro de paso bajo analógico en la entrada de su ADC con una frecuencia de corte mucho más baja que la frecuencia de Nyquist (la mitad de la frecuencia de muestreo, en nuestro ejemplo 50kHz) . ¿Por qué "mucho más bajo"? De hecho, debe asegurarse de que, en la frecuencia de Nyquist y superior, su filtro ya tenga una fuerte atenuación. Este filtro se llama filtro anti-aliasing.

Para su problema en particular: puede ver que puede necesitar un filtro analógico en la entrada de su ADC y desea tener un filtro de paso bajo en sus datos. Lo que sugiero es usar el filtro anti-aliasing para realizar el filtrado de paso bajo directamente. De esa manera, no necesita el filtrado de software en absoluto. Esto ahorrará muchos ciclos de computación.

¿Cuál sería la ventaja de usar un filtro digital aquí? Si ya necesita un filtro analógico de paso bajo en la entrada: no hay ventajas reales, excepto que el filtro no será sensible a las tolerancias de los componentes si se realiza en el software (¿es un requisito aquí? No estoy seguro).

Lo que sugiero: coloque un filtro de paso bajo analógico en la entrada de su ADC y no obtendrá ningún dato "absurdo" en su señal. (Suponiendo que no contamina su señal entre el filtro de paso bajo y el ADC y que sus datos absurdos no provienen de algunos errores de software)

    
respondido por el Blup1980

Lea otras preguntas en las etiquetas