PDS-Actividades Previas Al TL1

Cancelacion de Ruido con Filtro Adaptativo usando la Tarjeta TMS320C6713 DSK Espinoza Garcia Brayan Huillca Nuñez Fredd

Views 97 Downloads 2 File size 2MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Cancelacion de Ruido con Filtro Adaptativo usando la Tarjeta TMS320C6713 DSK Espinoza Garcia Brayan

Huillca Nuñez Freddy

Turpo Condori Danny

[email protected]

[email protected]

[email protected]

Resumen — en el presente trabajo se muestra los resultados obtenidos al adaptar un filtro adaptativo para cancelación de ruido, primero mediante diagramas de bloques con Simulink, posteriormente mediante algoritmo LMS con MatLab, finalmente usamos la tarjeta TMS320C6713 DSK para implementar en físico y en tiempo real el algoritmo LMS. Con ayuda del programa Audacity podemos visualizar las señales usadas en este trabajo, lo que nos ayudara a comprender mejor el comportamiento del filtro adaptativo. Palabras clave — filtro adaptativo, algoritmo LMS, Simulink, cancelacion de ruido, ruido, TMS320C6713 DSK..

INTRODUCCIÓN Cuando las señales por filtrar son variantes en el tiempo o se encuentran en ambientes muy caóticos, los filtros de coeficientes constantes típicamente empleados no logran ser suficientes, pues trabajan con frecuencias fijas y, como su nombre lo indica con coeficientes fijos. Esto limita el su funcionamiento e impide que se trabaje adecuadamente con la señal. I.

Los filtros adaptativos permiten, de una forma dinámica y confiable la reducción de señales no deseadas. Estos filtros se configuran para reducir a cero la señal de error, para ello se requiere que la salida del filtro sea igual a la señal deseada y que se actualicen sus coeficientes de una muestra a la siguiente. II. MARCO TEORICO

algoritmo LMS Una característica importante del LMS es su simplicidad. No requiere medidas de las funciones de correlación. Comprende dos procesos básicos. Proceso de filtrado, que implica el cálculo de la salida generada por un filtro, generación de una estimación del error comparando esta salida con la respuesta deseada. Un proceso adaptativo, que realiza el ajuste automático de los coeficientes del filtro de acuerdo con la estimación del error. [1] A.

tarjeta TMS320C6713 Para el desarrollo del presente trabajo se utilizó una tarjeta TMS320C6713 DSK. La sigla DSK corresponde a Digital Starter Kit, lo cual se refiere a que el procesador de señales (TMS320C6713) viene en una tarjeta con una serie de componentes adicionales (códec de audio, distintos tipos de memoria, control de periféricos, etc.), lo que transforma a la tarjeta DSK en una plataforma de iniciación y experimentación para el desarrollo de aplicaciones de procesamiento de señales. B.

La tarjeta está conectada al puerto USB del PC corriendo con Windows. Instalado en el PC se encuentra el software que permite compilar, ensamblar, depurar y cargar las aplicaciones de la tarjeta DSK. La tarjeta es controlada por el PC, mediante el programa Code Composer Studio (CCS). Esta es una herramienta diseñada para agilizar y enriquecer el proceso de desarrollo para programadores que crean y prueban aplicaciones de procesamiento digital de señales en tiempo real proveyendo herramientas necesarias. [2]

C.

diagrama de bloques para cancelacion de ruido con filtro adaptativo

Figura 1. Diagrama de bloques para cancelacion de ruido. [3]

El diagrama de bloques define las entradas y salidas de un filtro adaptativo. El ruido ([x[n]) ingresa al filtro adaptativo y como resultado entrega la señal y[n], al compararse y[n] con la señal de entrada sumada con el ruido se genera la señal de error. La señal de error se usa en combinación con los elementos de x[n] en el bloque del algoritmo LMS para generar la correcta actualización de los coeficientes del filtro en base a los criterios del algoritmo. III. EXPERIMENTACION

A.

cancelacion de ruido con Simulink

Figura 2. Diagrama de bloques realizado con Simulink para implementar un filtro adaptativo para cancelacion de ruido.

Este diagrama de bloques es parecido al diagrama mostrado en la sección II-C, la señal de error se implementa mediante el bloque “Random Source”, la señal deseada se implementa con el bloque “Sine Wave”. Se hace uso de bloques “To Multimedia File” con el cual se puede obtener las señales en cada una de las etapas del proceso, con esto se tendrá una mejor comprensión del diagrama de bloques. A continuación mostraremos las señales obtenidas en los bloques.

Figura 3. Señales obtenidas a partir de los bloques To Multimedia File: a) señal Ruido, b) señal deseada “Seno”, c) señal ruido filtrado “RuidoFiltrad”, d) señal mas ruido “SmasR” y e) señal restaurada “SenRest”.

La señal ruido pasa por un filtro FIR para realizar un desfase, esto para simular las perturbaciones que se tienen al captar la señal, ya que esto no es instantáneo.

Figura 4. Señal ruido y la señal ruido desfasada, se puede apreciar el desface que sufre la señal al pasarla por el filtro FIR.

