Departamento de Ingeniería Electrónica
Proyecto en Electrónica II
INFORME
PRÁCTICA 2 – PARTE 2: FILTROS FIR-IIR
Juan David Velásquez Restrepo
Geuseppe Segrera
Yorman Adrián Vera
1. INTRODUCCIÓN.
Este artículo en cuestión está orientado a responder el análisis teórico y la experimentación realizada en la
segunda parte de la segunda práctica del curso de Proyecto 2 de Ingeniería Electrónica, donde mediante procesos
de diseño digital, uso de herramientas computacionales y consultas de recursos bibliográficos de información del
microprocesador PIC18F47K42, se realizan las correspondientes medidas y algoritmos de la práctica la cual
consiste en el uso del conversor ADC, conversor DAC, medición de ENOB, SPI y USART para el diseño de filtros
FIR e IIR, y con ello, comparar y concluir sus resultados a diferentes características.
2. OBJETIVOS.
Implementar un filtro FIR e IIR en un sistema microcontrolador.
Reconocer y evaluar diferentes alternativas de implementación de filtros FIR e IIR.
Determinar su funcionamiento y entender las características de cada tipo.
Evaluar funcionamiento de cada filtro a partir de los resultados de una señal de entrada
determinada.
3. IMPLEMENTACIÓN
Para los filtros FIR se usó la estructura directa simétrica. Se puede expresar de la siguiente forma:
𝑁
𝑦[𝑛] = 𝑏0 𝑥[𝑛] + ∑ 𝑏𝑘 𝑋[𝑛 − 𝑘]
𝑘=1
Donde N es el orden del filtro, x[n] es la entrada, bk son los coeficientes y y[n] es la salida del filtro.
Para los filtros FIR se tiene dos tipos de coeficientes, los numeradores y denominadores. Se usó la
estructura directa con secciones de segundo orden. Puede expresarse de la siguiente forma:
𝑤[0] = 𝑎0 𝑥[0] − 𝑎1 𝑤[1] − 𝑎2 𝑤[2]
𝑦[0] = 𝑏0 𝑤[0] + 𝑏1 𝑤[1] + 𝑏2 𝑤[2]
Donde w[n] es el nodo de la mitad, x[n] es la entrada del filtro, y[n] es la salida, coeficientes a son los
denominadores y los coeficientes b son los numeradores. El orden de cada sesión es 2 y se pueden
usar en cascada para obtener un filtro de orden mayor.
Después de calcular los valores parciales se actualizan los valores de w.
𝑤[2] = 𝑤[1]
𝑤[1] = 𝑤[0]
El código utilizado para la implementación de los filtros:
Para el filtro FIR:
Declaración de los coeficientes para los diferentes órdenes.
Se declaran las variables que se usarán.
El código para la implementación del filtro FIR tiene en cuenta la simetría de los coeficientes. Por
tanto, se hace N/2 ciclos, se tienen dos índices para la señal de entrada (indx y indx2), el primero
recorre los datos de la entrada desde el primero hasta la mitad, el segundo descendiendo desde el
ultimo valor hasta la mitad. Se tiene adicionalmente una variable booleana m, la cual indica si la
cantidad de coeficientes es par o impar. Si es par, se toman los valores de los dos índices indx e indx2,
se suman y finalmente se multiplican por cada coeficiente. Si es impar, se hace el mismo
procedimiento anterior, solo que al final quedará un valor adicional (el del medio) y este se sumará a
las otras operaciones. Finalmente se retorna el valor y, pero normalizado a 8 bits ya que la
cuantización de los coeficientes se hizo a esta tasa.
De esta forma se llama la función del filtro FIR. Donde lecturaBits es el valor actual del registro del
ADC:
Para la implementación de los filtros IIR se cuantizaron los coeficientes en punto flotante y se usó
apuntadores para llamarlos en la función.
Nuevamente se declaran los vectores de coeficientes para cada sección de cada filtro.
Se declaran los apuntadores de las variables y coeficientes del filtro:
Después se declara la función, teniendo en cuenta las ecuaciones teóricas mencionadas anteriormente.
Finalmente, esta función retornará el valor de la salida del filtro. A esta salida, se le dividirá en 2
registros de 8 bits, ya sea para enviar por la UART o enviar por SPI para mostrar en el DAC
4. RESPUESTA EN FRECUENCIA FILTROS FIR.
Diseño de un filtro pasabajas de tipo FIR:
Frecuencia de corte de 18 Hz, orden 30 y a una frecuencia de muestreo de 250 Hz.
Frecuencia de corte de 18 Hz, orden 17 y a una frecuencia de muestreo de 250 Hz.
Frecuencia de corte de 18 Hz, orden 11 y a una frecuencia de muestreo de 250 Hz.
Frecuencia de corte de 18 Hz, orden 07 y a una frecuencia de muestreo de 250 Hz.
NOTA: Para las medidas de la respuesta en frecuencia, se usó el Módulo de adquisición de datos
de National Instruments USB 6001, realizando un barrido de Frecuencia desde 1 Hz hasta 50
Hz.
Filtro FIR – Orden 30:
Figura 1. Bode de filtro FIR de orden 30.
En la anterior figura se puede observar la respuesta en frecuencia del filtro FIR de orden 30. La
ganancia en la banda de paso se tienen -2.787 dB. Esto se debe a que la referencia de la señal de
entrada es de 5V (generador de funciones), pero la salida del filtro es la salida del Conversor Digital-
Análogo, el cual tiene una referencia de 4.1V. Por tanto, la magnitud será menor a los 0dB. En casos
ideales la magnitud máxima que se puede obtener se expresa de la siguiente forma:
𝑣0 4.096
= 20 log ( ) = −1.7322 𝑑𝐵
𝑣𝑖 5
En cuanto al cálculo del error, se obtiene que para una frecuencia teórica de corte es de Hz y para la
frecuencia de corte experimental es de Hz:
18𝐻𝑧 − 14𝐻𝑧
𝐸𝑟𝑟𝑜𝑟 = ∗ 100 = 22.22 %
18𝐻𝑧
Para una diferencia de 4 Hz con la teórica.
Filtro FIR – Orden 17:
Figura 2. Bode de filtro FIR de orden 17.
En la figura 2 se evidencia la respuesta en frecuencia del filtro FIR de orden 17. También se tiene una
atenuación en la banda de paso. El valor ideal en la banda de paso debería ser -1.7322dB, pero el valor
medido se obtienen -1.96 dB. La diferencia es muy poca, 0.2278dB. También se puede observar que la
atenuación se hace más lenta en comparación con el anterior ya que el orden es mucho más bajo.
En cuanto al cálculo del error, se obtiene que para una frecuencia teórica de corte es de Hz y para la
frecuencia de corte experimental es de Hz:
18𝐻𝑧 − 20𝐻𝑧
𝐸𝑟𝑟𝑜𝑟 = ∗ 100 = 11.11%
18𝐻𝑧
Para una diferencia de 2 Hz con la Teórica.
Filtro FIR – Orden 11:
Figura 3. Bode de filtro FIR de orden 11.
Para el filtro FIR de orden 11 se tiene una magnitud de -1.98368dB, en comparación con la respuesta
teórica hay una diferencia de 0.25148dB. debido a que el orden es más bajo se tiene una atenuación de
-20dB en 56 Hz.
En cuanto al cálculo del error, se obtiene que para una frecuencia teórica de corte es de Hz y para la
frecuencia de corte experimental es de Hz:
18𝐻𝑧 − 19𝐻𝑧
𝐸𝑟𝑟𝑜𝑟 = ∗ 100 = 5.55%
18𝐻𝑧
Para una diferencia de 1 Hz con la teórica.
Filtro FIR – Orden 7:
Figura 4. Bode de filtro FIR de orden 7.
En el filtro FIR de orden 7, la magnitud en frecuencias bajas tiene una pequeña ganancia de 0.0257dB.
Para frecuencias altas la atenuación es mucho más lenta, en 46Hz se tiene una atenuación de -4.68553
dB.
En cuanto al cálculo del error, se obtiene que para una frecuencia teórica de corte es de Hz y para la
frecuencia de corte experimental es de Hz:
18𝐻𝑧 − 22𝐻𝑧
𝐸𝑟𝑟𝑜𝑟 = ∗ 100 = 22.222%
18𝐻𝑧
Para una diferencia de 4 Hz con la teórica.
5. RESPUESTA EN FRECUENCIA FILTROS IIR.
Diseñar filtros IIR con frecuencia de muestreo de 250 Hz:
Pasabajas con frecuencia de corte de 18Hz
Filtro IIR – Pasabajas:
Figura 5. Filtro IIR pasabajas.
Para el filtro IIR se tiene una atenuación en la banda de paso de aproximadamente -1.81 dB, la
diferencia con el valor esperado teóricamente es 0.17368dB. La atenuación en 60Hz es mayor a 40dB,
pero se tiene una especia de oscilación a partir de los 60Hz que llega hasta los -20dB. Esto se debe a
que el tipo de filtro es Chebyshev II, el cual tiene una banda de paso sin rizado, pero se tienen
oscilaciones en la banda de rechazo.
En cuanto al cálculo del error, se obtiene que para una frecuencia teórica de corte es de Hz y para la
frecuencia de corte experimental es de Hz:
18𝐻𝑧 − 30𝐻𝑧
𝐸𝑟𝑟𝑜𝑟 = ∗ 100 = 60 %
18𝐻𝑧
Para una diferencia de 12 Hz con la teórica.
Filtro IIR rechaza-banda:
Figura 6. Filtro IIR rechaza banda.
En la figura anterior se puede observar que en frecuencias bajas se comporta como un pasabajas hasta
que llega a 50 Hz aproximadamente. Se espera que se rechace en 60 Hz, pero a partir de los 50Hz
empieza a subir, pero la magnitud varía mucho. Esto se debe a que como la frecuencia de muestreo de
250Hz, la señal solo tiene 5 muestras por periodo. Haciendo casi imposible de ver una sinusoidal pura,
por tanto, la magnitud es alta, pero no se puede observar el comportamiento como debe ser.
En cuanto al cálculo del error, se obtiene que para una frecuencia teórica de rechazo es de 60 Hz y
para la frecuencia de rechazo experimental es de 50 Hz:
60 𝐻𝑧 − 50 𝐻𝑧
𝐸𝑟𝑟𝑜𝑟 = ∗ 100 = 16.6 %
60 𝐻𝑧
Para una diferencia de 10 Hz con la teórica.
6. TIEMPOS DE CÁLCULO DE CADA FILTRO
Tiempo Filtro FIR Orden 7:
Figura 7. Tiempo filtro FIR 7.
De acuerdo con la imagen anterior, se deduce que el tiempo de cálculo para un filtro FIR de orden 7 es
de 1.18 ms, y este es el menor tiempo de calculo obtenido en este caso, dado que es el que tiene el
menor número de coeficientes, por tanto, significa menor número de procesos.
Tiempo Filtro FIR Orden 11:
Figura 8. Tiempo filtro FIR 11.
De acuerdo con la figura anterior, se deduce que el tiempo de cálculo obtenido para un filtro FIR de
orden 11 es de 1.73 ms correspondientemente. En efecto toma mas tiempo que el de orden 7 al ser 5
coeficientes mas lo que significa mayor numero de procesos de cálculo.
Tiempo Filtro FIR Orden 18:
Figura 9. Tiempo filtro FIR 18.
A partir de la imagen anterior, se deduce que el tiempo de cálculo para un filtro FIR de orden 18 es de
2.49 ms, alrededor de 1.4 veces más tiempo que el de orden 11.
Tiempo Filtro FIR Orden 30:
Figura 10. Tiempo FIR orden 30.
De acuerdo con la imagen anterior, se evidencia que los tiempos de cálculo del filtro FIR de orden 30
entre el momento que empieza hasta que termina toma alrededor de 4.1 ms. Esto en efecto significa
que toma bastante tiempo en ejecutar los procedimientos respectivos de filtrado de señal lo cual, es
comprensible dado que toma mas tiempo en recorrer el arreglo de coeficientes del filtro, pero a pesar
de que toma más tiempo, la señal se verá de mejor manera filtrada.
Tiempo Filtro IIR Pasa Bajas:
Figura 11. Tiempo filtro IIR PB.
De acuerdo con la anterior imagen, se evidencia que el tiempo de cálculo para un filtro IIR pasa bajas
es de 3 ms, en efecto toma menos tiempo que un FIR de orden 30 pero casi 1.5 veces de tiempo más
que un FIR de orden 17.
Tiempo Filtro IIR Rechaza Banda:
Figura 12. Tiempo filtro IIR RB.
A partir de la imagen anterior, se evidencia que el tiempo de cálculo para un filtro IIR de tipo rechaza
banda, toma 2.438 ms en completar sus cálculos para entregar resultados, lo que es comparable en
tiempo de ejecución a un FIR de orden 18.
7. CÁLCULO DEL ENOB DE CADA FILTRO
ENOB FILTRO FIR DE ORDEN 7:
Aplicando la fórmula que relaciona el SINAD con el ENOB:
SINAD𝑑𝐵 − 1.76
ENOB =
6.02
Reemplazando por los datos adquiridos:
26.38 𝑑𝐵 − 1.76
ENOB = = 4.089 𝑏𝑖𝑡𝑠
6.02
De esto se deduce que a una potencia de señal frente a perturbaciones de ruido (SINAD) de 26.38 dB,
el número efectivo de Bits para este caso es de 4.089 bits, lo que respecta que al menos hay
cercanamente cuatro bits que indican el valor real de la señal mientras que los 8 restantes, están más
correlacionados con el ruido de conversión, o está más sujeto a perturbaciones de señal externas.
ENOB FILTRO FIR DE ORDEN 11:
Aplicando la fórmula que relaciona el SINAD con el ENOB:
SINAD𝑑𝐵 − 1.76
ENOB =
6.02
Reemplazando por los datos adquiridos:
28.27 𝑑𝐵 − 1.76
ENOB = = 4.40 𝑏𝑖𝑡𝑠
6.02
De esto se deduce que a una potencia de señal frente a perturbaciones de ruido (SINAD) de 28.27 dB,
el número efectivo de Bits para este caso es de 4.40 bits, lo que respecta que al menos hay
cercanamente cuatro bits que indican el valor real de la señal mientras que los 8 restantes, están más
correlacionados con el ruido de conversión, o está más sujeto a perturbaciones de señal externas.
ENOB FILTRO FIR DE ORDEN 18:
Aplicando la fórmula que relaciona el SINAD con el ENOB:
SINAD𝑑𝐵 − 1.76
ENOB =
6.02
Reemplazando por los datos adquiridos:
25.36 𝑑𝐵 − 1.76
ENOB = = 3.92 𝑏𝑖𝑡𝑠
6.02
De esto se deduce que a una potencia de señal frente a perturbaciones de ruido (SINAD) de 25.36 dB,
el número efectivo de Bits para este caso es de 3.92 bits, lo que respecta que al menos hay
cercanamente cuatro bits que indican el valor real de la señal mientras que los 8 restantes, están más
correlacionados con el ruido de conversión, o está más sujeto a perturbaciones de señal externas.
ENOB FILTRO FIR DE ORDEN 30:
Aplicando la fórmula que relaciona el SINAD con el ENOB:
SINAD𝑑𝐵 − 1.76
ENOB =
6.02
Reemplazando por los datos adquiridos:
22.59 𝑑𝐵 − 1.76
ENOB = = 3.46 𝑏𝑖𝑡𝑠
6.02
De esto se deduce que a una potencia de señal frente a perturbaciones de ruido (SINAD) de 22.59 dB,
el número efectivo de Bits para este caso es de 3.46 bits, por tanto, de acuerdo con este resultado, es
preciso afirmar que solo 3 bits de los 12 bits de conversión son bits de precisión de medición y que
realmente corresponderían a la efectividad de la conversión, mientras que los demás 9 bits, están más
correlacionados al ruido en la señal o perturbaciones vistas en la cuantización.
ENOB FILTRO IIR PASA BAJAS:
Aplicando la fórmula que relaciona el SINAD con el ENOB:
SINAD𝑑𝐵 − 1.76
ENOB =
6.02
Reemplazando por los datos adquiridos:
25.12 𝑑𝐵 − 1.76
ENOB = = 3.88 𝑏𝑖𝑡𝑠
6.02
De esto se deduce que a una potencia de señal frente a perturbaciones de ruido (SINAD) de 25.12 dB,
el número efectivo de bits para este caso es de 3.88 bits, lo que significa que de los 12 bits que se
convirtieron del ADC al DAC, solo 4 bits corresponden realmente al dato de la señal medida, por tanto
de los demás 8 bits, no sería preciso analizarlos dado que están más correlacionados con el ruido o
medidas más posiblemente equivocadas y que por consiguiente, no tendrían una semejanza notable a
la señal de entrada al microprocesador.
ENOB FILTRO IIR RECHAZA BANDA:
Aplicando la fórmula que relaciona el SINAD con el ENOB:
SINAD𝑑𝐵 − 1.76
ENOB =
6.02
Reemplazando por los datos adquiridos:
15.41 𝑑𝐵 − 1.76
ENOB = = 2.27 𝑏𝑖𝑡𝑠
6.02
De esto se deduce que a una potencia de señal frente a perturbaciones de ruido (SINAD) de 15.41 dB,
el número efectivo de Bits para este caso es de igual manera de 2 bits, lo que respecta que es un valor
muy reducido para este tipo de procesamientos digitales, pues como se menciona, no se garantizan que
los demás 10 bits se correlacionen con la señal en cuestión. Sin embargo, en el módulo de NI se
muestra una señal que, a pesar de que presentarse de forma sinusoidal pero escalonada, esto puede
deberse a errores más propiamente del algoritmo utilizado para la medición del SINAD o que el
muestreo no lo es suficientemente rápido para formar una señal sinusoidal y el módulo detecte la
formula rectangular como ruido o perturbaciones al sistema.
CONCLUSIONES
La implementación de filtros digitales es una forma fácil de suprimir ruido y limitar la
información en un ancho de banda especifico, pero se debe tener en cuenta algunos aspectos
ya sea para el diseño y la implementación. Uno de estos aspectos y más importantes es la
capacidad de procesamiento. El microcontrolador debe tener la suficiente capacidad para
tratar muchas operaciones ya sea en entero o flotante a muy altas velocidades. Esta es la
mayor limitación de los filtros digitales.
En cuanto a los resultados obtenidos del tiempo de cálculo de cada filtro se obtiene que para
los filtros IIR en general necesitan más tiempo de procesamiento, pero menor orden en
comparación con los filtros FIR, pues en el caso del pasa bajas, se asemejaba a implementar
un FIR de orden 11, pues su tiempo de cálculo ronda los 2.4 ms.
En general, el filtro que más requirió tiempo de procesamiento fue el filtro FIR de orden 30
pues al tener mayor número de coeficientes, hace que exista mayor número de ciclos de
procesamiento y de procedimientos matemáticos, lo cual retrasa al menos 4.1 ms el sistema
por lo que no es viable en un proyecto a futuro que una función requiera tanto tiempo para
completarse. Sin embargo, la ventaja de esto es que la respuesta en frecuencia cumple de
mejor manera la banda de transición y en efecto, la respuesta en frecuencia obtiene mejores
resultados de los demás, pero en ese mismo sentido, consume mayores recursos dado su orden
tan alto.
Los filtros FIR requieren de menos recursos de procesamiento que los IIR, pero a diferencia
de estos los FIR necesitan un orden mucho más alto para atenuar en comparación de los IIR,
por tanto, dependiendo de las circunstancias se debe escoger cuál filtro es conveniente para
implementar.
Los filtros IIR pueden verse afectados por la cuantización de sus coeficientes. En algunos
casos tienden a cambiar su magnitud en la banda de paso o de rechazo, al compararlos con los
coeficientes sin cuantizar. Además, debido a que tienen una realimentación, se requiere de
poco orden para obtener un filtrado favorable. Esta es una de las mayores ventajas al usar los
filtros IIR.
En cuanto a la medición del ENOB de las señales de salida del DAC a diferentes frecuencias
de muestreo, se obtiene que estas poseen un ENOB de entre 2.27 bits a 4.4 bits, lo que
respecta que para cada señal que se obtenga del DAC, en su defecto tendrá a lo largo del
procesamiento de la señal, solamente 2 a 4 bits efectivos que realmente indicarán con
precisión el valor de la señal de la cual se trata, mientras que básicamente sólo 8 a 10 bits
restantes, estarán más asociados al ruido o perturbaciones a lo largo del procesamiento de la
señal, por tanto, no se puede garantizar que realmente lo que salga del DAC es una señal que
sea muy coherente con lo que se le ingrese al sistema. Sin embargo, cabe destacar también
que al ver la señal que recibe el módulo de National Instruments (presentando una señal
sinusoidal con escalones) se desconoce el algoritmo que este emplea para calcular el SINAD,
por lo que se puede deducir que los escalones de la señal sinusoidal los puede detectar como
ruido o como gran intrusión de potencia de ruido en la señal por tal razón, la relación señal a
ruido es un valor reducido a lo esperado, porque la potencia de señal es baja en comparación a
la del ruido, de este modo el ENOB es muy reducido en cuanto a lo que se esperaba obtener
del procesamiento de los datos.
Con respecto a los errores obtenidos en cada frecuencia de corte comparando la teórica con la
experimental, los que mejores resultados obtuvieron fueron los filtros FIR, pues su error
mínimo es de 1 Hz, y el máximo no va más allá de los 4 Hz, lo que asegura que una variación
de esta magnitud con este tipo de filtros es que su implementación es correcta y precisa y no
se aleja bruscamente de lo esperado. En cuanto a los filtros IIR, su error se aumentó por
encima de los 10 Hz, y esto puede ser debido al gran ruido presentado al medir la respuesta en
frecuencia y al tipo de implementación que afecta en cierto modo a los resultados obtenidos,
pues este tipo de filtros no garantizan mucha precisión pero si un orden muy bajo a costa de
muy pocos recursos utilizados en el microprocesador.