Está en la página 1de 27

PREINFORME: PRÁCTICA 2-B

IMPLEMENTACION DE FILTROS DIGITALES (FIR-IIR)

AUTORES:

Dorymar Gómez Chin

Cristhiam Felipe González Méndez

Leonardo José Viana De Ávila

PRESENTADO A:

Ing. Nini Vanesa Rueda Algarra

PONTIFICIA UNIVERSIDAD JAVERIANA

FACULTAD DE INGENIERÍA

DEPARTAMENTO DE ELECTRÓNICA

BOGOTÁ D.C. 2021


1. OBJETIVOS
1.1 OBJETIVOS GENERALES

 Implementar dos filtros digitales mediante un sistema de captación de señales analógicas


previamente diseñado en la práctica 2a para entender sus diferencias y alcances.

1.2 OBJETIVOS ESPECIFICOS

 Implementar un filtro FIR y otro filtro IIR para un sistema micro controlado mediante el uso de
algoritmos de programación.
 Reconocer y evaluar diferentes alternativas de implementación de filtros digitales.

2. PROBLEMÁTICA

2.1 DISEÑO DE FILTROS TIPO FIR.

Para el diseño de filtros tipo FIR se utilizará la herramienta de Filter design que se encuentra en el
software “Matlab” donde se especificó el tipo de filtro que se desea y los rangos bajo los que estos
operan. Como indican nuestros requerimientos, para nuestro grupo que en este caso es el grupo 3
tendríamos:
Fs=100 Hz +20∗(¿ de grupo)
F s=100 Hz+20∗3
F s=160 Hz .

- Filtro paso-bajo a 0.1Fs (16Hz) de orden 7:


Utilizando la herramienta mencionada anteriormente, para el filtro utilizamos un pasa bajas por el
método de ventana de tipo Chebyshev. A continuación, observamos la respuesta en magnitud y fase
del filtro. Donde se puede observar que atenúa -3dB en 16.6 Hz aproximadamente.

Ilustración 1.Respuesta de magnitud y fase del filtro FIR 1.


En la siguiente ilustración se evidencia la configuración de los parámetros para el filtro.

Ilustración 2. Condiciones utilizadas para el diseño del filtro FIR 1.

En la siguiente ilustración se observa la respuesta impulso obtenida del filtro ante una entrada tipo
pulso.

Ilustración 3. Respuesta impulso del filtro FIR 1.

Simulación de la respuesta impulso para verificar la concordancia usando Simulink.

Ilustración 4. Respuesta impulso del filtro FIR 1 dada por simulink.

A continuación, se observa la respuesta paso del filtro FIR 1.


Ilustración 5. Respuesta paso del filtro FIR 1.

Para el proceso de cuantización se utilizó la siguiente fórmula

SNR=20 log 10
( V rms signal
V rmsruido
>60 dB
)
V REF 5
V rms signal = = =3.54 V
√2 √2
Teniendo en cuenta la varianza, que es usada para ver qué tan malo es el error de cuantización,
tenemos que la potencia de una señal ruido está dada por lo siguiente:
Q
2

E {e 2 ( n ) }= ∫ e 2 p ( e ) de
−Q
2

Q
2
1
¿ ∫ e2 de
−Q Q
2

|
e=Q / 2
1 e3
¿ ∗
Q 3 e=−Q /2

[( ) ( ) ]
3 3
1 Q −Q
¿ −
3Q 2 2
2
2 Q
σ e=
12

( ) ( 2∗2 )
1 −N
2
nbits
qr N∗q 2
V rms ruido= = = =
√12 √ 12 √12 √ 12
(( ))
3.54 V
1
2∗2nbits
20 log 10 > 60 dB
√12

( )
3
10 ∗( n coeficientes )
nbits >log 2
2∗3.54∗√ 12
Teniendo en cuenta “n Coeficientes” = 12.
Obtenemos que:
nbits >¿8.93 bits
Luego, se debe hacer uso de la herramienta de Matlab filter desing y el algoritmo de fixed point,
para el aparatado de los coeficientes se asignó un tamaño de 12 bits ya que es el preferible, para el
tamaño de la palabra de entrada se eligió un tamaño de 12 bits teniendo en cuenta que el DAC es de
12 bits, y el tamaño de fracción fue elegido de 16 bits para la entrada.

