Implementación de filtros pasa bajos en arduino
Hola, hoy les traigo una pequeña info sobre los filtros pasa bajos para poder aplicarlos a nuestros proyectos de electrónica.
Primero comencemos por lo principal.
¿Qué es el filtro pasa bajos?
Un filtro paso bajo corresponde a un filtro electrónico cuya característica principal es el de atenuar las frecuencias mas altas y dejar pasar solo las frecuencias mas bajas, los cual nos viene muy bien al momento de aplicarlo a una lectura de algún sensor que es muy ruidosa cuyos valores no son estable como por ejemplo un sensor de vibración, un sensor de aceleración, algún sensor de corriente en un ambiente con mucha armónica en la línea u otro tipo de aplicación que puedas imaginar.
En este ejemplo utilizaremos un tipo de filtro pasa bajos de media móvil, el cual básicamente va creando promedios de cada lectura y nos da una salida de datos mucho mas estable que la lectura original.
Para poder realizar este trabajo el filtro se basa en una ecuación matemática muy simple
Dato_filtrado=(alpha*Dato_leido) +((1-alpha) *Dato_filtrado)
Donde:
Dato_filtrado: El dato que ya fue procesado.
Alpha: Es una constante con la cual determinamos el grado de filtrado, donde 1 es sin filtro y 0 es filtrado totalmente, comúnmente se utiliza 0.05, pero esto es totalmente relativo a cada proyecto, lo recomendado es ir probando valores hasta encontrar el óptimo para nuestro proyecto.
Dato_leido: es nuestra entrada de dato sin filtrarse.
Con esta ecuación simple ya tenemos un filtro muy confiable para utilizar en nuestro proyecto, a continuación, vemos un gráfico en donde la línea azul es la entrada de datos y el rojo es la salida de datos ya filtrados
Como se puede observar el filtro tiene una pequeña desventaja frente a otros filtros el cual es su lenta reacción a cambios bruscos en los valores, esto dependiendo del proyecto puede ser un inconveniente, pero en la mayoría de los proyectos no lo es, esto es debido a como está formado la ecuación el cual depende del valor filtrado con anterioridad para definir el nuevo valor lo cual al iniciar este iría de cero al valor real de manera progresiva y mas lenta, pero una vez llegue al valor real será muy estable, entonces en nuestro proyecto es conveniente darles un tiempo de espera hasta que el valor se estabilice.
Pero en términos generales se puede observar una su comportamiento frente a una señal de entrada muy ruidosa entrega una señal muy limpia y estable.
El código de ejemplo es el que sigue:
El repositorio del proyecto es el siguiente:
Muchas gracias y espero les haya sido de utilidad. ❤