Está en la página 1de 12

INSTITUTO TECNOLÓGICO DE MORELIA

PROCESAMIENTO DE SEÑALES

PRÁCTICA 5. DISEÑO DE FILTRO IIR


PASA-BAJAS

PRESENTAN:

DULCE GUADALUPE GARCÍA BEDOLLA


SALVADOR SORIA SALGADO
PROFESORA:

DRA. ADRIANA DEL CARMEN TELLEZ ANGUIANO

MORELIA, MICHOACÁN
20 DE ENERO 2021
Contenido
INTRODUCCIÓN.............................................................................................................................3
MARCO TEÓRICO...........................................................................................................................3
Impulso invariante.........................................................................................................................4
PROGRAMA DESARROLLADO....................................................................................................5
Diseño por medio de Matlab..........................................................................................................5
Implementación del filtro en el MSP430........................................................................................5
RESULTADOS..................................................................................................................................8
CONCLUSIONES...........................................................................................................................11
Salvador.......................................................................................................................................11
Dulce............................................................................................................................................11
BIBLIOGRAFÍA.............................................................................................................................12
INTRODUCCIÓN.
En esta práctica de diseñará y se implementará un filtro digital (IIR) en un
microcontrolador MSP430, utilizando el método de invarianza al impulso visto en clase
para diseñarlo y observando su respuesta esperada en Matlab. De igual manera
obtendremos coeficientes, con el algoritmo desarrollado y con la ayuda del
microcontrolador implantaremos los coeficientes para el filtro digital y mediante un barrido
de frecuencias comprobaremos el funcionamiento de este.

MARCO TEÓRICO.
Un filtro es un proceso computacional o algoritmo mediante el cual una señal digital
(secuencia de muestras) es transformada en una segunda secuencia de muestras o señal
digital de salida.
Los filtros se utilizan mucho en todos los ámbitos del procesado de señal, más o menos
musicales, y son una componente esencial en toda cadena de comunicación. Constituyen la
base del procesado de señal, que puede aplicarse a señales de todo tipo (sonidos, imágenes,
vídeo, vibraciones sísmicas, etc.).
Podemos describir los filtros mediante una ecuación que relaciona una señal de entrada con
una señal de salida en el dominio digital. De esta manera, la salida del filtro se especifica
como un resultado de sumas, restas y multiplicaciones de muestras de entrada actuales y
anteriores. Dichas ecuaciones se denominan técnicamente ecuaciones lineales en
diferencias. Lineales significa que, si la entrada de un filtro es la suma de dos funciones
escaladas, la salida del filtro es igual a la suma escalada de las salidas del filtro para cada
una de dichas funciones.
Los filtros con respuesta impulsional infinita (IIR) se distinguen de los filtros FIR por la
presencia de una recursividad, la señal de salida del filtro se reinyecta a la entrada del
mismo, constituyendo un circuito recursivo o con feedback. Este método permite
implementar filtros con respuesta más compleja y con menos datos. Como inyectamos
constantemente energía en el circuito, la respuesta impulsional tiene una duración potencial
infinita, y de ahí le viene el nombre.

La ecuación típica de un filtro IIR se expresa de la siguiente manera:


N M
y ( n )=∑ bk x ( n−k ) −∑ a k y ( n−k )
k=0 k=1

Los filtros IIR son muy eficaces y pueden proporcionar pendientes de corte muy
pronunciadas. Por otro lado, al poseer características de realimentación (o feedback), tienen
tendencia a entrar en oscilación y en resonancia.
Impulso invariante.
En el método basado en la invarianza del impulso, el objetivo de diseñar un filtro IIR que
tenga respuesta al impulso unidad h( n) que sea la versión muestreada de la respuesta al
impulso del filtro analógico. Es decir,
h ( n ) =h ( nT ) , n=0,1,2 ,…
donde T es el intervalo de muestreo.
Tomando en cuenta que una señal continua en el tiempo x a (t) cuyo espectro es X a ( F) se
muestrea a una frecuencia F s=1/T muestras por segundo, el espectro de la señal
muestreada es la repetición periódica del espectro escalado F s X a ( F) de período F s.
Específicamente, la relación es

X ( f )=F s ∑ X a [ (f −k )F s ]
k=−∞

Donde f =F /F s es la frecuencia normalizada. Si la frecuencia de muestreo F ses menor que


