135
, TECNOLOGICO DE MONTERREY® SISTEMA PRÁCTICO DE CANCELACIÓN ACTIVA DE RUIDO MONOCANAL AUTORES: GUSTAVO AGUAYO RICARDO ENRÍQUEZ ALEJANDRO CHAO ÁNGEL MÉNDEZ ASESOR: DR. ROGELIO BUSTAMANTE PROYECTOS DE INGENIERÍA 11 PROFESOR: DR. JORGE EDUARDO BRIEVA RICO TECNOLÓGICO DE MONTERREY~ BIBLIOTECA .,

Sistema práctico de cancelación activa de ruidos monocanal

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

,

TECNOLOGICO DE MONTERREY®

SISTEMA PRÁCTICO DE CANCELACIÓN

ACTIVA DE RUIDO MONOCANAL

AUTORES:

GUSTAVO AGUAYO

RICARDO ENRÍQUEZ

ALEJANDRO CHAO

ÁNGEL MÉNDEZ

ASESOR:

DR. ROGELIO BUSTAMANTE

PROYECTOS DE INGENIERÍA 11

PROFESOR: DR. JORGE EDUARDO BRIEVA RICO

~ TECNOLÓGICO • DE MONTERREY~

BIBLIOTECA .,

(f~:( TECNOLÓGICO ,.J DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

INDICE

1.0 Título del Proyecto .................................................................................. 7

2.0 Introducción ............................................................................................ 7

3.0 Problemática ........................................................................................... 9

4.0 Objetivos ................................................................................................. 1 O

5.0 Estado del arte .................................. ...................................................... 11

5.1 Generalidades del sonido y del control activo de ruido ............... 12

5.2 Desarrollo de la tecnología ........................................................... 15

5.3 Más de los sistemas ANC ............................................................. 16

6.0 Metodología ............................................................................................ 17

7.0 Infraestructura ........................................................................................ 18

8.0 Alcances del proyecto ............................................................................ 19

9.0 Aplicaciones de la cancelación activa de ruido ...................................... 20

1 O.O Sistemas de cancelación activa de ruido ............................................... 22

10.1 Sistemas a priori (tecnica feedforward) ....................................... 22

10.1.1 Sistemas feedforward de banda ancha ............................. 22

10.1.2 Sistemas feedforward de banda angosta .......................... 22

10.2 Sistemas a posteriori (técnica feedback) ..................................... 24

10.3 Sistemas adaptivos ..................................................................... 24

11.0 Aplicaciones de los sistemas adaptivos ................................................. 25

11.1 Filtrado digital .............................................................................. 25

11.1.1 Filtros FIR ......................................................................... 26

11.1.2 Filtros IIR ........................................................................... 27

12.0 Estructuras, algoritmos y aplicaciones de los sistemas adaptivos ......... 29

12.1 Filtros adaptivos .......................................................................... 29

12.2 Estructuras de los filtros adaptivos .............................................. 31

12.2.1 Estructura transversal ....................................................... 31

12.2.2 Estructura transversal simétrica ....................... ................. 32

12.3 Algoritmos adaptivos ................................................................... 33

12.3.1 Filtros de Wiener ............................................................... 34

12.3.2 Error Cuadrático Medio ..................................................... 34

12.3.3 Método del descenso más corto MSD .............................. 37

12.3.4 Algoritmo LMS ................................................................. .40

12.3.5 Algoritmo LMS normalizado ............................................. .42

\ff./ TECNOLÓGICO /_te DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

12.3.6 Algoritmo LMS con adición de ruido ................................. .43

12.3.7 Algoritmo FXLMS ............................................................. .44

12.3.8 Algoritmo FXLMS normalizado ........................................ .46

12.3.9 Algoritmo NFXLMS con adición de ruido ......................... .46

13.0 Sistema a utilizar para la cancelación de ruido ..................................... .48

13.1 Trayectoria primaria .................................................................... .48

13.2 Sistema Feedforward simple ........................................................ 48

13.2.1 Primer modelo ................................................................... .48

13.2.2 Segundo modelo - Sistema feedforward .......................... .49

13.3 Actualización de coeficientes ....................................................... 50

13.4 Arreglo de salida .......................................................................... 52

13.5 Trayectoria secundaria ................................................................ 53

13.6 Segundo modelo - Inclusión de la trayectoria secundaria ........... 54

13.6.1 Sistema feedforward ......................................................... 54

13.6.2 Segundo modelo del sistema feedforward ......................... 55

13. 7 Identificación de la trayectoria secundaria ................................... 56

13.7.1 Identificación fuera de línea .............................................. 56

13.7.2 Identificación en línea ........................................................ 57

13.8 Algoritmo FXLMS - Sistema feedforward .................................... 57

13.9 Algoritmo FXLMS - Sistema feedback ......................................... 58

13.1 O Sistema feedback FXLMS-NA con identificación de la

trayectoria secundaria en línea ..................................................... 58

13.11 Algoritmo FXLMS con adición de ruido e identificación

híbrida .......................................................................................... 60

14.0 Resultados ............................................................................................. 65

14.1 Modificación de la estructura del código ...................................... 65

14.2 Prueba de mejores condiciones de distancia y ángulo ................. 67

14.3 Pruebas de atenuación ................................................................. 67

14.4 Pruebas de cancelación realizadas con AUDACITv® .................. 74

14.4.1 Software utilizado para el análisis ..................................... 7 4

14.4.2 Pruebas de cancelación realizadas con AUDACITv® ....... 75

14.5 Identificación híbrida con nivel de ruido blanco variable ............... 81

14.5.1 Ruido variable .................................................................... 81

TECNOLÓGICO ~ DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

14.5.2 Pruebas de cancelación con nivel de ruido variable

analizadas utilizando el software AUDACITfE> ................... 82

14.6 Versión final del código ................................................................ 86

15.0 Artículos Propuestos .............................................................................. 87

16.0 Conclusiones ........................................................................................... 88

17.0 Referencias Bibliográficas ....................................................................... 90

18.0 Referencias Electrónicas ........................................................................ 91

Anexo A ............................................................................................................. 92

Anexo B ............................................................................................................. 95

Anexo C ............................................................................................................. 107

Anexo D ............................................................................................................. 112

Anexo E ............................................................................................................. 114

Anexo F ............................................................................................................. 124

Anexo G ............................................................................................................. 132

Anexo H ............................................................................................................. 134

.·;'j1¡f~r TECNOLÓGICO .',.",N DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

1.0.- TÍTULO DEL PROYECTO

SISTEMA PRÁCTICO DE CANCELACIÓN ACTIVA DE RUIDO MONOCANAL

2.0.- INTRODUCCIÓN

La cancelación activa de ruido (ANC por sus siglas en ingles) involucra un sistema

electroacústico o electromecánico que cancela el ruido usando básicamente el

fenómeno de superposición y de interferencia destructiva de las ondas. Busca

generar una señal de "Antirruido" que tenga la misma amplitud y frecuencia del ruido

pero en fase opuesta, para que a la hora de sumar estas señales, la señal resultante

sea o tienda a cero.

+

Figura 2.1 Ejemplod e cancelación de ruid ideal.

El problema fundamental que se debe de considerar en los sistemas ANC acústicos

es el requerimiento de un control muy preciso, alta estabilidad, y por supuesto

confiabilidad. Para poder lograr una buena atenuación, la amplitud y fase de la señal

de antirruido deben de ser muy exactas, es por esto que se prefieren sistemas que

empleen procesamiento digital de señales, ya que este puede ofrecer la suficiente

velocidad y precisión para llevar a cabo múltiples operaciones en tiempo real.

Los sistemas de cancelación de ruido tienen que tomar en cuenta las propiedades

del campo acústico, las cuales son no estacionarias, es decir, la amplitud, fase y

frecuencia del ruido son variables, y sensibles a cambios tan ligeros como un par de

grados en la temperatura. Es por esto que los sistemas de cancelación activa de

ruido deben ser adaptables. Esta es otra de las razones por las que el

procesamiento digital de señales presenta una ventaja, ya que se pueden formar

filtros digitales que se puedan adaptar a los cambios en el medio, este tipo de filtros

se conoce como filtros adaptivos.

7

CANCELACIÓN ACTIVA DE RUIDO

Un filtro adaptivo es un filtro digital que realiza un procesamiento digital de señales y

puede adaptar su desempeño tomando en cuenta las señales de entrada y salida.

Este modifica sus coeficientes, los cuales son actualizados por un algoritmo

adaptivo para optimizarla respuesta del filtro según un criterio deseado de

desempeño.

En general los filtros adaptivos consisten en dos partes, un filtro, cuya estructura es

diseñada para lograr la función deseada sobre la señal de entrada, y un algoritmo

adaptivo, para ajustar los coeficientes del filtro de forma de lograr el mejor

desempeño posible.

8

TECNOLÓGICO DE MONTERREY,

3.0.- PROBLEMÁTICA

CANCELACIÓN ACTIVA DE RUIDO

El incremento en la población, en equipos comerciales e industriales como aires

acondicionados, transformadores y ventiladores, el cada vez mayor número de

automóviles y el uso de aparatos electrodomésticos esta haciendo del ruido un

problema cada vez más grave y cada vez mas molesto para todas las personas.

Dentro de los diferentes ruidos, hay un tipo conocido como ruido de baja frecuencia,

que es irritante y si se llega a estar expuesto por periodos largos, se produce fatiga

y pérdida de concentración, esto provoca una disminución en la productividad en las

personas. Por otra parte, este tipo de ruidos pueden producir vibraciones que

provocan micro fracturas y fatiga en muchos sistemas.

Hay métodos para tratar de controlar este ruido, la forma tradicional es hacerlo

mediante técnicas pasivas, generalmente barreras y silenciadores que atenúan el

ruido. Los silenciadores pueden utilizar técnicas reactivas combinando tubos y

deflectores para eliminar los ruidos indeseables, o resistivos haciendo pasar al ruido

por un conducto lleno de un material que es capaz de absorber el sonido. Una de

las desventajas de estos sistemas es que su efectividad es baja con ruidos de baja

frecuencia, por lo que no son la solución óptima para eliminar este tipo de ruido.

La cancelación activa de ruido utiliza fuentes adicionales para cancelar el ruido

original, conocido en estos sistemas como ruido primario. Estos sistemas han

generado un gran interés ya que resultan ser muy efectivos a bajas frecuencias, que

es el rango de frecuencias en donde los sistemas pasivos fallan.

9

\~r~<' TECNOLÓGICO , . . ,· DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

4.0.- OBJETIVOS

• Entender las características teóricas de los sistemas de cancelación de ruido

feedback y feedforward.

• Comprender la operación de un sistema de ANC.

• Lograr un mejor desempeño de un sistema de cancelación activa de ruido a

priori mediante la modificación de parámetros de operación.

• Implementación de un sistema que sea capaz de cancelar el ruido acústico

utilizando el DSPTMS320C30 de Texas lnstruments y de una configuración

de control retroalimentado que meneje frecuencias en el rango comprendido

por las frecuencias límite de 150 y 50GHz.

10

TECNOLÓGICO DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

5.0.- ESTADO DEL ARTE

En el campo del procesamiento digital de señales existe una clase de sistemas

adaptivos en la cual los coeficientes de un filtro digital se ajustan para minimizar una

señal de error, la cual se define como la señal deseada menos la señal de salida del

sistema. Estos principios fueron empleados ya en un sistema de cancelación de

ruido en duetos basados en la teoría de filtros adaptivos que fue desarrollada por

Surges en 1981.

Más tarde en esa misma década, la investigación del control activo de ruido (ANC)

se vio dramáticamente afectada por el desarrollo de los poderosos procesadores

digitales de señales y el de algoritmos adaptivos para el procesamiento de señales.

El avance de la tecnología digital permitió la mejora de los DSP's especializados

para el procesamiento numérico en tiempo real de señales digitales. Estos

dispositivos han permitido el desarrollo e implementación a bajo costo de poderosos

algoritmos adaptivos para el ANC, y ha fomentado el amplio desarrollo y la

aplicación de estos sistemas basados en el procesamiento adaptivo de señales

digitales.

Muchos canceladores activos de ruido tienen una dependencia muy estrecha con el

procesamiento digital de señales pero sin considerar adecuadamente los elementos

acústicos. Si el diseño acústico del sistema no se optimiza, el controlador digital no

será capaz de atenuar adecuadamente el ruido indeseable. Por lo tanto también es

necesario entender la acústica de la instalación y diseñar el sistema para lograr que

el controlador realice bien su trabajo.

Debido a las características variantes en el medio en donde ruido acústico se

propaga, como el medio ambiente, y tomando en cuenta que el ruido no es

estacionario, la cancelación activa de ruido debe hacerse de forma adaptiva para

poder copiar estas variaciones 1. De ahí se deriva el uso de filtros adaptivos que nos

1 [1JM.Nakano-Miyatake y H. Perez Meana: Fas! orthonized FIR adaptive Filler structure using a recurren! Hopfield-Like

Network, Lectures in Computer Science1606: Foundations and Tools for Neutral Modeling, pp478-487, Springer Verlag, Berlin,

1999

11

i~~' TECNOLÓGICO , .. / DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

permitan estimar el ruido no deseado. Los filtros más utilizados son los filtros

digitales transversales que usan algoritmos adaptivos de gradiente.

5.1.- GENERALIDADES DEL SONIDO Y DEL CONTROL ACTIVO DE RUIDO

El sonido es usualmente generado por vibraciones de un objeto o de una superficie,

esto puede ser desde el cono de un altavoz, algún instrumento musical o hasta las

cuerdas bocales del ser humano. Las superficies vibratorias generan ondas que se

propagan a través del medio como sonido.

La frecuencia hace que el tono y la velocidad de un sonido se alteren. Por ejemplo,

una guitarra toca a frecuencias más bajas que un violín.

En muchos aspectos el sonido y las vibraciones son muy similares, de hecho será

útil pensar en el sonido como vibraciones viajando a través del aire. Muchos de los

conceptos se pueden aplicar tanto para el sonido como para las vibraciones, pero

definitivamente existen diferencias.

El ruido es simplemente una señal no requerida. El sonido no es ruido a menos que

alguien lo escuche y lo encuentre desagradable. Por lo tanto el ruido serán

vibraciones que se encuentren en el rango frecuencial de la capacidad auditiva del

ser humano.

Mientras la competencia en el mercado es enorme, ciertos productos así como los

avances tecnológicos, han llegado a un punto en que los materiales de construcción

de edificios y medios de transporte se vuelven más ligeros y por lo tanto más

sensibles a filtraciones de sonido, de tal manera que los efectos del ruido acústico

se vuelven más evidentes y por lo tanto más desagradables.

Actualmente, en el mercado se cuentan con técnicas pasivas y reactivas para la

anulación o reducción del ruido acústico. Hablando específicamente de las técnicas

pasivas, se cuenta con filtros físicos como los aislamientos, las barreras y los

silenciadores de tal manera que se atenúa aproximadamente la mitad del sonido

desagradable, estos sistemas trabajan de una manera muy eficiente para

12

. TECNOLÓGICO DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

frecuencias altas y medias, pero no así para las frecuencias bajas. Los silenciadores

reactivos son aquellos que usan otros métodos, como tubos por ejemplo para

eliminar este sonido.

Debido a las ventajas de los sistemas pasivos y las ventajas de los sistemas

reactivos, actualmente existe una combinación entre ambos sistemas, eliminando

así un rango muy amplio de frecuencias. Recordemos que para que estos sistemas

sean eficientes, la longitud de onda acústica debe ser menor a las dimensiones del

silenciador ya sea reactivo o pasivo.

El ruido de baja frecuencia suele ser muy molesto al oído, este tipo de ruido se

encuentra en diversos lugares además de provenir de distintas fuentes en el medio

en el que nos movemos. Se trata de un ruido monótono y repetitivo, imposible de

ignorar. Estos ruidos son mucho más comunes que los sonidos desagradables de

alta frecuencia.

El Control Activo de Ruido (CAR)2, también llamado cancelación activa de ruido o

antirruido, es uno de los temas con más investigación para este campo en éstos

días. Las aplicaciones de estas investigaciones funcionan para circunstancias

específicas y hasta la fecha no se cuentan con aplicaciones de sitios antirruido, es

decir, no se puede aplicar a una casa entera.

La ANC es una modificación en el campo auditivo, particularmente es la cancelación

de este campo por medio de medios electroacústicos. En su forma simple la ANC

utiliza un altavoz para producir un campo que es exactamente opuesto en imagen al

sonido desagradable (llamado ruido primario). El altavoz, por lo tanto y en su

manera ideal, cancela la molestia y el resultado neto es que no existe sonido. El

control activo es de cualquier manera más complicado que sólo esto.

En la figura 5.1 se ilustra el principio básico de la ANC; en ella se muestra la señal

de onda de Ruido (Ruido primario o señal no deseada) y el antirruido (Señal de

control). Si suponemos que ambas señales son idénticas pero en contratase, el

2 En inglés Active Noise Control - ANC

13

';~,~/ TECNOLÓGICO ·• .•' DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

resultado será una zona totalmente de silencio. La ANC es un atenuador efectivo

para frecuencias bajas de ruido. Para este tipo de frecuencias hemos mencionamos

anteriormente que los sistemas tradicionales pasivos son ineficientes, caros o

demasiado grandes.

Onda de Ruido Antiruido

Figura 5.1 Principio básico de cancelación.

El nombre "Control Activo" diferencia este método de los pasivos para controlar los

sonidos y vibraciones.

En el control, los 4 elementos principales o sistemas de control activo son:

• La planta.- es el sistema físico a ser controlado; un ejemplo típico de esto

son algunos audífonos y el aire dentro de ellos, o el aire viajando a través de

los duetos de un dueto de aire acondicionado.

• Los sensores.- son los micrófonos, aceleradores u otros dispositivos que

miden la alteración de algún parámetro y monitorean el comportamiento del

sistema de control.

• Los actuadores.- son dispositivos que físicamente realizan el trabajo de

alterar la respuesta de la planta; usualmente son dispositivos

electromecánicos como pueden ser los altavoces o algún generador de

vibraciones.

• El controlador.- es un procesador de señales (usualmente y en nuestro caso

digital) que dirige a los actuadores para que realicen cada uno sus tareas

correspondientes.

14

TECNOLÓGICO DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Los controladores análogos también podrán ser usados, aunque de alguna manera

son menos flexibles y más difíciles en cuanto su utilización. Posteriormente se

hablará de la trayectoria secundaria y con los sistemas análogos es más difícil

obtener resultados de manera precisa.

5.2 DESARROLLO DE LA TECNOLOGÍA

La tecnología e idea de la ANC no es algo nuevo. Fue realizada por primera vez en

el año 1936 por Lueg3, él utilizó un micrófono y un altavoz controlado

electrónicamente para generar una señal canceladora. La patente de Lueg era el

principio de los sistemas ANC acústicos, en su tiempo no tuvo una aplicación real.

Posteriormente en los años 50's se realizó un mayor desarrollo. No fue hasta la era

de las computadoras digitales modernas, que ayudaron a desarrollar y llevar a cabo

más aplicaciones y estudios sobre el ANC. El estudio del Control Activo se volvió de

gran interés en los años 70's y BO's. En años recientes investigadores y distintas

compañías internacionales han publicado cientos de artículos. Algunos son de

compañías dedicadas especialmente a los diferentes productos de control activo,

además de que existen muchas universidades y gobiernos que estudian las

aplicaciones y las posibles mejoras a los sistemas actuales.

Algunas de las empresas que se dedican especialmente a los productos de ANC

son, por citar algunas: ABS GmbH Jena, ANR Headsets, Active Vibration Control

lnstrumentation, BBN Physical Systems & Technologies, Causal Systems Pty Ud.,

Headsets, lnc. y Siemens, empresa la cual cuenta con un cancelador activo de ruido

para automóviles.

3 Lueg, P .. "Process of silencing sound oscillation," U.S. Patent No. 2 043 416, 1936. Generalmente considerado el primer trabajo publicado acerca del tema, aunque la patente de aplicación Alemán de Leug está prefechado por unas semanas.

15

\r,f~?' TECNOLÓGICO : .. , / DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

5.3 INFORMAICÓN ADICIONAL DE LOS SISTEMAS ANC

En los sistemas ANC la señal de control debe de ser muy precisa en cuanto a fase y

amplitud, permitiendo que el sistema sea altamente confiable y que presente gran

estabilidad. Para reducir con un alto grado de eficacia la fuente primaria de ruido es

necesario que la amplitud y la fase de la fuente de la señal de control se igualen a la

de la fuente primaria. Es aquí donde acudimos a un sistema digital, en este caso un

procesador digital de señales o DSP con la capacidad suficiente para ejecutar miles

de operaciones matemáticas simultáneas en un tiempo mínimo.

El principio del ANC es llamado interferencia destructiva. Un sonido que está

moviendo una serie de compresiones (alta presión) y bajas presiones. Si la parte de

alta presión de la línea del sonido se alinea con una de baja presión de otra onda,

las dos ondas se interfieren destructivamente y por lo tanto ya no existen

fluctuaciones. Así se elimina cualquier sonido haciendo notar que la dificultad

consiste en que ambas ondas coincidan en tiempo y espacio.

Por otra parte se puede decir que el sistema de control cambia el modo de ver la

alteración, por ejemplo se cambia la impedancia de la entrada.

En la mayoría de las aplicaciones, las propiedades del campo acústico o mecánico

del ruido no son estacionarias por lo que su amplitud, fase y frecuencia están en

constante alteración. Considerando esto, los sistemas de Cancelación Activa de

Ruido deben de ser adaptables para ajustar y optimizar la señal de control

minimizando la señal de ruido.

16

:w~/ TECNOLÓGICO -:,;,,,,,-- DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

6.0.- METODOLOGÍA

• Comprensión general del sistema, mediante lectura de artículos y tesis de

proyectos anteriores.

• Entrenamiento, impartido por el asesor, para comprender de manera integral

el sistema actual y su funcionamiento para poder agregarle las mejoras en el

futuro.

• Capacitación para utilizar el DSP (Digital Signal Processor) TMS320C30 de

Texas lnstruments, con el cual se realizará la implementación física del

sistema.

• Experimentación practica, para verificar el estado actual de funcionamiento

del sistema y familiarización con este.

• Retroalimentación sobre la experimentación del sistema para verificar su

correcto funcionamiento, encontrar y reducir errores, y plantear propuestas y

desarrollarlas para llegar a un sistema más estable.

17

.,~,~~- TECNOLÓGICO .... ,, DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

7.0.- INFRAESTRUCTURA

• DSP Texas lnstruments® TMS320C30.

• Computadora dedicada específicamente al proyecto.

• 2 Altavoces.

• Micrófono que cuente con capacidad para variar su sensibilidad.

• Generador de Funciones.

• Osciloscopio TDS3032 de Tektronix®.

• Diferentes tipos de Cables.

• Espacio dedicado en el laboratorio de diseño de MEMS en Aulas 111

• Software AUDACITY®.

18

:~~~/ TECNOLÓGICO ,-,,.,,/· DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

8.0.- ALCANCES DEL PROYECTO

Desarrollar un sistema mejorado de cancelación activa de ruido mediante la

implementación de la técnica de ANC feedback y cambios en el código utilizado en

el Procesador Digital de Señales. Estos cambios consisten en alterar la secuencia

de ejecución, eliminar instrucciones redundantes, proponer nuevas secuencias de

comandos para reducir el numero de instrucciones y así mismo aprovechar el

tiempo disponible en el DSP para realizar otras acciones como adquisición de

coeficientes, procesamiento de nuevas operaciones. También se plantea mejorar el

manejo de los registros para optimizar su uso y obtener una mayor libertad en la

programación y el desarrollo.

Las mejoras al sistema se basan en tres puntos primordiales:

• Estabilidad: Nuestra meta en este rubro consiste en evitar que un cambio

drástico en la señal de entrada de nuestro sistema propuesto, resulte en una

actualización incorrecta de los coeficientes, ocasionando que a la salida del

sistema se genere un antirruido que no corresponda al ruido que se quiere

eliminar, y por lo tanto a la salida del sistemas se tenga mucho más ruido que

el que entra al sistema.

• Convergencia: Para este punto, nuestra meta es lograr que nuestro sistema

logre atenuar el ruido con una mayor rapidez que el sistema actual.

• Atenuación: Se pretende conseguir una atenuación de ruido mayor a la

actual, es decir, atenuar el ruido a la salida del sistema de manera que la

disminución de ruido sea de entre 6 y 1 O dB's.

El sistema mejorado será resultado de simulaciones en software, implementación

mediante el método de prueba y error en el código en lenguaje ensamblador,

además de pruebas con el equipo físico con el que se cuenta actualmente. El

equipo que se utilizará será el DSP TMS320C30 de Texas lnstruments para el cuál

tendremos capacitación en su uso, funcionamiento y programación. Además se nos

dará instrucción sobre como utilizar Matlab y LabView para el trabajo paralelo con el

DSP.

19

)ir,,-: . TECNOLÓGICO ·. , .,.. DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

9.0.-APLICACIONES DE LA CANCELACIÓN ACTIVA DE RUIDO

La cancelación activa de ruido tiene cabida en todas las situaciones en las cuales

podamos encontrar la presencia de ruido. En especial se han identificado las

siguientes áreas de aplicación que se encuentran divididas en los siguientes

sectores:

• Automotriz: Principalmente en mofles y tubos de escape, silenciadores de

automóviles y en la cabina para pasajeros.

• Doméstico: En aparatos electrodomésticos como refrigeradores, lavadoras,

aspiradoras, licuadoras, etc.

• Industrial: En maquinas, ventiladores, aires acondicionados, bombas, etc.

• Sistemas de transporte: En las categorías de trenes, aviones o barcos.

Todas estas fuentes, pueden ser clasificadas desde el punto de vista geométrico,

por lo que existen cuatro categorías principales:

• Ruido en conductos: Los conductos de ventilación, calefacción, aire

acondicionado o extracción. Estos conductos son el medio de transmisión por

donde se propaga el ruido acústico. Aquí, los sistemas activos tienen varias

ventajas sobre los aisladores pasivos tradicionales, ya que atenúan mejor las

bajas frecuencias, proporcionan ahorro de energía debido a la reducción en la

resistencia al flujo. Una ventaja en este ámbito en que pueden ser instalados

en los conductos ya existentes.

• Ruido interior: En habitaciones cerradas, cabinas, por ejemplo estudios de

grabación, interiores de automóviles, camarotes de barcos o cabinas de avión.

20

-~ .. ";,;.·:,\ . ~f)it. TECNOLOGICO }.,:~!: DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

• Ruido en el espacio libre: El ruido provocado por una construcción. Estos

sistemas pueden ser utilizados para reducir el ruido en el lugar de trabajo y en

las comunidades cercanas.

• Protección auditiva personal: Son sistemas que trabajan en un área muy

pequeña. La situación más sencilla para un sistema ANC esta definida por un

espacio cuyas dimensiones son pequeñas si se comparan con la longitud de

onda del rango de frecuencias a cancelar. Este espacio, es el que hay entre un

audífono y la membrana del tímpano. Estos sistemas tienen aplicaciones

industriales y militares que facilitan la comunicación a distancia entre dos o

más individuos.

De acuerdo con los avances que hemos logrado en nuestro proyecto pensamos que

la aplicación más viable es la utilización de este sistema para la cancelación de

ruido en conductos de aire acondicionado. Esto debido a que el sistema con el que

estamos trabajando presenta una cancelación puntual, por lo que el desemepño de

un sistema como este no sería el más adecuado en una aplicación en la que se

requiera cancelar el ruido en espacios tridimensionales. En el caso de los conductos

de aire acondicionado el generador de antirruido se coloca junto al generador de

ruido, de esta manera tanto el ruido como el antirruido se propagan de la misma

forma por el conducto hasta llegar a la salida, en donde el ruido va a ser cancelado.

Figura 9.1 Aplicación dentro de un sistema industrial de aire acondicionado.

21

'~l,íi' TECNOLÓGICO , .'l DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

10.0.-SISTEMAS DE CANCELACIÓN ACTIVA DE RUIDO

Como ya se había mencionado, existen en general dos tipos de ruido en el

ambiente, el ruido de banda ancha el cual es provocado por turbulencias y es

aleatorio y el ruido de banda angosta, que es periódico o cuasiperiódico y generado

la mayoría de las veces por máquinas rotatorias.

Dependiendo del tipo de ruido que se desea procesar, los sistemas ANC utilizan

alguna de las dos siguientes técnicas de control:

• Sistemas a priori (tecnica feedforward)

• Sistemas a posteriori (técnica feedback)

10.1.- SISTEMAS A PRIORI (TECNICA FEEDFORWARD):

En esta técnica, el sistema de control recibe al menos una señal de entrada

(referencia) que va a ser procesada para generar una señal de control, la suma de

estas dos señales, es la señal de error que se envía al sistema también para

ayudar con la generación de la señal de control. Estos sistemas son capaces de

generar señales de control tanto para sistemas de banda ancha, como sistemas de

banda angosta.

10.1.1.-SISTEMAS FEEDFORWARD DE BANDA ANCHA

En estos sistemas se tiene una señal indeseable, llamada ruido primario que es

capturada por un sensor. El ruido, una vez captado por el sensor se va a convertir

en la señal de referencia. Esta señal es entregada al sistema adaptivo con la

finalidad de generar una señal de control en una etapa central utilizando un

actuador, en este caso un altavoz, con el fin de atenuar el ruido primario presente en

el sistema. Posteriormente en la última etapa del sistema se tiene un sensor de error

que verifica el nivel de ruido residual presente, retroalimentándolo al sistema

adaptivo con el propósito de que el sistema adaptivo reduzca el ruido aún más.

22

i~Y.K;,· TECNOLÓGICO :;,,".'f.~ DE MONTERREY,

Fuente de

ruido

CANCELACIÓN ACTIVA DE RUIDO

Ruido Primario

Sensor de ruido primario

Señal de referencia

Antirruido Señal de control Ruido residual

Activador Sensor de ruido residual

Sistema adaptivo Señal de

error

Figura 10.1 Sistema Feedforward de banda ancha.

Si el ancho de banda del sistema adaptivo y la distancia entre el sensor de

referencia y el actuador permite que se respete el principio de causalidad, la señal

de control generada por el sistema adaptivo podrá ser tanto de banda ancha como

de banda angosta.

Estos Sistemas presentan un problema, este es que la fuente secundaria o el

altavoz frecuentemente actúa sobre el sensor de referencia, lo que reduce el

desempeño del sistema y puede llegar a provocar oscilaciones que provocan que el

sistema se salga del área deseada de operación.

10.1.2.- SISTEMAS FEEDFORWARD DE BANDA ANGOSTA

Como sabemos, el ruido de banda angosta es provocado por máquinas rotatorias y

tiende a ser periódico. Gracias a esta característica, el sensor de referencia puede

ser reemplazado por un sensor no acústico tal como un tacómetro o un sensor

óptico para capturar de forma indirecta la señal a cancelar. La ventaja de estos

sistemas es que no son sensibles a la señal de control generada por el sistema.

Fuente " .. de Ruido Primario

ruido Sensor no acústico de

T ruido primario

Generador de señal de " - ..

referencia Señal de referencia

Antirruido -.

Señal de control Ruido residual -~ ~ ..........

Activador Sensor de r uido 1 --- ·--- residua

Sistema -~

adaptivo Señal de error

Figura 10.2 Sistema feedforward de banda angosta

23

',ri~:/ TECNOLÓGICO ,, .. J DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

10.2.- SISTEMAS A POSTERIOR/ (TÉCNICA FEEDBACK):

Estos sistemas se caracterizan por no poseer una señal de referencia a la entrada,

generan internamente su propia señal de referencia mediante el uso de un

estimador lineal. Esa señal es procesada por un sistema adaptivo para generar una

señal de control.

En estos sistemas la señal de error es procesada para generar una señal de control

que tenga un corrimiento de fase de 180° respecto al ruido primario presente. El

sistema va a tratar de predecir la señal de ruido presente en el sensor de error

puesto que no tiene información a priori de esa señal, es por esto que los sistemas a

posteriori solo podrán cancelar aquellas señales que sean periódicas.

Fuente . Antirruido . de Ruido Primario Señal de control Ruido residual

ruido -~

........... ,..,.,,..., Activador Sensor de r uido

~ residual

Sistema ~

adaptivo ~

Señal de r r ero

Figura 10.3 Sistema feedback

Sin embargo, estos sistemas no son sencillos de utilizar, ya que si existe algún error

en la respuesta de fase del sistema adaptivo, la señal de control generada por el

sistema, en lugar de cancelar el ruido primario lo incrementará aumentando la

amplitud de la señal de error y provocando que el sistema se desestabilice.

10.3.- SISTEMAS ADAPTIVOS

Un sistema adaptivo es un sistema que puede automáticamente ajustarse a un

ambiente o a una señal de entrada que cambia continuamente. Para poder construir

este tipo de sistemas es necesaria la implementación de los filtro adaptivos, que

varían sus coeficientes de acuerdo con un determinado algoritmo el cual busca

maximizar o minimizar determinado parámetro del sistema. Los sistemas adoptivos

buscan "aprender" las características de la señal y rastrear en ella pequeños

cambios.

24

TECNOLÓGICO DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

11.0.- APLICACIONES DE LOS SISTEMAS ADAPTIVOS

Los sistemas adaptivos pueden tener muchas y muy variadas aplicaciones, a

continuación se mencionan algunas aplicaciones básicas donde han demostrado

buena funcionalidad.

Dentro del campo de la identificación de sistemas han mostrado resultados, ya que

el sistema adaptivo evoluciona hasta ser igual a un sistema desconocido utilizando

un sumador, al restar uno del otro se busca que la señal sea cero, y esto se logra

solo hasta que el sistema adaptivo es idéntico al desconocido.

En el modelado inverso de sistemas, tienen muchas aplicaciones sobre todo en la

eliminación de ruido a la salida de los sistemas, se busca proporcionar el modelo

inverso de un sistema desconocido con la finalidad de que la interacción de ambos

sistemas genere una señal libre de distorsión.

Otra aplicación que ha arrojado buenos resultados es la cancelación de

interferencia, aquí se tiene una señal con ruido (modificada por el ambiente) y a la

entrada del sistema se tiene solamente la señal del ruido sin haber sido modificada,

lo que se busca es que esta señal, se aproxime a la señal de ruido modificada por el

ambiente y al restarlas tengamos a la salida solamente la señal, libre de ruido.

11.1.- FILTRADO DIGITAL

Los sistemas adaptivos mencionados anteriormente contienen al menos un filtro

digital y un algoritmo adaptivo. Naturalmente el uso de este tipo de filtros presenta

ciertas ventajas y desventajas que se enumeran a continuación.

Ventajas

• La respuesta en frecuencia puede ser ajustada automáticamente.

• No varían con cambios ambientales y no necesitan calibración periódica.

• Se pueden usar a muy bajas frecuencias.

• Los datos de operación de estos filtros se almacenan en una memoria.

25

Wf/ TECNOLÓGICO :, .rJ DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Desventajas

• El ancho de banda de estos filtros está limitado por la velocidad de

procesamiento del sistema.

• Poseen un ruido inherente provocado por la conversión A/D.

• Pueden llegar a comportarse de forma inestable.

Los filtros digitales, pueden clasificarse de acuerdo con su respuesta al impulso.

Existen filtros de Respuesta Finita al Impulso (FIR) y Filtros de Respuesta Infinita al

Impulso (IIR). La diferencia principal es que los filtros FIR son no recursivos y

tienden a converger de forma mas lenta, pero proporcionan estabilidad, mientas que

los filtros IIR son recursivos, convergen mas rápido pero tienen la gran desventaja

de que tienden a ser inestables.

11.1.1.- FILTROS FIR

Un filtro FIR se describe en forma matemática por la siguiente ecuación:

N-1

y(n) = ¿h;x(n - i) i=O (11.1)

Donde h; corresponde a N términos de la respuesta al impulso del filtro.

En el procesamiento digital de señales se utiliza la variable w para indicar los

coeficientes de un filtro adaptivo.

N-1

y(n) = x(n) * w(n) = ¿w;x(n - i) i=O (11.2)

y(n) = úJoX(n) + w1x(n -1) + ... + wN_1x(n - N + 1)

(11.3)

Si obtenemos la transformada Z de la función tenemos:

Y( ) - X( )( -1 -(N-1)) z - z Wo +W¡Z + ... +wN-lz (11.4)

Y(z) = X(z)W(z) (11.5)

26

CANCELACIÓN ACTIVA DE RUIDO

Donde W(z) esta dada por:

N-1 W(z)=cv0 +cv,z-1 + ... +cvN_,z-<N-i¡ = ¿cv;z-;

i=O

N-1 N-2 N-1 W(z) = cv0z + cv1z + ... + cv

N-1 z

(11.6)

(11.7)

Estos nos indica que la función de transferencia W(z) tiene polos solamente en el

origen. Como consecuencia, los filtros FIR son inherentemente estables. Además,

estos filtros pueden ser utilizados para garantizar linealidad de fase, con ello todas

las componentes senoidales de una señal de entrada serán retrasadas la misma

cantidad de tiempo. También es importante mencionar que estos filtros tienen un

error numérico que no es acumulable.

11.1.2.- FILTROS IIR

Matemáticamente se puede describir a un filtro IIR por la siguiente ecuación:

"' y(n) = ¿h;x(n - i)

i=O (11.8)

Donde h; representa la respuesta al impulso del filtro. La forma anterior pareciera ser

poco practica ya que requiere de un almacenamiento en memoria infinito, por esto,

se utiliza una forma recursiva para expresar la respuesta del filtro, misma que se

muestra en la siguiente ecuación.

N M

y(n) = ¿a;x(n - i)- ¿b;y(n - i) i=O i=I (11.9)

En la ecuación 10.9 a; y b; son los coeficientes del filtro. De la ecuación 11.9

podemos notar que dado que y(n) depende de las salidas anteriores, el filtro IIR es

un sistema retroalimentado.

27

'-i1ir,; TECNOLÓGICO '-. .. J DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

N

¿a;z-; H(z) = _i=_oM __

1 + ¿b;z-; i=O (11.10)

Se puede ver claramente que se trata de un sistema con polos y ceros, lo cual lo

hace que sea menos estable que un sistema FIR, pero su comportamiento dinámico

supera al sistema de estos.

Estos sistemas presentan distorsión de fase, en ellos, el error numérico es

acumulable, y pueden presentar inestabilidad durante su operación. Los sistemas

IIR necesitan menos coeficientes que un filtro FIR para tener el mismo desempeño,

esto permite una implementación más sencilla; sin embargo, si no se diseñan

adecuadamente, los filtros IIR pueden presentar un comportamiento no esperado

conduciendo a los sistemas a la desestabilización.

28

':~r;r· TECNOLÓGICO ', ~!,; DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

12.0.- ESTRUCTURAS, ALGORITMOS Y APLICACIONES DE LOS SISTEMAS

ADAPTIVOS

12.1.-FIL TROS ADAPTIVOS

Como ya se ha mencionado, los filtros adaptivos se usan para aplicaciones en las

que se trabaja con señales que provienen de un medio de estadística desconocida o

cuando las señales mismas no son fácilmente predecibles.

La principal característica de este tipo de filtros es que sus coeficientes son

dinámicos, es decir, que pueden variar con el tiempo.

La señal de referencia de un filtro adaptivo puede variar de acuerdo a las

posibilidades del sistema, si se trata de un sistema feedforward, la señal de

referencia se toma de fuera o si se trata de un sistema feedback donde la señal de

referencia se genera internamente. En ambos sistemas la señal de control generada

es producto de una interacción entre la señal de error y la señal de referencia.

Los filtros adaptivos pueden ser usados en varias aplicaciones que requieren

operaciones en tiempo real, por ejemplo, predicción adaptiva, ecualización de

canales, cancelación de eco y cancelación de ruido. La implementación de un filtro

adaptivo basada en procesadores digitales de señales (DSP) tiene muchas ventajas

sobre otros enfoques. No sólo por que los requerimientos de potencia, espacio y

manufactura, son muy reducidos, sino que además, el hecho de poderlos programar

provee flexibilidad para la actualización del sistema y mejoras del software.

29

·w~t TECNOLÓGICO , .r,¿.., DE MONTERREY,

"E "' "O e: .!!! en

CANCELACIÓN ACTIVA DE RUIDO

Algoritmos adaptivos !

1 FIR (no recursivo) IIR (recursivo)

/ \ / Error de Salida Error de ecuación

I \ I \ e: :Q

e: o:: "' E o IV :.::

o "O

.§ o ~ IV "' "O IV E "O : o e: (1) e .::: en o :::, (1)

o g 'i e: z "" o: ::!: g :.:; ¡¡: g w ....J (1)

ai o "E x e: z z "' w O> "O üi e: .!!!

g¡ o:: ....J o. o: ch o ....J o::

1/J

.,:; ·~

o "O :::, (1)

'E e: "O ·¡¡; w ~

e: u. -O o. ·¡¡ (1) o:: (1) .!!! "O z e: en (1)

::!: ,!; ....J IV

g¡ o:: ....J o. o: en o ....J o::

e: en o ::!: I ....J z

en ~ o::

RLS LMS RLS LMS RLS LMS

Figura 12.1 Tipos de algoritmos adaptivos.

A continuación se presenta un diagrama a bloques de un filtro adaptivo que podría

en determinado momento utilizar algoritmos LMS (Least Mean Squares) o RLS

(Recursive Least Squares).

x(n) Filtro variable

COn

Algoritmo adaptivo

e(n)

Figura 12.2 Diagrama general de un sistema adaptivo.

d(n)

Como podemos ver en el diagrama, se busca que la señal de entrada una vez

pasada por el filtro se vuelva igual a una señal deseada d(n), modificando el

algoritmo (los coeficientes del filtro) alimentándolo con la señal de error. Cuando el

error se hace cero, nuestra señal de salida del filtro es igual a la señal deseada y los

coeficientes del filtro se dejan de actualizar.

30

o "O

.§ IV E o z

.'jff/ TECNOLÓGICO :, ... ,"··' DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

12.2.- ESTRUCTURAS DE LOS FILTROS ADAPTIVOS

12.2.1.-ESTRUCTURA TRANSVERSAL

La estructura transversal, es la estructura que se utiliza más comúnmente con los

filtros adaptivos. En esta estructura, el filtro tiene una sola entrada u(n) y una sola

salida y(n).

La función de salida del filtro esta expresada por la ecuación 12.1:

N-1

y(n) = úl (n )u(n) = ¿ W; (n µ(n - i) i=O

Donde:

y(n) es la salida del filtro.

w(n) es el vector de coeficientes del filtro.

u(n) es el vector de entrada al filtro (u(n) = x(n)).

N es el orden del filtro.

í"""='il 11(n-N+2) 1------~---+ •••

11(11-I)

• • •

+----· •••

FIGURA 12.3 Estructura transversal de un filtro adaptivo.

(12.1)

y(n)

En este caso el vector de coeficientes w(n) es controlado directamente por el

algoritmo adaptivo que se utilice con el filtro, y es un vector que puede variar con el

tiempo.

31

\~r~/ TECNOLÓGICO ·,, .. ,· DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

12.2.2.- ESTRUCTURA TRANSVERSAL SIMÉTRICA (LATTICE)

La característica de respuesta de fase lineal de un filtro es algunas veces deseable,

ya que permiten al sistema mantener la integridad de la señal con un retardo de

grupo constante en el filtro. Un ejemplo de estos son las imágenes digitales y las

comunicaciones.

Un filtro FIR con simetría en el dominio del tiempo tal que,

(12.2)

Tiene una respuesta lineal de fase en el dominio de la frecuencia, por lo que el

número de coeficientes se reduce a la mitad en una estructura transversal. Así, el

vector de entrada se hace:

u(n)= [u(n)+ u(n - N + 1),u(n -1)+ u(n - N + 2), ... ,u(n - N 12 + !)+ u(n - N ! 2)]T (12.3)

Y por lo tanto la salida del filtro y(n) se vuelve:

N 12

y(n)= ¿cv;(n)[u(n- i)+ u(n- N + l + i)] (12.4) i=O

32

0;)1,fljj TECNOLÓGICO i.,.,/ DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

u(n-1)

u(n~ z. Tea-... ¿

• • e-+--...J.--u(n-N + 1)

>-------· .. Figura 12.4 Estructura transversal simétrica de un filtro adaptivo.

12.3.- ALGORITMOS ADAPTIVOS

-1 z

,----y(n)

El objetivo de los algoritmos adaptivos es obtener los coeficientes de los filtros

adaptables para lograr que la operación del sistema sea la adecuada, en otras

palabras, que converja de manera rápida a la minimización de la señal de error

siendo capaz de modificar los coeficientes si las condiciones de operación del

sistema varían con el tiempo. De esta manera podemos garantizar que el sistema va

a ser capaz de producir el antirruido más adecuado para cancelar la señal d(n).

Se tienen que considerar las siguientes características para poder diseñar un

algoritmo adaptivo adecuado, como velocidad de convergencia, estabilidad del

sistema, capacidad de seguimiento, robustez, necesidades físicas e informáticas,

estructura y propiedades numéricas. Los algoritmos más utilizados en filtros

adaptivos son los que están basados en el algoritmo LMS (Least Minimum Square),

el cual proviene de los filtros de Wiener y por lo tanto considera el Método del

Descenso más Corto (MSD). Los filtros de Wiener utilizan un método numérico que

nos sirve para obtener los coeficientes de la manera más eficiente minimizando el

error cuadrático medio. La operación del filtro de Wiener requiere conocer

estadística del sistema lo cual es prácticamente imposible en un sistema real por lo

33

w~: TECNOLÓGICO , , / DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

que se tiene que utilizar ergodicidad y de esta manera se pueden utilizar promedios

en el tiempo para obtener los coeficientes del filtro.

12.3.1.- FILTROS DE WIENER

Los filtros de Wiener son estocásticos, es decir, requieren conocimiento previo de la

estadística de la señal. Además, se asume que la señal es estacionaria y que sus

promedios de ensamble son iguales a sus promedios en el tiempo, es decir que la

señal es ergódica. Los filtros de Wiener utilizan una estructura FIR y así evitan que

los polos del sistema se encuentren fuera del círculo unitario, garantizando

estabilidad. Entonces considerando ergodicidad y estabilidad se utilizan los

promedios en el tiempo para correlacionar la señal de error con la señal de entrada,

y así formular una ecuación recursiva que ajuste por medio de iteraciones los

coeficientes del filtro.

12.3.2.- ERROR CUADRÁTICO MEDIO

Para obtener un desempeño adecuado se busca minimizar una función de prueba

que para el caso del Método del Descenso más Corto será el Error Cuadrático

Medio (MSE - Mean Square Error). Entonces, para lograr una estimación del

algoritmo LMS se utiliza un valor instantáneo del MSE. Por lo tanto el

comportamiento del filtro dependerá directamente de la densidad espectral de

potencia de la señal de entrada.

Para lograr minimizar el error en el criterio del MSE se busca una función costo y se

eligen los parámetros de optimización. En los filtros de Wiener la función costo es el

valor esperado del cuadrado de la señal de error.

Utilizando la forma básica de los filtros transversales tenemos:

y(n) = w-r~(n)

e(n)= d(n)- y(n)

(12.5)

(12.6 y 12.7)

34

:;~r~r TECNOLÓGICO · ,, "''º DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

Los coeficientes del filtro son w = (Wa, cv1 , •••• , cvN-i Y = cv;, con i = O, 1, ... ,N-1, y

~ = (x(n ), x(n -1 ), ... , x(n - (N -1 ))) son valores presentes y pasados de la señal de

referencia de un filtro de orden N. Entonces tenemos que:

Las matrices de autocorrelación R y correlación cruzada p se definen como:

R = E[x(n)xr(n)]

p = El;(n )d(n) J

Si sustituimos las matrices de correlación en la función costo tenemos que:

(12.8)

(12.9)

(12.10)

(12.11)

Para minimizar la señal de error utilizamos el gradiente de la función costo igualado

a cero para obtener sus valores mínimos.

-v'c;=2Rcv-2p=O (12.12)

Entonces el mínimo de e; es:

Ecuación Wiener-Hopf (12.13)

Sustituyendo esto en la función de costo tenemos que:

(12.14)

35

]1ir~'. TECNOLÓGICO ,,.,,.,., DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

Este resultado tiene algunas características importantes, primero es que existe un

mínimo único. Además, este desarrollo cumple con la propiedad de ortogonalidad.

Al utilizar el gradiente de ~ se utilizó la derivada parcial respecto a los co¡ coeficientes

del filtro, de donde se obtiene:

E[e0 (n )x(n - i)] = O (12.15)

Esto quiere decir que e0 (n) y x(n) no están correlacionados cuando se logra un

error mínimo, y tampoco lo están e0 (n) y y(n).

36

CANCELACIÓN ACTIVA DE RUIDO

Por otro lado cualquier ruido que no esté correlacionado con la entrada x(n) no será

procesado y por lo tanto no existirá cancelación para el mismo, por lo que ;: . no '='mm

tiene que ser cero.

-T -

e; = e; min + V R V

~=(;_;o) (12.16 y 12.17)

Transformando ~-··= Qr ~, siendo Q la matriz de vectores propios de la matriz R

tenemos:

N-1

e; = c;min + ¿ A; V;2 (12.18) i=O

En donde A¡ son los valores propios de la matriz Q.

12.3.3.- MÉTODO DEL DESCENSO MÁS CORTO MSD

El método del descenso más corto se encarga de minimizar la función costo

reemplazando las funciones estadísticas por alguna estimación de ellas. De la

ecuación 11.13 o de Wiener-Hopf podemos obtener los valores óptimos de w0 , sin

embargo el cálculo de este valor puede resultar muy complejo cuando el orden del

filtro es grande. El MSD se encarga de facilitar este proceso. Primero se deben

estimar los coeficientes del filtro comenzando con una asignación temporal como

;(O). Luego se tiene que encontrar la variación en que la función costo crece más

rápido, que es v7 e; y posteriormente se actualizan los coeficientes cuando decrece

más rápido, es decir, - v7 e;, y tenemos que la actualización de los coeficientes se da

por:

(12.19)

De esta manera el proceso se repite hasta que los cambios en los coeficientes del

filtro sean mínimos o no existan.

37

\if~.' TECNOLÓGICO .·,,, / DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Del procedimiento del cálculo del error cuadrático medio tenemos que:

-v'<; = 2Rw-2p = O (12.20)

Al sustituirlo en la ecuación de actualización de coeficientes:

(12.21)

Con una matriz identidad I de dimensión N x N,

(12.22)

Y haciendo el cambio de variable (; ~;,) resulta

;,(k + 1) = (I - 2µA)~(k) (12.23)

En donde A es la matriz de valores propios de R. Esta ecuación también se puede

escribir de la siguiente manera:

(12.24)

A partir de esta ecuación sabemos que para que cada valor converja a cero es

necesario que O < µ < _!_ < -1- . Esta ecuación no funciona con el algoritmo LMS ya

A¡ Ama.,

que éste requiere parámetros más robustos para determinar µ.

La curva de aprendizaje de un filtro es el camino que sigue la función costo a lo

largo del algoritmo, es decir cuando ~ es función de k o ~=~(k). Obviamente k

siempre tiende al infinito y la función costo siempre tiende a ~min, el cual es el error

mínimo obtenido a la salida del filtro. Cada valor propio A¡ determina un modo de

convergencia o trayectoria particular en la curva de aprendizaje. Es por esto que se

38

-;; .. '. :,· :w~? TECNOLÓGICO ·,,., .. ,.,. DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

tiene que determinar el máximo tiempo de convergencia dada la dispersión que

tienen los valores propios de una matriz de autocorrelación (R).

Suponiendo que la señal alcanza una atenuación de 8,69 dB el tiempo de

convergencia del sistema está dado por:

(1 - 2A;µ )" = exp( ~ ~ J (12.25)

En donde cada modo de convergencia está dado por (1 - 2).,¡µ), y si (1 - 2).,¡µ f << 1

el tiempo de convergencia es:

1 r:::::--' 4,\µ

(12.26)

Como podemos ver el tiempo que toma cada modo de convergencia es distinto

dependiendo de cada valor propio de la señal. Los valores propios de la matriz de

autocorrelación están relacionados con la densidad espectral de potencia de la

señal de referencia, por lo tanto los modos de convergencia variarán dependiendo

del contenido de las diversas bandas de frecuencia. En otras palabras a las bandas

con gran contenido les corresponderán valores propios de valor máximo y los

modos de convergencia serán rápidos, y las que estén pobremente excitadas

tendrán modos de convergencia lentos. Dado que la característica principal del ruido

blanco es que tiene una excitación constante en todas las bandas de frecuencia, se

es posible lograr una convergencia rápida ya que los valores propios de su matriz de

autocorrelación son muy similares o iguales.

Prácticamente ninguna señal se comporta como el ruido blanco por lo que es

importante determinar el valor de µ para que se optimice en mayor problema todo el

proceso. El valor óptimo de µ se encuentra entre 11 - 2µ)., 111 ¡11 1 y 11 - 2µ11.111ª' 1, valores

que marcan las velocidades extremas de todos los modos de convergencia. Por lo

tanto, el valor del coeficiente de corrección óptimo está dado por:

µopr = 1 1 /Lmin + /Lmax

(12.27)

39

CANCELACIÓN ACTIVA DE RUIDO

Cuando el coeficiente de corrección es óptimo la velocidad de convergencia está

limitada por el valor propio con el modo de convergencia más lento, siendo éste el

de Amin·

(12.28)

Entonces si sustituimos µ0 pt en la ecuación anterior tenemos que:

(~J-1 /3 = a - 1 = ,1"'ª'

a+I (A·] ~+l Amax

(12.29)

Siendo a la dispersión de los valores propios de la señal de referencia,

determinando la velocidad de convergencia ya que cuando éste valor es 1, p es

igual a cero y esto quiere decir que el MSD converge instantáneamente.

12.3.4.- ALGORITMO LMS

El algoritmo LMS o Least Mean Square es producto directo del método del

descenso más rápido, sin embargo el algoritmo LMS es capaz de procesar la

información sin conocer la estadística de la señal de referencia. La diferencia

principal entre ambos algoritmos es que mientras el MSD garantiza velocidad de

convergencia el algoritmo LMS garantiza estabilidad, lo que es efectivo cuando la

señal de entrada no es estacionaria.

A diferencia del error cuadrático medio el algoritmo LMS tiene la siguiente función

costo:

(12.30)

Y la actualización de coeficientes está dada por:

(12.31)

40

:;~~Y6!"' TECNOLÓGICO · ,, , .•• , DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

Partiendo de:

e(n)= d(n)- y(n)

Entonces resolvemos

e2 (n)= (d(n)- y(n))2 = d2 (n)-2d(n)y(n)+ y2 (n)

El resultado del gradiente es:

ae 2 (n) = le(n)ae(n) = le(n/(d(n)- y(n)) a~ a~ a~

ae 2 (n) = -2e(n) a(y(n )) 8úJ¡ 8úJ¡

Pero como y(n) = x(n )úJ(n)

(12.32)

(12.33)

(12.34)

(12.35)

(12.36)

(12.37)

Por lo tanto la ecuación que expresa la actualización de los coeficientes de los filtros

es:

~(n + 1) = ~(n )+ 2µe(n );(n) (12.38)

Lo que esta ecuación quiere decir es que la actualización de los coeficientes toma

en cuenta los valores presentes y pasados de la señal de referencia además del

error actual ponderados por el factor de corrección µ. La curva de aprendizaje de

'

<;(n) no será igual a la del algoritmo MSD. Mientras el algoritmo MSD garantiza la

- -trayectoria más corta en la cual úJ convergerá a úJo, el algoritmo LMS garantiza

estabilidad del proceso, lo cuál es muy útil en sistema cuya entrada es cambiante.

41

·w~? TECNOLÓGICO ·, . .,.- DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

12.3.5.- ALGORITMO LMS NORMALIZADO

El algoritmo LMS normalizado o NLMS introduce una técnica para hacer

independiente el coeficiente de corrección de la potencia de la señal de referencia

manteniendo el mismo comportamiento en estado estable. En este algoritmo el valor

de µ es variable siendo función del inverso de la potencia de la señal de entrada

x(n). Los coeficientes del filtro w(n) se ajustan aplicando el siguiente factor de

corrección:

I am(n + I) = m(n + I )- m(n) = llx 2 (n ~I x(n )e(n) = µ(n )x(n )e(n) (12.39)

Cuando la potencia de la señal de entrada es grande se reduce el coeficiente de

corrección variable, y cuando es pequeña el factor se hace grande, garantizando

estabilidad y velocidad de convergencia. Además, existe el valor de escalamiento lJ'

para evitar que al inicio del algoritmo el factor llx2 ~n ~I pueda generar un valor

extremadamente grande o pequeño afectando el desempeño del filtro, de esta

manera se optimiza el punto de partida de µ(n). A pesar de esto existen problemas

cuando los valores de la señal de entrada son chicos, es por esto que se le agrega

un valor constante a llx 2 (n ~I para evitar que el coeficiente de corrección sea

demasiado grande con entradas muy pequeñas o iguales a cero. Este algoritmo

garantiza una velocidad de convergencia mayor que el algoritmo LMS. La ecuación

del algoritmo NLMS queda de la siguiente manera:

m(n + 1) = m(n )+a+ 11: 2 (n ~I x(n )e(n) = m(n )+ µ''(n )x(n )e(n)

(12.40)

a>O

42

TECNOLÓGICO DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

12.3.6.- ALGORITMO LMS CON ADICIÓN DE RUIDO

Como ya se había mencionado antes, el ruido blanco al tener contenido espectral en

todo el ancho de banda, un valor promedio es cero y un valor efectivo es constante;

la dispersión de los valores propios de la señal es muy reducida o nula, lo que hace

que exista una convergencia rápida. Basado en esto, el algoritmo LMS con adición

de ruido o LMS-NA le adiciona una señal r(n) (ruido blanco) a la señal de referencia

para poder modificar las características temporales y espectrales de la señal

mejorando la velocidad de convergencia. La señal de ruido blanco no debe de estar

correlacionada con la señal de referencia. El algoritmo LMS-NA está definido como:

cv(n + 1) = cv(n) + µ(x(n) + r(n ))e(n) (12.41)

Al añadirle ruido blanco a la señal x(n) lo que se hace es reducirla dispersión de sus

valores propios, permitiendo una mejor velocidad de convergencia. Si sabemos que

en la ecuación de dispersión "A muestra los valores propios mínimo y máximo y cr2 es

el valor efectivo del ruido blanco tenemos que:

Asumimos que CY2 >> Arnin

Ama, + (J'2 a=--· --

Amin + (J' 2

Amax + (J' 2

Ama, a=---<--·

(J' 2

Amin

(12.42)

(12.43)

(12.44)

Al sumarle ruido blanco a la señal x(n) disminuye la dispersión de los valores

propios, sin embargo el valor efectivo de r(n) establece un valor mínimo en la señal

de error, siendo esto una desventaja de este algoritmo.

43

\~~/ TECNOLÓGICO ,<,/ DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

12.3. 7 .• ALGORITMO FXLMS

Hasta este punto todos los algoritmos que se pueden utilizar en sistemas muy

sencillos de cancelación activa de ruido tanto a priori como a posteriori, sin embargo

es fundamental hacer unos cambios para lograr la operación óptima de un ANC.

Una modificación de suma importancia es la introducción en el sistema de la

trayectoria secundaria y sus debidas consideraciones en el algoritmo LMS. La

trayectoria secundaria s(n) considera todas las etapas por las que pasa la señal de

control antes de encontrarse con la señal de la trayectoria primaria d(n), además de

las etapas que cruza la señal de error antes de entrar al algoritmo adaptivo. Todas

estas etapas incluyen el convertidor D/A, filtros pasabajas y el transductor de salida.

De no incluir la consideración de la trayectoria secundaria el algoritmo no sería

capas de converger debido al retraso obvio que el procesamiento introduce en las

señales de control y error.

El esquema más utilizado para compensar el efecto de s(n) en el sistema es la A

incorporación de un modelo estimado de la trayectoria secundaria denominado s(n)

en la trayectoria de la señal de referencia x(n) rumbo a la actualización de los

coeficientes del filtro adaptivo. De esta manera obtenemos el algoritmo FXLMS o

"Filtered X LMS".

Ruido d(n)

Señal interna de referencia Filtro y(n)

adaptivo Error A s(n) x(n) w(n) e(n)

A

s(n)

A Algoritmo y' n x'(n) LMS

A

Figura 12.9 Sistema feedback considerando la trayectoria secundaria s(n) y la trayectoria secundaria estimada s(n)

44

TECNOLÓGICO DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

El algoritmo de control comienza con la señal de error:

e(n)= d(n)- y'(n)= d(n)-s(n)* y(n)

El gradiente estimado es:

A

V c;(n) = -2x'(n )e(n)

En donde: A

x'(n) = s(n) * x(n)

(12.43)

(12.44)

(12.45)

La ecuación recursiva del algoritmo FXLMS para un sistema feedfotward de

cancelación activa de ruido es:

w(n + 1) = w(n) + 2µx'(n )e(n) (12.46)

Y para un sistema feedback la ecuación recursiva es:

A

w(n + 1) = w(n )+ 2µ x'(n )e(n) (12.47)

A

en donde x'(n) es la señal de referencia estimada y filtrada generada de manera

interna, y está dada por:

El valor de µ está dado por;

' A

x'(n)= s(n)*x(n)

2 0<µ<--­

Px(N+t:i.)

(12.48)

(12.49)

45

Wf/ TECNOLÓGICO , ., / DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

En donde Px es la potencia de la señal de referencia filtrada, N es el número de

coeficientes del filtro y !l es el orden del filtro equivalente introducido por la

trayectoria secundaria estimada.

12.3.8.- ALGORITMO FXLMS NORMALIZADO

Tal y como sucedió con el NLMS, el NFXLMS ofrece un mejor desempeño que el

FXLMS incrementando la velocidad de convergencia. La ecuación de este algoritmo

es la siguiente:

(12.50)

En donde a es una constante y \fes un valor entre O y 2.

12.3.9.- ALGORITMO NFXLMS CON ADICIÓN DE RUIDO

Se ha buscado un método para aumentar estabilidad, velocidad de convergencia y

reducción de dispersión de los valores propios en el algoritmo NFXLMS. El método

más adecuado es agregar ruido blanco al algoritmo FXLMS, resultando el FXLMS­

NA. El desarrollo de este algoritmo es como sigue. A

A la señal x'(n) se le agrega ruido blanco,

A A

x',," (n) = x'(n )+ r(n) (12.51)

Y se actualizan los coeficientes del filtro adaptivo con la consideración anterior,

resultando:

(12.52)

46

\~fíj/ TECNOLÓGICO ', , ,,.- DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

En la siguiente figura se presenta un sistema NFXLMS-NA con la estimación de la

trayectoria secundaria fuera de línea, es decir que se hace antes de poner en

operación el filtro adaptivo, sin embargo en el desarrollo de nuestro proyecto

también vamos a usar una estimación en línea. En este diagrama s(n) es

actualizado fuera de línea y permanece fijo a lo largo de la operación del sistema.

Señal interna de referencia

A

x(n)

A

x'(n)

Generador de ruido blanco r(n)

A

s(n)

Ruido d(n)

y(n) Filtro adaptivo n) w(n) s(n)

,

s(n)

Algoritmo y'(n LMS

Figura 12,10 Sistema feedback NFXLMS-NA con estimación de la trayectoria secundaria fuera de linea

Tecnológico de Monterrey, Campus Ciudad de México

Biblioteca 47

':W~:· TECNOLÓGICO ,,_ ,,e DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

13.0.- EVOLUCIÓN DEL SISTEMA A UTILIZAR PARA LA CANCELACIÓN DE

RUIDO

Para poder hablar del sistema plenamente, hay que establecer que para poder

llegar al sistema definitivo, hay que empezar desde el sistema más sencillo para

poder comprender mejor cada uno de los elementos que conforman el sistema

completo. Además se facilita la explicación de cada ecuación y de cómo éstas se

tienen que ir adecuando para adaptarse al sistema que formaremos al final de todos

estos modelos y aproximaciones.

13.1.- TRAYECTORIA PRIMARIA

La trayectoria primaria, es el camino principal que sigue el sonido, en este caso el

ruido, desde la fuente que lo genera hasta el destino. En los modelos que

utilizaremos para explicar el funcionamiento y las ecuaciones, a la trayectoria

primaria, se le designará la simbología p(n). Este será el camino por el cual el ruido

generado, viajará hasta el punto en donde se comparará con la salida del sistema

para generar la señal de error.

13.2.- SISTEMA FEEDFORWARD SIMPLE

13.2.1.-PRIMER MODELO

Para poder llegar a lo que será el sistema definitivo que usaremos para la

cancelación de ruido, tenemos que empezar utilizando una primera aproximación, la

cual presenta el modelo más simple de todos los que utilizaremos más adelante.

Este modelo, solo cuenta con un micrófono para la entrada, un altavoz para la

salida, otro micrófono para captar la diferencia entre el ruido que viaja por la

trayectoria primaria y la señal de antirruido que es enviada por el para que en ese

punto se cancelen.

48

.:.•.

\11i~t TECNOLÓGICO · ,, . ,, ,, DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

w(n)

d(n)

~ -+-~

~

Figura 13.1 Primer modelo de un sistema feedforward simple .

A la salida se desea que la señal y(n) sea igual que la señal deseada d(n) pero en

contratase. Esto ocasionaría que la señal de error, que es captada en el segundo

micrófono, fuera cero. Si no es cero, se tiene que buscar una y(n) que si no logra

igualar a la señal deseada pero en contratase, se aproxime lo más que se pueda

para minimizar el error. La ecuación del error queda de la siguiente forma:

O en su defecto

En donde:

e(n) = d(n)- y(n)

e(n):::: d(n)- y(n)

d(n) = A0x(n) + A1x(n -1) + A2x(n - 2) + ...

d(n) = x(n) ® p(n)

y(n) = x(n) ® w(n) = w0x(n) + w1x(n - 1) + w2x(n-2) + .. .

13.2.2.-SEGUNDO MODELO - SISTEMA FEEDFORWARD

(13.1)

(13.2)

En el segundo modelo de la nuestra primera aproximación se introduce el algoritmo

adoptivo que se explica con más detalle en secciones anteriores. En este modelo se

tiene que alimentar el algoritmo adaptivo con la señal de entrada que también entra

al filtro. El filtro adaptivo es retroalimentado con el algoritmo adaptivo, actualizando

los coeficientes para que así, la señal de salida y(n) se aproxime cada vez más a la

señal deseada d(n) y el error se reduzca hasta que llegue a cero. En la siguiente

figura se muestra el modelo:

49

)1ir,ÍÍ/ TECNOLÓGICO \,~/ DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

Trayectoria Primaria p(n)

Algoritmo Adaptivo (A.A.)

d(n)

~~ -+-

~

~

Figura 13.2 Segundo modelo feedforward simple.

En donde la ecuación del algoritmo adaptivo queda de la siguiente manera:

w(n + 1) = w(n) + µe(n)x(n) (13.3)

Esta ecuación presenta de manera muy clara que la actualización de coeficientes se

basa en la en la muestra anterior, el error actual, la entrada actual y el factor

ajustable µ. Este algoritmo es muy eficiente para que la actualización sea eficiente y

nuestro sistema converja de una manera más rápida.

El vector w(n), está formado de la siguiente manera:

w(n) = [w(n), w(n -1), w(n - 2), ... , w(n - N + !),] (13.4)

ó

w(n) = [cv(n), w(n -1), w(n - 2), ... , w(n -(N -1 )) ] (13.4a)

13.3.- ACTUALIZACIÓN DE COEFICIENTES

Para comprender como se lleva acabo esta actualización de coeficientes,

mostraremos un ejemplo en el cual utilizaremos sólo 3 coeficientes para propósitos

demostrativos.

Con N=3 coeficientes el vector co(n) queda de la siguiente manera:

w(n) = [cv(n), w(n - 1), w(n - 2)] (13.5)

50

TECNOLÓGICO DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

En el tiempo t=O, la señal de entrada x(n) es la siguiente:

;(n) = [x(n),x(n - l),x(n-2)1x(n) -:t-O;x(n -1) = x(n - 2) = O (13.6)

Con estos valores de x(n) y w(n) se obtiene la señal de salida y(n):

-y( n) = m( n) ® x( n) = x( n) · O + (O) · (O) + (O) · (O) = O (13.7)

Como es el tiempo "cero" los valores de x(n-1) y x(n-2), son cero, debido a que por

ser la primera muestra no hay tiempos anteriores. De la misma manera, w(n-1) y

w(n-2) también son cero. Es por eso que el vector de salida y(n)= O.

La señal de error queda de la siguiente manera:

e(n) = d(n)- y(n) = d(n)

Al ser y(n)=O, podemos observar que la señal de error e(n) es igual a la señal

deseada d(n).

(13.8)

Para el algoritmo LMS se puede establecer la siguiente ecuación:

cu0 (n + 1) = cu0 (n) + µe(n)x(n)

CU0 (n + 1) = O - µe(n)x(n) = O (13.9 y 13.10)

En donde:

µ-:t-0

e(n) -:t- O

x(n) = O

El siguiente valor para el w(n) del algoritmo adaptivo LMS se puede escribir de la

siguiente forma:

cu, (n + 1) = cu, (n) + µe(n)x(n -1)

cu, (n + 1) =O+ µe(n) · O (13.11)

cu, (n + 1) = O

51

~f~t TECNOLÓGICO ",.,./ DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Por último, el valor para el siguiente coeficiente de la sucesión queda como se

muestra a continuación:

m2 (n + 1) = m2 (n) + µe(n)x(n - 2)

m2 (n + 1) =O+ µe(n) · O

cv2 (n + 1) = O

Después de todo este proceso se obtiene el siguiente vector para w(n+1 ):

w(n + 1) = [Wo(n + 1),0,0]

(13.12)

(13.13)

Para finalizar este ejemplo, podemos generalizar la fórmula para la obtención de

coeficientes de la siguiente manera:

cvN-i (n + 1) = mN-i (n) + µe(n)x(n -(N -1)) (13.14)

De esta misma manera es como funciona la actualización de coeficientes en nuestro

sistema, con la diferencia que nuestro sistema maneja 600 coeficientes ya que es el

número máximo de coeficiente que se pueden utilizar sin saturar el sistema.

Pero, ¿Qué pasa cuando el arreglo de 600 coeficientes se llena? Para esto existe el

apuntamiento circular. Éste consiste en ocupar de manera cíclica todos los registros,

es decir que una vez que se escribió en la última localidad de memoria el siguiente

dato será escrito en la primera. Para mayor información revisar el anexo G.

13.4.- ARREGLO DE SALIDA

A la salida de nuestro sistema tenemos un arreglo de N valores, en donde N es el

número de coeficientes que se utilizan en el sistema. Para poder obtener este

arreglo es necesario revisar la figura 12.2 En esta figura podemos observar que

y(n) se puede obtener mediante la siguiente ecuación:

ji(n) = x(n) ® w(n) (13.15)

52

TECNOLÓGICO ., DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Desarrollando esta ecuación tenemos que:

y(n) = x(n)OJo(n + 1) + x(n - l)w1 (n + 1) + x(n - 2)cv2 (n + 1) + ... + x(n -(N - l))wN-i (n + 1)

(13.16)

Y para los valores anteriores queda de la siguiente manera:

y(n -1) = x(n - l)cv0 (n) + x(n - 2)cv1 (n) + ... + x(n - (N - l))wN-z (n) + x(n - (N -1)- l)wN-i (n)

(13.17)

Por lo que el arreglo de salida y(n) queda como se muestra en la siguiente ecuación:

y(n)

y(n -1)

y(n) = y(n - 2) (13.18)

y(n - (N -1))

13.5.- TRAYECTORIA SECUNDARIA

La trayectoria secundaria se define como todos aquellas etapas por las que pasa la

señal de control y(n) en su camino hacia el punto de encuentro con la señal de ruido

(que deseamos cancelar) d(n), así como las etapas que cruza la señal de error e(n)

en su entrada hacia el sistema adoptivo.

Para nuestro sistema podemos ejemplificar la trayectoria secundaria mediante el

siguiente diagrama:

Ruido Blanco DSP DAC

H1

ADC

Preamplificador

._s-,H2

Figura 13.4 Pasos que incluye la trayectoria secundaria.

53

\~t.<;' TECNOLÓGICO , ,,"?,, DE MONTERREY. CANCELACIÓN ACTIVA DE RUIDO

En este diagrama podemos ver que la trayectoria secundaria nos ocasiona un

problema importante que hay que tomar en cuenta. Este factor es el retardo, que

muestra en dos secciones de la trayectoria secundaria. El primer retardo que

llamaremos ti 1, tiene que ver con el tiempo que le toma al convertidor D/A realizar el

proceso de conversión de la señal de Digital a analógica. El segundo retardo

llamado ti2, está relacionado con el tiempo que le toma a la señal de ruido viajar a

través del aire.

13.6.-SEGUNDO MODELO - INCLUSIÓN DE LA TRAYECTORIA SECUNDARIA

13.6.1.- SISTEMA FEEDFORWARD

Debido a los retardos generados en la trayectoria secundaria, es necesario agregar

un nuevo bloque al modelo de nuestro sistema. Lo que da origen a la segunda

aproximación de nuestro modelo final. Este modelo se presenta a continuación:

x(n)

Trayectoria Primaria p(n)

Algoritmo Adaptivo (A.A.)

y(n)

Trayectoria Secundaria

s(n)

d(n)

Figura 13,5 Diagrama del sistema feed forward con identificación de la trayectoria secundaria,

En este primer modelo de nuestra segunda aproximación podemos ver claramente

que las ecuaciones se modifican ligeramente quedando de la siguiente manera:

y(n) = x(n) 0 w(n)

y'(n) = y(n)®s(n)

e'(n) = d(n)- y'(n)

(13.19, 13.20 y 13.21)

54

... . ,~

'.~~{ TECNOLÓGICO ,,,."/· DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Pero al hacer esta modificación nos lleva a otro problema que de nuevo está

involucrado con el factor tiempo. Para que el algoritmo adaptivo funcione

adecuadamente, la señal de entrada y la señal de error tienen que entrar al

algoritmo al mismo tiempo, de no ser así, se corre el riesgo que se introduzca una

señal de ruido que corresponda al tiempo x, y al mismo tiempo introducir una

entrada que corresponda al tiempo x-1, esto debido al desfase de tiempo que

provoca la trayectoria secundaria. De esta manera se obtiene el segundo modelo de

la segunda aproximación.

13.6.2.-SEGUNDO MODELO DEL SISTEMA FEEDFORWARD

Este modelo planea resolver los problemas de desfase en el dominio del tiempo

para evitar que el algoritmo adaptivo se comporte de manera inadecuada debido a

este inconveniente.

La solución a este modelo es por demás sencilla, sólo que al ser casi obvia,

complica en cierto grado el análisis. La forma de resolverla conlleva a retrasar la

señal de entrada del algoritmo adaptivo x(n) el mismo tiempo que se retrasa la señal

de error e'(n). Esta solución se presenta en el siguiente diagrama:

x(n)

Trayectoria Primaria p(n)

Trayectoria x' (n) Secundaria

s(n)

Trayectoria Secundaria

s(n)

Algoritmo Adaptivo (A.A.)

d(n)

y'(n)

Figura 13.6 Sistema feedforward con estimación de la trayectoria secundaria.

e'(n)

55

':W1/ TECNOLÓGICO ,,."/ DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Para simplificar un poco el diagrama se puede cambiar la figura anterior por la

siguiente bajo el supuesto de que ambas trayectorias secundarias son iguales y

representan el mismo retardo en el dominio del tiempo. Por lo que el diagrama

queda de la siguiente manera:

x(n)

~ Trayectoria Secundaria

s(n)

Trayectoria Primaria p(n)

x'(n)

Algoritmo Adaptivo (A.A.)

Figura 13.7 Sistema FXLMS leed forward.

y'(n)

13.7.- IDENTIFICACIÓN DE LA TRAYECTORIA SECUNDARIA

13.7.1 - IDENTIFICACION FUERA DE LÍNEA

d(n)

e'(n)

La identificación fuera de línea es un proceso el cual utiliza el DSP para aprender el

error y así poder reproducir la trayectoria secundaria s(n), la cual llamaremos

trayectoria secundaria estimada o s(n). Este sistema es homólogo al del filtro

adaptivo, la diferencia reside en que este se adaptará a los errores de la trayectoria

secundaria en lugar de adaptarse al ruido que se desea cancelar. El modelo de este

sistema es el siguiente:

56

-~ ..... . W~" TECNOLÓGICO \ ... J DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

s(n)

DSP r(n)

es(n)

A.A.

Figura 13.B Sistema adaptivo para estimación de la trayectoria secundaria.

En donde el algoritmo adaptivo queda de la siguiente forma:

s(n + 1) = s(n) + µ[e, (n)r(n)] (13.22)

13. 7 .2.- IDENTIFICACION EN LINEA

En la identificación en línea, se tiene un sistema adoptivo idéntico al de la

identificación fuera de línea, pero en esta variante el sistema siempre esta

aprendiendo sobre la trayectoria secundaria, es decir, está en constante operación y

opera al mismo tiempo que el sistema de cancelación. Esto presenta varias

ventajas, como sabemos un cambio de temperatura o humedad en el ambiente va a

afectar la forma en que se propaga el ruido, con un sistema que presente

identificación de la trayectoria en línea este cambio no va a afectar ya que el

sistema por si solo se adaptará a estos cambios.

13.8.- ALGORITMO FXLMS - SISTEMA FEEDFORWARD

Este algoritmo se explica en secciones anteriores. Resumiendo, se le llama de esta

manera debido a que la señal de entrada x(n) pasa a través de un bloque el cual

pertenece a la trayectoria secundaria estimada s(n), a la salida de este bloque se

obtiene la x' (n), es la señal de entrada filtrada. De esta forma se puede explicar

este algoritmo mediante el siguiente diagrama:

57

j~¡f~} TECNOLÓGICO ... ,,- DE MONTERREY,

x(n)

~(n)

CANCELACIÓN ACTIVA DE RUIDO

Trayectoria Primaria p(n)

Algoritmo Adaptivo (A.A.)

y(n)

Trayectoria Secundaria

s(n)

d(n)

Figura 13.9 Sistema feedforwad con estimación de la trayectoria secundaria y señal de referencia filtrada.

13.9.- ALGORITMO FXLMS - SISTEMA FEEDBACK

En el algoritmo FXLMS con un sistema feedback la señal también pasa por el

bloque de la trayectoria secundaria estimada s(n), obteniendo x'(n) que es la señal

de entrada filtrada la cual actualiza al algoritmo adaptivo. De esta forma se puede

explicar este algoritmo mediante el siguiente diagrama:

1

p(n)

--x-(n-) ---------.. ._ __ __,1-1------.l~J ~-~--.i '---+----'_v1_n1-----~'--s-(n-) __,,__v·1_n1 -----<ii()

e n =d(n)-y'(n)

s(n)

N

x'(n)

Figura 13.1 O Sistema feedback con estimación de la trayectoria secundaria y señal de referencia filtrada.

13.10.- SISTEMA FEEDBACK FXLMS-NA CON IDENTIFICACIÓN DE LA

TRAYECTORIA SECUNDARIA EN LINEA.

Después de haber visto las aproximaciones anteriores y haber entendido el

funcionamiento básico de cada uno de los componentes que conforman el sistema

58

\: .. :..; :;··: . '.;'(1if~~ -TECNOLOGICO ·,,, •. ,,•:· DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

final, podemos hablar sobre el modelo del sistema que utilizaremos para poder

realizar la cancelación activa de ruido. El diagrama es el siguiente:

~~' -P-'"_' _-__ ..... ~CJ-"'•-_"'_J ""'º"""'"'""'

/ e·¡ri)=d(ri1 y fnJ-r'(n)+r'(n)

x'(n) -1 e (n)=ey(n¡-er(n)

M

-e (n)::.eqn)-ey(n)

Figura 13.11 Sistema FXLMS con adición de ruido e identificación de la trayectoria secundaria en línea.

En este sistema podemos observar que se encuentran reunidos todos los elementos

que hemos visto anteriormente, desde la trayectoria primaria, hasta el sistema

homólogo de la trayectoria secundaria.

El funcionamiento de este sistema inicia con la inserción de la señal de entrada x(n)

al sistema, esta pasa por el filtro adaptivo w(n) y mediante una convolución

obtenemos la señal de salida del filtro y(n). Esta señal y(n) se suma con la señal

r(n), a la salida de la suma pasan por un inversor y a través de la trayectoria

secundaria, al mismo tiempo la señal de entrada x(n) pasa por el bloque de la

trayectoria secundaria para evitar el desfasamiento en tiempo antes mencionado.

Una vez que pasa por esta trayectoria, es comparada con la señal deseada d(n) y

aquí es donde obtenemos la primera aproximación del error, que en este momento

no es muy precisa, debido a que estamos en t=O y los valores de los coeficientes de

las muestras están inicializados en cero.

Este error es enviado a dos lugares, el primero, es al algoritmo adaptivo del filtro,

para tomar la siguiente muestra de coeficientes. El segundo, es a un sumador en el

cual se introducen el ruido generado r(n) que pasó por la trayectoria secundaria

estimada y el error e(n). En la salida de este sumador, la señal resultante se invierte

59

CANCELACIÓN ACTIVA DE RUIDO

y ésta en enviada al algoritmo adaptivo del sistema de la trayectoria secundaria, con

M número de coeficientes, que en esta primera etapa es igual a N, preparándose

para la siguiente muestra e iniciar el proceso de nuevo. Este procedimiento se lleva

a cabo hasta que los coeficientes N y M llegan a 600, que es el momento cuando el

apuntamiento circular entra en acción y se lleva al apuntador al principio del arreglo

mediante el apuntamiento circular.

13.11.- ALGORITMO NFXLMS CON ADICIÓN DE RUIDO E IDENTIFICACIÓN

HÍBRIDA

Buscando aprovechar los beneficios del NFXLMS-NA y las ventajas que presentan

las identificaciones en línea y fuera de línea decidimos implementar un modelo

complementario el cual denominamos "Identificación híbrida de la trayectoria

secundaria". Para poder explicar el procedimiento que realizamos al modificar la

identificación de la trayectoria secundaria de la manera original al nuevo modelo de

identificación, la identificación híbrida, es necesario definir en que consiste el

proceso para evitar confusiones tanto de concepto como de nomenclatura.

Identificación Híbrida de la trayectoria secundaria.- La identificación híbrida

funciona como sigue: antes de iniciar cualquier proceso de cancelación, se deja al

sistema reconocer la trayectoria secundaria del ruido a cancelar por un tiempo

determinado, a esto se le llama comúnmente identificación fuera de línea. El tiempo

de identificación puede estar limitado ya sea por el tamaño del registro del contador

del ciclo de identificación o por la cantidad de ciclos anidados que se puedan o

deseen realizar. Una vez que la trayectoria secundaria ha sido identificada fuera de

línea se inicia el proceso de cancelación de manera normal, dentro del cual se

realiza de nuevo en cada ciclo la identificación de la trayectoria secundaria, sólo que

esta vez la identificación se realiza en línea. Este tipo de identificación muestra un

mejor reconocimiento de la trayectoria secundaria, por lo que la estabilidad del

sistema aumenta ante cambios espontáneos de frecuencia, sin importar que tan

abruptos sucedan. Por lo tanto, a la combinación de la identificación de la trayectoria

secundaria fuera de línea con el reconocimiento en línea le denominamos:

Identificación híbrida.

60

TECNOLÓGICO · t¡,; DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

A continuación se presentan dos diagramas de flujo los cuales explican la operación

de identificación original y la identificación híbrida. En la imagen 14.1 Oa se presenta

un diagrama general de la operación del sistema original realizado por nuestro

asesor. En la figura 14.1 Ob se muestra un diagrama de flujo en el cual se muestran

las modificaciones que realizamos para introducir el concepto de identificación

híbrida de la trayectoria secundaria.

Inicio

Inicialización de variables Inicialización de variables

Inicialización del filtro Inicialización del filtro

Senal de Control y(n)

Adq. Serial de Error Senal de Control y(n)

Adaptación de valores del filtro

Adaptación de valores del filtro

Cancelación con FXLMS Cancelación con FXLMS

a) b)