Ilustración 6. Cuantización en la respuesta de magnitud para el filtro FIR 1.

A continuación, se pueden observar los coeficientes cuantizados y sin cuantizar.

Ilustración 7. Cuantización de los coeficientes y coeficientes sin cuantizar.

- Filtro paso-bajo a 0.1Fs (16Hz) de orden 11:


Utilizando la herramienta mencionada anteriormente, para el filtro FIR 2 utilizamos un pasa bajas
por el método de ventana de tipo Chebyshev.
A continuación, observamos la respuesta en magnitud y fase del filtro. Donde se puede observar
que atenúa -3dB en 15.9 Hz aproximadamente.

Ilustración 8. Respuesta de magnitud y fase del filtro FIR 2.

En la siguiente ilustración se evidencia como se realizó la configuración de los parámetros para el


diseño del filtro.

Ilustración 9. Condiciones utilizadas para el diseño del filtro FIR 2.

En la siguiente ilustración se observa la respuesta impulso obtenida del filtro.

Ilustración 10. Respuesta impulso del filtro FIR 2.


Simulación de la respuesta impulso para verificar la concordancia entre el diseñado y lo simulado.

Ilustración 11. Respuesta impulso del filtro FIR 2 dada por Simulink.

A continuación, se observa la respuesta paso del filtro FIR 2.

Ilustración 12. Respuesta paso para filtro FIR 2.

Para el proceso de cuantización se utilizó la siguiente fórmula


SNR=20 log 10 ¿ ¿

V V REF 5
rms∈¿= = =3.54 V ¿
√2 √ 2

1
( )( )
−N
2
nbits
qr N∗q 2 2∗2
V rms ruido= = = =
√12 √ 12 √12 √ 12

(( ))
3.54 V
1
2∗2nbits
20 log 10 > 60 dB
√12
( )
3
10 ∗( n coeficientes )
nbits >log 2
2∗3.54∗√ 12
Teniendo en cuenta “n Coeficientes” = 32.
Obtenemos que:
nbits > 10.3495 bits
Luego, se utilizó la herramienta de Matlab filter desing y el algoritmo de fixed point, para el
apartado de los coeficientes se asignó un tamaño de 32 bits debido a que el tamaño exacto de la
palabra que era 21, no era múltiplo directo de 2 N entonces se toma el valor de 32, para el tamaño de
la palabra de entrada se configuró un tamaño de 12 bits debido a que es el tamaño de bits del DAC,
y para el tamaño de fracción se tomó el valor de 16 bits para la entrada.

Ilustración 13. Cuantización en la respuesta de magnitud para el filtro FIR 2.

A continuación, se pueden observar los coeficientes cuantizados y sin cuantizar.

Ilustración 14. Cuantización de los coeficientes y coeficientes sin cuantizar.

- Filtro paso-bajo a 0.2Fs (32Hz) de orden 17:


Utilizando la herramienta mencionada anteriormente, para el filtro FIR 3 utilizamos un pasa bajas
por el método de Equiripple.
A continuación, observamos la respuesta en magnitud y fase del filtro. Donde se puede observar
que atenúa -3dB en 34.2 Hz aproximadamente.
Ilustración 15. Respuesta de magnitud y fase del filtro FIR 3

En la siguiente ilustración se evidencia la configuración de los parámetros para el filtro.

Ilustración 16. Condiciones utilizadas para el diseño del filtro FIR 3.

En la siguiente ilustración se observa la respuesta impulso obtenida del filtro.

Ilustración 17. Respuesta impulso del filtro FIR 3.

Simulación de la respuesta impulso para verificar la concordancia entre el diseñado y lo simulado.


Ilustración 18. Respuesta impulso del filtro FIR 3 dada por Simulink.

A continuación, se observa la respuesta paso del filtro FIR 3.

Ilustración 19. Respuesta paso del filtro FIR 3.

Para el proceso de cuantización para el FIR 3 se utilizó la siguiente fórmula:


SNR=20 log 10 ¿ ¿

V V REF 5
rms∈¿= = =3.54 V ¿
√2 √ 2

1
( )( )
−N
2
nbits
qr N∗q 2 2∗2
V rms ruido= = = =
√12 √ 12 √12 √ 12