dos veces la frecuencia más alta contenida en X a ( F) se produce aliasing.
Expresado en el contexto del muestro de la respuesta al impulso de un filtro analógico con
la respuesta en frecuencia H a ( f ), el filtro digital con la respuesta al impulso h(n)≡ ha (nT )
tiene la respuesta en frecuencia

H ( f ) =F s ∑ X a [ ( f −k )F s ]
k=−∞

O, lo equivalente,

H ( ω ) =F s ∑ H a [(ω−2 πk ) F s ]
k=−∞

O

1 2 πk
H ( ΩT )=
T

k=−∞
[
H a (Ω−
T
) ]
El filtro digital con la respuesta en frecuencia H (ω) tiene la respuesta en frecuencia del
filtro analógico correspondiente si el intercalo de muestreo T se selecciona para que sea lo
suficientemente pequeño para impedir por completo o al menos para minimizar los efectos
de aliasing. Por lo que el método basado en la invarianza del impulso es inapropiado para
diseñar filtros pasa-altos y rechaza-banda debido al aliasing que resulta del proceso de
muestreo. Además, si tenemos en cuenta los prototipos analógicos, los filtros Chebyshev II
y los Elípticos presentarán peor comportamiento debido al rizado en la banda no pasante.
PROGRAMA DESARROLLADO.
Respuesta obtenida en Matlab
Se diseño un filtro pasa-bajas, con una frecuencia de corte de la banda de paso 50 Hz, y una
frecuencia de muestreo de 512 Hz. Esta gráfica servirá de referencia para saber si el filtro
implementado funciona correctamente.

Figura 1. Filtro pasa-baja diseño por medio de Matlab.

Implementación del filtro en el MSP430.


A continuación, se muestra el código para la implementación del filtro en la MSP430.
#include <msp430g2553.h>

/*---Declaración de funciones---*/
void Init_Clock(void);
void Init_ADC(void);
void Init_PORT(void);
void init_timmer(void);

/*-----------------------------*/

/*---------Variables-----------*/
const float a[3]={1.0000, -1.1759, 0.4198};
const float b[2]={0.0, 0.23638};
float valores_anteriores[2];
float valores_salida_ant[3];
float valor_entrada=0;
float valor_salida=0;
int n=0, m=0, k=0;
/*-----------------------------*/
int main (void){

WDTCTL = WDTPW + WDTHOLD; //Detener el watchdog


Init_Clock();
Init_ADC();
Init_PORT();
init_timmer();
__bis_SR_register(GIE);

for (;;){
__bis_SR_register(CPUOFF); //Apaga el CPU

/*-------------Filtro-------------------*/
valor_salida=0;
valores_anteriores[0] = valor_entrada;
for(n=0;n<2;n++){
valor_salida += b[n]*valores_anteriores[n];
};
for(m=1;m<3;m++){
valor_salida -= a[m]*valores_salida_ant[m];
};
valores_salida_ant[0] = valor_salida;

for(k=1;k>0;k--){
valores_anteriores[k] = valores_anteriores[k-1];
};
for(k=2;k>0;k--){
valores_salida_ant[k] = valores_salida_ant[k-1];
};

/*-------------Envio de datos------------*/
P2OUT = (int)valor_salida&0x0FF;
P1OUT = ((int)valor_salida >> 2)&0xC0;

}
}

/*---------------Interrupciones--------------*/
/*En esta interrupción se guarda el valor
leído por el ADC.*/
#pragma vector = ADC10_VECTOR
__interrupt void ADC10_ISR(void){
valor_entrada = ADC10MEM; // Guardamos el valor leido por el ADC
__bic_SR_register_on_exit(CPUOFF); //enciende el CPU
}

/*La muestra se toma en la interrupción del timmer


El timmer determina la frecuencia de muestreo
en init_timmer(void);*/
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A(void){
char a = TAIV;
ADC10CTL0 |= ENC + ADC10SC; //toma la muestra
a=a+0;
}
/*-----------------Configuración-----------------*/
//Habilita una frecuencia de funcionamiento de 16MHz
void Init_Clock(void){
BCSCTL1 = CALBC1_16MHZ;
DCOCTL = CALDCO_16MHZ;
}

/*Configuración el timmer
La frecuencia de meustreo es dada por
el numero de cuentas nc en TACCR0*/
void init_timmer(void){
TACCTL0 = CCIE; //Interrupciones del timmer habilitadas
TACCR0 = 31250; //nc=número de cuentas; fm=512 Hz
TACTL = TASSEL_2 + MC_1; //SMCLK (16MHz)and mode up (el timmer cuenta
hasta TACCR0)
/*Forma de determinar
el numero de cuenta para
una frecuencia de muestreo deseada*/
/* 1 => 1/16Mhz
nc => 1/fm
nc= 16MHz/fm*/
}