Figura 13.11 Diagramas de flujo a) original y b) con la identificación híbrida de la trayectoria secundaria.

Para asegurarnos que se lleva a cabo la identificación híbrida lo que hacemos es

iniciar el programa sin permitir que se genere la señal de control y únicamente

introducimos el ruido blanco. Esto lo logramos ya que en el periodo de identificación

61

;;~f6( TECNOLÓGICO .:,.,.,",,. DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

fiuera de línea nunca permitimos que la señal de control salga del DSP ya que

durante los 255 ciclos de identificación nunca se llama a la subrutina en la que se

manda el antirruido al puerto de salida. Posteriormente la operación del sistema

continúa normalmente.

En la etapa de identificación fuera de línea el ruido generado por el DSP es

multiplicado por un factor de 3:

r"(n) = 3r(n) (13.23)

La señal de errar está definida por el ruido original a ser cancelado y el ruido blanco

amplificado:

e(n) = d(n) - s(n) * r"(n)

= d(n) - r"'(n)

(13.24)

(13.25)

En la segunda etapa, es decir cuando el sistema identifica la trayectoria secundaria

y genera la señal de control, el factor de multiplicación del ruido blanco decrece a

2.2, y la señal de error está dada por:

r"(n) = 2.2r(n)

e(n) = d(n) - s(n) * y(n) - s(n) * r"(n)

= d(n) - y'(n) - r"'(n)

(13.26)

(13.27)

(13.28)

A nivel de lenguaje ensamblador, se realizaron los siguientes cambios para lograr la

una mejor caracterización de la trayectoria secundaria, en los cuales se puede

observar que existe una gran diferencia entre el código original en comparación con

el que nosotros presentamos.

Al principio no existe ninguna modificación, ya que el programa inicia de la misma

manera, con los valores de inicialización de la tarjeta EVM del C30, así como con la

inicialización de todas las variables que se utilizarán durante la ejecución del

programa.

62

"-¡1it)é0

TECNOLÓGICO \, ,~/ DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

El siguiente paso es llamar a la rutina de inicialización del EVM, de la misma manera

y en el mismo orden que se realizaba en la primera versión y después se continúa

con el proceso de incialización de las demás variables. Así hasta que llega al punto

de espera de la la interrupción.

En ese punto el programa se queda en un ciclo de manera indefinida hasta que la

interrupción se presenta, lo que da inicio al proceso de cancelación que se explica a

continuación.

El primer paso es efectuar la lectura del puerto de entrada del DSP para obtener el

valor de la señal de error. Una vez tomado y digitalizado este valor se inicia con el

proceso de caracterización de la trayectria secundara fuera de linea, ya que hasta el

momento no se ha iniciado como tal el proceso de cancelación de la señal.En este

punto se inicializa un contador que va a ser aquel que determine la cantidad de

ciclos que el programa va a caracterizar la trayectoria secundaria.

Después incia la amplificación del nivel de ruido blanco del sistema, esto para

aumentar las características del mismo y lograr un mejor nivel de atenuación al

mejorar el proceso de caracterízación

Después de este proceso, se generan todas las señales que el programa necesita,

la señal de control y(n), la señal de referencia x(n), la señal de ruido r(n), los valores

promedios de las mismas. Lo importante de este aspecto es que todo esto se realiza

en un solo ciclo de la caracterización de la trayectoria secundaria, y hasta el

momento no se ha escrito nada en el puerto de salida del DSP, por lo que el sistema

se encuentra trabajando solamente con aquello que le ayuda a caracterizar mejor la

trayectoria secundaria sin nada que altere este proceso.

Al realizar todo ese proceso en un sólo ciclo podemos repetirlo varias veces para

mejorar la caracterización y lograr mejorar las características de operación del

sistema una vez que se encuentre funcionando completamente.

Una vez que se completen los ciclos establecidos, que en nuestro caso son 255 se

sigue el siguiente proceso.

63

TECNOLÓGICO DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Lo primero es disminuir la amplitud del ruido balnco para evitar que este afecte a la

cancelación del ruido o llegue a desestabilizar el sistema. En los pasos siguientes se

generan los valores del filtro secundario s(n), la función de cancelación del algoritmo

FXLMS, la señal de referencia filtrada x'(n) y su valor promedio, los valores del filtro

adoptivo primario w(n) y demás operaciones que el sistema realiza para funcionar

adecuadamente.

Una vez realizados todos los procesos, se escribe en el puerto de salida para que el

sistema empiece con la cancelación del ruido. A partir de este momento, la

cancelación se realiza por tiempo indefinido, realizando la caracterización de la

trayectoria en línea, y sólo realizará la caracterización fuera de línea y la

amplificación del nivel de ruido balnco si el sistema es reinicializado.

En resumen, todo lo anterior se puede expresar de la siguiente manera:

Lo que hacemos es no escribir en el puerto de salida de el DSP mientras se

caracteriza la trayectoria secundaria fuera de línea, por lo que acústicamente no se

genera ninguna señal de control, esto ocasiona que el error siempre sea igual, es

decir, el ruido (a cancelar) más el ruido blanco.

Al hacer esto, se están actualizando los coeficientes del filtro primario (el cual es el

que genera la señal de control y(n)) y se está caracterizando al ruido aunque no se

genere la señal de control. Entonces lo que sucede es que además de permitir un

mejor reconocimiento de la trayectoria secundaria, estamos dejando que el filtro

primario tambien se "entrene" y cararcterize mejor a la señal de ruido a partir de la

cual nosotros generamos una señal de control o "antirruido" que será la que

cancelará el ruido original.

En la figura 13.11 se puede ver el sistema, el cual no se modificó al realizar los

cambios de la identificación híbrida, la única diferencia es que no se escribe al

puerto de salida del DSP, sino hasta que se ha caracterizado la trayectoria

secundaria fuera de línea.

64

, TECNOLÓGICO i ·.,, ,1 DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

14.0.- RESULTADOS

Después de un periodo de investigación extenuante de 8 meses, emepzamos a

experimentar con el sistema que nos fue entregado por nuestro asesor, para poder

aplicar los conocimientos adquiridos en el proceso anterior.

El sistema y los conocimientos requerían de un conocimiento apmlio de todas las

características, desde los algoritmos utilizados en el sistema, hasta la programación

en lenguaje ensablador, la adquisición y entendimiento de todos estos

conocimientos de un nivel bastante elevado, fue la limitante más importante y lo que

nos restrasó para realizar las pruebas y modificaciones.

A continuación, en esta sección documentamos las diferentes pruebas y

modificaciones que realizamos en el transcurso de la realización del proyecto.

Principalmente se realizron los siguientes tipos de modificaciones y pruebas:

• Modificación de la estructura del código

• Prueba de mejores condiciones de angulo y distancia.

• Pruebas de atenuación utilizando las mejores condiciones

• Pruebas con reconocimiento híbrido de la trayectoria secundaria

• Pruebas con amplitud variable de ruido blanco

14.1.- MODIFICACIÓN DE LA ESTRUCTURA DEL CÓDIGO

Esta modificación la realizamos debido que la estructura del código era muy

complicada y a veces era difícil distinguir en que parte del proceso nos

encontrábamos, también nos costaba trabajo ubicar cierta parte del código debido a

que el programa estaba estructurado de una manera secuencial. Nos dimos cuenta

también de que existía mucho código repetido que se podía eliminar creando

subrutinas que podíamos utilizar cada vez que fuera necesario.

65

·~~rf{ TECNOLÓGICO ",, .~J. DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Por estas razones decidimos cambiar la estructura del código para hacer más

eficiente tanto la programación como la ejecución del programa. De esta manera,

sería también más fácil ubicar alguna instrucción o grupo de instrucciones cuando

quisiéramos realizar alguna modificación.

Al principio hubo un poco de duda porque pensábamos que cuando el programa

realizara tantos saltos podría retardarse un poco y desestabilizar la operación del

sistema. Decidimos experimentar de todas maneras para ver que era lo que

sucedía. El proceso que seguimos fue el de tomar el diagrama de flujo e ir

siguiéndolo en conjunto con el código para ir separando cada bloque del diagrama o

un pequeño número de bloques para hacer las subrutinas y lograr separarlo de una

manera eficiente. Otra razón de porque lo hicimos de esta manera tiene que ver con

la secuencia del código, ya que si no se realiza en un cierto orden en específico el

programa no funciona, por lo que seguir el diagrama de flujo del sistema nos fue de

mucha ayuda para realizar esto.

Para comprobar que el sistema no funcionaba si se cambiaba el orden de la

secuencia, se probó alterando este orden cambiando de lugar las llamadas a

subrutinas y realizamos varias pruebas con diferentes ordenes y comprobamos que

efectivamente el orden original es el que funciona adecuadamente y el que presenta

mayor estabilidad.

La principal consecuencia de este cambio en la estructura de código se refleja en la

estabilidad del sistema. Al hacer un código más eficiente se requiere de menos

memoria para operar, además tenemos mejor control de los registros y al inicio no

se satura la memoria de el DSP. Al tener mejor control de los registros y mas

memoria disponible nos aseguramos de no sobre escribir ningún dato y perder

información como se estaba haciendo lo que ha vuelto al sistema mas fácil de

controlar y le ha dado mucha mayor estabilidad.

Antes de realizar este cambio el sistema funcionaba atenuando una frecuencia, pero

si se movía la frecuencia del ruido que se cancelaba el sistema se desestabilizaba

generando ruido y saliéndose de control. Ahora el sistema es capaz de seguir los

cambios en el ruido sin desestabilizarse y cancelar el nuevo ruido generado. Es

66

:,~ríJ( TECNOLÓGICO .:,,, . ., J DE MONTERREY .

CANCELACIÓN ACTIVA DE RUIDO

importante mencionar que la mayor atenuación se da en la frecuencia en la que fue

"entrenado" el sistema. Sin embargo el hecho de que ante un cambio en la

frecuencia del ruido a cancelar el sistema no pierda estabilidad es un gran avance.

14.2.- PRUEBA DE MEJORES CONDICIONES CONDICIONES DE DISTANCIA Y

ÁNGULO

Realizamos un análisis sobre el funcionamiento del sistema, realizando pruebas con

la posición de los altavoces y del micrófono variando la distancia entre ellos así

como el ángulo de apertura entre los dos altavoces. El propósito de esta prueba era

encontrar las condiciones de operación del sistema en las cuales se obtuviera el

mejor desempeño de operación tomando dos aspectos como los más importantes,

la atenuación y la estabilidad.

De acuerdo con los resultados que arrojo la prueba (ver Anexo H), el sistema

presentó el mejor desempeño colocando los altavoces a una distancia de 1 Scms y

un ángulo de 120º.

Promedios ITERACIÓN 90º 120º 150º 180º 15cm -30,00 -33.47 -33 .40 -29,87

30cm -28.00 -30.00 -28 .27 -28, 13

45cm -26.00 -26 ,93 -29 .47 -27 .33

60cm -25.73 -28.27 -28.40 -29.60

sin atenuar -20.4 -20.4 -20.4 -20.4

14.3.- PRUEBAS DE ATENUACIÓN

Después de obtener la mejor ubicación para cada componente del sistema,

procedimos a realizar pruebas de atenuación, en las cuales el código ya había sido

modificado a su estructura actual, separando el código en subrutinas para un mejor

entendimiento y procesamiento de la información además de incluir las

modificaciones en el código.

67

\~Yf.:,· TECNOLÓGICO . . ~} DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

A continuación se muestran los diferentes resultados que obtuvimos realizando las

pruebas. Las imágenes las obtuvimos mediante la utilización de un osciloscopio

TDS3032 de Tektronix.

En la figura 14.1 se puede apreciar el estado inicial del sistema antes de ser

inicializado. La señal con mayor amplitud es el ruido proveniente del generador y la

señal plana es la salida del DSP, la cual en este momento se encuentra apagada.

Podemos apreciar que el sistema genera ruido en un nivel de -15,2dB antes de

encender el sistema. En las siguientes figuras podremos observar que este nivel se

ve atenuado al encender el sistema.

TekDeten. i

20.0 dB 250 Hz ü ,v '.0.00000 s

Figura 14.1.- Estado inicial del sistema

En un primer intento, en la figura 14.2 podemos ver que ahora el sistema se

encuentra en funcionamiento y se observa una atenuación en el nivel de ruido de

13.6dB. También podemos observar que la señal en claro, que es la que sale del

DSP, se encuentra en contratase.

68

TECNOLÓGICO DE MONTERREY,

TekEJec. . J. ·1 . 1

CANCELACIÓN ACTIVA DE RUIDO

·f· .+. +

Disparado 6,· 10.0dB @: -28.8 dB

..... ·. 6.: 175 Hz @: 175 Hz

··r,.<A~-':,· A"A: f!ii~-~-A A f1. f1.. .~····~·,\chlFrecuencia F' ._:. / ~- '.¡\.!-A •. · · , , · J \ A ·/ '\' ·J\ · / \ • / '\ · 'f r / \· ·/ :\.· -¡ \ · i \ · / ,,_ 174. 9 Hz

: .. i~.M+-~--~V ~V.¡.,.,¡v.¡.~'.+ .. V •. 1

i.,¡.V,~.Y;-;V.r.N .. ~.\~-i--~--~-V:-~.·i.+ .• Ch 1 Pico-Pico • • 1 • • • + + 156mV

20.ó dB

·+· !

T ..... ¡ ....

250 Hz !u•• [2:t5oooms

Figura 14.2.· Primera prueba del experimento

~ Cnn "'1nn~

En la segunda prueba del experimento podemos observar que se tiene una

atenuación mayor, que ahora es de 26dB, sin embargo esta expuesto de manera

muy clara que las señales no se encuentran en contrafase, por lo que resulta ilógico

que a pesar de que el ruido no se cancele de manera matemática se presente una

atenuación mayor.

Tek EJec. ·,·

. , ..

Disparado

t T

20.0 dB 250 Hz u••l22.5000ms

Figura14.3.· Segunda prueba del experimento

.. L:!.: . @:

. :. 6.: : @:

7.60 dB -31.2 dB

175 Hz 175 Hz

6 Sep 2006 1·

69

0:#iti•/ TECNOLÓGICO >.'/ DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

En la siguiente prueba observamos todavía una atenuación mayor, de casi 20dB y la

señal de nuevo no esta en contratase, sino que hasta podemos decir que se

encuentra en fase. Esto se vuelve interesante debido a que aún cuando no

obtenemos una señal en contratase podemos llegar a cancelar paulatinamente el

ruido.

TekDeten. 1 • 1 • • •

'

~· 3.60 dB l @: -34.4 dB

... ¡ ~: 175 Hz

1 @: 175 Hz

. Chl Frecuencia

'"'\/\/\/\ . /\!\!\!\nl\/\1\/\/\/\!V~ 177.0 Hz

+++-,'.,., ... 1:-••-i ... , .. , .. ,\; .. , .. , .. , ¡ .. ;., ,...,T,+, •--i·-•+• , .. +~-..... , .. ;-+-1-+,..++ .. ,-., .... , .. ,.j Ch 1 Pico-Pico : . ... . . . j lOOmV : 1 ¡

' . 1 --:- 1 ·,· Cl12 FrPCllf'llCÍ,I

·1 1 • l , -- - 11' 1 1 - • l J f ,

: ·\ i' 11 - 1,/1, ¡1 : 1 ·il' 11,·,•11Ji,11 ¡,,, ' 1 : 'I 11 '•j ¡!i"'I . .J ill12 l'llü l'ICU ·1' 'ti 1 ',1c/•¡f ¡'1'• 1/L'.'Jl•'','-\11\--V,/J/'-•\l't'/o -•,', ,i'c'¡l¡-,·,•, -~ 'll)IJlll\' : 1 1 1 ¡ 11 1' 1 1 i

.. _. __ ;:. ·': .. ·; . __ ,. =----.. -·. '··' -__ , __ -;. ·:~·-· ._. '.-· .. ·-·-· , .. -... : .. · ._; ___ · ... : .. · _·] Chl lOOmV'\, C:112, :;00111\i PlO.Oms A' Chl f-6.00mV

li!Ell 20.0 dB 250 Hz ü ,~ °22.SOOOirÜi.

Figura 14.4.- Tercera prueba del experimento

En el cuarto experimento (Figura 14.5) podemos observar un comportamiento

anormal del sistema ya que aunque la señal sale perfectamente en contratase, la

atenuación es de menos de 3dB, creímos que seria interesante incluir este resultado

en la documentación debido a que este resultado nos lleva a una teoría sobre el

comportamiento de la señal.

Esta teoría consiste en que de alguna manera la señal al salir del altavoz, por

cuestiones mecánicas, se provoca un desfase en el camino de la señal del altavoz

al micrófono, por lo tanto la referencia de las señales no es la misma ya que la señal

de control se mide a la salida del DSP mientras que la señal de error se mide

después de existir un retardo de tiempo en el aire. Otra teoría se basa en la

conexión de las bocinas ya que al polarizarlas positiva o negativamente cambia la

70

~~rit TECNOLÓGICO . .,.,,,,.,.,,, DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

respuesta del cono, sin embargo el desempeño del sistema completo es muy similar

de ambas maneras.

TekEJec. '

Chl

.~ íl:. ' . .

/: .

/: 1 ,: \· ' .

·t ·• +

Disparado d. 22.8 dB

: @: -17.6 dB

limll [ 20.0 dB 250 Hz u•• ¡0.00000 s i

Figura 14.5 Cuarta prueba del experimento

En las siguientes dos figuras, 14.6 y 14.7, podemos observar el mejor desempeño

del sistema hasta ahora, ya que obtuvimos una atenuación de 26.4 y 29.6dB

respectivamente que representan hasta un 90% de atenuación con respecto al ruido

original.

Tek Deten.:

,-

Chl! 10 mV'I, u,2 5oomv ·

20. O dB 250 Hz u ,T ¡0.00000 s

.,

~: 400mdB @: -41.6dB

~: 195 Hz ¡il) · 200 Hz

Ch 1 Frecuencia 192. 1 Hz

Amplitud de señal baja

.•... , .......•.. , .... ,., .. ,Ch 1 Pico-Pico 58.0mV

Ch2 freu1r11cia 20G.~ 111

u,2 Pico-f'ico . .... 2. 2, \!

Figura 14.6 Quinta prueba del experimento

71

Tek Deten.

CANCELACIÓN ACTIVA DE RUIDO

20.0 dB

·•· !

. Ll.: 3.20 dB @: -44.8 dB

.... Ll.: 195 Hz · @: 200 Hz

Ch 1 Frecuencia 11. 79kHZ

Amplitud de señal baja

i-··+··+···i'···i····i-·+···~··+·+·+··+···!····i···+···i--+·-~+···i···+···i-··~--+-·~---i····i····;·-i····r··· C 1, 1 Pico-Pico . ; . . . . 52.0mV

1 .,

250 Hz 11 -~ 0.00000 s

Figura 14.7 Sexta prueba del experimento

A continuación se muestra el sistema operando fuera de los límites establecidos, es

decir, operamos el sistema a menos de 150 Hz y también a una frecuencia mayor a

los 500 Hz, esto para demostrar que el correcto funcionamiento del sistema se

encuentra en el intervalo de frecuencias comprendido entre los 150 y los 500 Hz

En la figura 14.8 podemos observar la operación del sistema por debajo de los 150

Hz, específicamente en la frecuencia de 60 Hz. La elegimos debido a que la

frecuencia de la línea de alimentación se encuentra situada en ese rango,

escogimos ese valor en especial sólo para demostrar el funcionamiento del sistema

por debajo de su rango de operación. Tek Ejec.

20. O (18 250 Hl ull0.00 %

Disparado ' A: 2G.O dB

@: --32.~ (1B

A: GO.O Hz ®: 60.0 Hz

Frecue11cia 61.50 Hz

Amplitud de señal baja

8 Nov 2006 21:57:38

Figura 14.8 Prueba de la operación del sistema a 60 Hz

72

~11if~( TECNOLÓGICO ,, .,.,, DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Podemos observar como es que el sistema no presenta una respuesta adecuada

ante esta señal de baja frecuencia ya que el filtro del DSP sólo trabaja para

frecuencias mayores a los 150 Hz por lo tanto el DSP no es capaz de operar

adecuadamente con señales que se encuentren por debajo de esta frecuencia sin

importar su amplitud.

La siguiente prueba corresponde a las pruebas en frecuencias superiores a 500 Hz

para observar el comportamiento de nuestro sistema por encima de la frecuencia

superior normal de operación. Elegimos la frecuencia de 600 Hz sin ninguna razón

en particular, únicamente para demostrar la operación del sistema en frecuencias

altas. A continuación en la figura 14.9 podemos observar el comportamiento del

sistema.

Tek E Je c. , D Is parado LI.: 54.0 dB

¡ @: -12.4 dB

t 1 1 ! l 1 1 r fo· l ·i' r r 1 ¡ 1 j 1 1 • / 1 ¡ 1 , 11111 1, 1 l 1 1 ti , 1111 ! 111 : 1 ¡ 11 J ! • ¡ 1 t LI.: GOO Hz ,.: : :,·; :: i: ·_¡ ·! i.! !":: .. ·: ·¡: : ·; 11 J.', :: ': ·· @: 600 Hz

. ---L ····- h--· -- -- '"',:;r.1·" i~··H¡:«·•t ,[.i.~-r-t+,i¡,,f1 +f~{· \+)·;···.IH, H·f.1~·1·1,1·-•, Hh,4 t 1.,:,~, ¡, .Ch 1 Frecuencia

\ 1 ¡ ; · l, ¡ r :1: 1 1 ¡ 1 1 J· : i . ¡ 1 , 1:t ! ¡ 1 1 l· 1 ¡ 1 ;.1 r 1 1 ¡ J.1 1 , 11 . 1 r SQS. 7 Hz

'. l. ¡ 1, ·1 :r: :t

20. O dB 250 Hz 11 10.00 %

Figura 14.9 Prueba de la operación del sistema a 600 Hz

Como se esperaba, se puede observar que el sistema no responde de la manera

más adecuada a las frecuencias altas, por lo que no tiene caso desarrollar un

sistema activo para estas frecuencias, debido a que los sistemas pasivos presentan

un mejor desempeño con longitudes de onda más pequeñas.

73

'¡1ifi TECNOLÓGICO :S. •• '/ DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

14.4.- PRUEBAS DE CANCELACIÓN ANALIZADAS CON SOFTWARE DE AUDIO

AUDACIT'f'8>.

Después de desarrollar dentro del programa las modificaciones necesarias para

realizar la identificación híbrida de la trayectoria secundara, procedimos a realizar

nuevas pruebas de cancelación con el código modificado a la nueva versión, esta

versión sigue sin ser la última, debido a que tenemos planeado realizar

modificaciones con el generador de ruido blanco que se modificará después de

realizadas estas pruebas.

14.4.1.- SOFTWARE UTILIZADO PARA EL ANÁLISIS.

Las pruebas realizadas en esta sección están realizadas con un software de

distribución gratuita llamado AUDACIT'f8A. Se decidió utilizar este software de entre

varias opciones, debido principalmente a que cumple con las características

necesarias para el análisis que queremos realizar, como son las siguientes:

> Medición del tiempo de establecimiento de manera precisa.

> Medición del tiempo total de la prueba.

> Medición de la amplitud del sonido de manera normalizada.

> Capacidad de edición para suprimir partes del archivo sin afectar el

resto del contenido.

> Capacidad de exportar los archivos del formato original "Audacity

Project File" (*.aup) hacia archivos en formato WAV o mp3.

> Capacidad de importar archivos de diferentes formatos para poder

analizarlos con el software.

> Una buena calidad en la grabación de los sonidos teniendo la opción

de grabar hasta muestras de 32 bits en punto flotante y grabar hasta

96 KHz para evitar perder muestras que son importantes para el

análisis.

> Compatibilidad con sistemas operativos Windows XP y Mac OS X,

debido a que utilizamos ambos sistemas en las computadoras del

equipo.

4 http://audacity.sourceforge.net/

74

°:;~f~/ TECNOLÓGICO ',, / DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

> Capacidad de analizar las frecuencias de manera detallada.

> Capacidad de observar y analizar las pruebas de manera gráfica.

Todas estas características nos llevaron a decidir por este software, además de que

como es una versión "Open Source" no tiene ningún costo y por lo tanto no

representa un obstáculo.

Existen programas para analizar audio que tienen un desempeño sobresaliente y

con muchas características interesantes, sin embargo para los fines que

necesitamos, no hay razón para utilizar un software tan poderoso que al final no se

va a explotar ni aprovechar al máximo

14.4.2.- PRUEBAS DE CANCELACIÓN ANALIZADAS UTILIZANDO EL

SOFTWARE AUDACI~.

Las siguientes pruebas fueron realizadas y analizadas con el software mencionado

anteriormente. Las pruebas se llevaron a cabo en las mismas condiciones para

poder tenerlas como referencia para posteriores análisis y conclusiones, es decir, la

perilla de amplitud del generador de funciones del ruido a cancelar se mantuvo sin

cambios (aunque la amplitud varíe con respecto a la frecuencia), así como la

sensibilidad del micrófono para captar tanto la señal de ruido a cancelar así como la

señal de control producida por el sistema. De esta manera podremos ver las

diferencias más sustanciales en el rango de frecuencias propuestas.

El intervalo de frecuencias que se utilizó para la realización de este conjunto de

pruebas comprende de los 150 Hz hasta los 500 Hz en pasos de 50 Hz excepto en

el intervalo comprendido por 200 Hz y 250 Hz, debido a que se agregó una

frecuencia intermedia de 230 Hz, ya que después de realizar diferentes pruebas en

los diferentes rangos de frecuencias ésta fue en donde se obtuvieron las mayores

atenuaciones.

En las pruebas se presenta el ruido inicial a cancelar durante un periodo corto de

tiempo, y posteriormente se presenta el ruido atenuado, el inicio de la cancelación

se indica con una línea vertical de color rojo para tenerlo sólo como referencia.

75

TECNOLÓGICO DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Primero se muestra la señal del ruido a cancelar que utilizaremos como referencia

para realizar las siguientes pruebas:

Tek EJec.

1 ¡; •

Disparado ó: 61.6clB ,,u· -16.S dB

~ j ~: g~ ~~ .1

· · Ch 1 Pico-Pico , . 560mV

V . •. ; V 1 . . , .t •... · · Ch 1 Frecuencia 228.4 HZ

:'i¡,,,l¡'l ·1 1 J .L ·

1·'•·• '-, ·dlrr - ····!··· · · · r

1 •l 1

· ,;-·'¡ .. ; ·1·{'t,¡1¡:,-i1,:::.··1'·'1.'-.,1 /ir.1 __ ,1\1

1,,t'· .. ' .. ,. 1_~,'.·J_

1·1-.·Y:~ ... ·-,w-.. _f - I - 1d ·¡· (;: 1 - 1',H' ',' · ¡

-"-• .'G ' ,! '.· ~' ·~00· !.,.__ - 0e'_ _,' ' _:'' ' ·'- ' _j Chl 200mV'v u,2 ,;001111' .. :,,p 10.oms A Chl f 16.0m1'

lill!lll 20.0 <1ll- --iso 11, 11 fo.oó" -

Figura 14.11 Señal de ruido de referencia

Lo importante de la figura 14.11 es el nivel de potencia que se tiene, -16.BdB ya que

ese nivel es que el se tomará como referencia para poder medir el nivel de

atenuación de las demás señales en nuestro intervalo de frecuencias.

A continuación se presentan las diferentes pruebas realizadas y su correspondiente

análisis:

Prueba de cancelación @ 150 Hz

o.o

-0.S

Figura 14.12 Prueba de cancelación@ 150 Hz

En esta prueba el la atenuación presentada fue de 3dB con respecto a la cantidad

de ruido presente al inicio de la prueba.

76

TECNOLÓGICO DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Prueba de cancelación @ 200 Hz

Figura 14.13 Prueba de cancelación@ 200 Hz

En esta prueba la atenuación presentada fue de 15d8 con respecto a la cantidad de

ruido presente al inicio de la prueba. Podemos observar que la amplitud del ruido

aumenta con respecto a la frecuencia, debido a que no se modificó la perilla de

amplitud del generador de funciones para no alterar las condiciones de operación

del sistema mientras se realizaban las pruebas.

Prueba de cancelación @ 230 Hz

Figura 14.14 Prueba de cancelación@ 230 Hz

En esta prueba la atenuación presentada fue de 23.2d8 con respecto a la cantidad

de ruido presente al inicio de la prueba. A 225 Hz la atenuación fue de 24.4dB.

Podemos ver claramente que la atenuación presentada es mucho mayor en ambos

casos, además que el tiempo de establecimiento es menor, los que nos indica que

hasta el momento para la frecuencia de 230 Hz nuestro sistema responde de

manera más eficiente como se observa en la figura 14.15 a) y 14.15 b).

77

;~ffl TECNOLÓGICO "'·· ,,' DE MONTERREY,

Tek EJec,

CANCELACIÓN ACTIVA DE RUIDO

Dls arado

·~1rv,, r· _L . . . 1

. 1 ·:,1 \·, ·,·,w,-._),n-·,1i1(''·· .. :-~,,¡,,:·,.- . .;,·1 .. ,,~..:.N

.,.

L'I,: 7. 60 dB @: -40.0 dB

LI.: 230 Hz @: 230 llz

Frecuencia 21.0SkHz

Resolución baja

Chl ... ~OClr'ti~\-·c11'2¡ ,éi~111V •'. ;p;10.0111s· A Chl f 16.0mV

20.0 dB

Tek EJec,

250 Hz 11 10,00 %

a)

Vi.: ,1 '1~ ! . ,., 1 .,.... . J ' • •

·1 l [ 1!',: '·¡ 'i'' "''I ,',· ' ,11¡.-¡: 1 ': ·. \21 ··t.' 1 (··

Disparado

8 NO\/ 2006 20: 19:44

/l: 16A dB @: -41.2 dB

L'I,: 225 Hz (<'u: 225 Hz

Frecuencia 13. 33kHz

Resolución baja

Chl Í'oom\l'\,--Cl12··~(lb111V~•,P lo.'oms· A .Chl. f 16.0mV

20.0 dB 250 Hz 11 10.00 %

b)

8 NO\/ 2006 20:52: 1 O

Figura 14.15 a) Prueba@ 230 Hz b) Prueba@ 225 Hz

Prueba de cancelación @ 250 Hz

Figura 14.16 Prueba de cancelación @250 Hz

En esta prueba la atenuación presentada fue de 18dB con respecto a la cantidad de

ruido presente al inicio de la prueba.

78

¿~f~/ TECNOLÓGICO '.,. ,,·'t DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Prueba de cancelación @ 300 Hz

Figura 14.17 Prueba de cancelación@ 300 Hz

En esta prueba la atenuación presentada fue de 1 OdB con respecto a la cantidad de

ruido presente al inicio de la prueba.

Prueba de cancelación @ 350 Hz

Figura 14.1 B Prueba de cancelación@ 350 Hz

En esta prueba la atenuación presentada fue de 14dB con respecto a la cantidad de

ruido presente al inicio de la prueba.

Prueba de cancelación @ 400 Hz

Figura 14.19 Prueba de cancelación @ 400 Hz

En esta prueba la atenuación presentada fue de 13dB con respecto a la cantidad de

ruido presente al inicio de la prueba.

79

\w,x TECNOLÓGICO ',.};/.' DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Prueba de cancelación @ 450 Hz

o.o 0.5 1.5 2.0 2.5 J.O

Figura 14.20 Prueba de cancelación@ 450 Hz

J.5 4.0 4.5

En esta prueba la atenuación presentada fue de 19dB con respecto a la cantidad de

ruido presente al inicio de la prueba. Es importante destacar que, a pesar de la alta

frecuencia y estar tan cerca del límite de operación.

Tek Ejec. 'fl--·---------.,, ! 1

Disparado 1'.: 17.2 dC ,:¡¡¡: -36.0 dP,

ó.: -150 Hz C!.il: 450 Hz

·"''"'"''""""·'" vw,,.·AJV·V\A,VV\fll\f\flf1al\An Ch 1 Pico-Pico l 16mV

' ' • 1 r

i·--+- ·!'···1·- : -· i·- -· .. 1 ·+(·Y--•+-·-·++·1-··-i-· -; ¡ i- -1--+ ·1·-·1·- ¡ ·-: ..•.. ; ... ;. -; , ""·++-;· -:. -;-,-~-·--!· -·i ; . i- + + .. ¡ ... 1· --¡ --1 i-+-·ch 1 F rec u en e ia , i -156.G Hz

ti :.I t ,,1

, , , Jr11\ ; , 11 ¡'•, ¡· il•t¡ · ·', ,

; ·1 1 1 :- 1 p.,/• 1 ·1 ,.

¡ Amplitud de serial baja

_.'._._.1 :''''l'¡'\''f''l1' ~Ch~1.;,,; __ ,,.c20""'"o~m~V~'s=-·-,1,2 ~1lli111v·•.;p10.0ms A Chl f 16.0mV

20.0 dR 250 HZ B 10.00 %

Figura 14.21 Prueba@ 450 Hz

Prueba de cancelación @ 500 Hz

Figura 14.22 Prueba de cancelación@ 500 Hz

8 Nov 2006 21 :40: 12

En esta prueba la atenuación presentada fue de 9dB con respecto a la cantidad de

ruido presente al inicio de la prueba. Hay que resaltar que la frecuencia de esta

80

\if~;· TECNOLÓGICO ·, •. ,, J DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

prueba fue realizada a 495 Hz debido a que justo en 500 Hz el sistema nunca

alcanzó la estabilidad ni pudimos obtener una señal de ruido atenuada.

14.5.- IDENTIFICACIÓN HÍBRIDA CON NIVEL DE RUIDO BLANCO VARIABLE

14.5.1.- RUIDO VARIABLE

Al experimentar con la identificación híbrida de la trayectoria secundaria

modificamos el factor de incremento del nivel de ruido blanco inyectado al sistema,

cuyo valor original era de 1.5 veces el nivel normal. Incrementamos poco a poco

éste valor· hasta que llegamos a 3. En este punto nos percatamos que la atenuación

lograda era mayor que con un factor de multiplicación de 1.5, el problema es que el

sistema pierde la capacidad que tenía para obtener la estabilidad inicial, es decir, en

lugar de requerir 2 ó 3 intentos se necesitan más de 5 para lograr que el sistema

alcance una respuesta aceptable. La mayor atenuación al incrementar la potencia

del ruido blanco se debe a que el sistema es capaz de identificar mejor la trayectoria

secundaria, es por esto que decidimos aprovechar la operación de la identificación

híbrida ya explicada con anterioridad.

La identificación híbrida con nivel de ruido variable funciona de la siguiente manera:

cuando el sistema inicia pasan 254 ciclos en donde únicamente están presentes la

señal periódica a cancelar y el ruido blanco con un factor de multiplicación máximo

de 3 unidades. Posteriormente cuando se introduce la señal de control se reduce la

potencia del ruido blanco a un factor de 2.2. Los factores multiplicativos que

utilizamos los obtuvimos de forma heurística, en donde el experimento con mayor

atenuación y estabilidad fue el que nos arrojó estos valores. Con esto buscamos

una máxima atenuación además de la estabilidad que tiene el sistema con

identificación híbrida original.

La introducción del ruido blanco variable funciona dadas las características y

ventajas que ofrece su introducción. Sabemos que el tiempo de convergencia del

algoritmo LMS, y por lo tanto del sistema, depende de los valores propios de la

matriz de autocorrelación los cuales están relacionados con la densidad espectral

de potencia de la señal. El ruido blanco tiene una excitación constante en toda la

banda de frecuencias, por lo tanto logramos una convergencia más rápida ya que

81

~T~' TECNOLÓGICO ,. ,,' DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

los valores propios de la matriz de autocorrelación van a ser más similares,

traduciéndose en una mejor idientificación de la trayectoria secundaria o mayor

estabilidad dependiendo de la amplitud del ruido.

14.5.2.- PRUEBAS DE CANCELACIÓN CON NIVEL DE RUIDO VARIABLE

ANALIZADAS UTILIZANDO EL SOFTWARE AUDACITv®.

Prueba de cancelación @ 150Hz

OfO 1.0 2.0 3.0 4.0 5.0 G.O

Figura 14.23 Prueba de cancelación@ 150 Hz

En esta frecuencia, la cuál es el límite inferior de operación del sistema, obtuvimos

una atenuación promedio de 5 dB,

Prueba de cancelación @ 200 Hz

Figura 14.23 Prueba de cancelación@ 200 Hz

En esta frecuencia obtenemos un resultado considerablemente mejor que en la

frecuencia límite inferior, logrando una atenuación de 15 decibeles.

82

·w~/ TECNOLÓGICO , ./ DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

Prueba de cancelación @ 230 Hz

Figura 14.24 Prueba de cancelación@ 230 Hz

Realizamos pruebas en esta frecuencia ya que aquí es en donde habíamos

obtenido el mejor desempeño con el sistema de identificación híbrida de trayectoria

secundaria original. En este caso podemos ver que el resultado es muy bueno, sin

embargo no fue el mejor, atenuando 18 dB

Prueba de cancelación @ 250 Hz

Figura 14.25 Prueba de cancelación@ 250 Hz

A 250 Hz tenemos resultados muy similares a los obtenidos a 230 Hz, logrando una

atenuación cerca de 15 decibeles.

Prueba de cancelación @ 300 Hz

Figura 14.26 Prueba de cancelación@ 300 Hz

83

:;W~/ TECNOLÓGICO ,, . / DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

En esta frecuencia obtuvimos el mejor desempeño del sistema con identificación

híbrida de la trayectoria secundaria y nivel variable de ruido. A pesar de no tener

condiciones ideales de silencio para hacer las pruebas en un ambiente acústico

controlado, el desempeño del sistema en 300 Hz fue muy bueno alcanzando en

promedio una atenuación de 25 decibeles. Incluso al variar la frecuencia el sistema

presenta un buen seguimiento de la señal a cancelar y al regresar a la frecuencia

original el sistema presenta una atenuación igual o superior a la presentada

anteriormente.

Prueba de cancelación @ 350 Hz o¡o 1.0 2.0 3.0 4.0 5.0 6.0

Figura 14.27 Prueba de cancelación@ 350 Hz

En 350 Hz es perceptible un decremento en la efectividad del sistema, sin embargo

la atenuación sigue siendo bastante buena, de entre 12 y 15 dB.

Prueba de cancelación @ 400 Hz

Figura 14.28 Prueba de cancelación@ 400 Hz

En esta prueba la atenuación es claramente menor que la lograda a 300 Hz, sin

embargo todavía es bastante aceptable y mejor que con el sistema con

identificación híbrida original, alcanzando una atenuación de 12 dB. A pesar de

84

':~rfó/ TECNOLÓGICO '. .'J DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

lograr una atenuación aceptable en algunas ocasiones el sistema comienza a perder

estabilidad después de haber operado por un tiempo prolongado.

Prueba de cancelación @ 450 Hz

Figura 14.29 Prueba de cancelación@ 450 Hz

A pesar de estar cerca de la frecuencia de corte la atenuación es muy buena,

atenuando 1 O decibeles, sin embargo continúa con el problema de desestabilización

después de operar por un periodo prolongado.

Prueba de cancelación @ 500 Hz

o¡o 1.0 2.0 3.0 4.0 5.0 6.0

Figura 14.30 Prueba de cancelación@ 500 Hz

A pesar de que 500Hz es el límite superior de operación del sistema, se logró una

atenuación de hasta 15 dB. El problema con esta frecuencia es que es más difícil

lograr estabilidad y mantenerla cuando no se tienen condiciones ideales de

operación además que requiere de más intentos para lograr la estabilidad al inicio

de la operación del sistema.

85

',~f/ TECNOLÓGICO -,,,~,- DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

14.6.- VERSIÓN FINAL DEL CÓDIGO.

En el Anexo E se puede observar el código en lenguaje ensamblador de la versión

final que resultó después de realizar extensas pruebas durante el tiempo que

trabajamos directamente con el código, para poder tener una versión final que

presentar al término del proyecto.

86

';f,r>;}'" TECNOLÓGICO · ,., ,, DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

15.0.- ARTÍCULOS PROPUESTOS

Después de trabajar con un sistema de cancelación activa de ruido durante un año y

mejorar significativamente sus características de operación, se nos dió la

oportunidad por parte de nuestro asesor de presentar el desarrollo de nuestro

trabajo en un artículo el cual se tiene planeado publicar en diferentes revistas

especializadas, sin saber hasta la fecha de impresion de este documento que

revista sería la que nos otorgaría el espacio ni la fecha de publicación.

En el anexo F se pueden encontrar el artículoque se tiene pensado publicar.

87

:~f/¡,' TECNOLÓGICO ,~l DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

16.0.- CONCLUSIONES

Podemos concluir que después de todo un año de trabajo, todas las mejoras

realizadas al sistema de cancelación activa de ruido acústico (ANC) consiguieron un

desempeño superior al original y una mayor estabilidad, lo que nos da argumentos

para decir que cumplimos con los objetivos planteados al inicio del semestre.

El haber hecho pruebas a diferentes distancias y ángulos nos ayuda a estandarizar

el proceso de las pruebas buscando siempre tener un máximo rendimiento en el

sistema y dando a los resultados mas confiabilidad y por tanto una validez mayor.

Las mejoras realizadas a la estructura del código son de gran ayuda para la

comprensión del funcionamiento del sistema, y son útiles para asegurar el correcto

manejo de los registros y las direcciones de memoria, reduciendo el riesgo de

sobrescribir alguna dirección y con esto perder información, lo que se traduciría en

un mal desempeño del sistema y probablemente en una pérdida de estabilidad. Al

estructurar el código en subrutinas, se hizo más fácil la implementación de las

pruebas y la comprensión de las etapas por las que pasa el sistema.

Nuestra mayor aportación es la introducción del reconocimiento híbrido de la

trayectoria secundaria. Este esquema de identificación permite al sistema reconocer

la trayectoria secundaria en presencia del ruido a cancelar antes de comenzar con

el proceso de cancelación, lo que en un esquema normal se conocería como

identificación fuera de línea. Después de esto, inicia la generación de la señal de

control (cancelación) mientras que el sistema sigue reconociendo la trayectoria

secundaria en línea.

Una vez implementada la identificación híbrida de la trayectoria secundaria el

sistema presentó mejoras tanto en el nivel de atenuación como en la estabilidad, ya

que el sistema se volvió estable a cambios en la frecuencia del ruido a cancelar,

siendo capaz se seguir a la señal e incluso cancelar la nueva frecuencia, aunque no

en la misma forma que la señal original con la que se entrenó, sino siempre en

menor medida. También es estable ante una variación de la amplitud del ruido a

cancelar, siendo capaz de seguir estas variaciones y cancelar las diferentes

88

TECNOLÓGICO 7 DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

amplitudes del ruido, si importar que estas se presenten de manera abrupta en el

sistema.

Al final logramos aumentar el nivel de atenuación de los 18dB que teníamos hasta

los 22dB realizando modificaciones al código para incluir lo que llamamos Noise

Booster, el cual consitió principalmente en aumentar la amplitud del ruido blanco

durante la identificación fuera de línea, y reducirlo en la identificación en línea para

mejorar el reconocimiento de la trayectoria secundaria y mejorar aún más las

caracteristicas de atenuación de nuestro sistema modificado.

Se realizaron varios intentos para programar un sistema de control inicial de

estabilidad tipo "Watch Dog". Este consiste en comparar dos promedios de la señal

de error, el actual contra el anterior, si el actual es mayor que el anterior el sistema

debería reiniciarse, porque el error esta creciendo, lo que quiere decir que el

sistema tiende a desestabilizarse. Tuvimos complicaciones debido a que el código

esta en lenguaje ensamblador y a que la memoria de el DSP se terminaba.

El trabajo futuro consiste solamente en trabajar la estabilidad inicial del sistema y

pasar el código a un lenguaje de alto nivel, con esto las modificaciones y nuevas

implementaciones serán mucho más fáciles de realizar y el costo computacional va

a ser mucho menor. Pensamos que la lógica en un lenguaje de alto nivel para la

realización del Watch Dog es mucho menos compleja que en ensamblador y podría

solucionar el problema de la estabilidad inicial, así como el entendimiento y la

facilidad con la cual se le pueden realizar modificaciones.

Después de un año de trabajo dentro de la cancelación activa de ruido, podemos

decir que el trabajo que realizamos fue extenso y mejoramos apliamente las

características de operación del sistema que nos fue entregado por nuestro asesor

al inicio del proyecto. Si bien las mejoras en cuanto a la operación general del

sistema se deben principalmente a implementaciones de mejoras en el código más

que algorítmicas, creemos que es importante destacarlas, debido a que después de

un intenso estudio sobre la teoría de los sistemas de ANC en sus diferentes

vesiones, fue que implementamos las diferentes mejoras para lograr que el

desempeño del sistema fuera superior en los aspectos planeados desde el inico.

89

·:w~~· TECNOLÓGICO -:,;,,,/· DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

17.0.-REFERENCIAS BIBLIOGRÁFICAS

• S.C. Douglas, "An Efficient lmplementation of the Modified Filtered-X LMS

Algorithm," IEEE Signa/ Processing Letters, vol. 4, no. 10, pp. 286-288,

October 1997. (Postscript, 6 pages)

• S. Kuo and D. Margan, Active Noise Control Systems: Algorithms and DSP

implementations (New York, N.Y.: John Wiley, 1996), June 1999

• Sen M. Kuo and Dennis R. Margan, Active Noise Control: A Tutorial Review

• B. Farhang-Boroujeny, Adaptive Filters: Theory and App/ications (Baffins

Lane,Chichester: John Wiley, 1998

• Lueg, P., "Process of silencing sound oscillation," U.S. Patent No. 2 043 416,

1936

• Tomasi, Wayne. Sistemas de Comunicaciones Electrónicas. Prentice Hall. 4ta

ed. México, 2003, p.p. 976.

• Haykin, Simon. Signals and Systems. John Wiley and Sons lnc. 2nda ed.

USA. 2003. p.p. 792.

• Haykin, Simon. Communication Systems. John Wiley and Sons lnc. 4ta ed.

USA. 2001 p.p. 816.

• Texas lnstruments. TMS320C3x User's Guide. USA.1994. p.p.

• Solo, Victor. Adaptive Signal Processing Algorithms: Stability and

performance. Prentice Hall. USA. 1995. p.p. 377.

• Rogelio Bustamante-Bello, Héctor Pérez-Meana and Bohumil Psenicka,

lmproved Stable Feedback ANC System with dynamic secondary path

modeling, Proceedings of the 2005 /Cinco, Barcelona, Spain, September

2005

• Saeed V. Vaseghi, Advanced Signa/ Processing and Digital Noise Reduction

(Baffins Lane,Chichester: Wiley & Teubner, 1998).

• Bustamante, R., H. M. Perez, Development and Simulation of Active Noise

Control Systems, Proceedings of the 2002 lnternational Symposium on Active

Control of Sound and Vibration (Active 2002), Southampton, United Kingdom,

July 2002, pp 793-802.

90

TECNOLÓGICO DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

18.0.-REFERENCIAS ELECTRÓNICAS

• http://audacity.sourceforge.net/

91

W~_-·· TECNOLÓGICO , .. ',! DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

ANEXO A GLOSARIO DE COMANDOS EN LENGUAJE ENSAMBLADOR PARA EL DSP

TMS320C30

92

\ .,.; ,,' ' j~~' . TECNOLOGICO , . .,,,.- DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

add X,Z- esta función se encarga de sumar los valores en X y en Z, pueden ser

numeras o registros. Existe también para números enteros (addi) y para flotantes

(addf).

call tag- Esta instrucción manda llamar a una serie de instrucciones o subrutinas

que se encuentran en cualquier lugar del programa. Esta serie de instrucciones o

subrutina debe de estar precedida por la etiqueta "tag" a la que hace referencia la

instrucción.

Id r1 ,r2- Carga un registro con un valor dado o con otro registro. Puede ser con

valores enteros (ldi) o con valores flotentes (ldf).

mpy X,Z- esta función se encarga de multiplicar los valores en X y en Z, pueden ser

numeras o registros. Existe también para números enteros (mpyi) y para flotantes

(mpyf).

negf X,Z- Sirve para cambiar el signo de X y ese valor lo almacena en Z. Pueden

ser números o registros.

nop- Esta instrucción mantiene sin operar al DSP durante un ciclo de máquina.

reti - Sirve para regresar al programa principal después de una interrupción.

rets- Esta instrucción se utiliza para regresar de la subrutina en la que nos

encontramos a la secuencia principal del programa. Se utiliza cuando nos

encontramos fuera del programa principal y en uno auxiliar.

retsu- Esta instrucción se utiliza para regresar de la subrutina en la que nos

encontramos a la secuencia principal del programa. Se utiliza cuando nos

encontramos dentro del mismo programa principal.

rnd N- Redondea el numero N hacia el valor entero superior mas cercano.

93

TECNOLÓGICO DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

rptb tag- Repite un bloque de instrucciones N veces, el bloque esta limitado por una

etiqueta que se encuentra al inicio y final de cada bloque.

rpts N- Repite una sola instrucción N veces.

sub X,Z- esta función se encarga de restar los valores en X y en Z, pueden ser

numeres o registros. Existe también para números enteros (subi) y para flotantes

(subf).

st reg1 ,@reg2- Almacena el valor de reg 1 dentro de reg2. Existe esta instrucción

para numeres enteros (sti) y para flotantes (stf).

94

, ., º ' TECNOLÓGICO · DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

ANEXO B PROGRAMA EN LENGUAJE ENSAMBLADOR DEL FILTRO ADAPTIVO CON

IDENTIFICACIÓN EN LÍNEA DE LA TRAYECTORIA SECUNDARIA SIN

MODIFICACIONES

95

•'.'>•':r.

''.j~f- TECNOLÓGICO ,'.;,,:[Je¡ DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

¡**************************************************************************** • Filtro adaptivo LMS: LR3213sn,asm (LR3213sn 20 Oct 2004 VOO sin ALE,asm) • 31 Enero 2005 VOO sin ALE modificado: numero de coeficientes de S(n) > numero de • coeficientes de W(n)

Este programa implementa un filtro adaptivo FXLMS sin referencia con diferentes * opciones: * 1) FXLMS clásico; 2) FXLMS con adicion de ruido • 3) FXLMS normalizado; 4) FXLMS con calculo de la trayectoria secundaria en linea * Este programa utiliza la funcion de inicializacion evm_init.asm para inicializar tarjeta EVM del C30 ¡***************************************************************************** ;*** Valores de inicializacion de la tarjeta EVM del C30 j * *.

. global start

. global wait_intr ;punto de entrada del programa ;punto de espera de interrupciones

;*** Simbolos definidos en .global evm_init .global receiveO .globalpO_addr;serial .globalstack_addr

el programa de inicializacion del sistema ;subrutina de inicializacion del EVM ;rutina de la interrupcion

11 sysinit 11

port O address ;system stack address

;*** Define la seccion de los datos de entrada, procesamiento y salida

mu smu

.data

.sect

. float

. float

11 vardeoper 11

1.0E-4 ;coeficiente 1.0E-4 ;coeficiente

de adaptacion de w(n) 5.0E-5 de adaptacion de s (n) 1.0E-3

/ /

l.OE-4 l.OE-4

esc_en comp comp_neg

. float 150. O escalamiento de la señal de entrada/ No utilizado

lambda lambdap

dn

.float -0.01 auxiliar de comparacion . float 1000000. O

. float o.o

. float o.o

.float o.o

.float o.o

. float o.o

. float o.o

valor de control auxiliar valor de control auxiliar primo

señal auxiliar de entrada señal de error -entrada- (ruido residual) señal de error auxiliar para el calculo del promedio señal dereferencia estimada

la

en enaux xn epn eppn xpn yn ypn yppn

. float

. float

. float

o.o o.o o.o

señal auxiliar de error 1 -calculada, para uso interno­señal auxiliar de error 2 -calculada, para uso interno­señal de referencia filtrada

promen prom promxpn promyn promyppn promrn sumcuadxn sumcuadyn sumcuadxpn sumcuadrn

liminfxpn liminfyn liminfrn

invcuadyn invcuadxpn invcuadrn

muestrasn longitudn invlongn despn muestrasm longitudm invlongm despm

longnentre2 vdc

. float

. float

. float

. float

.float

. float

. float

.float

. float

.float

. float

. float

. float

. float

. float

. float

. float

.float

.float

.float

.set

.float

.set

. float

.set

. float

.set

.set

. float

o.o o.o o.o

o.o o.o o.o o.o o.o o.o o.o o.o o.o o.o

l. Oe-13 1.0e-10 1.0e-10

o.o o.o o.o

510 510 o.o 1 510 510 o.o 1

80 -3.0e3

señal inicial de control señal de control secundaria 1 señal de control secundaria 2

valor promedio (valor de DC) de la señal e (n) valor promedio (valor de DC) de la señal x(n) valor promedio (valor de DC) de la señal x· (n) (xpn) valor promedio (valor de DC) de la señal y(n) valor promedio (valor de DC) de la señal ypp(n) valor promedio (valor de DC) de la señal r(n) suma de las valores cuadrados de x(n) suma de las valores cuadrados de y(n) suma de las valores cuadrados de xp(n) suma de las valores cuadrados de r(n)

limite inferior del valor de xn2 l.Oe-8 / 1.0e-6 limite inferior del valor de yn2 1.0e-12 limite inferior del valor de rn2 l.Oe-4

inverso de sumcuadyn, 1/ sumcuadyn inverso de sumcuadxpn, 1/ sumcuadxpn inverso de sumcuadrn, 1/ sumcuadrn

número de muestras por ciclo/ 300 longitud N del filtro adaptivo / 300 inverso de la longitudn, 1/longitudn desplazamiento de los coef de W(z) / 2 número de muestrasm por ciclo/ 600 longitud M del filtro adaptivo / 600 inverso de la longitudm, 1/longitudm desplazamiento de los coef de S(z)

mitad de la longitudn voltaje de corrimiento de DC del D/A

96

,.

ª''Í;f TECNOLÓGICO ~ L;'r DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

; valcontador .int secundaria (

6400 veces que se ajustan los coeficientes de la trayectoria

;•• Define la seccion de las muestras de la señal de ruido xnn .usect "xnnbuffer", longitudm esp. de mem de xn -pose de x(N-1)-xnnlad .word xnn 200h xnn direccion de la muestra x(N-1) ; • • xOad . word xnn+longitudm-1 direccion de la muestra xO inicial

;•• Define la seccion de las muestras filtradas de la señal de ruido xpnn xpnnlad . word ; •• xpOad

. usect "xpnnbuffer", longitudm xpnn .word xpnn+longitudm-1

;•• Define la seccion de las muestras de la señal

esp. mem de xpn -pose de xp(N-1) -300h xpnn dir de la muestra xp(N-1) direccion de la muestra xpO inicial

de control ynn ynnlad ;•• yOad

.usect

.word

.word

"ynnbuffer", longitudm ynn ynn+longitudm-1

esp. de mem de yn -pose de y(M-l)-400h xnn direccion de la muestra y(M-1) direccion de la muestra yo inicial

; * * Define la seccion de los coeficientes del filtro adaptivo hnn hnnlad ;•• hOad

.usect "hnnbuffer", longitudm esp de mem de hn -pose de h(N-1)

.word hnn 500h hnn direccion del coef w(N-1)

.word hnn+longitudm-1 direccion del coef wO inicial

i * * Define la seccion de los coeficientes de la trayectoria secundaria snn snnlad ;** sOad

.usect "snnbuffer", longitudm esp de mem de sn -pose de s(M-1)

. word snn 600h snnf di rece ion del coef s (M-1) .word snn+longitudm-1 direccion del coef so inicial

j * * Define la seccion de las muestras de la señal de ruido blanco .usect "rnnbuffer", longitudm esp. de mem de rn -pose de r(M-1) -rnn

rnnlad .word rnn 700h xnn direccion de la muestra r(M-1) ; •• rOad .word rnn+longitudm-1 direccion de la muestra rO inicial

la seccion de las muestras de la señal de control filtrada ;** Define yppnn yppnnlad ;•• yppOad

.usect "yppnnbuffer", longitudm esp. mem de yn -pose de yppn(M-1) -

.word yppnn 400h xnn dir de la muestra yppn(M-1)

.word yppnn+longitudm-1 ; direccion de la muestra yppO inicial

;••• Valores de inicializacion de los generadores de ruido 1 y 2 ; * * *

.sect 11 noisegen 11

seedl .set 12357 12357 semilla para el generador de r. blanco seed2 .set o o semilla para el generador de ruido blanco wnoisel .int o limpia la memoria del ruido blanco 1 (WNl) wnoise2 .int o limpia la memoria del ruido blanco 2 (WN2) mOS . float 0.5 constante igual 0.5 wnO .float o.o señal de salida o del ruido blanco 1 wn20 . float o.o señal de salida o del ruido blanco 2 wnl .float o.o señal de salida 1 del ruido blanco wn2 . float o.o señal de salida 2 del ruido blanco wn3 .float o.o señal de salida 3 del ruido blanco wn4 . float o.o señal de salida 4 del ruido blanco wnS . float o.o señal de salida 5 del ruido blanco wn6 . float o.o señal de salida 6 del ruido blanco s03 . float 0.3 factor de escalamiento 0.3 s2045 .int 2045 factor de escalamiento 2045 sl048576 . float 9.5367432e-7 factor de escalamiento 1/1048576 ssl048576 .int 1048576 factor de escalamiento 1048576 sl048577 . float 9. 536734le-7 factor de escalamiento 1/1048577 amplificacion . float 100.0 amplificacion de la señal de ruido amplificacion2 . float so.o amplificacion 2 la señal de ruido amplificacion3 . float 2.0 amplificacion 3 la señal de ruido ( 100)

;***************** ; •• *

Operacion de los filtros adaptivos •••

.text ;••• Primero inicializa el sistema start: ldi @stack_addr, sp

call evm_init

; * * * Inicializa las variables globales ldi @pO addr, ar7

ldi seed2, r4 sti r4, @wnoise2 ldi seedl, r4 sti r4, @wnoisel

del get

Operacion del filtro adaptivo

carga el stack pointer en el sp rutina para inicializar el EVM

filtro FIR port address

load seed del generador 2 de ruido blanco r4 -> wnoise2 load seed del generador 1 de ruido blanco r4 -> wnoisel

en

en

1 2

r4

r4

97

fija)

ceros

ldi ldi

ldi ldf ldi

ldi ldi ldi ldi ldi ldi rpts nop

ldi rptb stf stf stf stf stf stf stf

rpts stf nop rpts stf nop rpts stf nop rpts stf nop rpts stf nop rpts stf nop rpts stf nop

mpyf3 nop mpyf3 nop mpyf3 nop mpyf3 nop mpyf3 nop

;***************** ldf call stf rpts nop ldf

ldf call stf rpts nop ldi

CANCELACIÓN ACTIVA DE RUIDO

despn, irO longitudn, irl

longitudm, bk o.o, ro @hnnlad, aro

@xnnlad, arl @xpnnlad, ar2 @ynnlad, ar3 @snnlad, ar4 @rnnlad, ar5 @yppnnlad, ar6 3

longitudm - 1, ceros ro,•arO++'t ro,•arl++'t ro, •ar2++% ro,•ar3++% ro, *ar4++% ro,•ar5++% r0,*ar6++%

longitudm - 1 ro' •aro++%

longitudm - 1 ro,•ar1++%

longitudm - 1 rO,•ar2++%

longitudm - 1 ro,•ar3++%

longitudm - 1 ro, •ar4++%

longitudm - 1 ro,•ar5++%

longitudm - 1 ro,•ar6++%

carga el apuntador con el desp de N carga el apuntador con N

BK = longitudm -longitud del buffer circular­Inicializa ro= O dir del coeficientes h(N-1) aro (400h) (Dir inic

dir de los valores x(N-1) = arl (200h) dir de los valores xp(N-1) = ar2 (600h) dir de los valores y(N-1)= ar3 (800h) dir del coef s (M-1) = ar4 (AOOh) (Dir inic fija) dir de los valores r(M-1) = ar5 (COOh) dir de valores yppn(N-1) / en(N-1) = ar6 (BOOh) ejecuta las sig 2 instrucciones 4 veces

RC ; carga el contador con la longitud del filtro este bloque se repetira M veces Inicializa los coeficientes de hn a O (fijo) Inicializa los valores de xn a o (movil) Inicializa los valores de xpn a o (movil) Inicializa los valores de yn a o (movil) Inicializa los coeficientes de sn a o (fijo) Inicializa los valores de rn a o (movil) Inicializa los valores de yppn / en a o (movil)

ejecuta las sig 2 instrucciones M veces Inicializa los coeficientes de hn a O (fijo)

ejecuta las sig 2 instrucciones M veces Inicializa los valores de xn a o (movil)

ejecuta las sig 2 instrucciones M veces Inicializa los valores de xpn a O (movil)

ejecuta las sig 2 instrucciones M veces Inicializa los valores de yn a O (movil)

ejecuta las sig 2 instrucciones M veces Inicializa los coeficientes de sn a O (fijo)

ejecuta las sig 2 instrucciones M veces Inicializa los valores de rn a O (movil)

ejecuta las sig 2 instrucciones M veces Inicializa los valores de yppn a O (movil)

ro,•arl--%, ro

rO,•ar2--(irO)%, ro

apunta a

apunta a

la

la

localidad inicial

localidad inicial

de xn [x(O)]

de xpn [xp(O)]

ro,•ar3--%, ro

ro,•ar5--%, ro

ro,•ar6--%, ro

Invierte el valor de @muestrasn, ro inv f ro, @invlongn 3

o.o, ro

@muestrasm, ro inv f ro, @invlongm 3

O, r4

apunta a la localidad inicial de

apunta a la localidad inicial de

apunta a la localidad inicial de

longitudn y longitudm ••• guarda el valor de muestrasn en ro invierte el valor

yn [y (O)]

rn [r (O)]

yppn [y(O)

guarda el valor de 1/muestrasn en invlongn ejecuta las sig 2 instrucciones 4 veces

extra, no borrar

guarda el valor de muestrasm en rO invierte el valor guarda el valor de 1/muestrasm en invlongm ejecuta las sig 2 instrucciones 4 veces

Inicializa r4 = O

;••• Loop de espera para que ocurra la interrupcion

98

fl TECNOLÓGICO , 1 DE MONTERREY.

wait intr: interrupcion

CANCELACIÓN ACTIVA DE RUIDO

idle estado de espera

br wait intr

para que ocurra la

;***************** Rutina de servicio de la interrupción***

;*** receiveO: ¡*** ; • * *

Efectua la lectura de la señal de error (ruido residual)

rpts nop

ldi rpts nop

20

•+ar? (12), r4 4

ejecuta las sig 2 instrucciones 4 veces

efectua la lectura de e(n) ejecuta las sig 2 instrucciones 4 veces

j * * * Convierte del formato xxxxxxxxxxxxxxxxxOO a un formato normal de 14 bits de signo extendido

lsh 16, r4 mueve los 14 bits al limite del msb ash -18, r4 mueve los 14 bits al lsb float r4, r4 convierte a flotante el valor

;** Esta sección permite la detección del cruce por un valor ; * • ldf r4, rl ; *. ; • * i ••

; ** ; .. ; • * i * * i * * i. * i * * ; **

i *.

Cuando la

absf mpyf rnd ldf

señal cmpf cmpf bz ldf stf call

call

addf

rl 100, rl rl rl, rl ; limpia banderas

por 0.01, se procede a la cancelación comparación de los valores (inicio

; comparación de los valores (inicio

de error pasa -1. O, rl @comp, rl salida @comp_neg, r2 r2, @comp cancelacion termina el if

cancelacion

@vdc, r4 ; suma de un voltaje de corrimiento

del if)

del if)

;** Salida de la señal de control / Convierte al formato xxxxxxxxxxxxxxxxxxxxxxOO / Escribe la palabra convertida al convertidor D/A ; * *

;*** salida: i. * *

fix lsh sti

rpts nop

reti

r4, r4 2, r4 r4, • +ar? ( 8)

3

convierte el valor de r4 (yn) a entero corre a la izquierda dos bits el valor de r4 escribe el valor de la señal de ctrl al conv D/A

ejecuta las sig 2 instrucciones 4 veces

; regreso de la interrupcion

;******************************************************************************************** • ; • •• Procesamiento inicial de la señal de error / escalamiento de la señal de error / reducción del valor de DC

cancelacion: ; * * * ldf ; * .. * subf j * * * mpyf j * * * stf

subf ; * •• ldf ; * * * mpyf ... subf

; ... subf i * *. subf ; * •• subf ; * * * negf

; * * * mpyf ; * •• rnd

stf i * •• rpts

nop

r4, r2 @promen, r2 O .1, r2 r2, @en

®promen, r4 ®promen, r2 0.5, r2 r2, r4

®promrn, r4 @prom, r4 ®promyn, r4 r4, r4

1.0, r4 r4 r4, @en 3

; le resta en valor de DC a la entrada, r4 = r4 - Vdc en ; reduce el valor de la señal de entrada

almacena el valor de la señal de error original[e(n)=d(nl -y' (n) -r' (n)J

; le resta en valor de DC a la entrada, r4 = r4 - Vdc en

le resta en valor de DC a la entrada, r4 = r4 - Vdc rn le resta en valor de DC a la entrada, r4 = r4 - Vdc_xn le resta en valor de DC de y(n) a la entrada, r4 = r4 - Vdc_yn cambia el signo de e (n) para procesarlo

escalamiento de la señal de e(n) / 1.0

almacena el valor de la señal de error original [e(n)=d(n)-y' (n) -r'(nll ; ejecuta las sig 2 instrucciones 4 veces

99

'·,:~rlt TECNOLÓGICO fe ;L DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

; • Procesamiento de la señal de ruido con el filtro adaptivo secundario (generacion de la señal estimada de ruido ypn (y'(n))) •••••••

11

;••• i * *. ; ... ;•••

ldf O. O, r2 limpía el registro r2 (r2 = O) rpts mpyf3 addf3 addf3 rnd

subf rpts nop stf rpts nop

longitudm - 1 •ar4++%, •ar5++%, ro ro, r2, r2

ejecuta las sig 2 instrucciones M veces s (M-1-i) •rn(n- (M-1-i)), hO, ... , M-1 suma de multiplicaciones

ro, r2

r2, r2

®promrn, r2 3

r2, @ypn 3

suma el ultimo producto r2 = yn (y(n))

le resta en valor de DC a la entrada, r4 ejecuta las sig 2 instrucciones 4 veces Nuevo

r4 - Vdc rn

guarda la señal de ctrl presente en ypn(ypn=y'(nl= re· (n)) ejecuta las sig 2 instrucciones 4 veces Nuevo

;••• Procesamiento de la señal de referencia x(n) con el filtro adaptivo (generacion de la señal de control yn)

11

ldf O. O, r2 mpyf3 r2,•arl--(ir1)%, r2 oper falsa, reapunta a la localidad de xn(N-1)

rpts mpyf3 addf3 addf3

longitudn - 1 •arO++(irO)%, •ar1++%, ro ro, r2, r2 ro, r2, r2

ejecuta las sig 2 instrucciones N veces wnl (N-1-i) •xn(n- (N-1-i) l, i=O, ... , N-1 suma de multiplicaciones suma el ultimo producto r2 = yn(n)

;*******rnd r2

subf ;••••• rpts

nop

rnd stf

¡***** rpts nop ldf

®promyn, 3

r2 r2, @yn 3

o.o, ro

r2 le resta en valor de DC de y(n) a la entrada, r4=r4-Vdc_y(n) ejecuta las sig 2 instrucciones 4 veces

; Nuevo

guarda la señal de control presente en yn ejecuta las sig 2 instrucciones 4 veces

Extra, no borrar

;••• Generacion de las señales de error de r(n) y de x(n), así como de la señal de referencia ... i * * *

addf mpyf rnd stf nop

; * * * addf negf stf

; * * * rpts nop

ldf ;***** ldf

ldf mpyf addf rnd

@ypn, r4 l. o' r4 r4 r4, @epn

@xn, r4 r4, r6 r6, @eppn 3

@epn, r4 @eppn, r4 @yppn, r2 1.0, r2 r2, r4 r4

calcula el valor de epn, r4=e· (n) =e (n) + y· (n) [y' (n) escalamiento de la señal de e· (n) / 0.5

re· (n)]

almacena el valor de epn calculado [e'(n)=d(nl -y· (ni -r· (n)+re· (ni)

calculo de eppn,r6=-r4=eppn=-epn[e'' (n)= r' ln)-re· (n)+y'(nl - din)) almacena eppn ejecuta las sig 2 instrucciones 4 veces

carga el valor de epn en r4 (EXTRA) / original carga el valor de epn en r4 (EXTRA) carga el valor de la señal de ref estimada x(nl (r2=epp+yppn=xn(OI (ni) escala el valor de ypp(n) = y''(n) / -1.0 / original se genera la sei'lal de referencia estimada x (n) (r4=epn+yppn=xn (O) (n)) /original

yppn = y-- (n) = ye· (n)

;••• Suma de la señal de ruido a la señal de referencia estimada/ valor original de r(nl •••

; • • • • • subf @prom, r4 le resta en valor de DC de ypp(n) a la salida, r4 = r4 · Vdc_x(n)

;•••• La inyección de ruido le agrega estabilidad al sistema ;••• mpyf 1.0, r4 modifica el valor de la señal de referencia estimada/ 0.5 ; • • • addf @wnO, r4 El valor debe de ser @wnO / @wn20

i * * * ;*** ; * •• ¡***

0.5

i •••

subf ldf mpyf subf

mpyf

stf rpts

®prom, r4 @promrn, 0.02, r2 r2, r4

1.0, r4

r4, @xn 3

r2 le resta en valor de DC a la entrada, r4 r4 - Vdc rn

le resta en valor de DC a la entrada, r4 = r4 - Vdc rn

modifica el valor de la señal de referencia estimada/ O.OS/

almacena la sef\al de referencia estimada x(n); x(n)=d(nl-y-(nl+ye-(n)-r-(nJ+re·tn)

ejecuta las sig 2 instrucciones 4 veces

100

•, • TECNOLÓGICO DE MONTERREY,

; •• *

i *•• ; * * *

nop

call

rpts nop

call rpts

ruidol

3

ruido2 3

CANCELACIÓN ACTIVA DE RUIDO

genera una nueva muestra de ruido blanco l esta rutina utiliza ro y rl, en ro regresa el valor de rl(n) ejecuta las sig 2 instrucciones 4 veces

genera una nva mstra de r blanco 2; esta rutina regresa en ro el valor de r2(n) ejecuta las sig 2 instrucciones 4 veces

; * * * nop

;• Esta parte obtiene el valor y obtiene su valor promedio)

promedio de r (n) ( suma las muestras de la señal de ruido r (n)

ldf o. o, ro ldf @wn2, r2 mpyf3 subf3 rnd stf mpyf addf rnd stf

•ars, •ar5, ro •ar5, r2, rl rl r2, •ar5++% @invlongm, rl ®promrn, rl rl rl, @promrn

; El valor debe de ser @wnl ******************** rn (M-1) [n-1] A2 ro (operacion adelantada) rl = r2 - •ar5 = rn(O) [n] - rn(M-1) [n-1]

se guarda la mstra pres de rn (rn(O)) (n) y adela el cont a rn(M-1) (n] rl (1/longitudm) • [rn(O) [n] - rn(M-1) [n-1] J rl = prom_ant_r(n) + rl = prom_nue_r(n)

guarda el promedio nuevo de r(n)

; . Esta parte suma el cuadrado de las muestras de la señal r(n) y obtiene el valor inverso de la suma

mpyf3 subf3 addf stf addf call

;*** rpts nop

stf i •• * rpts

nop

r2, r2, r2 ro, r2, ro @sumcuadrn, ro ro, @sumcuadrn @liminfrn, ro inv f

; esta 3

ro, @invcuadrn 3

rn(O) [n] A2 ro = rn(O) [n] A2 - rn(M-1) [n-1] A2 = r2 - ro ro= cuadrn_ant r(n) +ro= cuadrn_nue_r(n) guarda la nueva suma de valores cuadrados rO=suma de rn'sA2+liminfrn, suma de una cte para evitar la div por invierte el valor, ro= 1/(suma de rn'sA2 + liminfrn)

rutina usa rl, r2 y r3, regresa en ro el resultado/ nuevo ejecuta las sig 2 instrucciones 4 veces Nuevo

guarda la suma de valores cuadrados ejecuta las sig 2 instrucciones 4 veces Nuevo

cero

;***************Adaptacion de los valores del filtro secundario s(n) ••••••••••••••••••••• ; carga eppn en r6 ldf @eppn, r6

mpyf @smu, r6 mpyf @invcuadrn,

ldi rptb mpyf3 addf3 rnd

longitudm -tsadaptada •ar5++%, r6, •ar4, r2, r2 r2

; r6 = smu • eppn r6 rO=invcuadrn=l/(suma de rn·s·2 + liminfrn) -Est normaliza el algoritmo­

r6 rO•smu • eppn =mu• eppn • 1/(suma de rn'sA2 + liminfrn) 1, RC carga el cont con la long del filtro 2ario (M Coef)

; este bloque se repetira M veces r2 ; r2=r(M-l-i) •smu • eppn • 1/(suma de rn·s·2 + liminfrn)

r2=s(n+l)=sn + rn(M-1-i)*smu•eppn*l/(sum de rn·s·2 + liminfrn)

tsadaptada stf rpts nop

r2,•ar4++% 3

se almacena el nuevo sn (s(n+l)) ejecuta las sig 2 instrucciones 4 veces Nuevo

¡********

;******************************************************************************************** ; Esta es la función de cancelación del algoritmo FXLMS ;******************************************************************************************** ;••••••••••••••••• Esta parte obtiene la suma del cuadrado de las muestras de x(n)

ldf @xn, r2 carga la señal de referencia estimada x(n) en r2 ;••••• le resta en valor de DC a la entrada, r4 =r4 - Vdc xn (EXTRA) subf ®prom, r2

mpyf3 mpyf3 subf3 addf rnd stf

¡***** rpts nop ldf

r2, r2, ro •arl, •arl, rl rl, ro, ro @sumcuadxn, ro ro ro, @sumcuadxn 3

o.o, ro

operacion adelantada xn(o)·2 operacion adelantada x(N-1) [n-1] rO = xn(O) [n] ·2 - xn(N-1) [n-1] A2 = ro - rl rO=cuad_ant_x (n) + [xn (O) [n] A2-xn (N-1) [n-1] ·21 =cuad_nuevo x (n)

guarda la nueva suma de valores cuadrados de xn ejecuta las sig 2 instrucciones 4 veces Nuevo extra, no borrar

;•••••••••••••••••• Esta parte suma las muestras de la señal x(n) y obtiene su valor promedio subf3 •arl, r2, rl rl = r2 - •arl = x(O) [n] - x(N-1) [n-1]

; • • • • • addf @wnO, r4 El valor debe de ser @wnO

stf ;***** rpts

nop

r2, •arl++% 3

agrega el ruido blanco rnl a la señal de referencia estimada guarda la mstra presente de xn (x(O) [n)) y adelanta el cont a x(N-1) (n) ejecuta las sig 2 instrucciones 4 veces Nuevo

101

mpyf addf stf

;****** rpts nop

CANCELACIÓN ACTIVA DE RUIDO

@invlongm, rl @prom, rl rl, ®prom 3

Nuevo

rl = (1/longitudm) • [x(O) - x(N-1) 1 rl = prom_ant_x(n) + rl = prom_nuevo_x(n) guarda el promedio nuevo de x(n) ejecuta las sig 2 instrucciones 4 veces

;••••••••••••••••• Generación de la señal de referencia filtrada xp(n) (x' (n)) ldf rpts mpyf3

11 addf3 addf3 rnd

¡***** subf ¡***** stf ;***** rpts

nop

O.O, r2 r2 = O longitudm - 1 ejecuta las sig 2 instrucciones M veces •ar4++%, •arl++%, ro s(M-1-i) •x(n- (M-1-i)), i=O, ... , M-1 ro, r2, r2 suma de multiplicaciones rO, r2, r2 suma el ultimo producto r2 = xpn (xp(n)) r2 @promxpn, r2 r2, @xpn 3

le resta en valor de DC a la entrada, r4=r4 - Vdc_x· (n) guarda la señal de referencia filtrada actual en x·n ejecuta las sig 2 instrucciones 4 veces Nuevo

¡*********** Esta parte suma •ar2, r2, rl @invlongn, rl @promxpn, rl rl, @promxpn

las muestras de la señal x' (n) (xpn) y obtiene su valor promedio rl r2 - •arl = x' (O) [ni - x' (N-1) [n-11 subf3

mpyf addf stf rpts nop subf stf nop

3

@promxpn, r2 r2, @xpn

rl = (1/longitudn) • [x' (O) - x· (N-1) 1 rl = prom_ant_x'(n) + rl = prom_nuevo_x'(n) guarda el promedio nuevo de x· (n) ejecuta las sig 2 instrucciones 4 veces Nuevo le resta en valor de DC a la entrada, r4 = r4 - Vdc_x· (n) guarda la señal de referencia filtrada actual en x·n Nuevo

;*Esta parte suma el cuadrado de las mstras de la sñal y obt el valor inv de la sum de la xpn mpyf3 •ar2, •ar2, ro ; xpn(N-1) [n-11 ·2 operacion adelantada

;**** OJO: esta parte permite una convergencia mas veloz OJO!!! mpyf 0.5, r2 Valor natural de control 5.0 / multiplica a x'(n) / 50 rnd r2

;•••• se adiciona la señal filtrada de ruido ldf @ypn, rl ; •• *. mpyf 5.0, rl

ldf @wno, rl mpyf 1.0, rl

mpyf @invcuadrn, rl mpyf @invcuadxpn, rl

addf rl, r2 mpyf 1.0, r2 rnd r2 stf r2, •ar2++(ir0)% rpts 3 nop

mpyf3 r2, r2, r2 subf3 ro, r2, ro addf @sumcuadxpn, ro stf ro, @sumcuadxpn rpts 3 nop

addf @liminfxpn, ro call inv f -

; ***** nop stf ro, @invcuadxpn rpts 3 nop

j •• * * ldf •ar2-- (ir0)%, r4

Valor natural de control: wnO Valor natural de control 5.0

; Valor natural de control/ 10.0 / 5.0

guarda la mstra pres de xpn (xp(O)) [n] y adela el cont a xp(N-1) [n]

ejecuta las sig 2 instrucciones 4 veces

esta

Nuevo

xpn(O) [n] ·2 ro = xpn(O) [ni ·2 - xpn(N-1) [n-11 ·2 = r2 - ro

; rO=cuad_ant_xp (nl + (xpn ( O l (n] ·2-xpn (N-1) [n-1] ·2 J =cuad_nuevo_xp In)

guarda la nueva suma de valores cuadrados de xpn ejecuta las sig 2 instrucciones 4 veces Nuevo

rO=suma de xpn·s·2+liminfxpn / para evitar div por cero invierte el valor, ro= 1/(suma de xpn·s·2 + liminfxpn)

rutina usa rl, r2 y r3, regresa en ro el resultado/nuevo guarda el valor de 1/(suma de xpn·s·2 + liminfxpn) ejecuta las sig 2 instrucciones 4 veces Nuevo

lectura fantasma para reapuntar el arreglo

;*************** Nuevos algoritmos*********************************************************** ;* ldf @sumcuadxn, rO; carga la suma de valores cuadrados de x(n) en ro · • mpyf @invcuadyn, ro ;* negf ro ; • addf 1. o, ro ·* ldf 1.0, ro ; . ; *

stf subf ldf

ro, @lambda @prom, r2 o.o, ro

guarda el valor de xn·2/(suma de yn·s·2 + liminfyn) resta el valor promedio a xn

102

. TECNOLÓGICO DE MONTERREY,

;************ ¡*** ldf

ldf mpyf

;*** mpyf mpyf

i * *. ldf ldi rptb mpyf3 addf3 rnd

; * * * * addf tpadaptada

CANCELACIÓN ACTIVA DE RUIDO

Adaptacion de los valores del filtro adaptivo primario W(z) (H(z)) ••••••• @en, r4 se carga el valor de e(n) en r4, r4 = en @epn, r4 se carga el valor de ep(n) en r4, r4 = epn @mu, r4 r4 =mu• epn @lambda, r4 r4 = xn·2/(suma de yn's•2 + liminfyn) • epn @invcuadxpn, r4; r4=(mu•enJ/(suma de xpn's·2+liminfxpnJ/Normalizacion del valor @wnO, rl carga el valor de r(nJ en r2/modifica los coef del filtro adaptivo w(nJ longitudn - 1, RC carga el contador con la longitud del filtro tpadaptada ; este bloque se repetira N veces •ar2++(ir0)%, r4, r2 ; r2 = xpn(n-1-i)•mu•epn*l/(suma de xpn's·2 + liminfxpn) •aro, r2, r2 r2=wnl(n+l)=wnl+mu•epn•xpn(n-l-i)*l/(sumade xpn's·2+liminfxpn) r2 rl, r2 stf rpts nop

carga el valor de wnl en r2 r2, •arO++(ir0)% se almacena el nuevo wnl(n+l) 3 ejecuta las sig 2 instrucciones 4 veces

Nuevo

;****************** Esta parte obtiene el cuadrado de las muestras de y(n) y su valor inverso carga y(n) en r2 ldf

mpyf3 mpyf3 subf3 addf stf addf

call ;***** rpts

nop

stf ;***** rpts

nop

@yn, r2 r2, r2, ro •ar3, •ar3, rl rl, ro, ro @sumcuadyn, ro ro, @sumcuadyn @liminfyn, ro

inv f 3

ro, @invcuadyn 3

operacion adelantada yn(o)•2 operacion adelantada y(N-1) [n-1] ro = yn(O) [nl ·2 - yn(N-1) [n-1] ·2 = ro - rl rO=cuad_ant_y(n)+[yn(O) [n]·2-yn(N-l) [n-11·2¡ = cuad_nuevo_y(n)

guarda la nueva suma de valores cuadrados de y(n) rO = suma de yn's·2 + liminfyn

invierte el valor, ro= 1/(suma de yn·s·2 + liminfyn) ejecuta las sig 2 instrucciones 4 veces Nuevo

guarda el valor de 1/(suma de yn·s·2 + liminfyn) ejecuta las sig 2 instrucciones 4 veces Nuevo

;***************** Esta parte obtiene el promedio de las muestras de y(n) (EXTRA) limpia el registro ro

.......... ;***

j * *. i * * * i * * * i * * *

ldf rpts addf3 mpyf stf

o.o, ro longitudm - 1 •ar3++%, ro, ro @invlongm, ro ro, @promyn

ejecuta la siguiente instruccion M veces suma los valores de alex(n) ro= rl = (1/longitudm) • suma de y(n) 's guarda el valor promedio de y(n)

;••••••••••••••••• Esta parte suma las muestras de la señal y(n) y obtiene su valor promedio ... ldf ldf subf3 stf

¡***** rpts nop

mpyf addf rnd stf

;***** rpts nop

;***** call ;***** addf

;*********** ;***** subf ¡***** nop ;***** mpyf ldf @wn2, j. * *** subf

nop

¡***** mpyf

addf ;***** rnd

i * * ** addf

i * * * * addf ;**** subf

@yn, r2 o.o, ro •ar3, r2, ro r2, •ar3++% 3

@invlongm, ro @promyn, ro ro ro, @promyn 3

ruidol ro, r4

carga y(n) en r2 limpia el registro ro rl = r2 - •arl = y(O) [nl - y(N-1) [n-1] guarda la mstra pres de yn (y(O) [n]J y adela el cent a y(N-1) [n) ejecuta las sig 2 instrucciones 4 veces

ro rl

(1/longitudm) • [y(O) - y(N-1)] prom_ant_y(n) + rl = prom_nuevo_y(n)

guarda el promedio nuevo de y(n) ejecuta las sig 2 instrucciones 4 veces

genera una nueva muestra de ruido blanco cambia de registro el valor presente de rn

Procesamiento de la señal de salida (y(n) + r(n), escaladas) •••••••••••• @promyn, r2 le resta en valor de DC de x(n) a la salida, r4 = r4 - Vdc xn

1.0, r2 modifica el valor de la señal de control y(n) O.OS/ 0.5 r4 el valor del ruido blanco debe de ser igual a wnl •••••••••

@promrn, r4 le resta en valor de DC de r(n) a la salida, r4 = r4 - Vdc rn

1.0, r4

r4, r2 adiciona el valor de r(n) a y(n) r2

@wnl, r2 adiciona el valor de wnl a yn r4, r2 @promrn, r2 le resta en valor de DC de r(n) a la salida, r4 r4 - Vdc rn

103

'Í~ TECNOLÓGICO ~®I DE MONTERREY.

j * * * * j. * * * j * •• *

i •••

nop subf nop

mpyf ldf

®prom, r2

1.0, r2 r2, r4

CANCELACIÓN ACTIVA DE RUIDO

le resta en valor de DC de x(n) a la salida, r4 r4 - Vdc x(n)

modifica el valor de la señal de salida y (n) + r (n) (O. 05) Este valor permite cancelar arriba de los 210 Hz

;*** Este parametro permite cancelar abajo de los 200 Hz negf r2, r4 ; copia el valor negativo de yn a r4 para sacarlo al A/D

;***************** Generación de la señal de control filtrada (y'(n) estimada) ************ ldf rpts mpyf3

11 addf3 addf3 rnd

; •• * subf Vdc_yppn

stf ;***** rpts

nop

o.o, r2 longitudm - 1 *ar4++%, •ar3++%, ro ro, r2, r2 ro, r2, r2 r2

ejecuta las sig 2 instrucciones M veces sn(M-1-i) *yn(n- (M-1-i)), i=O, ... , M-1 suma de multiplicaciones suma el ultimo producto

®promyppn, r2 le resta en valor de DC de y (n) a la salida, r4

r2, @yppn 3

guarda la señal de referencia filtrada actual en yppn ejecuta las sig 2 instrucciones 4 veces Nuevo

r4

;******** Esta parte suma las muestras de la señal ypp(n) y obtiene su valor promedio***** ; ***** ldf @yppn, r2 ;***** subf3 •ar6, r2, rl rl = r2 - •ar6 = yppn(O) [n] - yppn(M-1) [n-1] ¡***** stf r2, •ar6++% se guarda la matra pres de yppn (yppn(O)) (n) y adela el cont a yppn(M-1) {ni

ejecuta las sig 2 instrucciones 4 veces ; • * • • • rpts 3 ; ••••• nop

i ***** mpyf

; ***** addf ;***** stf ;***** rpts ;***** nop

@invlongm, rl ®promyppn, rl rl, @promyppn 3

Nuevo

rl = (1/longitudm) * [yppn(O) [n] - yppn(M-1) [n-1] J rl = prom_ant_ypp(n) + rl = prom_nue_ypp(n) guarda el promedio nuevo de ypp(n) ejecuta las sig 2 instrucciones 4 veces Nuevo

;***************** Esta parte suma las muestras de la señal e(n) y obtiene su valor promedio *************

ldf subf3 stf nop mpyf addf stf nop

retsu

;**** Suma las promedio:

; •• *. ; * * •• i. *. * ;**** ; * * ••

@en, r2 *ar6, r2, rl r2, •ar6++%

@invlongm, rl ®promen, rl rl, @promen

rl = r2 - •ar6 = en(O) [n] - en(M-1) [n-1] se guarda la matra pres de yppn (yppn(O)) (n] y adela el cent a yppn(M-1) (ni

Nuevo rl = (1/longitudm) • [en(Ol [n] - en(M-1) [n-1] J rl = prom_ant_e(n) + rl = prom_nue_e(n) guarda el promedio nuevo de e(n) Nuevo

retorno de subrutina/termina la operación del filtro adaptivo

muestras de la señal subf3 •arl, r2, rl

y obtiene el valor promedio de la señal (EXTRA. NO OPERA) rl = r2 - •arl = x(O) - x(n-1)

mpyf @invlongn, rl addf @prom, rl stf rl, ®prom

ldf o.o. r5 rpts longitud - 1 addf3 •arl++%, r5, r5 mpyf @invlong, r5 stf r5, @prom retsu

rl = (1/longitud) * [x(O) - x(n-1) J prom_nue = prom_ant + rl = rl guarda el promedio nuevo

r5 = o ejecuta las sig instruccion N veces

r5 = (1/longitud) * suma de xn -s guarda el valor promedio

retorno de subrutina

·** Suma el cuadrado de las muestras de la señal y obtiene su valor inverso (EXTRA. NO OPERA) x(n-1)·2 cuadrados: mpyf3

mpyf3 subf3 addf stf

; ••• * ldf ; * * *. rpts ;**** mpyf3 ; * * * * 11 addf3 ; * * •• addf3

•arl, •arl, ro r2, r2, r2 ro, r2, ro @sumcuadxpn, ro ro, @sumcuadxpn

o.o, r2 longitud - 1 •arl, •ar1++%, rl, r2, r2 rl, r2, ro

rl

xcoi·2 ro= x(o)·2 - x(n-1)·2 = r2 - ro cuad_nue =ro= cuad_ant + ro guarda la suma de valores cuadrados

r2 = O ejecuta las sig instruccion N veces

104

TECNOLÓGICO DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

addf @liminfxpn, ro ro= suma de x2n's + liminfxpn call inv f retsu

invierte el valor, rO~l/(xpn~s+liminfxpn), esta rut usa rl, r2 y r3 retorno de subrutina

¡*********************************************************************** ;*** Subrutina de inversion de un numero flotante ; * * • El numero di v a invertir debe de estar almacenado en ro; despues de esta subrutina, ;*** 1/div estara almacenado en ro. ;*** Secuencia de llamado de la subrutina: ; * * * ldf V, rQ ;*** call inv f ;*** ;*** Asignacion de argumentos: ;*** argumental funcion ;*** ------------+------------------;*** RO I v = numero a dividir (antes de la subrutina) ;*** RO 1 1/v (despues de la subrutina) ¡************************************************************************** inv f: ldf

ldf absf

o.o, rl ro, r3 ro

;*** Extrae el exponente de v. pushf ro pop ash

rl -24, rl

rl = o ves guardado para su uso posterior el algoritmo usa v = lvl.

; Los 8 LSBs de rl contienen el exponente de v.

;*** A few comments on boundary conditions. If e = -128, then v = O. The following x[O] ;*** calculation yields Rl = --128 - 1 = 127 and the algorithm will overflow and saturate ;*** since x[O] is large. This seems reasonable. ;*** If e = 127, the Rl = -127 - 1 = -128. Thus x[O] O and this will cause the algorithm ;** to yield zero. ; ••• Since the mantissa of v is always between 1 and 2, this is also reasonable. As a ;•••result, boundary conditions are ;*** handled automatically in a reasonable fashion.

;*** x[O] formation given the exponent of v.

;***

;*** ;***

; * * *

; • * *

negi rl subi 1, rl ;Now we have -e-1, the exponent of x[O]. ash 24, rl push rl popf rl ;Now rl = x[O] 1.0 * 2**(-e-1).

Comienzan mpyf subrf mpyf

las iteraciones rl, ro, r2 2.0, r2 r2, rl

mpyf rl, ro, r2 subrf 2.0, r2 mpyf r2, rl

mpyf rl, ro, r2 subrf 2. O, r2 mpyf r2, rl

mpyf rl, ro, r2 subrf 2. O, r2 mpyf r2, rl rnd rl

Para la ultima iteracion x[S] = (x[4] • (1.0 - (v

mpyf rl, ro, r2 subrf 1 . O, r2 mpyf rl, r2 addf r2, rl rnd rl, ro

r2 rl

; r2 = V * X [0] 2.0-v*x[O] x[l] = x[O] * (2.0 - v • x[O])

; r2 = V * X [1] r2 2.0 - v • x[l] rl X [ 2] = X [ 1] * ( 2 . 0 - V * X [ 1] )

; r2 = V * X [2] r2 2.0 - v * x[2] rl x[3] = x[2] • (2.0 - v * x[2])

; r2 = V * X [3] r2 = 2.0 - v • x[3] rl = x[4] = x[3] * (2.0 - v • x[3]) This minimizes error in the LSBs.

utilizamos la siguiente formula: * x(4]))) + x[4]

; r2 = v * x[4] = 1.0 .. 01 .. => 1 r2 1.0 - v • x[4] = O.O .. 01. .. => O r2 x[4] • (1.Q-v•x[4]) r2 x[S] = (x(4]*(1.0-(v•x[4])))+x(4] Round since this is follow by a MPYF

Aqui se maneja el caso de v < O negf ro, r2 ldf r3, r3 ldfn stf

retsu

r2, ro ro, @invcuadxpn

este comando reestablece las banderas de condicion Si v < o, entonces ro= -ro

; almacena el inverso de la suma

retorno de subrutina

105

:'.~>f TECNOLÓGICO , ,,,,~, DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

;********************************************************************************************

j * * * i. *. i * * 1r

i * * * i * * * ; * * *

Generador 1 de ruido blanco I(n) = 2045 • I(n-1) + 1 I(n) = I(n) - INT[I(n)/1048576) • 1048576 rl(n) = FLOAT[I(n)+l) / 1048577 rl(n) = rl(n) - 0.5 donde el valor inicial de I(O) es seed [ I(O) = seed)

;******************************************************************************************* ruidol:

;***** ;*****

; •• * ; ... ; * •• i •••

; * * * ; * * * ;***

;***** ;***** ;***** ;*****

ldi mpyi addi ldi float mpyf fix mpyi subi sti addi float mpyf

subf subf

ldf ldf mpyf mpyf mpyf subf3 stf

mpyf subf stf ldf mpyf stf

ldf mpyf stf mpyf stf mpyf stf mpyf stf mpyf stf

retsu

@wnoisel, ro @s2045, ro 1, ro ro, rl rl, rl @s1048576, rl rl, rl @ssl048576, rl rl, ro

I (n-1) -> ro 2045 • ro -> ro ro+ 1 -> ro ro -> rl convierte rl a punto flotante rl • (1/1048576) -> rl convierte rl a entero rl • 1048576 -> rl ro - rl - > ro

ro, @wnoisel 1, ro

guarda el nuevo valor de I(n) para la nueva iter ro + 1 - > ro

ro' ro @s1048577, ro

@mas, ro @promrn, ro

convierte ro a punto flotante ro • (1/1048577) -> ro

ro - o.s ->ro= rl(n) le resta en valor de DC de r(n) a ro, ro ro - Vdc rn

o.o, rl @promrn, rl 0.01, rl 0.95, rl 0.06, rl rl, ro, rl rl, @wnO

escalamiento del promedio del ruido/optimo 0.06 0.95 escalamiento del promedio del ruido/optimo 0.06

almacena rO(n) en wnO

@amplificacion2, @promrn, ro

ro escala hacia arriba rl(n)

ro, @wnl le resta en valor de DC de r(n) a ro,

almacena rl(n) en wnl ro ro - Vdc rn

ro, rl 0.06, rl rl, @wno

ro, rl 1.5, rl rl, @wn2 @amplificacion2, rl rl, @wn3 @amplificacion3, rl rl, @wn4 @amplificacion3, rl rl, @wns @amplificacion3, rl rl, @wn6

0.06 para 1.5 almacena rl(n) en wno

almacena ro en rl para manipular el valor escala hacia arriba rlp (n) (2) almacena rlp(n) en wn2 escala hacia arriba rlp (n) ( 50) almacena rlp(n) en wn3 escala hacia arriba rlp(n) (200) almacena rlp(n) en wn4 escala hacia arriba rlp (n) ( 400) almacena rlp(n) en wnS escala hacia arriba rlp(n) (800) almacena rlp(n) en wn6

retorno de subrutina

;********************************************************************** ; •• * Generador 2 de ruido blanco ;********************************************************************** ruido2:

j * * *

ldi mpyi addi ldi float mpyf fix mpyi subi sti addi float mpyf

subf

mpyf stf retsu .end

@wnoise2, ro @s2045, ro 1, ro ro, rl rl, rl @sl048576, rl rl, rl @ssl048576, rl rl, ro rO, @wnoise2 1, ro ro, ro @s1048577, ro

@mos, ro

I (n-1) - > ro 2045 • ro -> ro ro + 1 - > ro ro - > rl convierte rl a punto flotante rl • (1/1048576) -> rl convierte rl a entero rl • 1048576 -> rl ro - rl - > ro

guarda el nuevo valor de I(n) para la nueva iter ro + 1 - > ro convierte ro a punto flotante ro • (1/1048577) -> ro

ro - o.s ->ro= r2(n)

@amplificacion2, ro ro, @wn20

escala hacia arriba r2(n) almacena r2(n) en wn20

retorno de subrutina

106

CANCELACIÓN ACTIVA DE RUIDO

ANEXO C PROGRAMA DE INICIALIZACIÓN DEL SISTEMA C30 EN LENGUAJE

ENSAMBLADOR SIN MODIFICACIONES

107

>~r~/ TECNOLÓGICO ·;,,,,~{; DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

* *

Inicialización del sistema C30 - SYSINIT.ASM

Este programa incializa el Modulo de Evaluación TMS320C30 y realiza las siguientes operaciones

- Arrange system stack Sisable/clear all interrupts

- Set the data page pointer - Enable the cache - Initialize the memory ports - Initialize the AIC - Enable serial port O receive and global interrupts

* *

...•........•.......•.•...••.•••.••.••.....•...•..•.........••...••• . global .global .global .global .global .global .global .global .global

start evm init po_addr receiveO stack addr aic init aic_setup wt_x_flag longitud

Reset and interrupt vectors *=======================================================*

.sect 11 vectors 11

PARMS: reset .word start reset vector

.space 5 rintO .word receiveO serial port reserved .space 039h

.sect 11 comdata 11

o recv int

*==================================================================* Address of various peripherals and memory control registers

vector

memory control reg., primary bus mcntlrO mcntlrl

.word

.word

.word

.word

000808064h 000808060h 000808020h 000808040h

memory control reg., expansion bus to ctladdr pO addr

Control parameters and setup values

Serial Timer o port o

*===============================================================*

to ctlinit pO_global enbl_spO_r .word

.word

.word OC00002Clh OOe970300h

000000020h serial

set timer O as clock out serial port O global cntl port O receive int enable

reg value

WAITO WAITl CACHE

.set 0000h memory control reg value, primary bus

ENBL INTO ENBL GIE

.set

.set

.set

.set

0000h 1800h 0001h 2000h

memory control reg value, clear and enable cache interrupt o enable global interrupt enable

*=================================================================* System stack

*=================================================================*

expansion bus

stack_size stksec stack addr

.set

.usect

.word

040h "stack", stksec

; global interrup stack stack_size ; reserve space fer stack

; address of stack

*===============================================================* System initializations

*===============================================================*

evm_init: .text xor ie, ie ;disable all interrupts

108

1-,.·=

~f TECNOLÓGICO \ .. ;:0' DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

xor if, if ;clear all interrupt flags ldp PARMS ;load data page pointers ldi CACHE, st ;clear and enable cache ldi WAITO, ro ;get parallel interface setup value ldi @mcntlrO, aro ;get memory control register sti ro, •aro ;set parallel ready ldi WAITl, ro ;get i/o interface setup value ldi @mcntlrl, aro ;get memory control register address sti ro, •aro ;set i/o ready

;OjOOOOOOOOO extra!!!!! or ENBL_GIE, st ;enable global interrupt

call aic init ;routine to initialize AIC -

*=======================================================================* Initializations done.

* Enable receiveO and global interrupts and returns to main programs *========================================================================*

xor or

;OjOOOOOOOOO extra!!!!! or

or rets

if, if @enbl_spO_r, ie

ENBL_INTO, ie

ENBL_GIE, st

clear out all interrupt flage enable receiveO interrupt

enable interrupto

enable global interrupt return to main program

************************************************************

Inicialización del AIC

* Routine to reset and initialize the AIC. It performs the following operations: *

* *

* * - Set up timer O to supply AIC master control

- Reset the AIC - Initialize the serial ports

* - Take AIC out of reset - Set up the AIC

* ************************************************************

• Set up timer O to provide AIC master clock

aic_init: ldi ;OjOOOOOOOOO! ! ! ! ! Vale 1

ldi

* Reset AIC

sti ldi sti

ldi

• Initialize serial ports

ldi ldi sti sti

ldi sti

• Clear transmit register

ldi sti

• Take AIC out of reset

rpts nop

ldi

@tO_ctladdr,arO;get address of timer control reg

2, rl ; 1 tclko will equal 15MHz/2

rl, •+arO(B) ;set the period register to 1 @tO ctlinit, rl ;get timer O setup value rl, •aro ;set timer O to run in pulse mode

2, iof

®pO_addr, aro lllh, rl rl, •+aro (2) rl, •+aro (3)

;set xfO as output, set xfO low

get address of serial port O load port control setup value initialize transmit port control initializa received port control

@pO_global, rl; get port O global cntl setup value rl, •aro ; initialize porto global control

O, rl rl , • +aro (el

99

6, iof

set transmit data to O

wait fer 50 timer out clocks to keep AIC in reset fer sorne period of time

set xfO high to take AIC out of reset

109

TECNOLÓGICO DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

* Set up AIC

call retsu

aic_setup routine to set up the AIC

*******************************************************************

• AIC Setup

Routine to set up the AIC It performs the following operations

- Set sampling rate to 8 KHz • - Set cut-off frequency of antialiasing filter to 3.6 KHz * - Set AIC control reg to disable A/D high pass, disable loopback, select primary analog input, synchonous transmit * and receive, and +/- 3 volts input, and disable * (sin(x)/(x)) D/A correction filter •

The timing of the writes in these sequences must be synchronized to the AIC data transmission. The subrutine •wt_x_flag" serves this purpose

*******************************************************************

• Set up lowpass filter cut-off frequency

aic_setup call ldi sti call

¡**** ldi ldi

sti ldi

i ••••• TB, RB ; * * Cambio 6 septiembre 2004 ; * •••• call ;***** ldi ¡***** sti j ***** call i. *. * * ldi i * ** * '* sti ; ***** ldi

;***** TA, RA call ldi sti call

j *. *. ldi ldi sti ldi

* Set up sampling rate

i ***** call ; ***** ldi ¡***** sti ; ** * * .. call ; • * ••• ldi ;***** sti ; ***** ldi

• Set up AIC control register

call ldi sti

wt_x_flag

3' rl rl, *+arO(B) wt_x_flag 2448h, rl 3e7ch, rl

rl, •+arO(B) •+ar0(12),

wt_x_flag 3, rl

rl

rl, •+arO(B) wt_x_flag 50a2h, rl rl, • +aro ( 8) •+ar0(12), rl

wt_x_flag 3, rl rl, •+arO(B) wt_x_flag 2448h, rl 3e7ch, rl rl, •+arO(B) •+aro (12),

wt_x_flag 3, rl

rl

rl, •+aro (8) wt_x_flag 4892h, rl rl, •+arO(B) •+ar0(12), rl

wt_x_flag 3, rl rl, •+arO(B)

poll for transmit interrup secundary transmission word start a secondary transmission poll for transmit interrupt get counter A setup value get counter A setup value la34h (BK), 2448h (6K) 3468h (4K), 3e7ch (3.36K) 3468h 26 d , 3e7ch 31 d set lowpass filter cut-off freq void read

poll for transmit interrupt

start a secondary transmiss

40 d get counter B setup value set sampling rate void read

;poll for transmit interrup ;secundary transmission word ;start a secondary transmission ;poll for transmit interrupt ; get counter A setup value ;get counter A setup value ;set lowpass filter cut-off freq ;void read

;poll for transmit interrupt

;start a secondary transmission

;get counter B setup value ;set sampling rate ;void read

poll for transmit interrupt

start a secondary transmission

110

~~f' TECNOLÓGICO t\;;.fi' DE MONTERREY.

¡••••• ;***** ;***** ¡***** ;***** ¡***** ;*****

wt_x_flag: wloop:

call ldi sti ldi

call ldi sti call ldi sti ldi

rets

xor tstb bz rets

.end

CANCELACIÓN ACTIVA DE RUIDO

wt_x_flag 023h, rl rl, •+aro (8) •+ar0(12), rl

wt_x_flag 3, rl rl, •+aro (8) wt_x_flag 023h, rl rl, • +aro ( 8 l •+ar0(12), rl

;023h 2a3h get control register setup value setup aic control register void read

poll for transmit interrupt

start a secondary transmission

023h 2a3h get control register setup value setup aic control register void read

if, if ; wait for the transmit int. flag lOh, if; to be set wloop

111

\~r~/ TECNOLÓGICO .. , .. ,,' DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

ANEXO D ARCHIVO DE COMANDOS DE ENLACE (LINKER COMMAND FILE) PARA EL

PROGRAMA ALE130CT.ASM

112

TECNOLÓGICO DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

/******************************************************************/ /• •/ / • Archivo de comandos de enlace • / /• (Linker Command File) para el programa ale13oct.asm •/ /• •/ /• Este archivo enlaza el archivo ale13oct.obj y el archivo •/ /• sysinit.obj para producir el archivo de salida •/ /• ale13oct.out que puede ser cargado y ejecutado en el EVM •/ /• •/ /• 13 Oct 2004 VOl •/ /******************************************************************/

/• archivos de entrada •/

-e start /• etiqueta para el pW1tO de entrada del codigo •/ -o ale13oct.out /* archivo de salida •/ -m ale13oct.map /• archivo mapa •/

sysinit.obj ale13oct.obj

MEMORY /• define memory range •/ {

INT V origin oxoooooooo, SRAM origin Ox00000040,

length Ox40 length Ox3FCO

/• VECTORS IN SRAM •/ /• SRAM MEMORY •/

RAMO origin Ox00809800, length Ox400 /• RAM BLOCK O•/ RAMl origin Ox00809COO, length Ox400 /• RAM BLOCK 1 •/

/• SPECIFY THE SECTIONS ALLOCATION INTO MEMORY •/

SECTIONS {

vectors: {} > INT V /• interrupt vector table •/ comdata: {} > SRAM /• section comdata in SRAM •/ vardeope: {} > SRAM /• variables de operacion del filtro noisegen: {} > SRAM /• datos del generador de ruido •/ .data: {} > SRAM /• section .data in SRAM •/ .text: {} > SRAM /• section .text in SRAM •/ .bss: {} > RAMO /• section .bss in RAMO •/ stack: {} > RAMl /* section stack in RAMl •/

•/

alexnnbuffer align(1024): {} > SRAM /•ALIGN CIRCULAR BUFFER IN RAM 1024*/ alehnnbuffer align(1024): {} > SRAM

;*** hnnfbuffer align(1024): {} > SRAM ;*** xpnnbuffer align(1024): {} > SRAM ;••• ynnbuffer align(1024): {} > SRAM ;••• snnbuffer align(1024): {} > SRAM ;••• snnfbuffer align(1024): {} > SRAM ;••• rnnbuffer align(1024): {} > SRAM

113

··~. r;.._' TECNOLÓGICO . . '.J. DE MONTERREY. CANCELACIÓN ACTIVA DE RUIDO

ANEXO E VERSIÓN FINAL DEL PROGRAMA EN ENSABLADOR PARA LA

CANCELACIÓN ACTIVA DE RUIDO EN EL CUAL SE INCLUYE LA IDENTIFICACIÓN HÍBRIDA DE LA TRAYECTPRIA SECUNDARIA Y EL

GENERADOR DE RUDIO CON AMPLITUD VARIABLE LR3213SN.ASM

114

. ~··:;.

~~t TECNOLÓGICO ,, .. ;f't DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

¡**************************************************************************** • Filtro adaptivo LMS: LR3213sn.asm ••Este programa utiliza la funcion de inicializacion evm_init.asm para inicializar la tarjeta EVM del C30

;•••••········································································ ;*** Valores de inicializacion de la tarjeta EVM del C30 restart:

. global start

. global wait_intr punto de entrada del programa punto de espera de interrupciones

; ••• Símbolos definidos en el programa de inicializacion del sistema "sysinit" .globalevm_init subrutina de inicializacion del EVM .globalreceiveO rutina de la interrupcion .globalpO_addr direccion del puerto serial (serial port O address) .globalstack_addr direccion del stack del sistema (system stack address)

;••• Define la seccion de los datos de entrada, procesamiento y salida .data .sect 11 vardeoper 11

mu . float l.OE-4 smu . float 1.0E-4

ese en . float 150.0 comp . float -0.01 comp_neg . float 1000000.0

lambda . float O. O lambdap . float O. O

dn en enaux xn epn eppn xpn yn ypn yppn

vartemp4 vartemp5 vartempB noiseBooster

. float O. O

.float O.O

. float O. O

. float o. o

. float o. o

.float o.o

. float o. o

.float o.o

.float o.o

. float O. O

. float 1. O

.float 1.0

.float o.o

. float 3. o

promen .float O.O prom .float O.O promxpn .float O.O promyn promyppn promrn sumcuadxn sumcuadyn sumcuadxpn sumcuadrn

liminfxpn liminfyn liminfrn

invcuadyn invcuadxpn invcuadrn

muestrasn longitudn invlongn despn muestrasm longitudm invlongm despm

.float O.O

. float O. O

. float o. o

. float O. O

.float O.O

.float O.O

.float o.o

. float 1. Oe-13

.float 1.0e-10

.float 1.0e-10

.float o.o

. float o. o

.float o.o

. float 512

. set 512

.float o.o

. set 1

. float 512

.set 512

.float o.o

. set 1

coeficiente de adaptacion de w(n) 5.0E-5 / 1.0E-4 coeficiente de adaptacion de s(n) 1.0E-3 / 1.0E-4

escalamiento de la señal de entrada / No utilizado auxiliar de comparacion

; valor de control auxiliar valor de control auxiliar primo

señal auxiliar de entrada señal de error -entrada- (ruido residual) señal de error auxiliar para el calculo del promedio señal dereferencia estimada señal auxiliar de error 1 -calculada, para uso interno­señal auxiliar de error 2 -calculada, para uso interno­señal de referencia filtrada señal inicial de control señal de control secundaria 1 señal de control secundaria 2

variable temporal variable temporal variable temporal variable para controlas la amplitud el generador

valor promedio (valor de DC) de la señal e(n) valor promedio (valor de DC) de la señal x(n)

valor promedio (valor de DC) de la señal x· (n) (xpn) valor promedio (valor de DC) de la señal y(n) valor promedio (valor de DC) de la señal ypp(n) valor promedio (valor de DC) de la señal r(n) suma de las valores cuadrados de x(n) suma de las valores cuadrados de y(n) suma de las valores cuadrados de xp(n) suma de las valores cuadrados de r(n)

limite inferior del valor de xn2 1.0e-8 / l.Oe-6 limite inferior del valor de yn2 1.0e-12 limite inferior del valor de rn2 1.0e-4

inverso de sumcuadyn, 1/ sumcuadyn inverso de sumcuadxpn, 1/ sumcuadxpn inverso de sumcuadrn, 1/ sumcuadrn

número de muestras por ciclo/ 300 longitud N del filtro adaptivo / 300 inverso de la longitudn, 1/longitudn desplazamiento de los coef de W(z) / 2 número de muestrasm por ciclo/ 600 longitud M del filtro adaptivo / 600 inverso de la longitudm, 1/longitudm desplazamiento de los coef de S(z)

;•• Define la seccion de las muestras de la señal de ruido XIU1 . usect "xnnbuffer", longitudm; esp. de mem de xn -pose de x (N-1) -xnnlad .word xnn ; 200h xnn direccion de la muestra x(N-1)

115

l~',j.f TECNOLÓGICO ~\.;f/,c DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

;** Define la seccion de las muestras filtradas de la señal de ruido xpnn .usect "xpnnbuffer", longitudm ; esp. de mem de xpn -pose de xp(N-1)-xpnnlad . word xpnn ; 300h xpnn di rece ion de la muestra xp (N-1 l

;** Define la seccion de las muestras de la señal de control ynn .usect "ynnbuffer", longitudm ; esp. de mem de yn -pose de y(M-1) -ynnlad . word ynn 400h xnn direccion de la muestra y (M-1)

;** Define la seccion de los coeficientes del filtro adaptivo hnn .usect "hnnbuffer", longitudm esp de mem de hn -pose de h(N-1) hnnlad .word hnn ; 500h hnn direccion del coef w(N-1)

;** Define la seccion de los coeficientes de la trayectoria secW1daria snn .usect "snnbuffer", longitudm ; esp de mem de sn -pose de s(M-1) snnlad .word snn 600h snnf direccion del coef s(M-1)

;** Define la seccion de las muestras de la señal de ruido blanco rnn ,usect "rnnbuffer", longitudm esp. de mem de rn -pose de r(M-1) -rnnlad ,word rnn ; 700h xnn direccion de la muestra r(M-1)

;** Define la seccion de las muestras de la señal de control filtrada yppnn .usect "yppnnbuffer", longitudm esp. de mem de yn -pose de yppn(M-1) -yppnnlad .word yppnn ; 400h xnn direccion de la muestra yppn(M-1)

;*** Valores de inicializacion de los generadores de ruido 1 y 2 .sect 11 noisegen 11

seedl .set 12357 12357 semilla para el generador de ruido blanco seed2 .set o o semilla para el generador de ruido blanco 2 wnoisel .int o limpia la memoria del ruido blanco 1 (WNl) wnoise2 .int o limpia la memoria del ruido blanco 2 (WN2) mOS . float 0.5 constante igual 0,5 wnO .float o.o señal de salida o del ruido blanco 1 wn20 . float o.o señal de salida o del ruido blanco 2 wnl . float o.o señal de salida 1 del ruido blanco wn2 . float o.o señal de salida 2 del ruido blanco wn3 . float o.o señal de salida 3 del ruido blanco wn4 . float o.o señal de salida 4 del ruido blanco wnS . float o.o señal de salida 5 del ruido blanco wn6 . float o.o señal de salida 6 del ruido blanco s03 . float 0.3 factor de escalamiento 0.3 s2045 .int 2045 factor de escalamiento 2045 sl048576 . float 9.5367432e-7 factor de escalamiento 1/1048576 ssl048576 .int 1048576; factor de escalamiento 1048576 sl048577 . float 9.536734le-7 factor de escalamiento 1/1048577 amplificacion . float 100.0 amplificacion de la señal de ruido amplificacion2 . float so.o amplificacion 2 la señal de ruido amplificacion3 .float 2.0 amplificacion 3 la señal de ruido (100)

;***************** Operacion de los filtros adaptivos ************************* .text Operacion del filtro adaptivo

;*** Primero inicializa el sistema start: ldi @stack_addr, sp

call evm init carga el stack pointer en el sp

rutina para inicializar el EVM

;*** Inicializa las variables globales del filtro FIR ldi @pO_addr, ar7 get port address

ldi sti ldi sti

seed2, r4 r4, @wnoise2 seedl, r4 r4, @wnoisel

carga la semilla r4 - > wnoise2 carga la semilla r4 - > wnoisel

del generador 2 de

del generador 1 de

ldi ldi

despn, irO carga el apuntador con el desp de N longitudn, irl carga el apuntador con N

ruido

ruido

blanco

blanco

BK = longitudm -longitud del buffer circular­Inicializa ro= o

1

en

en

ldi ldf ldi

longitudm, bk o.o, ro @hnnlad, aro dir del coeficientes h(N-1) aro (400h) (Dir inic

fija)

fija)

ldi ldi ldi ldi

@xnnlad, arl @xpnnlad, ar2 @ynnlad, ar3 @snnlad, ar4

dir de los valores x(N-1) = arl (200h) dir de los valores xp(N-1) = ar2 (600h) dir de los valores y(N-1)= ar3 (800h) dir del coeficientes s(M-1) = ar4 (AOOh) (Dir inic

ldi @rnnlad, arS dir de los valores r(M-1) = ars (COOh) ldi @yppnnlad, ar6; dir de los valores yppn(N-1) / en(N-1) = ar6 (800h)

r4

r4

116

f··c.:

l~~t TECNOLÓGICO r,,;f, DE MONTERREY.

rpts nop

CANCELACIÓN ACTIVA DE RUIDO

3 ejecuta las sig 2 instrucciones 4 veces

ldi longitudm - 1, RC ; carga el contador con la longitud del filtro

ceros

rptb stf stf stf stf stf stf stf

rpts stf nop rpts stf nop rpts stf nop rpts stf nop rpts stf nop rpts stf nop rpts stf nop

mpyf3 nop mpyf3 nop mpyf3 nop mpyf3 nop mpyf3 nop

ceros ro' •aro++% ro,•ar1++% r0,*ar2++% ro,•ar3++% r0,*ar4++% ro,•ars++% r0,*ar6++%

longitudm - 1 r0,*ar0++%

longitudm - 1 ro,•ar1++%

longitudm - 1 r0,*ar2++%

longitudm - 1 ro,•ar3++%

longitudm - 1 ro, •ar4++%

longitudm - 1 r0,*ar5++%

longitudm - 1 r0,*ar6++%

ro,•arl--%, ro ;

ro,•ar2-- (ir0)%,

ro, • ar3 - - % , ro

ro, •arS--%, ro

rO,*ar6--%, ro

este bloque se repetira M veces Inicializa los coeficientes de 1m a O (fijo) Inicializa los valores de xn a O (movil) Inicializa Inicializa Inicializa Inicializa Inicializa

los los los los los

valores de xpn a O (movil) valores de yn a O (movil)

coeficientes de sn a O (fijo) valores de rn a O (movil) valores de yppn / en a O (movil)

ejecuta las sig 2 instrucciones M veces Inicializa los coeficientes de 1m a O (fijo)

ejecuta las sig 2 instrucciones M veces Inicializa los valores de xn a O (movil)

ejecuta las sig 2 instrucciones M veces Inicializa los valores de xpn a O (movil)

ejecuta las sig 2 instrucciones M veces Inicializa los valores de yn a O (movil)

ejecuta las sig 2 instrucciones M veces Inicializa los coeficientes de sn a O (fijo)

ejecuta las sig 2 instrucciones M veces Inicializa los valores de rn a O (movil)

ejecuta las sig 2 instrucciones M veces Inicializa los valores de yppn a O (movil)

apunta a la localidad inicial de xn [x(O)]

rO; apunta a la localidad inicial de xpn

apunta a la localidad inicial de yn [y (O)]

apunta a la localidad inicial de rn [r (O)]

[xp(O)]

apunta a la localidad inicial de yppn [y (O)

;***************** Invierte el valor de longitud.n y longitudm ************************ @muestrasn, ro guarda el valor de muestrasn en ro ldf

call stf rpts nop ldf

ldf call stf rpts nop ldi

inv f ro, @invlongn 3

o.o. ro

@muestrasm, rO inv f ro, @invlongm 3

O, r4

invierte el valor guarda el valor de 1/muestrasn en invlongn ejecuta las sig 2 instrucciones 4 veces

extra, no borrar

guarda el valor de muestrasm en ro invierte el valor guarda el valor de 1/muestrasm en invlongm ejecuta las sig 2 instrucciones 4 veces

Inicializa r4 o

;*** Loop de espera para que ocurra la interrupcion wait intr: idle estado de espera para que ocurra la interrupcion

br wait intr

;***************** Rutina de servicio de la interrupción************************

; *. * receiveO:

Efectua la lectura de la señal de error (ruido residual)

ldi rpts nop

• +ar7 ( 12) , r4 4

efectua la lectura de e(n) ejecuta las sig 2 instrucciones 4 veces

;*** Convierte del formato xxxxxxxxxxxxxxxxxOO a un formato normal de 14 bits de signo extendido

lsh ash

16, r4 -18, r4

mueve los 14 bits al limite del msb mueve los 14 bits al lsb

117

.,.1"'"""'· . ~o/! TECNOLÓGICO ~~ OE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

float call

r4, r4 cancelacion

convierte a flotante el valor

;** Salida de la señal de control/ Convierte al formato xxxxxxxxxxxxxxxxxOO / Escribe la palabra convertida al convertidor D/A

fix r4, r4 convierte el valor de r4 (yn) a entero lsh 2, r4 corre a la izquierda dos bits el valor de r4

;••

sti r4,*+ar7(8) escribe el valor de la sñl de ctrl al convertidor D/A

reti regreso de la interrupcion

;*** Procesamiento inicial de la señal de error/ escalamiento de la señal de error/ ;*** reducción del valor de DC cancelacion:

;******Inica ;******Inicia

nop modifiacion del programa para que trabaje en subrutinas proceso de identificacion hibrida de la trayectoria secundaria stf r5, @vartemp4 ldf O, r5 ldf @vartemp5, r5 cmpf 250, r5 ble saltarestart

limpio r5 cargo el contador vartemp5=1 compara r5 con 250 si 10 es mayor que r5 brinca

en r5

a ''saltarestart 11

ldf 252 , r5 POR CUALQUIER COSA, ESTO ES LO QUE CAMBIAMOS ¡*****Noise Booster•••••••••••••••••••••••••••••••••••

saltarestart :

convolucion_sr :

stf r4, @vartemp8 ldf O, r4 ldf 2.2, r4 stf r4, @noiseBooster ldf O, r4 ldf @vartemp8, r4

call convolucion_sr call generar_y call generar_x call generar_r

ldf l. O, r5 addf @vartemp5, r5 stf r5, @vartemp5 ldf O, r5 ldf @vartemp4, r5

call nlms s call fxlms call ojo

retsu

se almacena el valor original en una var temporal limpio r4 se regresa el valor original del ruido se almacena ese valor en su var correspondiente se limpia el registro para la pila regreso r4 a su valor original

incremento de vartemp5

regreso r5 a su valor original

;* Procesamiento de la señal de ruido con el filtro adaptivo secundario (generacion de la ;• señal estimada de ruido ypn (y'(nl)l •••••••

11

ldf O.O, r2 rpts longitudm - 1 mpyf3 •ar4++\, •ar5++\, ro addf3 ro, r2, r2 addf3 ro, r2, r2 rnd r2

limpía el registro r2 (r2 = O) ejecuta las sig 2 instrucciones M veces s (M-1-i) •rn(n- (M-1-i)), i=O, . . . , M-1 suma de multiplicaciones suma el ultimo producto r2 = yn (y(n))

stf nop retsu

r2, @ypn guarda la sñl de ctrl presente en ypn (ypn=y'n)=re' (n))

generar_y: ;*** Procesamiento de la señal de referencia x(n) con el filtro adaptivo (generacion de ·*** la señal de control yn)

11

ldf O. O, r2 mpyf3 r2,*arl--(irl)\, r2 ; operacion falsa, reapunta a la localidad

rpts mpyf3 addf3 addf3 subf

nop rnd

longitudn - 1 •arO++(irO)\, ro, r2, r2 ro, r2, r2 @promyn, r2

r2

; de xn(N-1) ; ejecuta las sig 2 instrucciones N veces

•arl++\, rO; wnl (N-1-i) •xn(n- (N-1-i) J, i=O, ... , N-1 ; suma de multiplicaciones ; suma el ultimo producto r2 = yn(nJ

le resta valor de DC de yn a la entrada, r4 =r4 -; Vdc_y(nJ

118

~ TECNOLÓGICO ,~1 DE MONTERREY. CANCELACIÓN ACTIVA DE RUIDO

-------------------------------------------------------- ...

generar_x:

stf nop ldf retsu

r2, @yn

o. o, ro

guarda la señal de control presente en yn

Extra, no borrar

;*** Generacion de las señales de error de r(n) y de x(n), así como de la señal de referencia ***

addf

mpyf rnd stf

@ypn, r4

1.0, r4 r4 r4, @epn

r4, r6 r6, @eppn

@epn, r4 @yppn, r2 1.0, r2

; calcula el valor de epn, r4=e'(n)=e(n)+ ;y' (n) [y' (n) =re' (n)]

escalamiento de la señal de e'(n) / 0.5

store value de epn calculado [e'(n)=d(n)-y' (n)­r' (n) +re' (n) l

r6 =-r4=eppn=-epn [e'' (n) =r' (n) -re' (n) + y' (n- (nl] almacena eppn

carga el valor de epn en r4 (EXTRA) / original sñl de ref estx(n) (r2 = epn+yppn=xn(O) [n]) escala el valor de ypp(n)=y''(n) / -1.0 / original

nop negf stf nop ldf ldf mpyf addf r2, r4 ; se genera la señal de referencia estimada x(n) ; (r4=

epn + yppn = xn(O) [nl) / original rnd r4

;*** Suma de la señal de ruido ;**** La inyección de ruido le

mpyf 1. O, r4

; yppn = y'' (n) = ye' (n)

a la señal de referencia estimada/ valor original de r(n) agrega estabilidad al sistema

; modifica el valor de la señal de referencia ; estimada/ 0.05 / 0.5

stf r4, @xn ; almacena la señal de referencia estimada x(n); ;x(n) =d(n) - y' (n) + ye' (n) - r' (n) + re' (n)

generar_r

nop call

nop retsu

ruidol ; genera una nueva muestra de ruido blanco 1 ; esta rutina utiliza ro y rl, en ro regresa el ; valor de rl(n)

;* Esta parte obtiene el valor promedio r(n) y obtiene su valor promedio)

de r(n) (suma las muestras de la señal de ruido ;*

ldf o. o, ro ldf @wn2, r2

•arS, •arS, rl

•ar5, ro r2, rl

El valor debe de ser @wnl rn(M-1) [n-1] 0 2 ro (operacion adelantada) rl = r2 - •ar5 = rn(O) [n] - rn(M-1) [n-1]

mpyf3 subf3 rnd stf r2, *ar5++%; se guarda la muestra presente de rn (rn(O)) [n] y

mpyf addf rnd stf

@invlongm, rl @promrn, rl rl rl, @promrn

; adelanta el contador a rn (M-1) [n] rl (1/longitudm) * [rn(O) [n] - rn(M-1) [n-1] J

rl = prom_ant_r(n) + rl = prom_nue_r(n)

guarda el promedio nuevo de r(n)

;* Esta parte suma el cuadrado de las muestras de la sñl r(n) y obtiene el valor inverso;* de la suma

nlms s:

mpyf3 subf3 addf stf addf

call

nop

r2, r2, r2 ro, r2, ro @sumcuadrn, ro ro, @sumcuadrn @liminfrn, ro

inv f

rn(O) [n] ·2 ro = rn(O) [n] ·2 - rn(M-1) [n-1] ·2 = r2 - ro ro= cuadrn_ant r(n) +ro= cuadrn_nue r(nl guarda la nueva suma de valores cuadrados ro= suma de rn's"2 + liminfrn, suma de una cte

; para evitar la division entre cero ; invierte el valor, ro= 1/(suma de rn's"2 + ; liminfrn)

; esta rutina usa rl, r2 y r3, regresa en ro el ; resultado

stf ro, @invcuadrn; guarda la suma de valores cuadrados nop retsu

;••••·············· Adaptacion de los valores del filtro secundario s(n)***************** ldf mpyf mpyf

@eppn, r6 carga eppn en r6 @smu, r6 r6 = smu * eppn @invcuadrn, r6 ro = invcuadrn = 1/(suma de rn'sº2 + liminfrn)

Esta parte normaliza el algoritmo r6 = rO•smu*eppn=mu•eppn*l/(suma de

; rn'sº2+liminfrn) ldi longitudm - 1, RC; carga el contador con la longitud del filtro

119

rptb mpyf3

addf3

rnd tsadaptada stf

nop retsu

CANCELACIÓN ACTIVA DE RUIDO

tsadaptada *ar5++%, r6,

•ar4, r2, r2

r2 r2,•ar4++%

r2;

secundario (M Coef) este bloque se repetira M veces r2; r(M-1-i) •smu • eppn • 1/(suma de rn'sA2 + liminfrn) r2; s(n+l) ; sn + rn(M-1-i)•smu•eppn•l/(sum de rn'sA2 + liminfrn)

se almacena el nuevo sn (s(n+l))

fxlms: ;*************************************************************************************** ; . • Esta es la función de cancelación del algoritmo FXLMS ;*************************************************************************************** ;••••••••••••••••• Esta parte obtiene la suma del cuadrado de las muestras de x(n)••••••

ldf @xn, r2 carga la señal de referencia estimada x (n) en r2 mpyf3 r2, r2, ro operacion adelantada xn(O)A2 mpyf3 •arl, •arl, rl operacion adelantada x(N-1) [n-1] subf3 rl, ro, ro ro ; xn(O) [n] A2 - xn(N-1) [n-1] ·2 ro - rl addf @sumcuadxn, ro ro ; cuad ant x(n) + [xn(O) [n] A2 - xn(N-1) [n-

rnd stf nop ldf

ro ro, @sumcuadxn

o.o, ro

1] A2] ; ~uad_::-nuevo_x(n)

guarda nueva suma de valores cuadrados de xn Nuevo extra, no borrar

;•••••••••••••••••• Esta parte suma las muestras de la señal x(n) y obtiene su valor promedio subf3 •arl, r2, rl rl ; r2 - •arl ; x(O) [n] x(N-1) [n-1]

agrega el ruido blanco rnl a la señal de referencia estimada

stf

nop mpyf addf stf nop

r2, •ar1++%

@invlongm, rl @prom, rl rl, @prom

guarda la muestra presente de xn(x(O[n]) adelanta el contador a x(N-1) [n]

rl ; (1/longitudm) • [x(O) - x(N-1) J rl; prom_ant_x(n) + rl ; prom_nuevo_x(n) guarda el promedio nuevo de x(n) Nuevo

y

;***************** Generación de la O.O, r2 longitudm - 1

señal de referencia filtrada xp(n) (x' (n))

11

ldf rpts mpyf3 addf3 addf3

•ar4++\, •ar1++%, ro, r2, r2 ro, r2, r2

rnd r2

ro

nop Nuevo

r2; O ejecuta las sig 2 instrucciones M veces s(M-1-i) •x(n-(M-1-i)), i;Q, ... , M-1 suma de multiplicaciones suma el ultimo producto r2 ; xpn (xp(n))

;•••••••••••••••••• Esta parte suma las muestras de la señal x' (n) (xpn) y obtiene su valor promedio

subf3 mpyf addf stf rpts nop subf

stf nop

•ar2, r2, rl @invlongn, rl @promxpn, rl rl, @promxpn 3

@promxpn, r2

r2, @xpn

rl r2 - •arl ; x' (O) [n] - x' (N-1) [n-1] rl (1/longitudn) • [x' (O) - x' (N-1) J

rl prom_ant_x' (n) + rl; prom_nuevo_x'(n) guarda el promedio nuevo de x' (n) ejecuta las sig 2 instrucciones 4 veces Nuevo le resta en valor de DC a la entrada,

; Vdc_x· (n) r4 ; r4 -

guarda la señal de ref filtrada actual en x'n ; Nuevo

;••• Esta parte suma el cuadrado de las muestras de la señal y obtiene el valor inverso ;••• de la suma de la xpn *********

ojo:

; * * *

mpyf3 •ar2, •ar2, ro ; xpn(N-1) [n-1] ·2 operacion adelantada retsu

OJO: 16 - 08 2006 esta parte permite una convergencia mas veloz OJO!!! mpyf 1.45, r2 Valor natural de control 5.0 / multiplica a x'(n) rnd r2 ldf @wnO, rl mpyf 1.0, rl addf rl, r2 mpyf 1. O, r2 rnd r2

Valor natural de control: wnO Valor natural de control 5.0

Valor natural de control/ 10.0 / 5.0

stf r2, •ar2++(ir0)%; guarda la muestra presente de xpn (xp(O)) adelanta el contador a xp(N-1) [n]

rpts 3 ; ejecuta las sig 2 instrucciones 4 veces

[n] y

120

nop mpyf3 subf3 addf

stf rpts nop addf

call

stf

rpts nop

CANCELACIÓN ACTIVA DE RUIDO

r2, r2, r2 ro, r2, ro @sumcuadxpn, rO;

ro, @sumcuadxpn; 3

@liminfxpn, ro

Nuevo xpn(O) [n] Á2 ro = xpn(O) [nl Á2 - xpn(N-1) [n-1] Á2 r2 - ro ro= cuad_ant_xp(n) + [xpn(O)[n]Á2 - xpn(N-1) [n-l]Á2] = cuad_nuevo_xp(n) guarda la nueva suma de valores cuad de xpn ejecuta las sig 2 instrucciones 4 veces Nuevo ro= suma de xpn'sÁ2 + liminfxpn / para evitar div entre cero

inv f invierte el valor, ro= 1/(suma de xpn'sÁ2 + liminfxpn)

ro, @invcuadxpn; guarda el valor de 1/(suma de xpn'sÁ2 + liminfxpn)

3 ejecuta las sig 2 instrucciones 4 veces ; Nuevo

;•***************** Nuevos algoritmos************************************** o.o, ro ldf

¡****************** Adaptacion de los valores del filtro adaptivo primario W(z) (H (z) ••

tpadaptada

ldf mpyf mpyf

ldi rptb mpyf3

addf3

rnd stf rpts

@epn, r4 ; se carga el valor de ep(n) en r4, r4 = epn @mu, r4 r4 = mu • epn @invcuadxpn, r4; r4 = (mu• en) /(suma de xpn'sÁ2 + liminfxpn)

/ Normalizacion del valo longitudn - 1, RC; carga el contador con la longitud del filtro tpadaptada ; este bloque se repetira N veces •ar2++(ir0)%, r4, r2 ; r2 = xpn(n-1-i) •mu• epn • 1/(suma de

; xpn'sÁ2 + liminfxpn) •aro, r2, r2 r2 wnl(n+l) = wnl +mu• epn • xpn(n-1-i)

r2 r2, •arO++(irO)\ 3

• 1/(suma de xpn'sÁ2 + liminfxpn)

se almacena el nuevo wnl(n+l) ejecuta las sig 2 instrucciones 4 veces

nop Nuevo

;•••••••••••••••••• Esta parte obtiene el cuadrado de las muestras de y(n) y su valor ;****************** inverso

ldf mpyf3 mpyf3 subf3 addf

stf addf call

nop stf

nop

@yn, r2 r2, r2, ro •ar3, •ar3, rl rl, ro, ro @sumcuadyn, ro

ro, @sumcuadyn @liminfyn, ro inv_f

ro, @invcuadyn

carga y(n) en r2 operacion adelantada yn(O)Á2 operacion adelantada y(N-1) [n-1] ro= yn(O) [n]Á2 - yn(N-1) [n-l]Á2 ro - rl

ro = cuad_ant_y (n) + [yn (O) [nl Á2 - yn (N-1) [n-; l]Á2] = cuad_nuevo_y(n)

guarda la nueva suma de valores cuad de y(n) ; ro= suma de yn'sÁ2 + liminfyn ; invierte el valor, rO= 1/(suma de yn'sÁ2 + ; liminfyn)

; Nuevo ; guarda el valor de 1/(suma de yn·sA2 + ; liminfyn)

; Nuevo ;***************** ¡*****************

Esta parte promedio•

@yn, r2 o.o, ro

suma las muestras de la señal y(n) y obtiene su valor

ldf ldf subf3 stf

nop mpyf addf rnd stf nop

¡****************** mpyf ldf nop mpyf addf mpyf

•ar3, r2, ro r2, •ar3++%

@invlongm, ro ®promyn, ro ro ro, ®promyn

carga y(n) en r2 limpia el registro ro rl = r2 - •arl = y(O) [n] - y(N-1) [n-1] guarda la muestra presente de yn (y(O) [n])

; adelanta el contador a y(N-1) [n]

ro (1/longitudm) • [y(O) - y(N-1) J rl prom_ant_y(n) + rl = prom_nuevo_y(n)

guarda el promedio nuevo de y(n)

y

Procesamiento de la señal de salida (y(n) + r(n), escaladas) •••••• 1.0, r2; modifica el valor de la señal de control y(n) 0.05 / 0.5 @wn2, r4; el valor del ruido blanco debe de ser igual a wnl

0.5, r4 r4, r2

l. o' r

cambio 14 junio 2006 adiciona el valor de r(n) a y(n) modifica el valor de la señal de salida

; y(n) + r(n) (0.05) ;••• Este parametro permite cancelar abajo de los 200 Hz

negf r2, r4 ; copia el valor neg de yn a r4 para sacarlo al A/D ;••••••••••••••••• Generación de la señal de control filtrada (y'(n) estimada) ••••••••

ldf O. O, r2 rpts longitudm - 1 ; ejecuta las sig 2 instrucciones M veces

121

-:w~t TECNOLÓGICO ,:,,,,,,•'' DE MONTERREY.

mpyf3

11 addf3 addf3 rnd stf nop

CANCELACIÓN ACTIVA DE RUIDO

*ar4++%, •ar3++%, ro, r2, r2 ro, r2, r2 r2 r2, @yppn

ro sn(M-1-i) •yn(n- (M-1-i)), hO, ... , M-1 suma de multiplicaciones suma el ultimo producto

guarda sñl de ref filtrada actual en yppn Nuevo

;••••••••••••••••• Esta parte suma las muestras de la señal e(n) y obtiene su valor ;***************** promedio•

ldf @en, r2 subf3 stf

nop mpyf addf stf nop retsu

•ar6, r2, rl ; rl = r2 - •ar6 = en(O) [n] - en(M-1) [n-1] r2, •ar6++% ; se guarda la muestra presente de yppn (yppn(O)) [n]

; y adelanta el contador a yppn (M-1) [n] Nuevo

@invlongm, rl rl = (1/longitudm) • [en(O) [n] - en(M-1) [n-1]] @promen, rl rl = prom_ant_e(n) + rl = prom_nue_e(n) rl, @promen guarda el promedio nuevo de e(n)

Nuevo retorno de subrutina/ termina la operacion del

; filtro adaptivo

;**************************************************************************** ;*** Subrutina de inversion de un numero flotante ;••• El numero diva invertir debe de estar almacenado en rO; despues de esta subrutina, ;••• 1/div estara almacenado en rO. ;*** Secuencia de llamado de la subrutina: ;*** ldf v, ro ;*** call inv f ;*** Asignacion de argumentos: ;*** argumento! funcion ;*** ------------+------------------;••• RO I v = numero a dividir (antes de la subrutina) ;••• RO 1 1/v (despues de la subrutina) ;**************************************************************************** inv f: ldf

ldf absf

O.O, rl ro, r3 ro

;••• Extrae el exponente de v. pushf ro pop rl

rl = O ves guardado para su uso posterior el algoritmo usa v = lvl.

ash -24, rl ; Los 8 LSBs de rl contienen el exponente de v. ;••• A few comments on boundary conditions. If e= -128, then v = O, The following x[O] ;••• calculation yields Rl = --128 - 1 = 127 ;*** and the algorithm will overflow and saturate since x[O] is large, This seems reasonable, ;••• If e= 127, the Rl to yield

-127 - 1 -128. Thus x(O] = O and this will cause the algorithm

;*** zero. ;••• Since the mantissa of vis always between 1 and 2, this is also reasonable. As a resul t, ;••• boundary conditions arehandled automatically in a reasonable fashion. ;*** x[O] formation given the exponent of v.

negi rl subi 1, rl ash 24, rl push rl popf rl

; * •• Comienzan las iteraciones mpyf rl, ro, r2 subrf 2.0, r2 mpyf r2, rl

mpyf rl, ro, r2 subrf 2.0, r2 mpyf r2, rl

mpyf rl, ro, r2 subrf 2.0, r2 mpyf r2, rl

mpyf rl, ro, r2 subrf 2. O, r2 mpyf r2, rl rnd rl

;Now we have -e-1, the exponent of x [O].

;Now rl = x[O] = 1.0 • 2•• (-e-1).

; r2 = V . X [O] r2 2.0 - V • X [O] rl X [l] = X [O] . (2. O

; r2 = V . X [l] r2 2.0 - V . X [l] rl X [2] = X [l] . (2. O

; r2 = V • x[2] r2 2.0 - V . X [2] rl X [3] = X [2] . (2. O

; r2 = V * X [3] r2 = 2.0 - v • x[3]

- V • X [0])

- V . X [l])

- V • X [2])

rl = x[4] = x[3] • (2.0 - v • x[3]) This minimizes error in the LSBs.

;*** Para la ultima iteracion utilizamos la siguiente formula: ;••• x[S] = (x[4] • (1.0 - (v • x[4]))) + x[4]

122

TECNOLÓGICO DE MONTERREY.

mpyf subrf mpyf addf rnd

rl, 1.0, rl, r2, rl,

CANCELACIÓN ACTIVA DE RUIDO

ro, r2

r2 rl ro

r2 r2 v • x(4] = 1.0 .. 01 .. => 1 r2 1.0 - v • x[4] = O.O .. 01 ... => O r2 X [ 4] * ( l. 0 - V * X [ 4] ) r2 x[5] = (x(4]*(1.0-(v•x(4])))+x[4] Round since this is follow by a MPYF

j * * * Aqui se maneja el caso de V < o negf ldf ldfn

retsu

ro, r3, r2,

r2 r3 ro

este comando reestablece las banderas de condicion Si v < o, entonces ro= -ro

retorno de subrutina

;***************************************************************************** i •• * ; *. * ; * * * ; * * * i * ••

Generador 1 de ruido blanco I(n) = 2045 • I(n-1) + 1 I (n) = I (n) - INT [I (n) /1048576] * 1048576 rl(n) = FLOAT[I(n)+l] / 1048577 rl (n) = rl (n) - O. 5

;*** donde el valor inicial de I(O) es seed [ I(O) = seed] ;**************************************************************************** ruidol: ldi

mpyi addi ldi float mpyf fix mpyi subi sti addi float mpyf

mpyf

@wnoisel, ro @s2045, ro 1, ro ro, rl rl, rl @s1048576, rl rl, rl @ssl048576, rl rl, ro ro, @wnoisel 1, ro ro, ro @sl048577, ro

@amplificacion2,

r (n-1) -> ro 2045 •ro-> ro ro + 1 - > ro ro -> rl convierte rl a punto flotante rl • (1/1048576) -> rl convierte rl a entero rl • 1048576 -> rl ro - rl - > ro guarda el nuevo valor de I(n) para la nueva iter ro+ 1 -> ro convierte ro a punto flotante ro • (1/1048577) -> ro

ro ; escala hacia arriba rl (n) subf @promrn, ro le resta en valor de DC de r(n) a ro, ro

almacena rl(n) en wnl ro - Vdc rn

stf ldf mpyf stf

ldf mpyf mpyf stf mpyf stf mpyf stf

retsu .end

ro, @wnl ro, rl 0.06, rl rl, @wnO

ro, rl l. 5, rl @noiseBooster, rl rl, @wn2 @amplificacion2, rl rl, @wn3 @amplificacion3, rl rl, @wn4

0.06 para 1.5 almacena rl(n) en wnO

almacena ro en rl para manipular el valor escala hacia arriba ORIGINAL escala hacia arriba rlp(n) (2) almacena rlp(n) en wn2 escala hacia arriba rlp (n) ( 50) almacena rlp(n) en wn3 escala hacia arriba rlp(n) (200) almacena rlp(n) en wn4

retorno de subrutina

123

\~t~? TECNOLÓGICO .,.,,/' DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

ANEXO F ARTICULOS DE INVESTIGACIÓN REDACTADOS PARA SU PUBLICACIÓN

124

~r~r TECNOLÓGICO :.,_">" DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

F'.~ F' E F.·

hnproved feedback ANC sys1:em with dynamic nmced on·line secondm.y pathidentificati.on

sllllUllalY This paper is about. the implemenution of m active rioise cmcellú.ion (ANC) system tbr acoustic riois e using Noi::m,ili:¡ed Filtered- X Least Me m Sqw:re with rioise add:ition (NFJa. MS­NA) ugorithm with dynamic m.ixed an-line seconduy pdh iderttiñc dion. l. is briefl:y described feedfo:rward md feedbacll ANC syrums in order to mtderstmd how dynm::dc m.ixed an-line s ecanduy pdh iderttiñc dion W'Olils. Due the ANC system uses dynamic m.ixed s ecanduy pdh iderttiñc dion, better rerults were obtuned.

KeJJ woras: .&ti-ve Jlhiu Control (ANC') adapti-ve aJgoritfms, ffflilxK k.ANC' s,stems, Af7rmalized Filured X IMS aJgoritfm with nois e addition (NFXIMS-NA). ffflforwal'd ANC' s,stems, ad:!pti-ve signtll ¡»'OCessirig fee(R)(K k ANC' s,stems, on-line se.:onda)I path idmti,fi.:ation. ~mi.: miwi~~i,j'fration

l. lntrocluctim

The a.c:twe mise cancella.tion (ANC) uwolves electro a.c:oustic or electro mechanic systems tha.t cancel the prirnazy noise base d on the ruperposition principle; in fa.et, a "pseudo-noise" is genera.ted with sa.m.e amplitud.e but with contrary phase of the origi:na.l noise to be cancelle d in a specifi.c a.rea ( quiet 2>:1ne); the ANC a.ttenua.tes low frequency noise where passive systems rerult to be no efii.cient ai a.U. The am.ount of cancelled noise depends on the amplitud.e a.nd phase of the comrol sig:na.l genera.ted; a more complete discussion of the principles of ANC can be found in [l]-[5]. In the digital sig:na.l processing field, there are two basic types which a.llow to implemems ANC systems, feedfotwa.rd a.nd fee dba.c:k ANC systems, which a.re show in the blocks dia.gra.ms of figures 1 a.nd 2; in both systems, a digital filter coeffJ.Cie:ms vector is a.djusted to minimi2lE! an enor signa.l, which is staied as the noise sig:na.l minus the oom rol s ig:na.l. A basic feedfotwa.rd ANC system has two sensors: one picks up the prima.ry noise ( a.lso ca.lled the reference sig:na.l). The second sensor receives a.nd retums the error sig:na.l to the filter ofthe system. A feedback ANC system has cmly the error sensor and its sig:na.l -e(n)- is used to reconstru.ct the reference sig:na.l. This ANC system cmly can estimaie the sig:na.l presem ai

the enor sensor a.nd, this system is most effective to cancel f:,ut na.now-ba.nd low-frequency noises [2], [.3], [5].

Adwp1iY" '4, _____ ...i

. ~orilhm !

. ~ !_:JJ~. f~~!N°C syrtal\

'.'t.oi~ d(nl

lnlil'rHI :.:fdáplhé ,(ni n- NTncl' fillll'r_ vr(n_l C onlro MJHI i(n ~&nlll

Adiapll\r -~i!bn•_----+---•

+ + '------------!

: Fieure 2: Buu feeilbuk A.NC syrt4:1'1\

In both cases, a.da.ptive a.lgorithms a.re genera.lly used to estima.te the filter coeffJ.Cie:ms thai a.re modeling thai sig:nals. In the digital signal processing field, there a.re severa.! a.da.ptive a.lgorithm.s thai a.llow to implemems ANC systems [l] - [5]; however, the least mean squa.re (LMS) type a.lgorithm origina.lly proposed by Widrow [l] is the most popular in ANC systems for its simplicity. This a.lgorithm a.djusts the coeffJ.Cie:t:lts of a digital filter in order to minimi2lE! the sig:na.l presem ai the enor sensor. However, in a real a.pplicaiion, it is necessary to krow the pa.th f10m the digital filter to the enor sensor beca:use this pa.th could cha.nge the comrol sig:na.l. The basic ANC a.lgorithm which oonsiders the effects ofthis paih (usua.lly ca.lled the secondary-pa.th, S(z)) is the Filtered-X LMS (FXLM S) a.lgoritl:un, in which the reference sig:na.l is filtered by a filter modeling the secondary-pa.th a.nd then is used by the LMS a.lgorithm to estimaie the prima.ry paih model [2]-[5]. Typica.lly, the secondary paih is estimaied using off-line modeling a.nd then used in the ANC system; however, if the secondary-paih is time-varying, it is

125

\¡1it~f TECNOLÓGICO ,,,,,,,J· DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

desirable to estim.ate tlw path on-line in order to asru.re the stability and co:rwergence ofthe ada.ptive fi1ter. In tlw paper, we present the implernerdafon of a FXLMS­N A feedback system in a TMS320C30 DSP system with mixed on-line secondary path id.entification; we provide some experimemal re:rults of tlw ANC system in a real environmem. The system ora_, uses one input and one output in order to avoid the imerference amo:ng the comrol signal and the extemal reference signal presems in the feedfornrard systems [2], [3]. There are two classic forms of secondary path id.entification: a) Off-line id.entification excl:udes any operation signal; it only works usi:ng a traini:ng sig:n.a.l before any operation signal is on the system. b) Classic on-line id.entification sends the traiiring signal while two sig:n.a.ls of operation are also bei:ng sent.

2. n~ory

There are :many a.lgorithms that govem ada.ptive fi1ters for ANC systems. In the followi:ng proposal we revise the basic theo:ry of the Least Mean Squ.are (LMS) algorithm [l] - [6], the Nonn.alized LMS (NLMS) a.lgorithm [2], [4], the Filtered X LMS (FXLM S) algorithm [2], [3], [.o], [7] and the Nonn.alized FXLMS (NFXLMS) algorithm; tlw last one a.lgorithm was used in our systems at the same time with the mixed on-line id.entification process in order to modeli:ng the secondarypath.

2 .1 The LMS algorithm

This a.lgorithm is one of the simplest regardi:ng its implememation, and in its simpler version, we have the stochastic gradient LMS algoritlun. Eq. (1), (2), (3) and (4) show the basics equation of the LMS a.lgorithm; its

function is to search the optimum coeff1Cie:n±s i:ll (n) of opt

the ada.pt ive f ilter that :minim.ize t he e:tror signal 6( n) .

These equ.ations show that it is a recursive a.lgorithm, which means that the present vahe of the coeff1Cie:n±s i:ll(n + 1) depends on the previous one i:ll(n); essentially,

the LMS is a gradient search based method [l ]-[5].

ai(n + 1) = a1(n) + µ[ v?(n)] (l)

Vii'here: - -

V f (n) = VeJ (n) = -2.t(n)e(n) (2)

And ~(n + 1) = lrl(n)- 2J[it(n)e(n) (3)

It is imporlam to rotice that µ. should not be ve:ry large in other to avoid the method's divergence, but it also should not be ve:ry small so that the convergence time re:rults too lo:ng and by consequence useless for ANC purposes. About of convergence time, other factors that can modify tlw behaviour are time constams where the a.lgorithm can converge. The convergence speed depends on the

eigenvahes ofthe input signal a:utocorrelation matrix (í\ is the i-th eigenvahe). The eigenvahes of the input signal are related directly with the power of the signal. It can be deduced that ifthere is a great eigenvahes spread of the input signal a:utocorrelation matrix, the a.lgorithm will have larger convergence times [l ]-[.o].

Reáieru:e S:ignal's Eigenwlues Dispenion. For an ANC system with fast co:rwergence, the input signal a:utocorrelation matrix [x(n,:8x(n)] will be uncorrelated by obtaini:ng a diagonal matrix.

l±L_

(

/ I

D

-~"-: Simibr ag~' leVEI nllVef

I t is required that the difference between the eigenvahes (í\ 1 , A:, , .. ,í\,.) is mínimum in order to achieve a ve:ry low dispersion coeff1Cient. If the a:utocorrelation matrix of input signal, x(n), has a large eigenvahe spread, elliptical level curves re:rult within a two coeff1Cie:n±s error surface. These curves provide a larger trajecto:ry to get to the cemer (optimum solution), due to the fact that the convergence direction füund by the LMS is perpendicular to the level curves (figure 3). For a lower eigenvahe spread the level curves ac quire a near circular form providi:ng a shorter and more direct trajecto:ry to arrive to an optimurn solution as it can be seen in figure 4. In order to obtam a quick convergence in the id.entification of the origin of the noise, it's necessa:ry use a with noise (l{n)) signal which presents id.eally own vahes of similar magnitudes at all Bandwidth.

126

TECNOLÓGICO DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

-, -,

2.2 The N ormalized LlvlS (NLlvlS') algorithm

The corwergence time and stability of the a.daptation process of the LMS algoritlun is govemed by the step size µ. and the reference sjgnal power: As show in [2], [6], the rnaxi.mum. stable step size µ. is inversely proporlional to the filter order and the power of reference sjgnal X(n) . I'h6

Normaliz6d LMS algon'thm (NLM S) do the stepsize independent ofthe input sjgnal while m.aintains the desired stea.dy-state performance, independent of the reference sjgnal power. The algoritlun NLMS consists on a.djusting the coefficiems

cil(n) in the iteration (n + 1) using a. conection factor

fui (n + 1) that is "ronna.lized" in accorda.nce with the

square nonn ofthe vahl.es of the reference sjgnal x(n) in the iterationn (ofhere the ronna.lized tem,)

The NLMS algoritlun is expressed a.s:

a:i(n +1) = a:i(n) +~ :t(n)e(n) l~(n)1

~r, equiva.lently: __

Lii(n +1) = Lii(n )+ ::tT (:)x(nJ x(n)e(n)

where O<:: f/.1 <:: 2.

(4)

(5)

o

It is irnporlm to empha.size tha.t the NLMS a.lgoritlun presents a. convergence rea.son potemia.lly fa.ster thm the LMS algoritlun. When X(n) is sma.11, there is a. problem

dividing it with f/.1 • To solve the problem, NLMS is

modified a.ccording to the equa.tion (6).

! @(n+~): ;(•)+a~~n)f ~•)•(•~--' (6)

Where a.> O and O <::!ji<:: 2.

2.3 The Filtered-X (F:>a..MS') algorithm

As it wa.s memioned in section I, since the seconda.ry path tra.nsfer funcfon S(z) follows the a.daptive filler, the LMS a.lgoritlun :mu:st be modified to ensure convergence [2], [6], [7]. The figures 5 and 6 show the feedfotwa.rd a.nd the feedback AN C system with the seconda.ry pa.th J (iv.

, ""' l'aka'"'a' dCa) -~--

0--1 -•Planl Ptz>-) _______

1 Qui&'(

,. ' toar

- , ('ontrol / Rrrn..ac1t A,b,pt"• • .-,al S«-1111olal)· ·..,-'"ni

1l1Hl _fl91ff' ,.<•> ,en) " r•h .Cn) '!' ._ .rror • y·(nl •iia.>1

,\daplln ;1~1W'llh111 _______ .....

Fqure :!i: Bam feeclfmwud ANC syrian. lli'll feconduy puh.

~°"' J(nl - 'Qali-i- - -e

---------------, IOll,t

S«11iicbry ) ~) ~ 111 1_(!11.__ ~ }: · Error

~·'(11) ~l¡tmal

. L-.--------1 •· ____ ___,

i Fqure (i: Bam feedback ANC syrian. lli'll feconduy puh.

There a.re dnferem possible schemes that ca.n be used to compensate the effect of S(z). The most comrn:m scheme

is to pla.ce a.n estimated filter s(n) in the reference sjgnal

pa.th to the we~t upda.te of the LMS algoritlun, which realizes the uma.lly ca.lled Filtered-X LM S (FXLM S) algoritlun: In order to obta.in the equa.tions tha.t comiol the FXLM S a.lgoritlun, we begin with the equa.tion of the error sjgnal; according to the figure 6, it is expressed like:

e(n) = d(n) - y'(n) = d(n) - s(n) * y(n)

e ( n ) = d ( n ) - S' ( n ) * [ l1I T ( n ) t ( n )] 1 (7)

- --· ---

According to equa.tion (2) and using the equa.tion ( 11) for the error signa!, the gra.dient estimated for the FXLMS algoritlun become:

Where X'(n) is the filtered reference sjgnal and is given

!'(nr~ -r(n) * t(n)--~y:

(9)

Substituting Eq. (10) imo Eq. (1), we ha.ve the equa.tion of the FXLMS algorithms for the feefbtwa.rd ANC system:

~(n- + 1) =· ~(n) - 2_#r'(n)e(n) (10) - _____ J_

For the feedback ANC system, the equa.tion fbr the FXLMS a.lgoritlun is:

127

\~y~/ TECNOLÓGICO t,,,_:/: DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

··------- --

&i(n + 1) = &i(n) - 2,ti'(n)e(n) (ll)

Vii'here f(n), the estima:ted filtered reference s~ is

givenby:

~-

x'(n) = r(n) * d(n) = s(n) * t(n) (12)

FeedfolWard and feedback systems are show in blocks dia.gra.ms of f~s 7 and 8.

2.4 The LMS with no1se addition (l.MS-NA) algorithm

'iNhite noise have full spectral content in all the bandwidth

with an average value of cero and an effective corutant

value; the dispersion of own values of the s~ is very

reduced or ni.ill, it ma.kes possible a quick convergence.

About trus, LMS with noise a.ddition ~ritlun or LSM­

N A a.dds a white noise s~ r(n) to the reference s~ in

order to rn:idify temporal and spectral chara.cteristics ofthe

s~ getti.rig better the convergence speed. The s~ of

white noise won't be in correlation with the reference

s~[8]. LMS-N A is defme d with:

4

{J~n + l) = úl(n)- µ(r(n) + r(n))e(n) (13)

Addmg white noise to the s~ x(n) reduce dispersion of

rus own values, all.o~ best fast conversion [9].

2.5 The FXI..MS algorithm and secondaiy pa:th identific ation.

The FXLMS algoritlun requires knowle dge of the tra.nsfer function .5t .!:) . There are two m.a.in techni.qu.e s to e sti.m.a.te

tha!: tra.nsfer functioll, the off-line modeling and the on-line modeling; both schernes will be discusse d a.hea.d [2].

2.5.1 Off-line identification

As~ that the chara.cteristics of ,S(z) are time-llt'.'ariant

but unknown, off-.line modeling can be used to estima:ted .5t.!:) during an initial tranúng stage. v:lhite noise is an

ideal broa.dband tra.ini.rlg s~ in system identificaiion beca.use it has a constant spectral density ai all frequencies; at the end ofthe tra.ini.rig imewal, the estima.ted model S(z)

is fixed and used for ANC opera.tion.

The a.da.ptive ~ritlun is like the fo~ form:

s(n +1) = s(n) + µ[E(n)r(n)] (14)

In reference [2] there are sorne exa.mples .about the characteristics oftrus technique.

2 .5 .2 Clas sic On-line identific ation

In sorne a.pplica.tioll, the secondary paih ,S(z) ma.y be time­

varyi.rlg; for trus rea.son, it is des ir.able to estima.te the secondary paih when the ANC system is in operaiion, in order to assure the st.ability and convergence of the a.da.ptive filter; there are different techniques to do tha!:, but the more useful technique is when the system use a.dditive white noise as an excitaiion s~ for on-line modeling, beca.use those s~ has a constant spectral density ai all frequencies. A feedback ANC system usi.rlg the FXLMS ~ritlun with a.da.ptive on-line second.azy-paih rn:ideling is showe d in f~ 1 O; a random noise generaior is used to generaied a zero-rnean white noise r(n) tha.t is uncorrelaied with the

esti.m.a.ted prim.ary noise x( 11) . The white noise s~ is

128

~r~t TECNOLÓGICO ,,,.,,,,·> DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

IMPROVEI• FEEDE:.u.C!UJ-1C SYSTEM ll!ITH F~l-l0J11lC MI::{EI• Oll-LIHE SECOl-!D.uJ;YPATII IDEHTIFICATIOH _,

a.dded to the control s~ y(n) produced by the ANC

fil.ter w(n) ( W(z)) to drive the secondaly sO'lll'Ce. The

a.daptive fil.ter .s( n) ( ..S,:z) ) is col:Ulected in parall.el with

the secondaly path in order to be able to rrodel ,S(z) ; on

the other hand, the input s~ used for modeling ..S,:z) is

the random noise r(n) only instea.d of the oombined

secondaly s~ y(n) + r(n).

Fifure 91: Feeclbwc ANC sysiBYL \mh m.-Jine __ ___ __ _fe«ind.uy-~ih.moAmnL __ _

The enor s~ a.t quiet zone is expressed as:

-------·r- -- --

x(n) = e '(n) ~i'(n) = d(n) (19) -·--·,,J. ___ ···-- ...

This la.st s~ is p10cessing with the NFXLMS a.lgorithm in order to upda.te the coeffüients of the a.daptive fil.ter W(z).

2.5.2 Mixed On-line identification

Comparing Mixed on-line identifica.tion with cla.ssic on­line identifica.fon, the secondaly pa.th will be estima.ted in two pha.ses, the first one consists in using additive white noise as a.n excitation sig:nal. while the s~ to be ca.ncelled is present followed by the ca.ncella.tion s~ after sorne cycles.

This :means that the system will make a. first identification without any other control s~ but the one that is desired to be ca.ncelled. This will help us to improve the identifica.tion ofthe secondaly tra.jectory. After making the first step descnbed a.bove, the system will continue working with cla.ssic on-line identifica.tion.

e(rí) ~-d(n1·-=-s(n)*y(n)- s(n) * r-(n)

= d(n) - y '(n) - r'(n) (15) a.) First stage

Where y'(n) is the secondaly noise componen! due to the

o~ noise a.nd r'(n) is the secondaly noise componen!

due to the additive random noise. An estimate of r'(n),

r'(n), is ca.lcula.ted from the modeling fil.ter l{z) a.nd the

s~ r(n), a.ccordingwith the equa.tion 16.

i'(n) = s(n) * r(n) (16)

AsSllltlll'lg tha.t ..S,:z) is modeling with a. goo d

a.pproxima.tion, that is .S(z)::: S(z) , we ha.ve

r'(n)::::: r'(n) a.nd the e'(n) s~ is:

e'(n)~d(n) :..:y'(riY~-r'(nf+ r'(nY- ! -c11> ______ = d(n) -_y'(n)____ _ ___ __

At the sarne time, we get the estimated filtered control

s~ ji'(n) from ..S,:z) a.nd y(n):

j'(n) = f(n) *](n)::;: y'(n) ! (18)

Fina.lly, we genera.te the inlemal reference s~ (estimated signal) x(n) adding the estimated filtered

control s~ ji'(n) to ,g'(n), a.ccording with the equa.tion

25:

At this first stage we define white noise three times the noise genera.ted by the DSP (equa.tion 20). With this is possible to make a.n easier secondaly path identification.

The error s~ is defined by the o~ noise to be ca.ncelled a.nd our a.mplified white noise (equa.tion 21)

e(n) = d(rí) :..:·:sen) *r.''(n) = d(n)- r"'(n)

'-ol~ dCnl Quin l ronr

Srn111dJ1f} • , ~)

E ri_ ,11, .¡a_1 • __ l ? t_ :rn>f" • • ,• .. , d,ia:11

b,IÍIW_•_lr--d-r (n) .,.. _ p11tl, i(D) ~ L - __Jr'(11) 'i L\IS

_ 111~orilli1m \Vliilraoior

l(C'n,nitor r (n)

(21)

Figure UI: Fift Stafe d dynuni( mixed m.-line f (!(~ puh idadifica:Jim.

Figure 10 shows wha.t signa.Is a.re presents a.t the first step of dynamic mixed on-line secondaly path idenhfica.tion.

129

CANCELACIÓN ACTIVA DE RUIDO

b) Second stage

At second stage the systems works equ.ally as on-line secondary path identificaiion

At this stage white noise is reduced from the amplitude use d in first stage. Equation 22 shows the relationship between our new white mise used in second stage and the white noise used at first stage.

(22)

Finally the error signal is obtained with equation 23

e(n) = d(n).: srn) * y(n)- s(n) * y 11 (n)

= d(n) - y 1(n) - r 111 (n) (23)

The key ofthis identification is at the fi.rst steps: estimaie the secondary path only with the white noise signal and the noise to be cancelled. Doing this is possible to have a better estimaie ofthe secondary paih

3. hn¡>le1nent.ation

Practicalfeedback ANC system (NFXLMS-NA based) was irnplememed using the TMS320C30 evalua.tion module (E-in,.,1) from TI; characteristics of the irnplememed system are the following:

a) the secondary path ,5t: t.) was estirnated using hybrid

identification ( off-line 255 cycles followed by on-line identifü:ation). b) the adaptive filter W(z) was estirnated using the

NFXLM S algorithm with 100 coeffüiems c) the white noise used hadan effective value (variance cr) oflOOmV. d) the sampl.i.ng frequency had a 1 micioseconds period. e) The noise d( n) was from 100 Hz to 500 Hz

4. Test ami results

We used Tektronicx TDS3032 Oscilloscope for the following tests.

In figure 11 we see the system working. The upper graph shows the power ofthe signal afier cancellation, e(n).

f

. ,•,

1

:1 -: • l 1

' 1 ·,

.!lll 11 ,. fCOO O•t'.1),0

~11: _Seu,nd test

,-t.)

~ 1'\ 10 l dH :~ -4~ 4 ,n

,'\. ]OOJU

• JO,) H,

~Cll1 PkO-P'il(,) 11im\.'

l'J "~' 10•, 111 .NI l\

The middle graph of the irnage shows the spectral analysis of the mise signal; the peak is ai 300 Hz, exactly ai the frequency of the noise. There we can see thai the noise level is in -19 .2 dB before cancellation

The lower graph of the irnage shows the spectral analysis of the cancelled noise. There is possible to see that the noise cancelled is about -44.4 dB; exactly 25.2 dB of attenuation.

The a:,,,erage of cancellation vs. frequency is shown in the figure 12.

' . . . - . 1 Sij .:,:o. ~SO lOO SS.) ~00 "IS.O 5-)J

-1ó • •

•--•4+-••-·•-·•·+·•

_;,-0, . . . _c.,gin;,1t~. ,-1!)_,-1!>,-1!_-,~.-1s_-1~._.,:{:_ 1s df.

'.n•f'Ull•d U,:.wi_ -~ .• ~ _ •3-0 _ • .ac . . ~; _ :_ .. 7 _ ,.:~. _. ).IJ.

Fia:ure 12: Ava'an Rerulb Amplitud vt. Preqwncy

4 .1 Com:t"r~nc:e til.ne v:,rith <lynamic mi..w<l on­WI:' secon<lar~n>ath i<lentificati:m

Figure 13 shows the behavior with 5 cycles in off-line identification, followed by on-line identificaiion in the rest ofthe time ofthe operaiion.

We can see thai our convergen.ce time is of 1.107936 seconds.

130

w~{ TECNOLÓGICO '.,,,/ DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

7

Figure 14 shows the behaviour with 255 cycles a.t the off­line identifica.t ion.

We can observe thai the converge:nce time is higher for

less tha.n 100 milliseconds.

Ata practica.! system this d.iffere:nce oftiming won't affect the final operaiion. In fa.et, this tittúng will be ind.ifferent for people.

[l] Bema.rd Widrow, J. Glover, J. McCool, Ada.ptive N oise Ca.ncel.i.ng: Pri:nciples and Applica.tions, ProceedingJ of IEEE, vol. 63, no 12, pp 1692-1716, Dec. 1975.

[2] S. Kuo and D. Morga.n, Actii,e NoiJe Control SyJtemJ: Algon'thmJ and DSP implementatiom (New York, N.Y.:

John Wiley, 1996) [3] Stephen Elliot, Signa! ProceJJing for Actii,e Control, Aca.demic Press, 2001. [4] B. Fa.r~-Boroujeny, Adaptii,e FilterJ: I'heozy and A¡,plicatiom (Ba.ffms La.ne,Chichester: John Wiley, 1998) [5] S. Ha.ykin, Adapti11e Filter I'heozy (U pper Sa.ddle River, New Jersey: Premice Hall, 1996) [6] Busta.rna.nte, R., H. M. Perez, Developm.em and Simula.tion of Actwe N oise Comrol Systems, ProceedingJ of the l 001 International Syn¡;,oJium on Actii,e Control of Sound and P1'bran·on (Acn·11e 1001), S01J.thampto:n, UJ:Úted Kmgdom, July 2002, pp 793-802. [7] Sa.eed V. Va.seghi. Ad11anced Signa! ProceJJing and Digital NoiJe &ducn·on (Ba.ffms La.ne,Chichester: Wiley & T eubner, 1998). [8] Rogelio Busta.rna.nte-Bello, Héctor Pérez-Mea.n.a. and Bohumil Psenicka, Imp10ved Sta.ble Feedback ANC System with dynamic second.a.ry paih modeling.

ProceedingJ of the 1005 !Cinco, Barcelona, Spa.in, September 2005.

[9] Rogelio Busta.rna.nte-Bello, Héctor Pérez-Mea.n.a. and Bohumil Psenicka, Imp10ved Sta.ble Feedback ANC System with dyn.a.mic second.a.ry paih model.i.ng

[10] Gus.ta.v:o. ~. Ri.c.a.rd.o.Emuruez, Al.eja.ndxo.Cl:Lao and ,A.llgel Mé:n.di::z, Sistema práctico de cancelación activa de ruido, Imtiruto Tecnológico y EJrudioJ :».J.pen·oreJ de MonterrQ Campw Ciudad de Mé;,;ico, México, D.F. 2006

131

~it"-~ '~ -~~-, ~~rf.:. TECNOLÓGICO ,,_,:;J· DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

ANEXO G APUNTAMIENTO CIRCULAR

132

TECNOLÓGICO DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

APUNTAMIENTO CIRCULAR

Para comprender como es que se llena el arreglo de coeficientes del filtro y sobre

todo para entender que es lo que sucede cuando el arreglo se llena y llega hasta la

última dirección, se utiliza el apuntamiento circular. De manera sencilla, el

apuntamiento circular no es más que decirle al DSP que cuando llegue a la última

localidad del arreglo, la siguiente vez que tenga que escribir un valor nuevo, en

lugar de hacerlo en el siguiente valor que quedaría fuera de nuestro arreglo,

sobrescriba el nuevo valor en la primera dirección del arreglo.

Para ejemplificar este concepto podemos ver el siguiente diagrama:

1.-EI apuntador inicia en este punto del arreglo ~-----------------~

2.-Con cada valor nuevo, el apuntador va incrementándos en uno y de esta manera recorre todo el arreglo

3.- Al llegar al final del arreglo, el apuntador se reinicializa y comienza desde cero.

En donde µe(n) es una constante.

w 0(n + 1)

w1(n + 1)

W2(n+l) =

wN_ 1(n+l)

Figura12.3

Wo x(n)

w1 x(n-1)

W2 + µe(n) x(n-2)

WN-1 x(n-(N -1)

133

':~t~F TECNOLÓGICO -,, .... ,,, DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

ANEXO H PRUEBA DE ATENUACIÓN UTILIZANDO LAS MEJORES CONDICIONES

134

TECNOLÓGICO · ., DE MONTERREY,

CANCELACIÓN ACTIVA DE RUIDO

Prueba de atenuación utilizando las mejores condiciones

El primer paso para estas pruebas fue obtener la mejor ubicación para cada

componente del sistema y así obtener una mejor atenuación. Las pruebas para

lograr lo anterior se basaron en las siguientes variables:

• Distancia de las bocinas de ruido y de cancelación de ruido al micrófono.

Recordemos que la cancelación acústica es puntual por lo que el sitio donde

se encuentra el micrófono es donde nuestro sistema debe realizar la mayor

atenuación.

• Angulo de apertura entre la bocina de ruido y de cancelación de ruido (señal

de control).

En el siguiente esquema indicamos las variables que tomamos en cuenta:

Pruebas de Distancia Vs. Angulo

Ruido oj Antiruido oj

180º

Angulo entre bocinas

Distancia

Micrófono

a>-

Fijamos para cada distancia la frecuencia de 200Hz y un valor obtenido por el

micrófono de 300mVpp de nuestra señal senoidal generadora de ruido. Las pruebas

realizadas se hicieron en combinación de distancia contra ángulo, teniendo los

siguientes valores para distancia: 15 cm., 30 cm., 45 cm., y 60 cm. Los ángulos por

su parte fueron los siguientes: 90º, 120º, 150º y 180º. Tomando en consideración lo

anterior, realizamos 4 pruebas para cada distancia con los 4 distintos ángulos.

Para cada distancia obtuvimos los dB obtenidos con atenuación y sin atenuación.

Con atenuación realizamos la medida 3 veces, para cada una reiniciamos el sistema

135

:;~(( TECNOLÓGICO -:, •. ,,~,- DE MONTERREY.

CANCELACIÓN ACTIVA DE RUIDO

y volvimos a obtener el valor. Posteriormente obtuvimos los promedios de estas 3

mediciones por ángulo.

A continuación presentamos los resultados obtenidos a las distintas distancias:

Con atenuación (dB) grados bocinas dB sin

90º1 120° 1 150º 1 Prueba Distancia aten 180°

-30.8 -33.2 -32 -30.4 1 15cm -20.4 -28 .4 -34.8 -33.8 -29.2

-30.8 -32.4 -34.4 -30

-27.2 -29.2 -26.8 -27.6 2 30cm -20.4 -27.6 -29.2 -29.2 -28.4

-29.2 -31.6 -28.8 -28.4

-25.2 -26.4 -28.8 -27.2 3 45cm -20.4 -27.2 -26.4 -28.8 -27.2

-25.6 -28 -30.8 -27.6

-25.2 -28.4 -28 -30.4 4 60cm -20.4 -26.8 -28 -28.8 -28.8

-25.2 -28.4 -28.4 -29.6

Con estos resultados obtuvimos los promedios de los dB obtenidos:

Promedios ITERACIÓN 90º 120º 150º 180º 15cm -30.00 -33.47 -33.40 -29.87 30cm -28.00 -30.00 -28 .27 -28.13 45cm -26.00 -26.93 -29.47 -27 .33 60cm -25.73 -28.27 -28.40 -29.60 sin atenuar -20.4 -20.4 -20.4 -20.4

Con estos resultados podemos generar la siguiente gráfica:

136

;-¡1if);';: TECNOLÓGICO ·, .. .,e DE MONTERREY.

0.00

-10.00 -

m -20.00 -"C

-30.00

-40.00

CANCELACIÓN ACTIVA DE RUIDO

Cancelación de Ruido

90 120 150 180

Grados Bocinas

-+-15cm

-•--30 cm,

45 cm

60 cm

Esta gráfica no nos dice tanto como si definiéramos el total de dB atenuados en

cada una de las pruebas. En la siguiente gráfica mostramos la atenuación total en

cada distancia y en cada grado entre las bocinas:

Atenuación total ITERACIÓN 90º 120º 150º 180º

15 cm 9.60 13.07 13.00 9.47

30cm 7.60 9.60 7.87 7.73

45cm 5.60 6.53 9.07 6.93

60cm 5.33 7.87 8.00 9.20

sin atenuar .•. -20.4 -20.4 -20.4 -20.4

Con esto podemos definir una gráfica que nos explique de una mejor manera en

dónde se lleva a cabo la mejor atenuación:

Atenuación Total

14.00 12.00 -10.00 -+-15cm

m 8.00 - --- 30 cm "C 6.00 45 cm

4.00 - 60 cm 2.00 0.00

90 120 150 180

Grados prueba

Con esto definimos que la mejor atenuación se llevó a cabo a los 120º a una

distancia de 15 cm.

137