Tabla de contenido:

Filtrado FIR para una detección de frecuencia más confiable: 5 pasos
Filtrado FIR para una detección de frecuencia más confiable: 5 pasos

Video: Filtrado FIR para una detección de frecuencia más confiable: 5 pasos

Video: Filtrado FIR para una detección de frecuencia más confiable: 5 pasos
Video: Quizá NO TE CONTARON esto de los SENSORES cardiacos de TU SMARTWATCH 2024, Mes de julio
Anonim
Filtrado FIR para una detección de frecuencia más confiable
Filtrado FIR para una detección de frecuencia más confiable

Soy un gran admirador de las instrucciones de akellyirl sobre la detección de frecuencia confiable usando técnicas DSP, pero a veces la técnica que usó no es lo suficientemente buena si tiene mediciones ruidosas.

Una solución fácil para obtener una entrada más limpia para el detector de frecuencia es aplicar algún tipo de filtro alrededor de la frecuencia que desea detectar.

Desafortunadamente, crear un filtro digital no es fácil y hay muchas matemáticas involucradas. Así que pensé en crear algún tipo de programa para simplificar la creación de tales filtros, para permitir que cualquiera los use en sus proyectos sin profundizar en los detalles.

En este Instructable, voy a detectar una onda sinusoidal de 50Hz en una medición ruidosa con un Arduino Uno (Arduino no es realmente necesario).

Paso 1: el problema

El problema
El problema

Imagine que los datos de entrada medidos se parecen a la curva de arriba: bastante ruidosa.

Si construimos un detector de frecuencia simple como el de Instructable de akellyirl, el resultado es "-inf" o en el caso del código siguiente: "Sí, demasiado ruido …"

Nota: Usé prácticamente todo el código de akellyirl, pero agregué una matriz rawData en la parte superior que contiene las mediciones ruidosas.

A continuación, puede encontrar el código completo en un archivo llamado "unfiltered.ino".

Paso 2: la solución

La solución
La solución

Dado que los datos de entrada son ruidosos pero sabemos la frecuencia que estamos buscando, podemos usar una herramienta que creé llamada easyFIR para crear un filtro de paso de banda y aplicarlo a los datos de entrada, lo que da como resultado una entrada mucho más limpia para el detector de frecuencia (imagen de arriba).

Paso 3: EasyFIR

EasyFIR
EasyFIR

La herramienta easyFIR es bastante fácil de usar, simplemente descargue el repositorio de GitHub y ejecute el archivo easyFIR.py con una muestra de sus medidas (en formato CSV).

Si abre el archivo easyFIR.py, encontrará 5 parámetros (vea la imagen de arriba) que puede y debe cambiar dependiendo del resultado que le gustaría lograr. Después de ajustar los 5 parámetros y ejecutar el archivo de Python, verá los coeficientes calculados en su terminal. ¡Estos coeficientes son cruciales para el siguiente paso!

Puede encontrar más información sobre el uso exacto aquí:

Paso 4: filtrado

Filtración
Filtración

Ahora, si ha calculado los coeficientes de filtro necesarios, es bastante fácil aplicar el filtro real al detector de frecuencia.

Como puede ver en la imagen de arriba, solo necesita agregar los coeficientes, la función applyFilter y luego filtrar las medidas de entrada.

A continuación puede encontrar el código completo en un archivo llamado "filter.ino".

Nota: ¡muchas gracias a esta publicación de desbordamiento de pila por el gran algoritmo de aplicación de filtro!

Paso 5: disfruta

Disfrutar
Disfrutar

Como puede ver, ¿ahora podemos detectar una señal de 50Hz incluso en un entorno ruidoso?

No dude en adaptar mi idea y código a sus necesidades. ¡Estaría muy agradecido de incluir tus mejoras!

Si te gusta mi trabajo, ¡te agradecería mucho que apoyaras mi trabajo con star en GitHub!

¡Gracias por su apoyo!:)

Recomendado: