Está en la página 1de 7

Diseño de filtros digitales

H.D Rodriguez, J.C Casas


Ingenerı́a Electrónica
Escuela Colombiana de Ingenierı́a Julio Garavito
Bogotá D.C
harrison.rodriguez@mail.escuelaing.edu.co
julian.casas@mail.escuelaing.edu.co

Resumen—
Palabras clave—-

I. I NTRODUCCI ÓN

II. P ROCEDIMIENTO

II-A.

Sistema de reconocimiento de notas musicales con filtro


FIR
Figura 2: Respuesta en frecuencia del filtro FIR
Especificaciones. Diseñar e implementar un filtro FIR pasa-
banda para detectar las notas de una flauta dulce que estén
en el rango de frecuencias comprendido entre 800 Hz y
1000Hz. La ganancia del filtro a 750Hz y 1050Hz debe ser
de por lo menos -10dB. Adicionalmente, cuando se detecte
una frecuencia en ese rango se debe prender un diodo led,
para esto puede utilizar la comparación de las energı́as de las
señales de entrada y salida del filtro. El filtro para las frecuencias de 750Hz y de 1050Hz tiene
Restricciones: La implementación se debe hacer en una una atenuación de -6dB y -7dB respectivamente, ya que para
tarjeta de Arduino o dsPIC (se recomienda alguna de las lograr una atenuación de -10dB en estas frecuencias se debı́a
referencias 33 BLE Sense ó 33FJ128MC802). Debe especi- incrementar el orden del filtro de 61 a 81 aproximadamente,
ficar correctamente la frecuencia de muestreo utilizada en el lo que puede ocasionar un error a la hora de implementarlo
programa. en Arduino.
Se diseño el filtro FIR pasabanda en octave utilizando la
función fir1 como se ve en la figura 1.

Figura 1: Código del filtro FIR en octave


Figura 3: Atenuación del filtro FIR a una frecuencia de
Su respuesta en frecuencia se observa en la figura 2 1050Hz
Figura 4: Atenuación del filtro FIR a una frecuencia de 750Hz Figura 7: Respuesta del filtro ante una señal seno de frecuen-
cia 900Hz

La respuesta del filtro a diferentes frecuencias mediante


octave son las siguientes.

Figura 8: Respuesta del filtro ante una señal seno de frecuen-


cia 1000Hz

Figura 5: Respuesta del filtro ante una señal seno de frecuen-


cia 500Hz

Figura 9: Respuesta del filtro ante una señal seno de frecuen-


cia 3000Hz

Como se observa el filtro no presenta atenuación para la


frecuencia de 900 Hz, y las atenuaciones para las frecuencias
de 800Hz y 1000Hz corresponden a -3dB, para frecuencias
menores a 800Hz y mayores a 1000Hz la señal de salida es
completamente atenuada.
Figura 6: Respuesta del filtro ante una señal seno de frecuen- El código de la implementación del filtro FIR en arduino es
cia 800Hz el siguiente.
Figura 11: Respuesta del filtro ante una señal seno de
frecuencia 500Hz

Figura 12: Respuesta del filtro ante una señal seno de


frecuencia 800Hz

Figura 10: Código implementación del filtro FIR en Arduino

La respuesta del filtro FIR a diferentes frecuencias en Figura 13: Respuesta del filtro ante una señal seno de
Arduino son las siguientes. frecuencia 900Hz
Figura 14: Respuesta del filtro ante una señal seno de
frecuencia 1000Hz

Figura 16: Código en octave para el diseño de los filtros IIR

Figura 15: Respuesta del filtro ante una señal seno de Las frecuencias donde se encuentran los picos al pronun-
frecuencia 3000Hz ciar ”si”se muestran el figura 17

El vı́deo del funcionamiento de filtro se anexo en el


archivo WINRAR con el nombre filtro FIR.

II-B.

Sistema de reconocimiento de comandos de voz con


filtros IIR
Especificaciones: Diseñar e implementar filtros IIR
pasabanda, para identificar los comandos de voz “no” y
“si” de alguno de los integrantes del grupo. El contenido
espectral se puede identificar utilizando los comandos
spectgram y fft de Octave o Matlab.
Figura 17: Respuesta frecuencial al pronunciar ”si”
Cuando se detecte el comando de voz “si” se debe prender
un led de color verde y cuando sea el comando “no” se
debe prender un led rojo. Se observa que los picos se encuentran en al frecuencias
de 60Hz, 120Hz y 240Hz. La función de transferencia y
El diseño de los filtros resonantes se realizo en octave la respuesta en frecuencia del filtro resonador para cada
mediante la transformación bilinear.El código utilizado en una de las frecuencias que contienen el ”si”se muestran a
octave se muestra en la figura 16 continuación.
Frecuencia=60Hz
Figura 18: Respuesta en frecuencia Figura 22: Respuesta en frecuencia

Figura 19: Función de transferencia


Figura 23: Función de transferencia
Frecuencia=120Hz

Las frecuencias donde se encuentran los picos al pronun-


ciar ”no”se muestran el figura 24

Figura 20: Respuesta en frecuencia

Figura 24: Respuesta frecuencial al pronunciar ”no”

Se observa que los picos se encuentran en al frecuencias


de 60Hz, 120Hz, 176Hz, 234Hz y 408Hz. La función de
transferencia y la respuesta en frecuencia del filtro resonador
para cada una de las frecuencias que contienen el ”si”se
Figura 21: Función de transferencia muestran a continuación (Para las frecuencias de 60Hz y
120Hz ya se realizo el diseño anteriormente ya que estas
frecuencias también se encuentran al pronunciar ”si”).
Frecuencia=240Hz Frecuencia=176Hz
Figura 25: Respuesta en frecuencia Figura 29: Respuesta en frecuencia

Figura 26: Función de transferencia

Frecuencia=234Hz

Figura 30: Función de transferencia

Figura 27: Respuesta en frecuencia

En la implementación en Arduino se ponen todas las


Figura 28: Función de transferencia ecuaciones en diferencias para las diferentes frecuencias para
cada comando y se suman todas las salidas para obtener la
salida total. La implementación en Arduino para los filtros
Frecuencia=408Hz de los dos comandos es la siguiente.
Figura 31: Código de la implementación de los dos filtros
IIR en Arduino para los comandos de voz ”si ”no”
2

La comparación de las energı́as para el comando ”si”


oscilaban entre 38 y 50, y la comparación de las energı́as
para el comando ”no” oscilaban entre 15 y 15, con estas
relaciones se implementaron las condiciones en las que se
prenden el led verde y el led rojo respectivamente.
III. C ONCLUSIONES
La implementación de filtros IIR es mas fácil en com-
paración de los filtros FIR ya que para que un filtro
FIR sea eficiente el orden de este debe ser muy grande
y por lo tanto se pueden cometer mas errores a la hora
de implementarlo en un microcontrolador.

También podría gustarte