//Configuración del ADC


void Init_ADC(void){
ADC10CTL0 &= ~ENC;
ADC10CTL0 = SREF_1 + ADC10SHT_0 + REFON + REF2_5V + ADC10ON + ADC10IE;
//ADC con referencia interna de 2.5V
ADC10CTL1 = INCH_0 + ADC10DIV_3; //Canal A0, division el reloj del
ADC/5
ADC10AE0 = 0x01; //Hablita el canal A0 como entrada analógica (P1.0)
ADC10CTL0 |= ENC;
}
//Configuración de puertso de salida al DAC
void Init_PORT(void){
P2DIR |= 0xFF;
P2OUT &=~0x00;
P1DIR |= BIT6 + BIT7;
P1OUT &=~ BIT6 + BIT7;
}
RESULTADOS.
Con el siguiente circuito, se realizaron las pruebas correspondientes, modificando
principalmente la frecuencia de la señal, así como la forma de la señal de entrada.

Figura 2. Circuito utilizado.

Figura 3. Funcionamiento del filtro con una señal senoidal de 10 Hz


Figura 4. Funcionamiento del filtro con una señal senoidal de 30 Hz.

Figura 5. Funcionamiento del filtro con una señal senoidal de 50 Hz.


Figura 6. Funcionamiento del filtro con una señal cuadrada de 100 Hz.

Figura 7 Funcionamiento del filtro con una señal cuadrada de 200 Hz.
Figura 8 Funcionamiento del filtro con una señal cuadrada de 500 Hz.

CONCLUSIONES.
Dulce.
Dentro del procesamiento de señales podemos utilizar filtros tipo FIR e IIR, para filtrar una
señal con ayuda de un microcontrolador. En el caso de utilizar un filtro IIR, se considera
diseño como implementación diferente al de los filtros FIR. El método elegido para diseñar
el filtro (pasa bajas con frecuencia de corte de 50 Hz y una frecuencia de muestreo de 512
Hz), fue la invarianza al impulso. En un inicio el filtro fue diseñado como un filtro de cuarto
orden, pero al momento de mostrar los resultados no se obtenían una respuesta
correspondiente al filtro pasa bajas diseñado, por lo que se optó por dejarlo como un filtro
de segundo orden. Otros inconvenientes encontrados se mostraban en la frecuencia de
muestreo elegida en su inicio (256 Hz) y en el DAC, ambos inconvenientes se modificaron
para obtener la respuesta esperada.
En cuanto en el diseño del código se guardaron los coeficientes del filtro (previamente
calculados) para ser utilizados en la convolución recursivo entre la señal y los coeficientes
del filtro; por el hecho de que se utiliza una convolución recursiva se deben considerar
valores anteriores de la señal para poder “retroalimentar” el filtro. Este código podemos
utilizarlo nuevamente en el caso de filtros IIR de segundo orden, solo modificando los
coeficientes del filtro.
Salvador
Aunque le proceso de diseño de los filtros IIR es más rápido y hasta cierto punto sencillo
en comparación del los FIR, estos últimos presentan una mejor atenuación en bandas de
rechazo y un desfase lineal. Por otro lado, podemos tratar de aproximar el
comportamiento de un IIR a un FIR usando filtros en cascada, aunque a nivel software
pues implicaría un mayor tiempo de procesamiento. Los filtros IRR los utilizaría cuando no
se requieran bandas de paso tan estrechas y cuando busque cierta rapidez al momento de
procesar señales.
Consideramos que la mejor manera de diseñar el filtro era por el método de invarianza, ya
que al ser pasa-bajas, se recomienda este método. Además, la obtención de coeficientes se
puede obtener rápidamente al sustituir valores en ecuaciones ya establecidas.

BIBLIOGRAFÍA.
Willis J. Tompkins. Biomedical digital signal procesing.Prentice Hall. May0, 1993.
Alvarez C. Jesús. Implementación de fiiltros digitales tipo FIR en FPGA. Octubre, 2005
M. Martínez, L. Gómez, A. J. Serrano, J. Villa, J. Gómez. Diseño de filtros FIR. 2009
A. Téllez. Filtros FIR: Método de ventana. 2020

También podría gustarte