(( ))
3.54 V
1
nbits
2∗2
20 log 10 > 60 dB
√12
( )
3
10 ∗( n coeficientes )
nbits >log 2
2∗3.54∗√ 12
Teniendo en cuenta “n Coeficientes” = 10
Obtenemos que:
nbits > 8.67148 bits
Pero debido a que el tamaño del numerador de la palabra es 10 y este no es múltiplo de 2 N como se
sugirió, entonces se utilizó la herramienta de Matlab filter desing y el algoritmo de fixed point, para
el aparatado de los coeficientes se asignó un tamaño de 12 bits, para el tamaño de la palabra de
entrada se configuró con un tamaño de 12 bits debido a que ese el tamaño del DAC, y el tamaño de
fracción se configuró de 16 bits para la entrada.

Ilustración 20. Cuantización en la respuesta de magnitud para el filtro FIR 3.

A continuación, se pueden observar los coeficientes cuantizados y sin cuantizar.

Ilustración 21. Cuantización de los coeficientes y coeficientes sin cuantizar.

- Filtro paso-bajo a 0.25Fs (40Hz) de orden 30


Utilizando la herramienta mencionada anteriormente, para el filtro FIR 4 utilizamos un pasa bajas
por el método de Equiripple.
A continuación, observamos la respuesta en magnitud y fase del filtro. Donde se puede observar
que atenúa -3dB en 43.5 Hz aproximadamente.

Ilustración 22. Respuesta de magnitud y fase del filtro FIR 4.

En la siguiente ilustración se evidencia la configuración de los parámetros para el filtro.

Ilustración 23. Condiciones utilizadas para el diseño del filtro FIR 4.

En la siguiente ilustración se observa la respuesta impulso obtenida del filtro.

Ilustración 24. Respuesta impulso del filtro FIR 4.


Simulación de la respuesta impulso para verificar la concordancia entre el diseñado y lo simulado.

Ilustración 25. Respuesta impulso del filtro FIR 4 dada por Simulink.

A continuación, se observa la respuesta paso del filtro FIR 4.

Ilustración 26. Respuesta paso para el filtro FIR 4.

Para el proceso de cuantización para el filtro FIR 4 se utilizó la siguiente fórmula:


SNR=20 log 10 ¿ ¿

V V REF 5
rms∈¿= = =3.54 V ¿
√2 √ 2

( ) ( 2∗2 )
1−N
2
nbits
qr N∗q 2
V rms ruido= = = =
√12 √ 12 √12 √ 12

(( ))
3.54 V
1
nbits
2∗2
20 log 10 > 60 dB
√12
( )
3
10 ∗( n coeficientes )
nbits >log 2
2∗3.54∗√ 12
Teniendo en cuenta “n Coeficientes” = 14
Obtenemos que:
nbits > 9.15690 bits
Para el proceso de cuantización se utilizó el mismo procedimiento que para el punto anterior, donde
la herramienta de Matlab filter desing y el algoritmo de fixed point fueron de gran apoyo, para el
aparatado de los coeficientes se asignó un tamaño de 16 bits, ya que la que funcionaba de manera
precisa era de 14 pero se prefiere usar un múltiplo de 2 N , para el tamaño de la palabra de entrada, se
decide configurar con un tamaño de 12 bits teniendo en cuenta que es el mismo tamaño del DAC, y
el tamaño de fracción se eligió igual a 16 bits.

Ilustración 27. Cuantización en la respuesta de magnitud para el filtro FIR 4.

A continuación, se pueden observar los coeficientes cuantizados y sin cuantizar.


Ilustración 28. Cuantización de los coeficientes y coeficientes sin cuantizar.

2.2 Diseño de Filtros IIR.

Se debe tener en cuenta que el filtro tipo IIR se debe implementar de forma discreta tipo2, el
esquema de esta forma se muestra a continuación:

Ilustración 29. Forma Directa II de un filtro de segundo orden IIR.