La señal ruido es sumada con la señal seno, se puede notar el desfase que se tuvo al pasar la señal ruido por el filtro FIR.

Figura 5. Señal sumada en el bloque ADD, se combinan la señal ruido y la señal seno.

Por ultimo tenemos el bloque “LMS FILTER”, en el cual se aplica el algoritmo de adaptación cuya finalidad es obtener los coeficientes que definen la naturaleza del filtro. Estos coeficientes se actualizan con el tiempo´, gracias a esto a la salida podemos obtener la señal seno restaurada, la cual sufrió la adición de una señal ruido.

Figura 6. Comparacion de señal seno original con la señal seno restaurada.

En la figura 6 podemos notar que la restauración no es instantánea, ya que los coeficientes generados no son suficientes para que el filtro se adapte a la señal. Esto mejora con el paso de tiempo ya que el algoritmo logra ajustar los pesos del filtro hasta que el error cuadrático medio sea minimizado.

Figura 7. Podemos notar como la señal restaurada mejora con el paso del tiempo. Podemos decir que apartir de 0.6 segundos se empieza a tener la señal SenRest mas identica a la señal original. B.

Implementacion de algoritmo LMS en MatLab

A continuación se muestra un código en MatLab con el cual se implementa el algoritmo LMS, para realizar cancelación de ruido. Este sigue la misma secuencia, el diagrama de bloques hecho en Simulink. %---------------------------------% Filtrado Adaptativo % Algoritmo LMS =) %---------------------------------close all; clear ; [s, fs] = audioread('Seno(2).wav'); fs s=s'; N=length(s) t=0:1:N-1;

t=t/fs; x=0.8*(rand(1,N)-0.5); %SEÑAL DE RUIDO x1=filter([0 0 0 0 0 0.5],1,x); %RUIDO DESFASADO EN 5 POSCIONES d=s+x1; %SUMA SEÑAL MAS RUIDO DESFASADO mu=0.01; %LONGITUD DE PASO Nw=31; %LONGITUD DEL FILTRO w=zeros(1,Nw); %VECTOR DE COEFICIENTES DEL FILTRO y=zeros(1,N); %FILTER OUTPUT :) e=y; for m=Nw+1:1:N-1 sum=0; for i=1:1:Nw sum=sum+w(i)*x(m-i+1); % FUNCION DEL FILTRO ADAPTATIVO end y(m)=sum; e(m)=d(m)-y(m); %CALCULA LA FUNCION ERROR for i=1:1:Nw w(i)=w(i)+2*mu*e(m)*x(m-i+1); %ACTUALIZA LOS COEF DEL FILTRO end end figure(1) subplot(2,1,1); plot(t,s);grid;title('Señal original'); subplot(2,1,2); plot(t,d);grid;title('Señal original + Ruido'); %pause; figure(2) subplot(2,1,1); plot(t,s);grid;title('Señal original'); subplot(2,1,2); plot(t,e);grid;title('Señal restaurada'); audiowrite('arch_voz_ruid.wav',d,fs); audiowrite('arch_voz_rest.wav',e,fs); Figura 8. Codigo MatLab para realizar algoritmo LMS para cancelación de ruido.

Primero obtenemos un audio mediante la línea “audioread”, esta viene a ser nuestra señal original, el cual se muestra a continuación.

Figura 9. Señal generada con Audacity de una frecuencia de 1KHz y 0.8 de amplitud.

Se realiza una trasposición de la señal, para pasarla de columna a vector. Generamos un ruido de N términos (misma dimensión que la señal original), realizamos un desfase de 5 posiciones a esta señal de ruido. Sumamos la señal original con la señal ruido desfasado. Con los bucles for determinamos la función del filtro adaptativo, generamos las actualizaciones de los coeficientes del filtro en cada iteración, para poder lograr el ajuste de los pesos del filtro hasta que el error cuadrático medio sea minimizado. A continuación se muestra las señales obtenidas con este programa.

Figura 10. Señal original comparada con la señal + ruido.

Figura 11. Señal original comparaa con la señal restaurada.

El código de MatLab nos genera dos audios, los cuales podemos visualizarlos con Audacity.

Figura 12. Se muestra la evolucion de la señal a traves del tiempo, se aprecia como va tomando la forma de la señal original.

Implementacion de algoritmo LMS en CCS y tarjeta TMS320C6713 DSK en tiempo real Para implementar el algoritmo en CCS se uso el siguiente código, el cual esta basado y funciona de manera similar al presentado en MatLab. C.

#include "DSK6713_AIC23.h" //Libreria para conectar con el DSK Uint32 fs=DSK6713_AIC23_FREQ_48KHZ; //Define frec de muestreo #define beta 0.00000000002 //taza de convergencia #define N 30 //# de coeficientes #define LEFT 0 //canal izquierdo #define RIGHT 1 //canal derecho float w[N]; //coeficients para el filtro adaptativo float delay[N]; //buffer de las entradas para el filtro adaptativo short output; //variable de salida short out_type = 1; //variable de seleccion de salida volatile union{unsigned int uint; short channel[2];}AIC23_data; interrupt void c_int11() //ISR { short i; float yn=0, E=0, dplusn=0, noise=0; AIC23_data.uint = input_sample(); //entrada de 32bits de ambos canales dplusn =(AIC23_data.channel[LEFT]); //entrada de canal izquierdo cambiamos desired //por dplusn noise = (AIC23_data.channel[RIGHT]);//entrada de canal derecho //dplusn = desired + noise; delay[0] = noise;

//suma señal original mas ruido //ruido como entrada para adaptar el FIR //(coeficientes)

for (i = 0; i < N; i++) yn += (w[i] * delay[i]);

//para calcular la salida adaptada FIR //salidadel filtro adaptativo

E = (dplusn) - yn; for (i = N-1; i >= 0; i--) { w[i] = w[i] + beta*E*delay[i]; delay[i] = delay[i-1]; } if(out_type == 1) output=((short)E); else if(out_type==2) output=((short)dplusn); output_sample(output); return;

//"error" signal=(d+n)-yn cambiamos d+n //por dplus //para actualizar los coeficientes //actualizar coeficientes del filtro //actualizar muestras de entrada //si la bandera esta en 1 //muestra la señal de error //si la bandera esta en 2 //muestra la señal mas el ruido //muestra el resultado segunla bandera

} void main() { short T=0; for (T = 0; T < 30; T++) { w[T] = 0; delay[T] = 0;

}

} comm_intr(); while(1);

//inicializa el buffer de coeficientes del //filtro //inicializa el buffer de las muestras de //entrada //inicializa DSK, codec, McBSP //bucle infinito

Figura 13. Codigo implemtado en CCS.

El código implementa un filtro adaptativo con 30 coeficientes, también posee una bandera con la cual se puede seleccionar si mostrar la señal de error o la señal de entrada mas el ruido. Se cambió el beta (taza de convergencia) a un valor de , para que disminuya el tiempo de adaptación del filtro. A diferencia del código en MatLab fue necesario añadir un buffer, para almacenamiento de las entradas del filtro. El programa se implementa mediante una interrupción y en el programa principal se inicializa el vector de coeficientes de filtro y el vector de entrada llamado delay con ceros. A continuación mostramos la señal de entrada:

Figura 14. La grafica superior es la señal mas ruido, y la inferior es el ruido puro.

Esto se implementa mediante una señal estéreo que se envía a la tarjeta como entrada. Estas graficas fueron tomadas con Audacity.

A continuacion mostramos los resultados obtenidos:

Figura 15. Señal filtrada obtenida por la tarjeta DSK.

Esta imagen es la señal filtrada, obtenida después de correr el programa.

CONCLUSIONES

Los algoritmos de adaptación son algoritmos de optimización cuya finalidad es obtener los parámetros o coeficientes que determinan la naturaleza del filtro. Una señal de audio o voz se ve afectada en un entorno real, dando lugar a una señal compuesta por la señal original con atenuación, este fenómeno genera una interferencia de la señal original. Los filtros adaptativos nos permiten disminuir esta interferencia a valores mínimos, con la finalidad de obtener la señal original con la mínima perdida de información. Se ha visto que el algoritmo LMS es bastante sencillo de implementar mediante el software Mat Lab ya que solo requiere de dos bucles “for”, lo cual es de bastante ayuda para simular la respuesta deseada del filtro. En el software Code Composer Studio se requirió de un buffer de almacenamiento para almacenar las entradas anteriores en tiempo real. Hemos comprobado experimentalmente el funcionamiento del filtro adaptativo con el algoritmo LMS teniendo resultados realmente sorprendentes ya que el filtro respondió de manera ideal. La canción se escuchaba mejor a medida que pasaba el tiempo, con esto demostramos la característica típica de este filtro de adaptarse con el tiempo como lo vimos en simulaciones realizadas previamente en los softwares “Simulink” y “Mat Lab”. En un principio el valor de la taza de convergencia utilizado fue de basándonos en el ejemplo libro “Digital Signal Processing and Applications with the C6713 and C6416-DSK0471690074” de la página 293. Este radio de convergencia no daba los resultados esperados y el filtro tardaba bastante en llegar a una señal de salida satisfactoria, por este motivo aumentamos ligeramente el valor de la taza de convergencia a . Este nuevo valor dio los resultados esperados ya que el filtro tardo menos en adaptarse y botar la señal sin ruido. La ventaja más grande que hemos notado en este tipo de filtros es que no elimina una banda de frecuencias determinada, sino que solo elimina el ruido o la señal que deseemos eliminar, lo cual es muy conveniente ya que con esto evitamos el riesgo de perder información de la señal original.

REFERENCES [1] Algoritmo LMS Least Mean Square. Puede encontrarlo en: http://physionet.cps.unizar.es/~eduardo/docencia/tds/librohtml/lms1.htm [2] Matias Zuñartu. Introduccion al Code Composer Studio y al DSK TMS320C6713. Universidad Tecnica Federico Santa Maria. Valparaiso. 2013. [3] Ing. Ferrel Serruto. Apuntes de clase 7. Universidad Nacional de San Agustin. 2017. [4] Rulph Chassaing. Digital Signal Processing and Applications with the C6713 and C6416-DSK-0471690074. WILEY.