La forma SOS se puede implementar en la herramienta de Matlab mediante el comando tf2sos, este
comando permite tomar los coeficientes de la función de transferencia del filtro digital y agruparlos
en secciones de segundo orden, de esta manera se implementará la forma Directa II tantas veces
como el orden del filtro.
Para la práctica se solicita:
- Un filtro IIR con frecuencia de muestreo de 240Hz – 20 * (#grupo), de rechazo de 60Hz de
orden 4 y con el mayor Q que considere evidente:

Con el cual reemplazando tenemos que:

240Hz – (20 * 3) = 180 Hz

Donde podemos decir que nuestra Fs en estos casos será de 180 Hz. Utilizando la herramienta
mencionada en el punto anterior, para el filtro IRR 1 utilizamos un filtro Butterworth pasa bajas.
A continuación, observamos la respuesta en magnitud y fase del filtro. Donde se puede observar
que atenúa -3dB en 15,97 Hz aproximadamente y en la banda de rechazo en 60 Hz
aproximadamente.

Ilustración 30. Respuesta de magnitud y fase del filtro IIR 1.

En la siguiente ilustración se evidencia la configuración de los parámetros para el filtro IRR.

Ilustración 31. Condiciones utilizadas para el diseño del filtro IIR 1.

En la siguiente ilustración se observa la respuesta impulso obtenida del filtro.


Ilustración 32. Respuesta impulso del filtro IIR 1.

Simulación de la respuesta impulso para verificar la concordancia entre el diseñado y lo simulado.

Ilustración 33. Respuesta impulso del filtro IIR 1 dada por Simulink.

A continuación, se observa la respuesta paso del filtro IIR 1.

Ilustración 34. Respuesta paso para el filtro IIR 1.

- Un filtro IIR pasa bajos con frecuencia de corte a 0.2 Fs (36 Hz) de orden 4.
Utilizando la herramienta mencionada en el punto anterior, para el filtro IRR 2 utilizamos un pasa
bajas por el método de Butterworth.
A continuación, observamos la respuesta en magnitud y fase del filtro. Donde se puede observar
que atenúa -3dB en 36.04 Hz aproximadamente.

Ilustración 35. Respuesta de magnitud y fase del filtro IIR 2.

En la siguiente ilustración se evidencia la configuración de los parámetros para el filtro IRR.

Ilustración 36. Condiciones utilizadas para el diseño del filtro IIR 2.

En la siguiente ilustración se observa la respuesta impulso obtenida del filtro.

Ilustración 37. Respuesta impulso del filtro IIR 2.

Simulación de la respuesta impulso para verificar la concordancia entre el diseñado y lo simulado.


Ilustración 38. Respuesta impulso del filtro IIR 2 dada por Simulink.

A continuación, se observa la respuesta paso del filtro IIR 2.

Ilustración 39. Respuesta paso para el filtro IIR 2.

- Un filtro IIR paso altos con frecuencia de paso a 0.25 Fs (45 Hz) de orden 4.
Utilizando la herramienta mencionada anteriormente, para el filtro IRR 3 utilizamos un pasa altos
por el método de Butterworth.
A continuación, observamos la respuesta en magnitud y fase del filtro. Donde se puede observar
que atenúa -3dB en 45 Hz aproximadamente.
Ilustración 40. Respuesta de magnitud y fase del filtro IIR 3.

En la siguiente ilustración se evidencia la configuración de los parámetros para el filtro IRR.

Ilustración 41. Condiciones utilizadas para el diseño del filtro IIR 3.

En la siguiente ilustración se observa la respuesta impulso obtenida del filtro.

Ilustración 42. Respuesta impulso del filtro IIR 3.

Simulación de la respuesta impulso para verificar la concordancia entre el diseñado y lo simulado.


Ilustración 43. Respuesta impulso del filtro IIR 3 dada por Simulink.

A continuación, se observa la respuesta paso del filtro IIR 3.

Ilustración 44. Respuesta paso para el filtro IIR 3.

2.3 DIAGRAMA DE CÓDIGOS A IMPLEMENTAR


2.3.1 DIAGRAMAS DE FLUJO PARA RUTINAS DE LOS FILTROS FIR
DISEÑADOS
Para la realización del diagrama de flujos del filtro FIR, tendremos en cuenta la siguiente
ecuación sugerida en el primer video mostrado en la guía de laboratorio, el cual consiste en
demostrar que un filtro FIR depende del valor de las entradas y la función de transferencia, y
de los valores previos de la respuesta dada.

Ecuación 1. Filtro FIR.

A continuación, se podrá observar el diagrama de flujo I diseñado para la implementación de


los filtros FIR pedidos en esta práctica.
Ilustración 45. Diagrama de flujo FIR.

Primero se crean e inicializan las variables que serán usadas y se crea un vector llamado
Coef_filtro donde se van a guardar los correspondientes coeficientes ( b ks), luego se
inicializan las rutinas correspondientes para que haya un buen funcionamiento de la
implementación del filtro, estás variables son, PIN_MANAGER, OSCILATOR y TMR1. En
la rutina de TMR1_ISR se toma el valor de la salida del ADC y se envía a la función
Rutina_FIR para aplicar el filtro correspondiente al valor que se obtiene.
En la Rutina_FIR se crea una variable k, en donde se coloca el orden del filtro que será
implementado, se procede a evaluar si la variable es igual al orden del filtro, dado el caso que
sea así, entonces la variable x[N-k] será igual al valor del ADC, luego a la variable y se le
asigna el resultado de la multiplicación entre el vector de coeficientes coeff[k] con x[N-k]; Si
k no corresponde al orden del filtro, entonces a la variable x[N-k-1] se le asigna el valor de
x[N-k] y posterior a esto, la variable y en este caso toma el valor de y*(1+ el vector de
coeficientes * x[N-k]), una vez realizadas las operaciones se resta 1 al valor de k y se
pregunta si este valor es menor a 0, si no es menor a 0 se vuelve a ejecutar toda la rutina
desde el condicional donde se compara k con el orden del filtro, si la condicional por el
contrario es menor a 0 se retorna la variable y.
A continuación, se podrá observar el diagrama de flujo II diseñado para la implementación
de los filtros FIR pedidos en esta práctica.

Ilustración 46. Diagrama de flujo implementación filtro FIR II.


Para esta diagrama de bloques se utiliza la estructura llamada Forma Directa II, en la cual se
aprovecha la simetría presente en los coeficientes del filtro, con el fin de reducir y optimizar
el número de iteraciones que ocupa el microcontrolador en realizar cada proceso; en este
diagrama, el vector donde se encuentran los coeficientes es recorrido solamente hasta la
“mitad” y en este caso ahora existen dos apuntadores que recorren el registro donde se
guarda la entrada, sin embargo, ambos lo recorren en direcciones opuestas, los valores que
contienes estos apuntadores se multiplican por el valor que contiene el apuntador de
coeficientes.

2.3.2 PRUEBA DE ESCRITORIO FILTROS FIR.


Se realizó la prueba de escritorio para cada uno de los filtros FIR diseñados, mediante la
herramienta “Simulink” provista por el software Matlab, como primera instancia se generó la
señal de pulso mediante el bloque de “pulso discreto”, posteriormente se pasó dicha señal
mediante el bloque de “filter desing”, el cual posee la internamente los detalles del filtro
diseñado previamente para esta práctica en el apartado 1 junto a los demás requisitos
solicitados para los filtros FIR, la salida se mira en la herramienta “scope” de manera
discreta y rápida.

Ilustración 47. Diagrama de bloques en Simulink para la simulación del comportamiento de los filtros FIR
diseñados.

En la salida de cada uno de los visualizadores se observó de manera previa en el documento junto
con el diseño de cada filtro.

2.3.3. DIAGRAMAS DE FLUJO PARA RUTINAS DE LOS FILTROS IIR


DISEÑADOS
Para la realización del diagrama de flujos del filtro IIR, tendremos en cuenta la siguiente ecuación,
la cual consiste en demostrar que un filtro IIR depende únicamente del valor de las entradas y los
valores previos de la respuesta dada, la diferencia es que este sistema está acondicionado por sus
valores de retroalimentación a k y de alimentación directa b k .

Ecuación 2. Ecuación del filtro IIR.

A continuación, se encuentra el diagrama de flujo propuesto para la implementación de los filtros


IIR.

Ilustración 48. Diagrama de flujo implementación filtro IIR.

En el diagrama mostrado anteriormente podemos ver que primero se crean e inicializan las variables
necesarias, se crean dos vectores llamados coeff y coeffA que son los encargados de guardar los
coeficientes del filtro, luego se deben inicializan las rutinas principales que son PIN_MANAGER,
OSCILATOR y TMR1; luego en la rutina TMR1_ISR se envía el dato que es recolectado por el
ADC a la rutina que ejecuta el filtro IIR.
Para la implementación de los filtros IIR (Infinite Impulse Response) se deben añadir coeficientes
los cuales harán retroalimentación al sistema y serán multiplicados por la salida del sistema, para
luego de esto almacenar la salida en un vector que tiene el orden del filtro.
2.3.4. PROTOCOLO DE PRUEBAS PROPUESTO
Para tomar las mediciones de los datos que se desean observar, se hará uso del módulo de
adquisición de National Instruments con el cual se observará los valores a la entrada y a la salida del
filtro. Se obtendrán a la entrada del PIC diferentes señales sinusoidales con frecuencia variable y
estas señales pasarán al filtrado, luego las salidas se ingresarán al módulo donde se analizarán y se
estudiará el bode de las relaciones output-input, para así analizar la respuesta en frecuencia de los
filtros, el tiempo de estabilización y el ENOB correspondiente a cada una.
• Protocolo de medición de la respuesta en frecuencia de los filtros implementados:
1. Se debe conectar la entrada del filtro correspondiente a uno de los pines analógicos de lectura del
módulo. Donde la entrada corresponde a la señal obtenida mediante el generador.
2. Se debe conectar la salida del filtro correspondiente a uno de los pines analógicos de lectura del
módulo. La conexión se realiza entre el pin que fue elegido en el microcontrolador como salida del
filtro a realizar, y el pin de lectura del módulo y se prosigue a abrir el programa SignalExpress en la
computadora.
3. Se crear un paso en la secuencia de análisis. Este paso corresponde a la adquisición de las señales
de entrada al módulo. Se seleccionan los pines a analizar (los conectados a la señal de entrada y la
señal de salida del filtro). Se selecciona una tasa de muestreo y el número de puntos a analizar de la
señal teniendo en cuenta que se cumpla la tasa de Nyquist a la hora de seleccionar la frecuencia de
muestreo y el número de muestras a tomar.
4. Se procede a crear un segundo paso en la secuencia de análisis, el cual es el análisis de la señal en
el dominio de la frecuencia donde se debe seleccionar el análisis de la respuesta en frecuencia.
5. En el análisis de la respuesta en frecuencia se seleccionan los pines respectivos asignados a
entrada y salida para finalmente habilitar la visualización del diagrama de bode.

•Protocolo de medición de la respuesta en frecuencia de todos los filtros implementados de los


tiempos de cálculo para cada una de las implementaciones de filtros:
1. La entrada del filtro en el generador de funciones, se establece como una señal con valor
constante, esto con el propósito de replicar una señal step y poder evaluar el tiempo en el que se
estabiliza el filtro.
2 y 3 se repiten del protocolo de pruebas anteriormente mencionado
4. En el paso de adquisición de la señal se puede evidenciar la salida del filtro. El tiempo de
estabilización o tiempo de cálculo del filtro es cuando la salida se estabilice y empiece a tomar
valores iguales.

• Protocolo de medición del ENOB en la banda de paso para cada uno de los filtros implementados:
1. Se debe conectar la entrada del filtro correspondiente a uno de los pines analógicos de lectura del
módulo. Donde la entrada corresponde a la señal obtenida mediante el generador.
2 y 3 se deben realizar nuevamente.
4. Se procede a crear un segundo paso en la secuencia de análisis, el cual será el análisis de la señal
en el dominio de la frecuencia donde se deberá seleccionar el análisis de la distorsión armónica.
5. En el análisis de la distorsión armónica se seleccionan los pines previamente seleccionados para
entrada y salida y se procede a seleccionar la medición del SINAD.
6. Después de haber calculado el SINAD se debe aplicar la ecuación del ENOB que es la siguiente a
una frecuencia de muestreo determinada que debe ser un valor ubicado dentro de la banda de paso
del filtro en cuestión.

Ilustración 49. Ecuación ENOB.

3. REFERENCIAS

[1]Paperzz.com. n.d. FINITE PRECISION EFFECTS 1. FLOATING POINT VERSUS


FIXED. [online] Available at: <https://paperzz.com/doc/6850004/finite-precision-
effects-1.-floating-point-versus-fixed>.
[2] Diseño de filtros digitales FIR, Teoría y diseño - YouTube
[3] Filtros Digitales, FIR, cuantización de coeficientes en Matlab - YouTube

También podría gustarte