MEMORIA DESCRIPTIVA -...

157
Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera MEMORIA DESCRIPTIVA Memoria Descriptiva Pág. - 11 David Toyos Sibón

Transcript of MEMORIA DESCRIPTIVA -...

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

MEMORIA DESCRIPTIVA

Memoria Descriptiva Pág. - 11 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera Introducción al Ruido

La valoración que la sociedad ha otorgado a la acústica a lo largo de los siglos ha ido evolucionando, así ha pasado de ser una disciplina presente a ser relegada a un segundo plano.

Actualmente, la mayor preocupación que el mundo ha desarrollado en

relación al problema del ruido y al medio ambiente, ha resucitado la importancia que la acústica merece.

Este resurgir ha hecho necesario fomentar la formación sobre acústica. La acústica, desde los tiempos en que el franciscano padre Mersenne

midió la velocidad del sonido (sin disponer de reloj por su voto de pobreza) ha tenido un gran desarrollo paralelo al de tantas otras ciencias físicas. Parecía que una vez establecida su naturaleza ondulatoria e introducido el análisis de Fourier poco quedaba ya para averiguar o desarrollar en la misma salvo la pura fenomenología más o menos compleja de distintos casos y situaciones. Sucedía a la acústica, de alguna forma, algo similar a la mecánica clásica antes del desarrollo de la mecánica cuántica: todo era conocido.

Esto llevó incluso a que la acústica, que en el siglo XIX estuvo muy

presente en la enseñanza universitaria en España, desapareciera en el XX. En este sentido es curioso que en la primera Escuela de Ingenieros Industriales de Madrid existiera la especialidad de acústica que pronto desapareció. No se veía una gran utilidad a dicha disciplina comparada con las demás ramas de la ingeniería industrial.

Tan sólo apareció en el siglo XX la acústica como disciplina universitaria

en las escuelas de ingenieros de telecomunicaciones por cuanto que parte de su cometido es la radiodifusión y la televisión que dependen grandemente de un buen dominio del sonido en el momento de la grabación y de la reproducción, así como de la transducción del sonido en señal eléctrica o electroacústica. Justamente es en el siglo XX cuando se ha producido el mayor desarrollo de la acústica perceptiva por su relación con las telecomunicaciones.

En las facultades de ciencias la acústica ha estado también ausente

puesto que no se creía necesaria tanta "especialización" cuando ya se estudiaban las ondas en general y la acústica no era sino un caso particular de aquella.

Sin embargo, recientemente se ha despertado un gran interés por todo

aquello relacionado con el medio ambiente. Los habitantes de la Tierra, en el umbral del tercer milenio están tomando conciencia de lo pequeño y vulnerable que en realidad es nuestro planeta y fruto de esta inquietud surge la preocupación, entre otros, por la contaminación química de las aguas y del aire, la preocupación por los residuos, la radioactividad, las ondas electromagnéticas y el ruido.

Memoria Descriptiva Pág. - 12 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Este último aparece con unas características propias que, podríamos decir, le hacen tener una "personalidad propia" dentro de esta familia de la contaminación:

1. Es ubicuo. Esto es, se genera muy fácilmente allá donde el hombre realice cualquier actividad y por ello se encuentra en todas partes. Todos sabemos lo difícil que es encontrar un lugar silencioso.

2. Tiene una gran capacidad de molestar a las personas. Justamente por la

sensibilidad humana al sonido (que varía de unas personas a otras) el ruido es fácilmente percibido y afecta a las personas en su conducta, fatiga, nerviosismo y tensión.

3. No mata. O por lo menos no lo hace de una manera directa, rápida y

palpable. Si comparamos los posibles efectos del ruido con los de un vertido químico o una marea negra comprendemos rápidamente que ante los ojos del público "no sea tan grave".

4. Esta formado por ondas mecánicas. Esto es quizá la característica que

más hace que el ruido sea una contaminación peculiar. Al no tratarse de sustancias o de materia, al tener una existencia efímera en lo temporal y al presentar propiedades de onda como interferencias, reflexiones, difracciones, etc. se le hace difícil al público en general comprender su fenomenología. Los remedios "intuitivos" con los que se intenta en muchas ocasiones reducir el ruido resulta que conducen, en numerosas ocasiones, a no reducirlo e incluso aumentarlo.

Esta sensibilidad social frente al ruido ha reavivado el interés por la

acústica, especialmente en lo relacionado con su percepción por el hombre. Esto hace que esté surgiendo una clara necesidad de profesionales con conocimientos adecuados sobre acústica capaces de medir, valorar, y reducir el ruido.

En la industria surge la necesidad de reducir el ruido emitido por las

instalaciones y fábricas tanto hacia el exterior como en el interior, cuidando que tanto el entorno como los lugares de trabajo mantengan unos niveles de ruido aceptablemente bajos. Pero también surge la necesidad en los fabricantes de máquinas de, cumpliendo por ejemplo con la directiva europea de máquinas, medir y reducir el nivel de emisión sonora de las mismas.

Los automóviles, como casi todas las máquinas y electrodomésticos se

hacen cada vez más silenciosos. En el caso de los automóviles el nivel de emisión debido al motor se ha reducido en los últimos años de tal manera que en la actualidad es mayor el ruido originado por la propia rodadura de las ruedas que por el motor. En el caso de los aparatos de climatización resulta sorprendente el nivel cada vez más bajo de nivel sonoro que tienen. Curiosamente en la final del campeonato de ajedrez entre Karpov y Kasparov que jugaron en Sevilla había debajo de su mesa un equipo de climatización de bajo ruido desarrollado y fabricado por Koolair, empresa española puntera en combinar el silencio con la climatización.

Memoria Descriptiva Pág. - 13 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Es necesario un gran esfuerzo de investigación y desarrollo para

mantener esta carrera por controlar y reducir el ruido. En este sentido la introducción de nuevos materiales, el mejor conocimiento de los existentes y el control activo del ruido (que consiste en generar una onda que interfiera destructivamente con el ruido) están abriendo nuevas posibilidades. El control activo del ruido es ya una realidad para contrarrestar la emisión de transformadores eléctricos que emiten por magnetostricción con la misma frecuencia de la red eléctrica (50 ó 60 Hz) o en conductos como los del gas en los que el ruido es producido por las bombas que lo impulsan y de otra forma llegaría hasta los usuarios sin prácticamente ninguna atenuación.

Por otra parte las aplicaciones del sonido (sin necesidad de que sea en

forma de ruido) son muchas en la industria. Sistemas de sónar y de ecografía hasta sistemas de caracterización de cavidades, inspección de soldaduras, telemetría o transmisión de información son algunas de las aplicaciones que tiene el sonido. Todo ello por no hablar del gran desarrollo de la electroacústica.

En la construcción surge la necesidad de garantizar no sólo unos niveles

sonoros sino también de caracterizar acústicamente salas de conciertos, auditorios, aulas, etc. Las instalaciones en los edificios, que cada vez son más complejas, también deben tener en cuenta las condiciones sonoras. Esto implica además la caracterización acústica del entorno, la realización de mapas de ruido y estudios de inmisiones, etc. Por ejemplo en la comunidad de Madrid es necesario realizar un mapa de ruido previamente a la aprobación de un plan de urbanización.

Las administraciones públicas a su vez necesitan disponer de técnicos

con conocimientos de acústica para poder controlar y garantizar el cumplimiento de la legislación que cada vez es más amplia. Además, desde el momento en que existe legislación sobre el ruido, los jueces deberían saber algo sobre ello. Esta necesidad de formación o de conocimiento se resuelve solamente en algunos casos mediante cursos de especialización y actualización.

La sociedad, ante todo esto, necesita no sólo disponer de los técnicos y

científicos con suficientes conocimientos, sino de forma más importante, necesita conocer los principios fundamentales del sonido, necesita cultura científica (como en tantos otros casos). Esto es una tarea que va más allá y que requiere que el sonido entre a formar parte de los contenidos educativos básicos de una forma clara real y experimental. El sonido es algo cotidiano y se pueden hacer numerosos experimentos interesantes con muy poco coste.

En este sentido son especialmente provechosos cursos sobre acústica,

puesto que sus efectos sobre la sociedad serán a largo plazo, cuando los alumnos de estos profesores puedan moverse con conocimiento por un mundo en el que el ruido será un parámetro importante de tipo económico, político y de calidad de vida. Generar ese conocimiento bien fundamentado no deja de ser

Memoria Descriptiva Pág. - 14 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera una responsabilidad de los que profesionalmente se dedican al estudio de las ciencias físicas. Esencia del Ruido

El ruido, presenta 4 características que debemos conocer para poder controlarlo:

1. Que sea mas fuerte o mas despacio. 2. Más agudo o más grave. 3. Que en el tiempo sea continuo, variable o impulsivo. 4. Por ultimo, la manera como lo percibe el ser humano.

El dB o Decibel es la unidad con que se mide la intensidad de un sonido

o ruido. El 0 dB, que corresponde al menor sonido que puede oír un ser humano, es también llamado umbral de la audición. La medición del dB se puede efectuar a través de un micrófono y un instrumento de lectura que mida la variación eléctrica producida por el micrófono, a este instrumento se le llama decibelímetro.

La frecuencia es la velocidad con que se produce el fenómeno acústico,

esta se mide en ciclos por segundo llamado también Hz o Hertz. Llamamos ruido de baja frecuencia a un ruido ronco como el producido por un bombo musical y que por su intensidad lo podemos percibir por las vibraciones que este produce en nuestro cuerpo, en cambio un sonido estridente es un sonido agudo y basta con taparse los oídos para no escucharlo, por ejemplo una flauta o un pito.

La intensidad que tiene un ruido en cada frecuencia se mide con un

circuito eléctrico llamado filtro, así la representación de estos valores en un grafico se le llama el Espectro del Ruido. Intensidad y Frecuencia

Espectros de los Sonidos generados por un Bombo y una Flauta

Memoria Descriptiva Pág. - 15 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Comparativamente se dice que el espectro del bombo es de baja

frecuencia y mayor intensidad, en cambio la flauta es de alta frecuencia y menor intensidad. Audibilidad

El oído humano necesita diferentes intensidades para distinguir un sonido de baja frecuencia con uno de alta frecuencia con igual audibilidad. Un sonómetro es un decibelímetro al que se le han incorporado las compensaciones del oído humano. El dBA es el valor que entrega este instrumento y que permite predecir los riesgos de daño auditivo, como también recomendar o legislar sobre los valores máximos permitidos en las diferentes actividades del ser humano. Tiempo

Memoria Descriptiva Pág. - 16 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Un ruido, que es variable en el tiempo, es posible cuantificarlo con un solo valor, a este promedio se le llama Leq o nivel continuo equivalente. Niveles de Ruido

Memoria Descriptiva Pág. - 17 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera Introducción al Control de Ruido

El ruido es una de las fuentes de contaminación ambiental. El control, y en su caso, la reducción del ruido es un problema tecnológico de cierta envergadura, por la complejidad temporal, frecuencial y espacial que presenta. El problema social del ruido es de tal importancia que las distintas administraciones han elaborado normativas sobre los niveles máximos de ruido que no pueden ser sobrepasados. En lugar de cancelar completamente el ruido, muchas veces es preferible reducirlo a unos niveles aceptables para la población que los padece. Esto se debe a que la reducción del ruido tiene un cierto coste económico. Por tanto, el control del ruido supone un cierto compromiso entre unos niveles que no pueden ser sobrepasados y el coste económico que supone.

El ruido produce molestias, distracción, perturbación, e incluso, sí la

exposición es muy prolongada, puede producir daños irreversibles en el órgano de la audición. Entre estos, el efecto más observado ha sido un cambio permanente del umbral de audición. La molestia del ruido se manifiesta en la interferencia con el sueño y con la palabra. La distracción producida por el ruido es claramente manifiesta en el trabajo, sobre todo en el de tipo intelectual, dando lugar a una pérdida de productividad, y lo que puede ser más peligros, a una precariedad de las condiciones de seguridad. El ruido perturba también la privacidad en el interior de las viviendas.

Los problemas del ruido en el ambiente se han vuelto día a día más

notorios por muchas razones:

• El incremento en el uso de equipo industrial: 1. Motores 2. Turbinas 3. Transformadores 4. Compresores 5. Ventiladores

• La gran explosión demográfica, que hace que los individuos estén cada

vez más cerca de fuentes de ruido: 1. Tráfico 2. Fábricas y Plantas

• El uso de materiales más ligeros en edificios y construcciones en

general, así como en equipo de transporte.

En el ambiente existen dos tipos de ruidos. Uno es a causa de la turbulencia y es totalmente aleatorio. El ruido turbulento distribuye su energía de manera uniforme. Este tipo de ruido es conocido como ruido de banda ancha. Algunos ejemplos de este tipo de ruido son los sonidos de baja frecuencia de los jets y los de una explosión.

Memoria Descriptiva Pág. - 18 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

El otro tipo de ruido, denominado ruido de banda angosta, concentra la mayoría de su energía en frecuencias específicas. Este ruido es muy común en máquinas rotativas o repetitivas, así que se pueden considerar periódicas o muy cerca de serlo. Algunos ejemplos de ruido de banda angosta son los motores de combustión interna de medios de transporte, compresores como fuentes de poder auxiliares y como refrigeradores, bombas, etc.

Por tanto, el ruido es siempre un subproducto de la generación de potencia. Los motores de los coches, de los aviones, de los trenes, y en general, de los sistemas de transporte, producen ruido. Las plantas de producción eléctrica, los transformadores eléctricos, los sistemas de calefacción y de aireación de los edificios producen ruido. El avance en los sistemas de generación de energía está asociado con el progreso social y tecnológico. Paradójicamente, a medida que progresamos social y tecnológicamente, se incrementa también la generación de ruido. Esta monografía trata de la evolución de las técnicas de control para hacer frente a este crecimiento estacionario de la producción de ruido. De acuerdo a Bernhard (1994), las técnicas de control del ruido pueden clasificarse en cuatro grandes apartados. A saber:

• Técnicas pasivas. • Técnicas pasivas adaptativas. • Técnicas activas. • Técnicas híbridas pasivas-activas.

Los sistemas de control pasivo aprovechan las propiedades absorbentes

de algunos materiales y no añaden energía adicional al sistema. Pueden absorber energía o cambiar la impedancia del medio para dificultar la propagación del campo acústico. Los métodos pasivos incluyen absorbentes superficiales, silenciadores reactivos, materiales porosos, montajes antivibratorios, resonadores, etc. Las técnicas pasivas se encuentran en un estado muy maduro, y existen soluciones efectivas a frecuencias medias y altas, con un coste no excesivamente elevado.

Los sistemas pasivos adaptativos usan elementos pasivos optimizados

en un cierto margen de condiciones. Existen soluciones muy efectivas para problemas de banda estrecha. Algunos ejemplos son el resonador de HeIrnholtz adaptativo, cuyo volumen interior puede variarse de acuerdo a unas condiciones predeterminadas. También se puede aplicar esta solución a problemas de banda ancha. Por ejemplo, se puede idear un montaje antivibratorio para un motor, cuya rigidez y amortiguamiento se pueden adaptar para evitar la relación inversa que suele existir entre el control de la vibración y el alineamiento del tren de potencia del motor. Una subclase de este tipo de sistemas es la de los semiactivos. Estos sistemas están construidos también con elementos pasivos cuyas propiedades cambian adaptativamente.

Los sistemas activos introducen energía externa a la situación de ruido,

que se aprovecha para generar, a través de alguna fuente secundaria, un campo de ondas en contrafase con el campo primario. En condiciones de linealidad los campos primario y secundario interfieren destructivamente,

Memoria Descriptiva Pág. - 19 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera resultando en una reducción neta del campo residual. Existen aplicaciones desarrolladas para el control del ruido de baja frecuencia en conductos, en recintos, ruido estructural, ruido difractado y en la cavidad auditiva. La diferencia fundamental entre los sistemas pasivos y los activos es la estabilidad de su funcionamiento. Mientras que los sistemas pasivos son intrínsecamente estables, los sistemas activos introducen energía exterior, por lo que pueden inestabilizarse.

Los sistemas pasivos están recomendados en el margen de las frecuencias medias y altas, y los sistemas activos están limitados al margen de las bajas frecuencias. Por tanto, un sistema que pretenda controlar una banda ancha de frecuencias, incluyendo las bajas, ha de ser necesariamente un sistema híbrido pasivo-activo. En realidad, la mayor parte de los sistemas activos usan algún elemento pasivo para complementar el margen de frecuencias cubierto por ambos. Por ejemplo, los protectores auditivos activos proporcionan una atenuación pasiva suficiente por encima de 1 kHz aproximadamente. Por debajo de esta frecuencia introducen un controlador activo capaz de producir una atenuación que puede llegar a ser de hasta varias decenas de dB. Las fuentes secundarias en conductos suelen montarse en un ensanchamiento del mismo, o en una rama lateral. Un ensanchamiento es un filtro paso-baja y una rama lateral es un filtro rechazo-banda.

Eriksson (1994) hacía un estudio interesante de las técnicas de control

del ruido en relación con la innovación tecnológica. En un proceso de innovación tecnológica se desarrollan soluciones nuevas a problemas viejos, en un esfuerzo para mejorar las prestaciones del sistema con una buena relación beneficio/coste. En este sentido, una técnica muy madura es más difícil de mejorar que una técnica nueva. La nueva tecnología puede ofrecer unas posibilidades que no están al alcance de la antigua. La figura siguiente ilustra este hecho.

Memoria Descriptiva Pág. - 20 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Evolución de las prestaciones de tecnologías viejas y nuevas en función de los requisitos del

problema (Según Eriksson, 1994)

Según Eriksson, el proceso de desarrollo incrementa el contenido en información del producto rompiendo la simetría simple de su forma inicial. Este proceso tiene cierto paralelismo con el concepto de entropía en los sistemas de información. En un sistema desordenado hay pocas características distintivas. Su contenido en información es bajo y el sistema es relativamente homogéneo. Se puede considerar que la innovación tecnológica mejora el funcionamiento del sistema mediante el incremento de su contenido de información, lo que resulta en un incremento de su diferenciación estructural y en una disminución de su entropía No obstante, la inclusión de complejidad en el producto tecnológico no tiene porqué complicar su uso. Bien al contrario, el usuario final agradece un producto de manejo más sencillo. Según Eriksson, el desarrollo tecnológico consiste en la búsqueda de nuevas formas de empaquetar más información dentro del diseño de un producto.

El problema del control del ruido es un caso típico donde se puede

observar el desarrollo tecnológico desde los sistemas pasivos, muy maduros, donde es difícil introducir más información, hasta los sistemas activos, actualmente en su etapa inicial, donde hay un gran margen todavía para introducir sofisticación y complejidad que mejoren las prestaciones del producto. Los sistemas pasivos se basan fundamentalmente en la introducción de un material que interrumpa de alguna manera la propagación del campo sonoro. Esto se puede hacer mediante una discontinuidad de impedancia o de un panel con mucha densidad superficial de masa. La ley de masas establece que la pérdida de transmisión de un panel simple a bajas frecuencias es directamente proporcional al producto de la frecuencia por la densidad superficial de masa. De forma similar, la pérdida de transmisión en un silenciador simple del tipo de una cámara de expansión es directamente

Memoria Descriptiva Pág. - 21 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera proporcional al producto de la frecuencia por la longitud del silenciador. Los paneles y los silenciadores han evolucionado hacia unas estructuras mucho más complejas, que requieren un número muy grande de parámetros de diseño. Sin embargo, es muy difícil mejorar las prestaciones de estos sistemas pasivos sin incrementar ya sea la densidad de masa o la longitud, y de aquí su coste. En definitiva, es muy difícil empaquetar más información en un sistema pasivo sin incrementar el coste.

Los sistemas activos constan de una parte acústica, de un hardware y

de un software de control. La parte acústica incluye los sensores del campo primario y las fuentes del campo secundario. El hardware consiste en una tarjeta DSP ensamblada en un ordenador. El software consta de un programa de control que adquiere las señales de entrada, las procesa en el DSP, y calcula las señales de salida. Por tanto, el control activo es un sistema asistido por ordenador. La evolución de la electrónica digital es tal que ya existen chips DSP capaces de realizar miles de millones de operaciones por segundo (Gflops). Y no se ve en el horizonte el límite de estos procesadores. Además, las prestaciones suben y el precio baja, es decir, mejora la relación beneficio/coste. Por tanto, los sistemas asistidos por ordenador tienen una capacidad casi ilimitada para empaquetar nueva información. Los sistemas activos poseen un gran potencial de mejorar sus prestaciones mediante el crecimiento continuado de su complejidad y asimetría. La tabla siguiente resume la capacidad de desarrollo tecnológico de ambas técnicas.

Capacidad de incremento de complejidad y empaquetamiento de información

Área de diseño Sistemas pasivos Sistemas activos

Mecánica

masa, longitud, área, espesor, conexiones, tubos, perforaciones, etc.,…

posición de los transductores, tamaño, forma, empaquetado de los componentes,…

Eléctrica Ninguna

diseño de circuitos, selección de las partes, conexiones, empaquetado,…

Software Ninguna algoritmos, software, GUI, comunicaciones,…

Capacidad de desarrollo tecnológico de los sistemas pasivos y activos. (Según Eriksson, 1994)

¿Quiere esto decir que el CAR sustituirá al control pasivo en un futuro próximo? Fuller y von Flotow (1995) opinan que el CAR no es la panacea para todos los problemas de control del ruido. Su aplicación debe elegirse cuidadosamente teniendo en cuenta los aspectos espaciales y la naturaleza espectral de las perturbaciones. Su utilidad ha sido demostrada en muchos problemas reales, tales como en el interior de los coches, en las cabinas de los aviones, en los protectores auditivos, en los sistemas de aire acondicionado, en

Memoria Descriptiva Pág. - 22 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera los transformadores eléctricos, etc. Sin embargo, estos autores opinan que hay que esperar que definitivamente se introduzcan en el mercado para resolver problemas de control fino, donde la atenuación de unos pocos dB produzca un efecto significativo.

Más adelante haremos un estudio de los principios y aplicaciones del

control activo del ruido (CAR) Como esta técnica resulta complementaria de los métodos pasivos, seguidamente se hará una revisión del procedimiento general del control pasivo. Esta revisión no pretende ser exhaustiva, ya que existen una gran cantidad de libros especializados en este tema. Efectos significativos del ruido

No se pretende en este trabajo enumerar cada uno de lo efectos que provoca el ruido sobre el medio ambiente. Sin embargo, no deben dejar de mencionarse algunas consecuencias principales, aunque sea de manera extremadamente simplificada. El ruido es la causa directa de la hipoacusia (o pérdida auditiva irreversible, reconocido este efecto como enfermedad profesional). Es también responsable de transformaciones fisiológicas y psicológicas en el organismo que se manifiesta en afectación directa de la calidad de vida y en el comportamiento.

El ruido interfiere en la comunicación, provoca trastornos en el sueño, en

la presión y en la composición química de la sangre, en el funcionamiento cardíaco, en el desarrollo fetal y en los órganos de fonación. También, propicia la pérdida de atención y la disminución de rendimiento en el trabajo. Además, es la causa de estrés y de la consiguiente disminución del sistema defensivo del organismo humano.

Los entornos industriales son importantes emisores de niveles sonoros

excesivos debidos a la gran cantidad de fuentes generadoras de ruido que poseen. Por tal razón, es incuestionable que el mantenimiento de la planta tiene una singular implantación en la disminución de los niveles de ruido. Evidencia natural de un mantenimiento eficaz orientado hacia la gestión medioambiental y la eficiencia energética. Programa de control de ruido

Lograr implantar un Programa de Control de Ruido no es tarea de un día. Tiene mucha relación el éxito con la sensibilización de los directivos y el personal de ingeniería. Se precisa de la formación técnica para enfrentar los retos, además de estar conscientes de los daños que ocasiona la contaminación por ruido.

Un programa de Control de Ruido deberá reflejar, preferentemente, lo

siguiente:

Memoria Descriptiva Pág. - 23 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

• La inmisión en los puestos de trabajo y la emisión de cada fuente en las condiciones de operación características.

• Si los niveles sonoros de las distintas áreas exceden los límites especificados por la legislación (o normativas) al respecto.

• Identificación de las fuentes sonoras principales y la influencia relativa sobre el campo sonoro.

Para cada área ruidosa se debe:

• Definir los objetivos deseados (o necesarios) con relación al ruido. • Disponer de un programa para ejecutar acciones de control para cada

fuente. • Disponer de los medios de protección adecuados (si fuera necesario). • Determinar la reducción alcanzable (técnica y financieramente) en cada

área o puesto de trabajo. • Supervisar el cumplimiento del Programa.

La ejecución del PCR lleva implícito el desarrollo simultáneo de tres

líneas principales de trabajo. Estas se mencionan en la figura siguiente. Nótese como la formación y motivación del personal constituye la "piedra angular" de la efectividad del Programa. El control técnico, administrativo y legislativo resultan de vital importancia pues son, precisamente estos aspectos, los que establecen las pautas para el enfrentamiento al ruido y reflejan la posición de las empresas, y de toda una sociedad, con relación al omnipresente contaminante. La orientación hacia la prevención de la perdida auditiva es fundamental, debido a que en ambientes de ruido industrial la hipoacusia es el efecto, atribuible al ruido, que con mayor transparencia se manifiesta y puede probarse. Por ello, la protección auditiva y el seguimiento audiométrico resultan vitales.

Los tres frentes de un Programa de Control de Ruido

Descriptores principales de ruido

La cuantificación de los niveles de ruido constituye la base para la adopción de medidas que tiendan a disminuir su efecto. Sólo pueden conocerse a profundidad los fenómenos medibles. La presión sonora es la

Memoria Descriptiva Pág. - 24 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera magnitud más fácil de cuantificar, efectuándose dicha operación generalmente, con un instrumento llamado sonómetro. La obtención de registros sonoros es la base sobre la que descansa cualquier estrategia de control de ruido. Existen vanos descriptores de ruido, pero El Nivel Sonoro Continuo Equivalente (Leq) [total y por frecuencias] y la Dosis Porcentual de Ruido (D), resultan vitales para los fines de un control pasivo de ruido en situaciones industriales. Es posible trabajar en la concepción de un plan de control de ruido si se conocen los valores de emisión de ruido de las máquinas, unido a los niveles de exposición del personal.

El Nivel Sonoro Continuo Equivalente (Leq) se define como el nivel

sonoro medido en dB(A) de un ruido supuesto constante y continuo durante toda la jornada, cuya energía después de atravesar la red de ponderación A, del sonómetro, sea igual a la correspondiente al ruido variable a lo largo de la jornada laboral.

Si fuera posible subdividir una jornada laboral en intervalos Ti en los que el ruido pueda considerarse de nivel aproximadamente constante (por ejemplo cuando la actividad durante la jornada se compone de diversas tareas cada una con su ruido asociado), el Nivel Sonoro Continuo Equivalente puede ser expresado por la ecuación:

i

n

i

L

eq TT

LAV

∑=

=1

1010 101log10 [dBA]

Donde LA i sería el Leq de cada uno de los intervalos de tiempo

considerados. En este caso (que el ruido en cada intervalo pueda ser considerado constante), se puede asumir que Leq = IA, siendo IA el nivel sonoro instantáneo con ponderación A que caracteriza a cada intervalo de tiempo. T, es el tiempo total de análisis y Ti la duración de cada intervalo. Puede tenerse en cuenta el siguiente ejemplo real, para disponer de una clara idea de este descriptor de ruido.

Se analiza el nivel de exposición al ruido del personal de una

termoeléctrica que cuenta con tres grupos turbogeneradores de 100 MW cada uno, en una jornada laboral de 12 horas. El personal se expone en 8 horas a 98 dB(A), 2 horas a 104 dB(A) y 2 horas a 75 dB(A) ¿Cuál será el Nivel Sonoro Continuo Equivalente para la jornada (Leq(12h))?

Aplicando lo visto:

)810210210(121log10 10

9810104

1075

10 ++⋅+⋅=eqL

Quedando:

Leq (12h) = 99.2 dBA

Memoria Descriptiva Pág. - 25 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Esta no es la única forma de calcular el nivel equivalente. En dependencia de las características del ruido o de la norma que lo defina, se establece un método para calcularlo. La variante mostrada es la más sencilla (pero requiere que el ruido se pueda considerar constante a lo largo de los intervalos de tiempo). Cuando el ruido no puede considerarse constante, el procedimiento para calcular el Leq se vuelve muy trabajoso, a menos que se pueda disponer de un sonómetro integrador que es capaz de mostrar el Leq, para el intervalo de tiempo que se desee (desde un minuto hasta. 24 horas).

La Dosis Porcentual de Ruido (D) establece, con respecto a una

referencia establecida por las normas o leyes de cada país, el por ciento de energía sonora absorbida por el personal que trabaja en determinado puesto de trabajo. Este descriptor de exposición sonora puede medirse directamente con un instrumento denominado dosímetro de ruido. Es posible obtener el nivel sonoro continuo equivalente, para un tiempo determinado T, si se conoce la dosis de ruido E (medida con el dosímetro), tal y como se muestra:

94log10log10 −−= TELAeqT [dBA]

Definiéndose la Dosis porcentual de ruido como:

1000E

ED = (%)

Donde Eo es la dosis de referencia (Eo=1,012 Pa2h, pascal al cuadrado

por horas), correspondiente a un nivel sonoro equivalente de 85 dBA, para un tiempo de ocho horas (8h). Este valor de 85 dBA como promedio en una jornada laboral de 8 horas, es aceptado por muchos países, reflejándose ello en las normas y legislaciones al respecto. Otros países todavía mantienen como tolerable (para ambientes industriales), el valor de 90 dBA como promedio en una jornada de 8 horas.

A modo de ejemplo se exponen los valores obtenidos durante una

jornada de 8 horas en una planta de cemento. Allí se registró una dosis de ruido igual a 2,68 Pa2h. Esto arroja una Dosis porcentual de Ruido igual al 265%. Es decir, una exposición que sobrepasa en un 165% lo establecido corno tolerable para ambientes industriales. Se requiere protección efectiva y medidas de control.

No sólo el nivel sonoro caracteriza un fenómeno de contaminación por

ruido. Es preciso establecer cuanto tiempo es admisible tolerar determinado nivel. La fórmula siguiente permite estimar un importante factor con vistas a los programas de Protección auditiva y de seguridad operacional; hablamos del tiempo de exposición.

3)85(2480−= LT [minutos]

L Nivel de Exposición del personal

Memoria Descriptiva Pág. - 26 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Sustituyendo el nivel de exposición sonora del personal (en dBA) en la fórmula, se obtiene el tiempo tolerable, para sufrir daños mínimos. Es menester destacar que para niveles sonoros iguales o superiores a los 115 dBA, no se recomienda exponerse (sin protección) ni siquiera por escasos segundos.

Además, sería interesante mencionar las normas ISO 1999, que ampara

las siguientes definiciones: Índice parcial de exposición al ruido.

Índice determinado por un nivel de presión sonora y su duración durante una semana de trabajo (40 horas). Se calcula mediante la expresión:

)70(1.010)40/( −⋅= LiTiEi

Siendo:

• Ei índice parcial • Ti Tiempo de exposición semanal en horas • Li Nivel de presión sonora en dBA.

Índice compuesto de exposición al ruido

Suma de los índices parciales correspondientes a los distintos niveles sonoros percibidos durante una semana laboral (40 horas) Nivel sonoro continúo equivalente

Aquel nivel de ruido en dBA que si se hallara presente durante 40 horas por semana, produciría el mismo índice compuesto que los distintos niveles sonoros medidos realmente en una semana de exposición real.

Este valor se calcula a partir de la fórmula:

∑+= EiLeq log1070

Siendo:

• Leq Nivel de ruido continuo equivalente en dBA • E¡ índice parcial de exposición al ruido

Disminución de la capacidad auditiva para la palabra hablada

Se considera disminución de la capacidad auditiva, cuando exista un incremento medio del umbral de audición en las frecuencias de 500, 100 y 2000 Hz (media aritmética de los umbrales de audición de cada frecuencia) de 25 dBA 0 más, respecto a la que se da en la norma ISO 389-1975 “Valor cero de referencia para la calibración de audiómetros de tono puro”.

Memoria Descriptiva Pág. - 27 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera Riesgo

Diferencia entre le porcentaje de personas con la capacidad auditiva disminuidas en un grupo expuesto al ruido y el porcentaje de personas con la capacidad auditiva disminuida en un grupo no expuesto (pero equivalente en todos los demás aspectos al primero).

a) Riesgo %: Relación entre el nivel de ruido continuo equivalente durante el trabajo para exposiciones entre 0 y 45 años, y el riesgo de disminución de la capacidad auditiva para la palabra hablada.

b) % total de disminución: Porcentaje total de personas que sufren

disminución de la capacidad auditiva para la palabra hablada en un grupo expuesto. El porcentaje de personas que sufre disminución en un grupo no expuesto es igual al porcentaje en un grupo expuesto a niveles de ruido continuo inferiores a 80 dBA.

Riesgo de disminución de la capacidad auditiva para la palabra hablada

Porcentajes

Años de exposición

Nivel equivalente de ruido en

dBA

Riesgo, % ó % total de personas con capacidad

disminuida

0 5 10 15 20 25 30 35 40 45

(a) Riesgo, % 0 0 0 0 0 0 0 0 0 0 80

(b) % total de disminución 1 2 3 5 7 10 14 21 33 50

(a) Riesgo, % 0 1 3 5 6 7 8 9 10 7 85

(b) % total de disminución 1 3 6 10 13 17 22 30 43 57

(a) Riesgo, % 0 4 10 14 16 16 18 20 21 15 90

(b) % total de disminución 1 6 13 19 23 26 32 41 54 65

(a) Riesgo, % 0 7 17 24 28 29 31 32 29 23 95

(b) % total de disminución 1 9 20 29 35 39 45 53 62 73

(a) Riesgo, % 0 12 29 37 42 43 44 44 41 33 100

(b) % total de disminución 1 14 32 42 49 53 58 65 74 83

(a) Riesgo, % 0 18 43 53 58 60 62 61 54 41 105

(b) % total de disminución 1 20 45 58 65 70 76 82 87 91

(a) Riesgo, % 0 26 55 71 78 78 77 72 62 45 110

(b) % total de disminución 1 28 58 76 85 88 91 93 95 95

(a) Riesgo, % 0 36 71 83 87 84 81 75 64 47 115

(b) % total de disminución 1 38 74 88 94 94 95 96 97 97

Valor particular del riesgo cuando se refiere a la disminución de la

capacidad auditiva definida tal como se ha recogido anteriormente.

Memoria Descriptiva Pág. - 28 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Nota: Estos valores se basan en el limitado número de datos

experimentales disponibles y están sujetos a revisión a medida que se vayan obteniendo nuevos datos de investigaciones. Control Pasivo de Ruido (CPR)

El ruido, en tanto contaminante, es un factor a combatir. El mantenimiento constituye la función idónea para liderar la lucha y el control de las emisiones sonoras excesivas y nocivas. La contaminación por ruido es de las más perjudiciales y comunes en ambientes industriales. Las características de las emisiones de ruido constituyen un indicador de la eficiencia en el funcionamiento de las máquinas, un parámetro de diagnóstico y un agente agresor a la salud de los trabajadores y a la efectividad del trabajo.

Una de las formas de realizar el control de ruido desde la posición del

mantenedor es estableciendo una estrategia de Control Pasivo de Ruido (CPR). La base principal de este enfoque consiste en la integración de una serie de aspectos que se sintetizan en un Programa de Control de Ruido. Lo anterior considera los estudios de ruido, la selección precisa de los protectores, la construcción de pantallas y encapsulamientos, el aislamiento de las vibraciones, la formación y motivación del personal en la elevación de la cultura técnica, el efectivo mantenimiento y otras acciones que dependen del enfoque y la actitud que sobre el medio ambiente asuma la alta dirección de las empresas. Protectores auditivos

Los protectores auditivos son dispositivos de singular importancia en el control pasivo de ruido, Ellos garantizan (cuando la selección es correcta), la atenuación necesaria que asegura la disminución de la exposición efectiva al ruido. Se requerirá el uso de protectores auditivos cuando el nivel de exposición al ruido supere los 85 dBA

Es común la selección de dispositivos de protección auditiva sin

considerar, seriamente, si realmente el modelo que se trabaja es capaz de asegurar la mejor protección. Es preciso realizar un estudio previo de las características del ambiente sonoro para el cual se busca el resguardo más efectivo. El ingeniero de planta debe velar por la calidad del medio de protección auditiva. Para ello, deberá considerar la información del fabricante (o suministrador), combinada con los criterios que se exponen en este acápite.

La Tasa de Reducción de Ruido (Noise Reduction Rating, NRR), es un

valor que debe ofrecer el fabricante y se obtiene en condiciones de laboratorio rigurosas. Resulta la tasa de reducción teórica, inalcanzable en condiciones prácticas de la industria o la minería La determinación empírica de la

Memoria Descriptiva Pág. - 29 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera atenuación real del protector se determina por el protector (o combinación de éstos) que brinde el nivel de ruido efectivo más bajo.

Determinación del nivel de ruido efectivo (dBA*) para protectores

auditivos:

1. Cuando es conocido el nivel de ruido, medido con la aplicación de la escala de ponderación C (dBC):

dBA* = dBC - NRR [dBA]

2. Cuando es conocido el nivel de exposición al ruido, medido con la

aplicación de la escala de ponderación A (dBA, la más utilizada mundialmente):

dBA* = dBA - (NRR 7) [dBA]

3. Cuando es necesario, debido a la agresividad del ambiente sonoro,

utilizar doble protección auditiva (tapones y orejeras): en este caso, se debe tomar al que presenta mayor tasa de reducción de ruido (NRR), para calcular el nivel de ruido efectivo.

dBA* = dBA - (NRR 2) [dBA]

Todos los cálculos anteriores pueden ver afectada la tasa efectiva de

reducción de ruido en un 50% [NRR, (NRR - 7), (NRR - 2), según la variante para calcular el nivel de ruido efectivo (dBA*)]. Esto, sin duda, restringe todavía más, la atenuación real que pudiera imputársele al protector que se analiza. Sin embargo, se recomienda tal afectación debido a que el uso de protectores auditivos en condiciones reales no garantiza el mismo grado de protección alcanzado en el laboratorio. En este último, se realizan los ensayos especializados bajo condiciones ideales. Encapsulamientos y pantallas

Las pantallas acústicas, generalmente se diseñan utilizando láminas de acero, madera. vidrio o plástico. Se recomienda recubrirlas con algún material absorbente por la cara que queda hacia la fuente sonora. Normalmente, pueden obtenerse reducciones del nivel sonoro, ponderado A, de hasta 10 dBA. El efecto de una pantalla es poco significativo para las frecuencias, cuya longitud de onda supere el ancho, o la altura, de la pantalla. Por tal razón, se precisa de un estudio en frecuencias antes de decidir construir un artefacto de este tipo (pese a no ser difícil su fabricación si no se considera lo anterior, la mitigación podría resultar despreciable). Las pantallas se emplean con preferencia en la proximidad de máquinas pequeñas cuya emisión acústica sea elevada. También, para separar en un local las áreas ruidosas del resto. También para proteger a operarios que trabajan en puestos cercanos a fuentes de ruido. La eficacia de una pantalla se condiciona en gran medida a la

Memoria Descriptiva Pág. - 30 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera distancia de la fuente de ruido. La norma ISO 11821 brinda los métodos para verificar in situ la eficacia de una pantalla móvil.

Los encapsulamientos como su nombre indica, consisten en "encerrar” a

la fuente sonora para reducir la propagación del ruido que emiten. De manera general, se consiguen reducciones entre 10 y 25 dBA para encapsulados de una sola capa con revestimiento absorbente. Se logran reducciones de más de 25 dBA para encapsulamientos con doble pared y revestimiento acústico absorbente. Vale agregar que la efectividad de un encapsulado, o de una pantalla, depende de la característica frecuencial de la señal sonora. Para evitar la propagación de vibraciones en los encapsulamientos es menester dotarlos de calzos antivibratorios en la base. Las puertas, registros y ventanas, previstas para las labores de mantenimiento deben ser hermetizadas cuidadosamente después de realizados los trabajos. La más pequeña ranura puede afectar sensiblemente el aislamiento, sobre todo si hay presencia de altas frecuencias. El ejemplo que se muestra a continuación es característico de un encerramiento con doble pared y revestimiento acústico absorbente.

Efectividad del encerramiento en una turbina de gas.

En la figura, se reflejan los resultados obtenidos con el encerramiento de

una turbina de gas. El encapsulamiento fue realizado con doble chapas de acero de 1.5 mm. y una distancia entre chapas de 100 mm La cavidad fue rellenada con fibra de vidrio (material absorbedor). La chapa interior presentaba el 38 % de su área con perforaciones para facilitar una mejor absorción. Tal y como puede observarse, la reducción del nivel sonoro es muy significativo sobre todo para las altas frecuencias del rango mostrado. Aislamiento de vibraciones

Todas las máquinas vibran y por tanto trasmiten oscilaciones a la estructuras sobre las que descansan (pisos, paredes, tuberías...). Una parte del

Memoria Descriptiva Pág. - 31 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera ruido estructural se convierte, por radiación, en ruido aéreo. De manera que el correcto aislamiento de las vibraciones es una forma de atenuar los niveles de ruido, que es capaz de generar una máquina.

Con el aislamiento se pretende impedir que las vibraciones de una

máquina pasen al suelo (y se propaguen), o visto desde otro punto, evitar que las vibraciones de otros equipos no se trasmitan a alguna máquina sensible. El aislamiento es más efectivo cuando la estructura sobre la que descansa la máquina (y a la cual se quiere evitar pasen las vibraciones), tiene suficiente masa y rigidez, para evitar, en un caso, las resonancias, y en otro las deformaciones indeseables.

Generalmente, para reducir la transmisión de vibraciones de la máquina a la base (o viceversa). Se pueden aplicar las siguientes acciones (debidamente explicadas en la bibliografía existente al respecto):

• Montaje de la máquina sobre calzos antivibratorios (ello implica el calculo y selección de dichos calzos).

• Utilizar juntas flexibles en los sistemas de tuberías, siempre que sea posible.

• Preparación de una base adecuada en cuanto a masa y rigidez.

La figura siguiente, muestra el grado de transmisión de las vibraciones de un equipo con relación a la frecuencia de excitación f (a aislar) y la frecuencia natural del sistema fo (inherente a la máquina), empleando calzos con diferente amortiguación. Obsérvese que el comportamiento aislante es muy favorable cuando la frecuencia a aislar (f) es, como mínimo, 10 veces la frecuencia natural de la máquina, para calzos con bajo amortiguamiento interna.

Memoria Descriptiva Pág. - 32 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Trasmisibilidad de las vibraciones según el material de los calzos y la frecuencia a aislar.

En la práctica, muchas veces, es posible emplear un modelo masa

(máquina y, eventualmente, una placa base unida a ella rígidamente) y resorte (calzo) de un solo grado de libertad. Se evidencia que, cuando f<fo no hay aislamiento (transmisibilidad es igual a 1); cuando f=fo ocurre la resonancia en la máquina, incrementándose la amplitud de las vibraciones y por tanto aumentando la transmisibilidad de las vibraciones a la fundación. Cuando f>>fo se obtienen los mejores resultados en el aislamiento, utilizando calzos con baja amortiguación interna. De aquí se deduce que los materiales con alta amortiguación interna no mejoran el aislamiento Sin embargo, pueden resultar muy útiles para reducir la amplitud de las vibraciones en caso de resonancias u otras vibraciones indeseadas. Control Activo de Ruido (CAR)

Como ya se ha comentado para controlar el ruido existen principalmente dos tipos de métodos, el método pasivo y el método activo. La manera tradicional de hacerlo es mediante técnicas pasivas, así como barreras o silenciadores que atenúan el ruido indeseable. Los silenciadores pasivos usan el concepto de cambio de impedancia, logrado mediante una combinación de baffles y tubos; estos silenciadores reciben el nombre de silenciadores

Memoria Descriptiva Pág. - 33 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera reactivos, o el de pérdida de energía, causado por la propagación del sonido a través de un tubo de material absorbente de ruido (sonido) para así proporcionar el silenciamiento, estos silenciadores son conocidos como silenciadores resistivos. Los silenciadores reactivos se utilizan más en motores, mientras que los silenciadores resistivos son utilizados para ruidos en conductos de ventilación.

Estos silenciadores pasivos son muy cotizados para ruidos con

frecuencias de banda ancha, sin embargo son muy costosos, grandes e ineficientes para frecuencias bajas.

En un esfuerzo para sobreponerse a estos problemas, se ha mostrado

un gran interés por el control activo de ruido (CAR), ANC por sus siglas en inglés (Active Noise Control). El sistema CAR consta, a groso modo, de un dispositivo electroacústico que cancela el sonido indeseable (ruido) generando un antisonido (antirruido) de igual amplitud, pero de fase opuesta (180° de desfase). El ruido original y el antirruido se combinan acústicamente, dando como resultado la cancelación de ambos sonidos.

La figura siguiente muestra la señal de ruido no deseado (ruido primario)

y la señal de cancelación de ruido (antirruido) y finalmente la señal de ruido residual, que se obtiene al aplicar el principio de superposición. La efectividad de la cancelación del ruido no deseado depende de la precisión de la amplitud y fase del antirruido generado.

Concepto Físico de la Cancelación Activa de Ruido

El CAR surge como una técnica complementaria al control pasivo del

ruido en el margen de las frecuencias bajas. Las limitaciones del control pasivo en este margen de frecuencias son bien conocidas. Los materiales absorbentes y aislantes, las barreras antirruido, los filtros acústicos (resonadores de Helmholtz, cámaras de expansión,..), los encapsulamientos de la fuente de ruido, requieren dimensiones y/o pesos a menudo inaceptables por debajo de 500 Hz. Con un paramento simple se puede conseguir un aislamiento de 40 dB con un material de 15 kg/m2 a 1000 Hz, pero se requiere uno de 150 kg/m2 a 100 Hz. Un silenciador tipo cámara de expansión simple de 34 cm de longitud proporciona la misma pérdida de transmisión a 1000 Hz que uno de 3.4 m a 100 Hz. El control pasivo del ruido también funciona en bajas frecuencias. El problema radica en la envergadura de la solución que aporta.

Memoria Descriptiva Pág. - 34 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

La idea del CAR, como interferencia destructiva entre el campo primario

de ruido, y uno secundario, en contrafase, generado electrónicamente, ya fue planteada por Lueg en 1934. En los años 50 encontramos algunas implementaciones prácticas a la reducción de ruidos con una estructura espacio-temporal muy simple, como el radiado por transformadores eléctricos. Pero el verdadero interés por el CAR surge a partir de los trabajos de Widrow sobre filtrado adaptativo y su posible implementación en DSP´s. La potencia de los filtros adaptativos radica en su capacidad de adaptar el sistema de control a las condiciones cambiantes de los ruidos que se pretenden reducir. En los años 80 se presentan aplicaciones prácticas del CAR en conductos (tubos de escape de motores, sistemas de ventilación y aire acondicionado) y en protectores auditivos. En los años 90 se publican resultados espectaculares del CAR en el interior de medios de transporte (coches, aviones).

El CAR funciona tanto mejor cuanto más baja es la frecuencia. Por tanto,

el CAR no es una alternativa, sino un complemento, al control pasivo del ruido. En la práctica, la solución más apropiada es una híbrida pasiva-activa. Primero, se reducen tanto como sea posible las frecuencias medias y altas mediante control pasivo. El ruido residual de baja frecuencia se ataca entonces mediante control activo. Fundamentos del Control Activo de Ruido. Introducción

El CAR está basado en el principio de la superposición. Por tanto, sólo se aplica a sistemas lineales. Si en una zona del espacio existe un campo acústico primario, Pp(x,y,z,t) y somos capaces de generar un campo acústico secundario, Ps(x,y,z,t), tal que:

Pp(x,y,z,t) + Ps(x,y,z,t) = 0 es decir, tal que

SP

SP PPΦ−=Φ

=

donde Φ denota el espectro de fase, entonces ambos campos interferirán destructivamente cancelándose mutuamente. Cuando el campo acústico a cancelar es un campo de ruido, y cuando el campo secundario se genera activamente, se obtiene un sistema de Control Activo del Ruido (CAR). Un sistema CAR consta básicamente de:

• Uno o varios micrófonos que detectan el campo primario. • Uno o varios altavoces que generan el campo secundario. • Un controlador que procesa las señales captadas por los micrófonos

y genera las señales de alimentación para los altavoces secundarios.

Memoria Descriptiva Pág. - 35 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

En realidad, el campo primario puede ser detectado por algún otro sensor, tal como tacómetro o acelerómetro, y el campo secundario puede ser generado por algún otro actuador tal como un vibrador, sobre todo en sistemas de control del ruido estructural. El controlador suele ser un sistema electrónico. El diseño del controlador, la parte más importante de un sistema CAR, depende del tipo de ruido a controlar, y de los objetivos acústicos de control, véase la figura siguiente. Como veremos a continuación, el control puede ser global o local, y puede estar basado en el principio de interferencia o en el de absorción activa. En función de la fuente primaria (compacta o extensa) el campo secundario puede estar generado por una sola fuente (monocanal) o por varias (multicanal). En función del tipo de ruido y del medio de propagación, puede ser vital determinar correctamente la posición de los detectores y de las fuentes secundarias. Desde el punto de vista de la teoría de control, en función del número de fuentes y detectores, se suele usar la siguiente nomenclatura:

• Sistema de entrada y salida únicas (Single Input Single Output, SISO).

• Sistema de entrada única y salidas múltiples (Single Input Multiple Output, SIMO)

• Sistema de entradas múltiples y salida única (Multiple Input Single Output, MISO).

• Sistema de entradas y salidas múltiples (Multiple Input Multiple Output, MIMO).

La conexión entre las fuentes secundarias también es fundamental. La

fuente primaria puede ser representada por un desarrollo multipolar, siendo el número de términos de este desarrollo función de la complejidad de la fuente primaria. Para fuentes compactas simples, el desarrollo puede ser truncado con suficiente aproximación en el primer término, y la fuente secundaria es un monopolo. La complejidad acústica de la fuente depende de la frecuencia.

Otro aspecto muy importante es la modelización de la propagación del

campo sonoro entre el sensor de referencia, y entre la fuente secundaria, y el punto de cancelación. La separación entre el sensor de referencia y el punto de cancelación ha de ser suficiente para dar tiempo al cancelador a procesar la señal medida y generar el campo secundario. Este es el principio de funcionamiento básico de un sistema CAR: el camino acústico entre el sensor de referencia y el punto de cancelación es mucho mayor que el camino electrónico. Pues bien, ya que el campo secundario ha de ser extrapolado al punto de cancelación, es de vital importancia la construcción de] operador de extrapolación.

Memoria Descriptiva Pág. - 36 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Sistemas de Control Activo de Ruido

Memoria Descriptiva Pág. - 37 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Es obvio que la complejidad del controlador dependerá de la complejidad

del ruido y de] medio de propagación. Es mucho más fácil controlar un ruido periódico en un tubo que un ruido aleatorio en un recinto. El operador extrapolación también difiere en un caso y en otro. En un tubo, a frecuencias por debajo de la frecuencia de corte del primer modo transversal, se propagan ondas planas. En ausencia de efectos disipativos y de turbulencia, el operador extrapolación, o matriz de transferencia, es un simple cambio de fase. En un recinto, sin embargo, habrá que tener en cuenta los modos normales El operador extrapolación se diseña a partir de la ecuación de ondas del problema, y es evidente que la solución difiere en un medio y en otro. Por otra parte, el ruido puede ser variable. Esto quiere decir, que si el controlador ha de ser capaz de adaptarse a estos cambios, su función de transferencia ha de variar de acuerdo con los cambios temporales del ruido. En otras palabras, el controlador ha de ser adaptativo.

En función de los objetivos acústicos y del tipo de ruido se diseña el

sistema electrónico controlador. Como veremos con mayor detalle. El controlador tiene una estructura diferente según que exista o no información a priori de la fuente de ruido. Esta señal de referencia puede obtenerse situando un micrófono entre la fuente primaria y la secundaria, o mediante un tacómetro, acelerómetro, o cualquier otra clase de sensor. Cuando existe información de referencia del problema de ruido el controlador se denomina feedforward. Cuando la señal microfónica alimenta directamente a la fuente secundaria, el controlador tiene una estructura feedback.

Una vez decidida la estructura de control, y establecidas las ecuaciones

del problema, hay que proceder a la solución. En este punto hay que definir una función de coste. Por ejemplo, la potencia sonora global en el medio a controlar. La solución del problema se obtiene minimizando por algún procedimiento la función de coste. Uno de los métodos más socorridos es el de mínimos cuadrados. El algoritmo recurrente de mínimos cuadrados más usado en CAR es el deducido por Widrow, y junto con otros aspectos numéricos del problema de control, será estudiado en mayor detalle a continuación.

El algoritmo numérico para minimizar la función de coste puede ser

implementado analógica o digitalmente. Los sistemas CAR analógicos se usaron en los años en los que no existían las potentes placas DSP de los que disponemos en la actualidad. Hoy en día, existen placas DSP capaces de hacer millones de operaciones en coma flotante por segundo (Mflops) a un precio asequible. Estas placas se insertan en un PC y pueden ser controladas por medio de un software. Se dispone así de hardware controlable por software, es decir Instrumentos Virtuales, que permiten un CAR asistido por ordenador (Eriksson, 1990). Antecedentes históricos del CAR

La aplicación del principio de interferencia destructiva para conseguir zonas de silencio fue ya concebido por Lord Rayleigh en 1877 (van Overbeek,

Memoria Descriptiva Pág. - 38 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera 1993) usando dos diapasones como fuentes primaria y secundaria, Sin embargo, el primero que pensó en las posibilidades de este principio para controlar el ruido fue Paul Lueg, en 1933, un científico alemán que llegó a patentar la idea tanto en Alemania como en Estados Unidos (Guicking, 1990). La siguiente figura reproduce los esquemas en la patente americana de Lueg En estos esquemas se observan ya bosquejados los fundamentos básicos del CAR: interferencia destructiva y absorción activa, Reproducimos a continuación algunas de las ideas de Lueg (traducción libre):

Captando el ruido con uno o varios micrófonos, amplificando convenientemente esta señal eléctrica, y alimentando con ésta uno o varios altavoces, se puede generar un campo secundario, en oposición de fase, que cancele un campo primario. En el caso de un tubo, el cambio de fase se puede conseguir posicionando adecuadamente el micrófono y el altavoz. En problemas tridimensionales se pueden crear zonas de silencio alrededor de la posición de los altavoces, se pueden diseñar barreras activas en las aperturas de puertas y ventanas, y se pueden construir paredes vibrantes para conseguir habitaciones silenciosas. También se pueden cancelar los ecos molestos en salas de música y teatros, reducir selectivamente ciertas frecuencias y ajustar la calidad acústica de las salas de acuerdo a unos criterios específicos, o reducir el ruido de las máquinas de escribir.

Las ideas de Lueg, espectacularmente clarividentes, no encontraron

aplicaciones prácticas hasta los años 50. Olson y May (1953) desarrollaron un sistema activo que, en la terminología actual, se trata de un controlador feedback, aplicable a la reducción local del ruido. El sistema de Olson y May, que ellos denominaron un absorbente electrónico, figura siguiente (a), consistía en un resonador de HeImholtz, con un sistema micrófono altavoz a la entrada, y con material absorbente en la pared interna opuesta. Presentaron resultados experimentales, donde se observaban cancelaciones de entre 10 y 25 dB en una banda de tres octavas, en el margen de baja frecuencia, figura siguiente (b). La eficacia de este absorbente activo dependía de la separación entre el micrófono de error y el altavoz. Como se observa en la figura siguiente (c), la cancelación es tanto mayor cuanto más próximos están el micrófono y el altavoz. Olson y May sugirieron aplicaciones tales como la reducción del ruido en la posición de las cabezas de los pasajeros de coches y aviones, o en los puestos de trabajo de una cadena de montaje industrial. El micrófono y el altavoz eran de diseño propio. El micrófono convertía las vibraciones del diafragma en una corriente de electrones en un tubo de vacío, y el altavoz reducía al máximo el cambio de fase en baja frecuencia. Era este cambio de fase el que limitaba la aplicación del sistema a frecuencias por encima de unos 30 Hz.

Memoria Descriptiva Pág. - 39 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Esquemas en la patente americana de Lueg sobre CAR

Memoria Descriptiva Pág. - 40 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Memoria Descriptiva Pág. - 41 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

(a)Esquema del absorbente electrónico propuesto por Olson y May; (b) Cancelación del ruido en la posición del micrófono; (c) Curva de cancelación para varias separaciones micrófono-

altavoz (Según Olson y May, 1953)

Por la misma época, Conover y Ringlee (1955) aplicaron métodos activos a la reducción del ruido periódico de los transformadores eléctricos. Ya que este tipo de ruido es muy repetitivo, idearon un filtro analógico fijo para controlar los tres primeros armónicos (120, 240 y 360 Hz). El circuito analógico, figura siguiente, consistía en un banco de filtros de banda estrecha (análisis), cada una de cuyas salidas estaba conectada a un desfasador variable, y a un amplificador de ganancia variable. Las señales de salida de cada canal eran sumadas (síntesis) y enviadas al altavoz secundario.

Circuito analógico para la cancelación del fundamental y los dos primeros armónicos del ruido

de un transformador (Según Conover y Ringlee, 1955)

En terminología actual, se trataría por tanto de un controlador en el dominio de la frecuencia. La figura siguiente muestra el diagrama espacial, en coordenadas polares, de la cancelación en la dirección del micrófono (ángulo 09). Nótese cómo la cancelación en una dirección se hace a costa del refuerzo en otras direcciones. Conover y Ringlee sugerían la posibilidad de usar un número mayor de altavoces y micrófonos de error para evitar este problema del refuerzo en otras direcciones.

Memoria Descriptiva Pág. - 42 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Diagrama espacial de cancelación en un transformador. (Según Conover y Ringlee, 1955)

En un montaje experimental del consolador de Canover en un caso real,

Conover y Ringlee demostraron una aplicación exitosa del control activo. La dirección de cancelación podía ser variada, introduciendo un desfase en el circuito electrónico, sin variar el montaje de los transductores electroacústicos. Por otra parte, el coste de esta circuitería simple era menor que el de los sistemas pasivos, para la misma efectividad en este margen de frecuencias.

El tema del CAR entró después en una especie de letargo Fue en los

años 70 cuando el grupo del Laboratorio de Mecánica y Acústica de Marsella (LMA), encabezado por Jessel, dieron un cierto empuje, sobre todo teórico, a lo que ellos llamaron la absorción activa. Jessel y Mangiante (1972) demostraron que existía una cierta semejanza entre el principio de Huygens y el de la absorción activa. De hecho, ellos demostraron que ambos principios no son sino casos particulares de un mismo principio de perturbación general.

Memoria Descriptiva Pág. - 43 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera Además, se plantearon la realización práctica de fuentes secundarias. En el caso de la cancelación en tubos, construyeron un tripolo, como una combinación de un monopolo más un dipolo. Hay que ser conscientes que el problema que Jessel y Mangiante se plantearon difiere un poco del actual problema de cancelación en tubos. Ellos intentaban cancelar en la zona del tubo a continuación de la fuente secundaria, sin modificar el campo entre la fuente primaria y la fuente secundaria. En la mayor parte de las aplicaciones actuales, se cancela más allá del altavoz secundario, sin preocuparse de lo que ocurra más acá (en general, aparece un campo de ondas estacionarias). Por consiguiente, la fuente secundaria que se suele usar actualmente consiste en un simple altavoz.

A mediados de los 70 aparece el importante artículo de Widrow et al.

(1975) sobre principios y aplicaciones de la cancelación adaptativa del ruido. Hasta esa fecha los filtros eran fijos, por lo que si el ruido variaba en el tiempo, no se producía la cancelación, e incluso podía aparecer una amplificación. Widrow et al. deducían las famosas ecuaciones del filtrado adaptativo por mínimos cuadrados usando una señal de referencia (FXLMS) que permitían implementar un filtro cuyos coeficientes se actualizaban con el tiempo. Se discutían algunas aplicaciones, con resultados experimentales, tales como el filtrado de los 50 Hz en aplicaciones médicas donde las señales son muy débiles, la cancelación del ruido en señales de palabra, la cancelación de los lóbulos laterales de antenas y sonares, la cancelación del ruido periódico sin una referencia externa, y la autosintonización adaptativa de filtros.

Este marco teórico, junto con la aparición de las placas DSP, que

permiten implementar en hardware algunos procesos de señal, controlados por software, supuso una verdadera revolución en el mundo de los sistemas CAR. Las ideas de Lueg, que en principio resultaban poco menos que irrealizables, comenzaron a ser consideradas como factibles. Hoy en día existen sistemas patentados para el control del ruido de baja frecuencia de protectores auditivos y para el control del ruido en tubos. Se investiga profundamente en el control del ruido en el interior de las cabinas de coches y aviones, en el control acústico del ruido estructural, en el control del ruido difractado y en el control de ecos. Fundamentos acústicos

El CAR está basado en el principio de la superposición lineal. Si en algún punto del espacio se superponen dos campos acústicos, uno primario, y otro secundario en oposición de fase, ambos se cancelan mutuamente. Decimos que ambos campos interfieren destructivamente. Se obtiene así un sistema CAR por interferencia destructiva. Sin embargo, en algunos sistemas, como el de Olson, se puede hacer que el diafragma del altavoz vibre en oposición de fase al campo primario. Se obtiene así un sistema CAR por absorción activa. Según Elliott y Nelson (1993) existe una diferencia sustancial en el funcionamiento de ambos sistemas. Considérese el problema desde el punto de vista de la potencia acústica radiada por el par de fuentes acopladas, la primaria y la secundaria. Si se ajustan la amplitud y la fase de la fuente

Memoria Descriptiva Pág. - 44 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera secundaria para minimizar la potencia acústica radiada por el conjunto, la fuerza acústica de la fuente secundaria es muy próxima a la de la primaria, pero de fase opuesta, para separaciones pequeñas entre ambas fuentes, y tiende a cero a medida que se incrementa dicha separación. En estas condiciones la potencia acústica radiada por la fuente secundaria es cero (ni radia ni absorbe) y su acción fundamental consiste en reducir la impedancia de radiación vista por la fuente primaria, disminuyendo de este modo la presión acústica en fase con la velocidad volúmica en la posición de la fuente primaria. Por el contrario, si se ajustan la amplitud y fase de la fuente secundaria para absorber la máxima potencia sonora, la fuerza acústica de la fuente secundaria, para separaciones pequeñas entre ambas fuentes, es mucho mayor que la de la fuente primaria, aunque en cuadratura con ella. Este efecto da lugar a un incremento sustancial de la resistencia de radiación neta experimentada por la fuente primaria, y consecuentemente, a un incremento grande de su potencia acústica radiada. Aproximadamente la mitad de esta potencia radiada por la fuente primaria es absorbida por la fuente secundaria, y el resto es radiada al medio. Como concluyen Elliott y Nelson (1.993), la absorción de potencia, usando un par de fuentes acopladas, no parece ser una estrategia muy eficiente para el control global del ruido.

Diferente situación se presenta cuando la fuente secundaria se acopla para controlar localmente el ruido en una zona alrededor del sensor de error. En esta configuración se sitúa un micrófono en el campo próximo de la fuente secundaria, realimentándola a través de un filtro H. La atenuación del campo primario se consigue mediante el diseño apropiado de la función HG, donde H es la función de transferencia electrónica entre el micrófono y el altavoz, y G es la función de transferencia acústica. Poniendo esta función de transferencia como un factor de ganancia, ~A, y un factor de fase, β, Trinder y Nelson (1983) demostraban que la atenuación conseguida era directamente proporcional al factor de ganancia, y que con tal de que este factor de ganancia fuese grande, es relativamente independiente del factor de fase. Este principio es similar al de la tierra virtual, base del funcionamiento de los amplificadores operacionales, por lo que también se conoce como principio de la tierra acústica virtual. Esta configuración genera una zona de silencio en forma de concha alrededor del sensor de error, cuyo tamaño depende de la separación entre la fuente secundaria y dicho sensor, con un límite de 0.1 λ límite que coincide con el tamaño de la zona de silencio en el campo difuso (David y Elliott, 1994). El control local es muy útil en situaciones donde el control global es inviable, tal como en recintos por encima de la frecuencia de Schroeder, VTf Sch /700 60≈ (Joseph et al., 1994). Esta configuración local permite cancelar el campo primario en pequeñas zonas de silencio, con una fuerza acústica de la fuente secundaria pequeña en relación con la de la primaria, lo que asegura que la energía secundaria en el campo lejano es pequeña en comparación con la primaria. El control local será analizado en mayor profundidad en la Sección dedicada al control activo en recintos.

Una forma elemental de diferenciar entre control global y local es analizar el patrón de interferencias entre dos fuentes puntuales (van Overbeek, 1993). Sea P una fuente primaria, de función de fuente SS (t), y S una fuente secundaria de función de fuente Ss(t), véase la siguiente figura. La función de

Memoria Descriptiva Pág. - 45 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera fuente engloba a la fuerza acústica de fuente, o velocidad de volumen, q. Posteriormente se analizará la relación entre ambas en el dominio de frecuencias. En un punto del plano (x, y) a distancia rp de la fuente primaria y rs de la fuente secundaria el campo acústico p(r,t) es

Patrón de interferencias de dos fuentes puntuales

s

ss

p

pp

rcr

tS

rcr

tStrp

ππ 44),(

⎟⎠⎞

⎜⎝⎛ −

+⎟⎟⎠

⎞⎜⎜⎝

⎛−

=

donde c es la velocidad de propagación. Para que en un punto (xc, yc) exista cancelación es necesario que

⎥⎥⎦

⎢⎢⎣

⎡⎟⎟⎠

⎞⎜⎜⎝

⎛−−−=

cr

cr

tSrr

tS cscpp

cp

css

,,

,

,)(

Por consiguiente, para que se produzca cancelación en el punto (xc,yc) se han de dar las siguientes condiciones:

• Causalidad: Si no existe información a priori de la fuente primaria, se requiere que

cscp rr ,, ≥

El punto de cancelación estará siempre más próximo a la fuente secundaria.

• Condición de fase. Todos los puntos donde ocurra cancelación activa

han de tener el mismo retardo de fase. Es decir

mrrrr cscpsp =−=− ,,

Memoria Descriptiva Pág. - 46 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

que es la ecuación de una hipérbola

( ) 220 axx

aby +−±=

donde xs s es la abscisa de la fuente secundaria, x1 = (m + xs) / 2 es el vértice de la hipérbola, x0 = xs/2 es el centro de la hipérbola, a = x1 - x0 es el semieje mayor, 22 ab −= ξ es el semieje menor, y 0xxs −=ξ es la distancia desde el centro hasta el foco.

• Condición de amplitud. Los puntos de cancelación activa han de

satisfacer la condición

α==cp

cs

p

s

rr

rr

,

,

que es la ecuación de una circunferencia

( ) 222

1 Ryxx =+−

con centro en y radio )1/( 21 α−= sxx )1/( 2αα −⋅= sxR

Así pues, los puntos de cancelación serán la intersección de una

hipérbola con una circunferencia. La figura siguiente muestra los puntos de intersección para el caso xs =1.53 y (xc,yc)=(1.33, 0.533).

En el caso 3D, la hipérbola es un hiperboloide, la circunferencia una

esfera, y los puntos de cancelación se convierten en una circunferencia perpendicular al eje z.

Ahora supongamos que la fuente primaria es periódica de periodo T

)()( nTtStS pp += , n entero

Memoria Descriptiva Pág. - 47 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Hipérbola de fase y circunferencia de amplitud para Xs=1.53 y (xc, yc)=(1.33, 0.533)

En este caso no es necesaria la restricción de la causalidad y habrá más hipérbolas que cumplan la condición de fase

ncTmrr sp +=− o, teniendo en cuenta que Tc=λ,

λnmrr sp +=−

Las zonas de silencio son ahora las intersecciones de la circunferencia de amplitud con las hipérbolas de fase. El número de cortes de las hipérbolas con la circunferencia dependerá de la relación de λ a m.

De este estudio sencillo deducimos que no es posible el control global de

una fuente puntual con otra fuente puntual. El patrón de interferencias muestra claramente zonas de cancelación, aunque también pueden existir zonas de refuerzo. Para ver esto mejor, razonemos en el dominio de frecuencias. Sea

sp jkr

s

sjkr

p

psp e

rS

er

SfrPfrPfrP −− +=+=

ππ 44),(),(),(

En condiciones de antirruido en (xc,yc)

jkm

ps efSfS −−= )()( α

De las Ecs. (41) y (42)

( )⎥⎦

⎤⎢⎣

⎡−= +−− mrrjk

s

pp

sperr

frPfrPα

1),(),(

Memoria Descriptiva Pág. - 48 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Y definiendo la reducción del campo primario, RCP, como el logaritmo del cociente entre el campo total y el campo primario, obtenemos finalmente

( )⎥⎦

⎤⎢⎣

⎡−−== +−− mrrjk

s

pp sperr

frP

frPdBRCP

α1log20

),(

),(log20)(

La figura siguiente muestra la RCP para una fuente secundaria en

xs=1.533, (xc,yc)=(1.33,0.53), y longitud de onda λ =0.25 m, con un mapa de contornos , donde se aprecia mejor el patrón de interferencias. Nótese que RCP>0 equivale a cancelación, mientras que RCP<0 equivale a amplificación. Como hecho a destacar, en la posición de la fuente secundaria se produce una amplificación del campo sonoro global.

El análisis esbozado para dos fuentes puntuales, una primaria y una

secundaria, puede ser extrapolado a un número arbitrario de fuentes primarias y secundarias. Tokhi (1994) demostraba que el tamaño de las zonas de cancelación depende del número y separación de fuentes secundarias. Reduciendo la separación entre fuentes se incrementa el tamaño de las zonas de cancelación (Tokhi y Leitch, 1992).La Figura 40 muestra los patrones de interferencia para una fuente primaria en el centro del sistema (x, y) y dos, tres y cuatro fuentes secundarias. Nótese que los contornos mostrados aquí corresponden a lo que Tokhi define como el factor de cancelación de campo, K = -RCP. Por consiguiente, K<0 corresponde ahora a zonas de cancelación, mientras que K>0 son las zonas de amplificación.

Reducción del campo primario (RCP) para XS=1.533, (xc,yc)=(1.33, 0.53) y λ =0.25

Memoria Descriptiva Pág. - 49 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Patrones de interferencia para una fuente primaria y dos (a,b) tres (e) y cuatro (d) fuentes

secundarias (Según Tokhi, 1994)

Chou (1994) demostraba que la elección del número de micrófonos y fuentes secundarias afecta también a la estabilidad y condicionamiento del controlador. Mediante una formulación en el dominio temporal, descomponía la matriz asociada a la función de coste del sistema de manera tal que su rango es proporcional al número de micrófonos, al número de altavoces y a la longitud del filtro multicanal.

Elliott y Nelson (1993) analizaban el patrón de interferencias de dos

monopolos desde el punto de vista de la potencia neta radiada, llegando a conclusiones muy interesantes. Sea

⎟⎟⎠

⎞⎜⎜⎝

⎛⎟⎟⎠

⎞⎜⎜⎝

⎛=⎟⎟

⎞⎜⎜⎝

s

p

sssp

pspp

s

p

qq

ZZZZ

PP

la ecuación matricial que relaciona las presiones radiadas por los monopolos primario y secundario, en función de sus velocidades de volumen complejas, q (en el dominio de frecuencias, la función de fuente y la velocidad de volumen de una fuente simple están relacionadas por S=jwq ), Zpp y Zss son las impedancias acústicas de entrada vistas desde las fuentes primaria y secundaria, respectivamente, y Zps=Zsp es la impedancia acústica de

Memoria Descriptiva Pág. - 50 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera transferencia entre las fuentes primaria y secundaria. Las potencias acústicas radiadas por cada una de las fuentes son

{ }ppp pqW *Re5.0= , { }sss pqW *Re5.0= y la potencia total radiada es:

[ ]pppsspppspssssT RqqRqqRqRqW2**25.0 +++=

donde:

{ }ssss ZR Re= , { }pppp ZR Re= , y { }spsp ZR Re=

Corno vemos, la potencia total consta de dos tipos de términos: la potencia radiada por cada unos de los monopolos aisladamente, y unos términos cruzados que contienen la influencia de la fuente secundaria en la primaria. Supongamos que qs=~qp . En este caso, teniendo en cuenta que en campo libre y encontramos finalmente

)4/()( 2 cRR SSPP ⋅⋅⋅== πρω )(sin)4/( 2 krccRSP ⋅⋅⋅⋅= πρω

[ ])(sin12 krcWW ppTD −=

donde el subíndice TD hace referencia al carácter dipolar de esta estrategia. La figura siguiente muestra Wtd /Wpp , en línea de puntos, como una función de la separación entre las fuentes primaría y secundaria, en términos de la longitud de onda. Con tal de que r<0.3λ, la potencia total es menor que la potencia primaria. Para r > λ, la potencia total es aproximadamente el doble que la potencia primaria (3 dB). Otra estrategia es calcular la potencia acústica de salida de ambas fuentes y ajustar la fuente secundaria de modo que esta potencia global sea mínima. Elliott y Nelson (1993) demuestran que la velocidad de fuente de la fuente secundaria que minimiza la potencia global es

, siendo esta potencia óptima (mínima) )(sin krcqq psp −=

[ ])(sin12 2 krcWW ppTO −=

WTO=WPP aparece como línea continua en la siguiente figura. Nótese como para distancias cortas entre ambas fuentes WTO coincide prácticamente con WTD Sin embargo, a medida que crece r, WTO tiende a Wpp (0 dB).

Memoria Descriptiva Pág. - 51 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Potencia total radiada por dos fuentes monopolares para el caso dipolar (WTD) y para el caso

óptimo (WTO) (Según Elliott y Nelson, 1993)

De la discusión anterior pueden extraerse algunas conclusiones importantes (Mangiante y Vian 1977):

• Las fuentes secundarias son más efectivas para controlar un campo primario cuanto más próximas estén a la fuente primaria.

• La efectividad de un sistema CAR es mayor a frecuencias más bajas. • La cancelación es tanto mayor cuantas más fuentes secundarias

existan.

En realidad, el mínimo número requerido de fuentes secundarias puede deducirse del principio de Nyquist. Estamos muy familiarizados con el criterio de Nyquist en la transformación tiempo/frecuencia. La señal temporal continua puede reproducirse fielmente con un número discreto de muestras temporales con tal de que el intervalo de muestreo sea menor que el doble de la frecuencia más alta en su espectro )2/1( maxft ≤Δ .Con un muestreo tal se evita el problema conocido como aliasing temporal. Puede razonarse de manera análoga para establecer un criterio de Nyquist espacial. De este modo, un frente de onda espacial continuo puede reproducirse fielmente con un número discreto de fuentes secundarias con tal de que la separación entre éstas sea menor que la mitad de la longitud de onda más alta en dicho frente de ondas

Memoria Descriptiva Pág. - 52 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

)2/( maxλ≤Δx . De nuevo, a frecuencias más bajas, las longitudes de onda son más largas, y se puede reproducir el campo primario con un número menor de fuentes.

Hasta ahora hemos considerado un campo primario sin especificar el tipo de fuente que lo genera. Si la fuente es pequeña con relación a la longitud de onda, y a una distancia suficiente, la fuente se comporta como un monopolo (una fuente simple). Sin embargo, si la fuente es extensa, el campo próximo radiado difiere significativamente del de un monopolo. Kempton (1976) se planteaba el problema de sustituir una fuente por un desarrollo multipolar. Cada término del desarrollo es un multipolo, y el número de términos requeridos depende del problema particular. El primer término es un monopolo, el segundo un dipolo, y así sucesivamente. En baja frecuencia y en el campo lejano, se obtiene una buena aproximación con un sólo término (principio de la fuente simple). Swinbanks (1972) encontraba que la fuente secundaria ideal para reproducir el campo primario en un tubo era un array de tres anillos, cada uno de ellos formado por tres fuentes puntuales (tripolos). Jessel y Mangiante (1972) reconstruían el campo secundario de un monopolo en un tubo con un tripolo Jessel y Angevine (1982) usaban una combinación apropiada de monopolos, dipolos y cuadripolos para reproducir el campo de un transformador eléctrico en una cámara anecoica.

En realidad, el desarrollo multipolar está muy relacionado con el diseño

de sistemas array en acústica. Si denotamos por T(r) la distribución de sensibilidad en los elementos del array (función tapering) y por D(k) la función directividad, ambas funciones están relacionadas por una transformada de Fourier

∫∞

∞−

−= drerTkD jkr)()(

Así pues, si se conoce el patrón espacial del campo primario, siempre es

posible calcular la distribución de sensibilidad de un array que reproduzca un campo secundario con las mismas características espaciales.

Una vez elegidas las posiciones y el número de fuentes secundarias,

hay que extrapolar los campos primario y secundario hasta la posición de cancelación (véase le figura).

Memoria Descriptiva Pág. - 53 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Extrapolación de los campos primario y secundario hasta la posición de cancelación

De acuerdo al principio de causalidad, la vía acústica ha de ser más

lenta que la vía electrónica. Para que ocurra esto, la zona de cancelación ha de estar alejada lo suficiente de la zona de medida del campo primario. Por tanto, conocido el campo medido en un punto, hay que predecir la forma de este campo en otra zona del espacio. Este es un típico problema de extrapolación de campos de ondas. El operador extrapolación ha de estar basado en la ecuación de ondas del problema. En un campo libre, o en un tubo por debajo de la frecuencia de corte del primer modo transversal, el operador extrapolación es un simple cambio de fase. Sin embargo, en una geometría más compleja, el operador extrapolación resulta de la aplicación del teorema de Kirchhoff, o de su versión en acústica, la integral de Rayleigh (Berkhout, 1984). El teorema de Kirchhoff establece que si se conoce el campo acústico en una zona cerrada se puede predecir el campo en cualquier punto de su interior. En un problema multicanal, la reconstrucción del campo acústico ha de ser necesariamente espacial y temporal. En este sentido, se trata de una aplicación de la holografía acústica. El principio básico de este proceso es el principio de Huygens que establece que un frente de ondas puede ser reconstruido a partir de la superposición lineal del campo radiado por fuentes secundarias distribuidas a lo largo del frente de ondas primario. La implementación de una superposición lineal en procesado de señal es una convolución. En la aplicación que nos ocupa, la extrapolación equivale a una convolución temporal y espacial. La convolución espacial involuntario significa que cada uno de los sensores del campo primario ha de estar interconectado con cada una de las fuentes secundarias (véase la figura).

Memoria Descriptiva Pág. - 54 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Interconexión multicanal de altavoces y micrófonos en un sistema CAR (Según Berkhout, 1988)

La implementación matemática del operador extrapolación por la integral de Rayleigh es (Berkhout, 1988)

∫∫∫−

+=V

jkr

dddr

ejkrfPfzyxP ξηςϕξης 2cos)1)(,,,(),,,(

donde 222 )()()( ξης −+−+−= zyxr , y rx /)(cos ςϕ −= . En el caso discreto

∑∑∑ ΔΔΔ+=m n l mnl

jkr

mnllnm zyxreklrfzyxPfzyxP 2cos)1)(,,,(),,,( ϕ

ó:

∑∑∑ −−−=m n l

lnmlnm fzyxPfzzyyxxWfzyxP ),,,(),,,(),,,(

o, en lenguaje matricial

Memoria Descriptiva Pág. - 55 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

),(),(),( frPfrWfrrP Δ=Δ+ donde es la matriz de extrapolación. En la anterior figura, se ha considerado el caso 2D y se ha descompuesto cada elemento como un factor de amplitud y un retardo temporal, .De acuerdo con el criterio de Nyquist, en el caso 3D

zyxrejkrrfW mnlmnljkr

mnlmnl ΔΔΔ+=Δ − )/(cos)1()( 2ϕ

mnjwt

mnmm eAW −=2/maxλ≤Δ=Δ=Δ zyx . En el caso 3D, el operador extrapolación es una matriz

3D.

Jessel y Angevine (1982) planteaban el problema de la cancelación activa como una aplicación del principio de Huygens (véase figura).

Principio de interferencia de ondas. (a) campo de una fuente primaria (b) campo de la fuente

secundaria; (c) interferencia (Según Jessel y Angevine, 1982)

Según Jessel y Angevine, dada una fuente primaria Sp radiando un campo Fp en un volumen V, existe una superficie Z0, que encierra a Sp y divide V en V1 y V2 tal que una distribución de fuentes secundarias SH sobre ZH radia un campo FH que es cero en V1 y Fp en V2. Por consiguiente en V2 la fuente primaria puede ser sustituida por la distribución de fuentes secundar las de Huygens FH. Consideremos ahora una serie de fuentes secundarias SS = -SH obtenidas cambiando simplemente la fase de SH. Debido a la linealidad, estas fuentes radiarán un campo -FH = -Fp en V2. El campo resultante en V2 será entonces Fp en V1 y Fp + (-Fp)=0 en V2. Para calcular la distribución de fuentes secundarias se requiere conocer el campo primario y la superficie Z0. En CAR, el campo primario se mide por medio de un array de micrófonos. La distribución de fuentes secundarias se obtiene aplicando el teorema de Kirchhoff, como se ha discutido anteriormente.

Además de que el operador extrapolación esté diseñado correctamente, para un buen funcionamiento del sistema CAR se requiere que las características del ruido no cambien en la trayectoria entre el micrófono de referencia y la zona de cancelación (micrófono de error). Una de las causas de este cambio puede ser la turbulencia, en el caso de un flujo. La medida de esta constancia de las características espectrales es la coherencia. De hecho, la pérdida de coherencia establece un límite a la máxima cancelación que se puede conseguir por control activo (Nowicki et al., 1994). Ross (1982b) usaba un micrófono especialmente diseñado para mejorar la relación de la señal coherente con respecto al ruido del flujo turbulento. El micrófono estaba inserto en un cilindro metálico con el extremo opuesto cerrado aerodinámicamente,

Memoria Descriptiva Pág. - 56 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera perforado en sus paredes para permitir a las fluctuaciones de presión alcanzar el diafragma. El efecto de los agujeros era promediar a cero la parte incoherente del campo de ruido. La relación del campo coherente al campo turbulento mejoraba aún más si alineaba el flujo en frente del altavoz por medio de unos tubos finos paralelos a las paredes del tubo. Roure (1985) tenía en cuenta la densidad espectral del flujo turbulento en el diseño del controlador en un tubo, estableciendo en 10 m/s el límite de flujo turbulento para obtener cancelaciones. Sistemas de Control Activo de Ruido (CAR). INTRODUCCIÓN

Una vez decidido el número de fuentes secundarias, y su situación en el campo a cancelar, es necesario decidir la estrategia de control. Elliott y Nelson (1993), Leitch y Tokhi (1987) y van Overbeek (1993) distinguen entre una estrategia feedback y una feedforward.

La cancelación del ruido de ancho de banda requiere conocimientos de las fuentes generadoras del ruido (de ruido primario) para generar la señal de anti-ruido. La medida del primer ruido es usada como una referencia de entrada al ruido cancelador. En primer lugar el ruido que se asocia con la referencia de entrada es cancelado después del generador de ruido (un altavoz) cuando la fase y la magnitud están correctamente modeladas en el controlador digital.

Para la cancelación del ruido de banda estrecha (reducción del ruido periódico producido por una maquinaria rotatoria), han sido desarrolladas técnicas activas que son muy efectivas y que no dejan nada a la casualidad (teniendo conocimientos previos de señales de ruido). En lugar de usar un micrófono de entrada, la señal de un tacómetro da información sobre la frecuencia primaria del sonido generador. Porque todos los ruidos repetitivos suceden en armónicos de la frecuencia rotacional básica de la máquina, el sistema de control puede modelar esa frecuencia de ruido conocida y generar la señal de anti-ruido. Este tipo de sistemas de control es deseable en cabinas de vehículos, porque no se ve afectado por las señales de alerta del mismo, funcionamiento de la radio, o la conversación, las cuales no estarán normalmente sincronizadas con el motor de rotación.

Los sistemas de control activo de ruido están basados en uno de los dos métodos. El control feedforward es donde una referencia coherente de ruido de entrada es detectada antes de que se propague por el altavoz cancelador. El control feedback es donde el control activo de ruido intenta cancelar el sonido sin la ventaja de una referencia de entrada.

Los sistemas CAR feedforward son las principales técnicas usadas hoy en día. Los sistemas feedforward están además clasificados dentro de dos categorías:

• Control adaptativo feedforward de ancho de banda con sensor acústico de entrada.

• Control adaptativo feedforward de banda estrecha con sensor de entrada no-acústico.

Memoria Descriptiva Pág. - 57 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

En una configuración feedback, véase la siguiente figura, el campo medido por el micrófono monitor, e. es realimentado al altavoz secundario, a través de un filtro eléctrico, para generar el campo secundario, y. Este campo es extrapolado hasta la posición del monitor, como un campo secundario x, que interacciona con el campo primario, d. En esta configuración e=x+d. Pero x = y * c = e * h * c, donde * denota convolución, h es la respuesta impulsiva del filtro eléctrico y c es el operador extrapolación desde la fuente secundaria hasta el micrófono monitor. (Nótese que anteriormente hemos denotado a este operador por W. Cambiamos aquí la notación para adaptamos a la que usa cada autor en sus artículos). Así pues, e=e*h*c+d, y en términos de la transformada de Laplace, E(s)[1-C(s)H(s)]=D(s). La función de transferencia entre el campo primario y el campo total es entonces

)()(11

)()(

SHsCsDsE

−=

Si la función de transferencia entre el altavoz secundario y el micrófono

monitor fuera relativamente constante y libre de cambio de fase, entonces E(s) tendería a cero (máxima cancelación) cuando H(s) tendiese a - ∞. Es decir, el controlador ideal sería un simple amplificador inverso. Este es el principio de la tierra acústica virtual que hemos mencionado anteriormente.

(a) Controlador acústico feedback. (b) Circuito equivalente. (c) Diagrama de bloques del controlador digital. (d) Diagrama de bloques equivalente si (Según Elliott y Nelson, 1993)

Por desgracia, la función de transferencia C(s) no es completamente

plana en amplitud, ni está exenta de un cambio de fase. La propia propagación entre el altavoz y el micrófono supone ya un retardo de fase. Si a alguna

Memoria Descriptiva Pág. - 58 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera frecuencia, este cambio de fase se hace 180 º la función HC cambia de signo, el filtro puede inestabilizarse, y el campo sonoro sería reforzado en lugar de cancelado. Para evitar este retardo de fase, el altavoz y el micrófono suelen estar muy próximos en un controlador feedback. El retardo de fase crece con la frecuencia. De nuevo, encontramos otra limitación más al funcionamiento del CAR en el margen de frecuencias medias y altas. Como veremos, se puede compensar electrónicamente el retardo de fase de la vía acústica altavoz - micrófono. Esto ensancha el margen de frecuencias de aplicación del sistema CAR.

En la anterior figura también se muestra el circuito equivalente del

controlador feedback. Consideremos ahora que el filtro es digital, con lo cual las transformadas de Laplace son sustituidas por transformadas z. Además, el controlador H(z) es implementado como una combinación paralela de una parte feedback, W(Z) y otra feedforward . La función de transferencia de este controlador es H(z) = W(z)/[1 + W(z) ], y sustituyendo, se obtiene

)(ˆ zC)(ˆ zC

[ ])()(ˆ)(1)()(1

)()(

zCzCzWzCzW

zDzE

−++

=

Si diseñamos tal que =C(z) entonces )(ˆ zC )(ˆ zC

)()(1)()( zCzW

zDzE

+=

cuyo diagrama de bloques aparece también en la anterior figura. Este método de compensar por el retardo de la vía acústica secundaria transforma el problema feedback en uno feedforward. El filtro W(z) puede hacerse adaptativo para conseguir la máxima cancelación. Si la vía secundaria varía con el tiempo, entonces C(z) también ha de hacerse adaptativo.

En una estrategia feedforward se usa un sensor de referencia para detectar el campo primario en alguna posición anterior al micrófono monitor. Esta señal de referencia de entrada al controlador es especialmente útil en ruido aleatorio de banda ancha. Si el ruido es periódico, tal como el de maquinaria rotatoria, esta señal de referencia puede ser detectada por otro sensor distinto a un micrófono (por ejemplo, un acelerómetro). Esto tiene la ventaja de que el detector no se ve afectado por el campo secundario. Este es un problema usual en controladores feedforward, el micrófono de referencia detecta, además del campo primario, el campo secundario.

Memoria Descriptiva Pág. - 59 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

(a) Controlador feedforward (b) Circuito equivalente (Según Elliott y Nelson, 1993)

Se han propuesto muchas soluciones para evitar esta realimentación

acústica del altavoz secundario en el micrófono de referencia. Por ejemplo, en el caso del control en tubos, se puede situar un micrófono unidireccional antes del altavoz secundario. Swinbanks (1972) proponía el uso de unos arrays anulares de fuentes puntuales. Blondel y Chapelle (1995) publicaban recientemente un diseño electrónico para conseguir micrófonos direccionales en baja frecuencia. En esencia, el sistema consiste en dos micrófonos separados una cierta distancia, uno de los cuales tiene incluido un retardador de fase. La salida de ambos micrófonos se introduce en un filtro digital cuyos coeficientes son adaptados para proporcionar una salida unidireccional. Con esta configuración, los autores conseguían índices de directividad entre 38 y 68 dB, para sonidos a frecuencias puras, y entre 15 y 45 dB para sonidos de banda ancha, en la banda de frecuencias entre 50 y 250 Hz. Controladores feedforward con este tipo de micrófonos conseguían una atenuación adicional de unos 10 dB, en comparación con el caso omnidireccional.

También se puede compensar esta realimentación acústica en el propio diseño del controlador feedforward. Para ello, se usa un modelo eléctrico de esta realimentación acústica dentro del controlador, cuya salida se resta de la señal detectada por el micrófono de referencia.

Del diagrama de bloques de la figura anterior se puede deducir la

siguiente función de transferencia entre el micrófono monitor y el campo primario

)()()(1

)()(

zPzCzW

zDzE

+=

donde P(z) es la función de transferencia entre el sensor de referencia y el sensor de error. Los coeficientes del filtro W(z) pueden ser ajustados para minimizar la señal en el sensor de error, E(z). El diseño óptimo se obtiene cuando W(z)= P(z)/C(z). Es decir, el controlador feedforward tiene que compensar, por una parte la vía acústica primaria entre el micrófono monitor y el de referencia, P(z) (extrapolación), y por otra la vía acústica secundaria entre el altavoz secundario y el micrófono monitor , C(z) (filtrado inverso).

En esta sección también hablaremos de algoritmos usados en tres tipos de sistemas CAR:

• Sistemas CAR feedforward ancho de banda que usan un sensor de entrada acústico (micrófono).

Memoria Descriptiva Pág. - 60 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

• Sistemas CAR feedforward de banda estrecha que usan un sensor de entrada no acústico.

• Sistemas CAR feedback que sólo usan un sensor de error.

Los filtros adaptativos pueden ser realizados como:

• Transversales Respuestas a impulsos finitos (FIR). • Recursivos Respuestas a impulsos infinitos (IIR). • Filtros enrejados. • Filtros en el dominio de las transformadas.

El algoritmo más común aplicado a los filtros adaptativos es el filtro

transversal usando el algoritmo de medios-mínimos cuadrados (LMS). El ruido residual puede ser usado como señal de error de entrada para un algoritmo adaptativo que ajusta los coeficientes del filtro para modelar (estimar) los efectos acústicos del canal. El sistema feedforward de ancho de banda

Una considerable cantidad del ruido de ancho de banda es producido en conductos tales como tubos de escape y sistemas de ventilación. Un sistema de control feedforward relativamente simple es el mostrado en la figura siguiente, un conducto estrecho. La señal de referencia x(n) es medida por un micrófono de entrada encerrado en el conducto del ruido, antes de que el ruido pase por un altavoz. El cancelador de ruido usa la referencia de la señal de entrada para generar una señal y(n) de igual amplitud pero desfasada 180º. Esta señal de anti-ruido es usada para llevar al altavoz a producir un sonido cancelador que atenúe el ruido acústico primario en el conducto.

El principio básico del método feedforward ancho de banda es que el retraso del tiempo de propagación entre el sensor de ruido aguas arriba (micrófono de entrada) y la fuente del control activo (altavoz) ofrece la oportunidad de reintroducir eléctricamente el sonido en el campo de acción en la posición donde causará cancelación. El espacio entre el micrófono y el altavoz debe satisfacer el principio de causalidad y alta coherencia, queriendo decir que la referencia debe ser medida suficientemente pronto para que la señal de anti-sonido pueda ser generada en el tiempo en que el sonido alcanza el altavoz. Además la señal de ruido del altavoz debe ser muy similar al ruido medido en el micrófono de entrada, queriendo decir que el canal acústico no puede cambiar significativamente el ruido. El cancelador de ruido usa la señal de entrada para generar una señal y(n) que es de igual amplitud y desfasada 180º con respecto a x(n). Este ruido es llevado al altavoz y usado para cancelar el ruido no deseado.

Memoria Descriptiva Pág. - 61 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

El micrófono de error mide la señal de error (o residual) e(n), la cual es usada para adaptar los coeficientes del filtro para minimizar este error. El uso de una señal de error aguas abajo para ajustar el filtro adaptativo no constituye feedback (retroalimentación), porque la señal de error no es comparada con la señal de entrada.

Las implementaciones actuales requieren consideraciones adicionales para manejar los efectos acústicos en el conducto. Esas consideraciones serán discutidas más adelante. Algoritmos para sistemas CAR feedforward ancho de banda

El control activo de ruido de banda ancha puede ser descrito en un sistema de bloques, como se muestra en la figura 6. Usando una representación digital en el dominio de la frecuencia del problema, el sistema de control activo de ruido ideal usa un filtro adaptativo W(z) para estimar la respuesta de una desconocida trayectoria acústica primaria P(z) entre el sensor referencia de entrada y el sensor de error. La transformada en z de e(n) puede ser expresada como:

E(z)=D(z)+Y(z)=X(z)[P(z)+W(z)] (1) donde E(z) es la señal de error, X(z) es la señal de entrada, e Y(z) es la salida del filtro adaptativo. Después del filtro adaptativo W(z) ha convergido, E(z)=0. La ecuación (1) se convierte:

W(z)=-P(z) (2) lo que implica que:

y(n)=-d(n) (3)

Por lo tanto, la salida del filtro adaptativo y(n) tiene la misma amplitud pero está 180º desfasada respecto del ruido primario d(n). Cuando d(n) e y(n) están combinadas acústicamente, el error residual llega a ser 0, resultando una cancelación entre ambos sonidos basada en el principio de superposición.

Memoria Descriptiva Pág. - 62 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Efectos de la trayectoria secundaria.

La señal de error e(n) es medida a través de un micrófono aguas abajo (después) del altavoz cancelador. La unión sumada en la figura 6 representa el ambiente acústico entre el altavoz cancelador y el micrófono de error, donde el ruido primario d(n) es combinado con el antirruido y(n) de salida del filtro adaptativo. La señal de antirruido puede ser modificada por la función de la trayectoria secundaria H(z) en el canal acústico desde y(n) a e(n), justo como el ruido primario es modificado por la primera trayectoria P(z) desde la fuente de ruido del sensor de error. Por tanto, eso es necesario que se compense por H(z). Un diagrama de bloque más detallado de un control activo de ruido que incluye la segunda trayectoria H(z) se muestra en la figura 7.

De la figura 7, la transformada en z de la señal de error es:

Memoria Descriptiva Pág. - 63 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

E(z)=X(z) P(z) + X(z) W(z) H(z) (4)

Asumiendo que W(z) tiene suficiente orden, después de la convergencia del filtro adaptativo, el error residual es 0 (esto es, E(z)=0). Este resultado requiere que W(z) sea:

W(z)=-P(z)/H(z) (5) para realizar la óptima función de transferencia.

Así, el filtro adaptativo W(z) tiene como modelo la primera trayectoria P(z) e inversamente el modelo de la segunda trayectoria H(z). Sin embargo, es imposible invertir el retraso causado por H(z) si la primera trayectoria no contiene un retraso de como mínimo igual duración. Este es el principal límite que causa restricción en sistemas de control de ancho de banda feedforward. Además, de la ecuación (5), el sistema de control es inestable si hay una frecuencia ω tal que H(ω)=0. También, el sistema no es efectivo si hay una frecuencia ω donde P(ω)=0, (esto es, un cero en la primera trayectoria causa una frecuencia de control no observable). Por lo tanto, las características de la trayectoria secundaria H (z) tienen efectos significativos en el funcionamiento de un sistema CAR. Filtrado X, Algoritmo Mínimo-Medio-Cuadrado (FXLMS)

Para acometer los efectos de la función de transferencia de la segunda trayectoria H(z), el algoritmo convencional LMS (mínimo, medio, cuadrado) necesita ser modificado. Para asegurar la convergencia del algoritmo, la entrada del error relacionado es filtrada por una estimación de segunda trayectoria C(z). Este resultado en el algoritmo filtrado FXLMS desarrollado por Morgan. Burgges ha sugerido usar este algoritmo FXLMS para compensar los efectos de la trayectoria secundaria en aplicaciones CAR.

El algoritmo FXLMS es ilustrado en la figura 8, donde la salida y(n) es calculada como:

∑−

=

−==1

0)()()()()(

N

ii

T inxnwnxnwny (6)

donde [ T

NT nwnwnwnw )(...)()()( 110 −= ] es el vector de coeficientes de W(z)

en tiempo n y [ ]TNnxnxnxnx )1(...)1()()( +−−= es el vector señal de referencia en tiempo n.

El filtro es implementado en un DSP en la forma:

∑−

=

−=1

0)()()(

N

ii inxnwny

Memoria Descriptiva Pág. - 64 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

El algoritmo FXLMS puede ser expresado como:

)()()()()1( nhnxnenwnw μ−=+ (7) donde µ es el tamaño del paso del algoritmo que determina la estabilidad y la convergencia del mismo y h(n) es la respuesta impulso de H(z). Por lo tanto, el vector de entrada x(n) es filtrado por H(z) antes de actualizar el vector peso. No obstante, en aplicaciones prácticas, H(z) es desconocida y debe ser estimada por el filtro, C(z). Por lo tanto:

)(')()()1( inxnenwnw ii −−=+ μ 1,...1,0 −= Ni (8) y:

)(')()()1( nxnenwnw μ−=+ (9) donde:

∑−

=

−==1

0)()()('

M

ii

T inxcnxcnx (10)

es el vector de la versión filtrada de la entrada de referencia x'(n) que es calculado como:

[ TNnxnxnxnx )1('...)1(')(')(' +−−= ] (11) y:

Memoria Descriptiva Pág. - 65 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

[ ]TMcccc 110 ... −= (12) es el vector de coeficientes de la estimación de la segunda trayectoria, C(z).

Cuando este algoritmo es implementado, la convergencia del filtrado puede ser conseguida mucho más rápidamente de lo que sugiere la teoría, y el algoritmo parece ser muy tolerante a errores hechos en la estimación de la trayectoria secundaria H(z) por el filtro C(z). Como mostró Morgan, el algoritmo todavía converge con casi 90º de error de fase entre C(z) y H(z).

Esto as importante en la ecuación (7), en donde la aplicación CAR usa un signo menos en lugar de un signo más como en un algoritmo LMS convencional. Esto es porque la señal de error en un sistema CAR es e(n))d(n)+y'(n), debido al hecho de que el error residual e(n) es el resultado de superposición (adicción) acústica en lugar de resta eléctrica.

La función de transferencia H(z) es desconocida y es variable en el tiempo debido a los efectos tales como envejecimiento de los altavoces, cambios de temperatura, y el flujo de aire en la trayectoria secundaria. Así, algunas de las técnicas de modelado on-line estaban desarrolladas por Eriksson. Asumiendo la característica de que H(z) es desconocida pero invariante en el tiempo, una técnica de modelado off-line puede ser usada para estimar H(z) durante la estación de prueba. Al final de la prueba, el modelo estimado C(z) es arreglado y usado para control activo de ruido (CAR). El sistema experimental para sistemas de modelado off-line se muestra en la figura 9, donde un ruido blanco no correlativo es generado internamente por el DSP. El procedimiento de prueba es resumido en la siguiente figura.

Memoria Descriptiva Pág. - 66 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

1. Generar una muestra de ruido blanco y(n). Reproducir la señal y(n) para producir cancelación por el altavoz. Este ruido blanco generado internamente es usado como referencia de entrada para el filtro adaptativo C(z) y los coeficientes de algoritmo de adaptación LMS.

2. Tomamos de la entrada la respuesta e(n) de la trayectoria secundaria

del micrófono de error.

3. Calcula la respuesta del modelo adaptativo r(n):

∑−

=

−=1

0)(()()(

M

ii inyncnr (13)

donde ci(n) es el i-ésimo coeficiente del filtro adaptativo C(z) en tiempo n y M es el orden del filtro.

4. Calcula la resta

)()()(' nrnene −= (14)

5. Actualiza los coeficientes del filtro adaptativo C(z) usando el

algoritmo LMS:

Memoria Descriptiva Pág. - 67 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

)()(')()1( inynencnc ii −+=+ μ i = 0, 1,…, M-1 (15)

donde µ es el tamaño del paso que debe satisfacer la siguiente condición de estabilidad:

yMP10 << μ (16)

donde Py es la potencia generada por el ruido blanco y(n).

6. Repite el procedimiento durante 10 segundos. Guarda los coeficientes del filtro adaptativo C(z) y úsalos en la siguiente cancelación de ruido.

Después de que el modelo off-line sea completado, el sistema esta

sometido en modo de cancelación activa de ruido. El algoritmo está lustrado en la siguiente figura, y el proceso de control de ruido on-line es resumido siguiendo dicha figura.

1. Introduce la señal de referencia x(n) (del micrófono de entrada) y la señal de error e(n) (del micrófono de error) en los puertos de entrada.

2. Calcula el anti-ruido y(n) de la siguiente manera:

∑−

=

−=1

0)()()(

N

ii inxnwny (17)

donde wi(n) es el-ésimo coeficiente del filtro adaptativo W(z) en tiempo n y N es el orden del filtro w(z).

3. Reproduce al anti-ruido y(n) por el puerto de salida para llevarlo al

altavoz cancelador.

4. Calcula la versión filtrada X de x’(n):

Memoria Descriptiva Pág. - 68 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

∑=

−=M

ii nxcnx

0)1()(' (18)

5. Actualiza los coeficientes del filtro adaptativo W(z) usando el

algoritmo FXLMS

)(')()()1( inxnenwnw ii −−=+ μ i = 0, 1,…,N-1 (19)

6. Repite el procedimiento para la nueva iteración. Nota que el número

total de posiciones de memoria que son requeridas por el algoritmo es de 2(N+M) además de algunos parámetros.

Algoritmo FXLMS agujereado (leaky)

Cuando un filtro adaptativo es implementado en un procesador de señal con longitud de palabra constante, existe ruido que es realimentado a los pesos del filtro y se acumula continuamente. Esto puede causar que los coeficientes crezcan más que el rango dinámico del procesador (overflow), lo que lleva a un funcionamiento inexacto del filtro. Una solución a este problema está basada en añadir una pequeña función “forzadora”, la cual tiende a llevar cada peso del filtro a cero. De acuerdo con la ecuación (9), este algoritmo de filtro FXLMS “agujereado” puede ser expresado como:

)(')()()1( nxnenwvnw μ−=+ (20) donde v (factor de goteo) es levemente menor que 1 y x’(n) está definido en la ecuación (11).

El algoritmo FXLMS “leaky” no sólo puede reducir el error numérico en implementación de precisión finita sino que también limita la potencia en la salida del altavoz para evitar distorsión no-lineal, lo cual es causado por la sobreexcitación del altavoz cancelador. Efectos acústicos de la retroalimentación y soluciones (Algoritmo FBFXLMS)

Refiriéndonos otra vez al sistema simple mostrado en la figura 2, el anti-ruido salido del altavoz no sólo cancela el ruido acústico “aguas abajo”, desafortunadamente, también radia sonido al micrófono “aguas arriba”, resultando una referencia contaminada de entrada x(n). Esta retroalimentación acústica introduce polos o lazos de retroalimentación en la respuesta del modelo y resulta inestabilidad potencial en el sistema de control.

Este problema ha sido intensamente estudiado en literatura sobre control de ruido activo y vibraciones. Soluciones como las siguientes han sido propuestas:

1. Usando micrófonos y altavoces direccionales. (Esto tiene una limitación en que las matrices direccionales son altamente

Memoria Descriptiva Pág. - 69 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

dependientes de los elementos de dicha matriz y son direccionales sólo sobre un rango de frecuencia relativamente estrecho).

2. Usando señales de compensación fijas (generadas desde el filtro

compensador cuyos coeficientes son determinados fuera de línea usando una señal ejercitante) para cancelar los efectos de la retroalimentación acústica.

3. Usando un segundo filtro adaptativo fuera de línea en paralelo con la

trayectoria de la retroalimentación.

4. Usando un filtro adaptativo IIR.

Ahora examinaremos los métodos 2 y 4. En la figura 11 se muestra un controlador feedforward adaptativo con compensación feedback (retroalimentada). El filtro D(z) es una estimación del trayectoria feedback F(z) desde la salida del filtro adaptativo y(n) a la salida de la referencia de entrada del micrófono u(n). El filtro D(z) quita la retroalimentación acústica de la referencia del sensor de entrada; el filtro C(z) compensa la función de transferencia de la trayectoria secundaria H (z) en el algoritmo FXLMS. La extracción de la retroalimentación acústica desde la referencia de entrada añade un considerable margen de estabilidad al sistema si el modelo D(z) es acertado. Los modelos C(z) y D(z) pueden ser estimados simultáneamente por una técnica modelada fuera de línea usando ruido blanco generado internamente.

Las expresiones para el anti-ruido y(n), la señal filtrada X x’(n), y la ecuación de adaptación para el algoritmo FBFXLMS son las mismas que para el sistema CAR FXLMS, excepto que x(n) en el algoritmo FBFXLMS es una señal de retroalimentación libre que puede ser expresada de la siguiente forma:

∑=

−−=L

ii inydnunx

1)()()( (21)

donde u(n) es la señal desde el micrófono de entrada, di es el coeficiente de D(z), y L es el orden de D(z).

En el caso de un modelo perfecto de trayectoria retroalimentado (esto es, D(z)=F(z)), la retroalimentación acústica es completamente cancelada por D(z). El filtro adaptativo converge hacia la función de transferencia dada en la ecuación (5), caso ideal sin retroalimentación acústica. La función de D(z) es similar a la cancelación del eco acústico que se usa en aplicaciones de tele conferencias.

Memoria Descriptiva Pág. - 70 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

El sistema realiza un primer modelo fuera de línea para estimar la función de transferencia H(z) de la trayectoria secundaria del altavoz cancelador al micrófono de error y la función de transferencia F(z) de la trayectoria de la retroalimentación del altavoz cancelador al micrófono de entrada. El algoritmo del modelo fuera de línea está ilustrado en la siguiente figura y el procedimiento es resumido siguiéndola.

1. a) Genera una muestra de ruido blanco y(n). b) Extrae dicha señal de excitación y(n) para obtener el altavoz cancelador. c) Enviar y(n) a los filtros adaptativos C(z) y D(z). d) Enviar y(n) al algoritmo LMS para actualizar C(z) y D(z).

Memoria Descriptiva Pág. - 71 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

2. Tomar la entrada x(n) del micrófono de entrada y e(n) del micrófono de error.

3. Calcular e’(n) y f(n):

∑−

=

−−=1

0)()()()('

M

ii inyncnene (22)

y

∑−

=

−−=1

0)()()()(

L

ji jnyndnxnf (23)

4. Actualizar los coeficientes de los filtros adaptativos C(z) y D(z)

usando el algoritmo LMS:

)()(')()1( inynencnc ii −+=+ μ i = 0, 1,…, M-1 (24)

y

)()()()1( jnynfndnd jj −+=+ μ j = 0, 1,…, L-1 (25)

5. Repetir el modelado fuera de línea para 10 segundos. Guardar los

coeficientes de los filtros adaptativos C(z) y D(z) y usarlos en los siguientes modos de cancelación de ruido.

Después del modelado fuera de línea, el sistema CAR está operativo en

modo cancelación activa de ruido. El algoritmo (ilustrado en la figura 11) se resume de la siguiente manera:

1. Obtener u(n) y e(n) de los puertos de entrada.

2. Calcular la referencia de entrada x(n) libre de retroalimentación:

∑−

=

−−=1

0)()()(

L

ji jnydnunx (26)

3. Calcular el anti-ruido y(n):

∑−

=

−=1

1)()()(

N

ii inxnwny (27)

donde wi(n) es el i-ésimo coeficiente del filtro adaptativo W(z) en tiempo n y N es el orden del filtro W(z).

4. Expulsar el anti-ruido y(n) por el puerto de salida para conseguir el

altavoz cancelador.

5. Calcular la versión X-filtrada de x’(n):

Memoria Descriptiva Pág. - 72 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

∑=

−=M

ii inxcnx

0)()(' (28)

6. Actualizar los coeficientes del filtro adaptativo W(z) usando el siguiente algoritmo FXLMS:

)(')()()1( inxnenwnw ii −+=+ μ i = 0, 1,…, N-1 (29)

7. Repetir el algoritmo para la siguiente iteración. Nótese que el número total de posiciones de memoria requerida en este algoritmo es de 2*(N+M+L) además de algunos parámetros.

Algoritmo del filtro-U recursivo LMS (RLMS)

El filtro adaptativo de respuesta a impulso infinito (IIR) fue propuesto por Ericsson para uso en CAR. Esta aproximación considero la retroalimentación acústica como una parte acústica de toda la planta, y los polos introducidos por la retroalimentación fueron sustituidos por polos del filtro adaptativo IIR. Este sistema de control rastreaba dinámicamente cambios en las trayectorias secundarias y de retroalimentación durante las operaciones de cancelación. Además, como se mostró en la ecuación (5), la estructura IIR tiene la habilidad de modelar la función de transferencia con polos y ceros. Aunque hay varios algoritmos adaptativos IIR que pueden ser usados, el algoritmo recursivo LMS (RLMS) desarrollado por Feintuch es elegido aquí por razones de simplicidad computacional.

El algoritmo RLMS debe también ser modificado para compensar la función de transferencia de la trayectoria secundaria y de la retroalimentación. En la figura 13 se muestra un diagrama de bloques de un sistema CAR usando un filtro adaptativo IIR, donde y(n) es la señal de salida calculada del filtro IIR.

∑∑=

=

−+−=−+=M

ji

N

ii

TT jnynbinxnanynbnxnany1

1

0)()()()()1()()()()( (30)

donde: a(n)=[a0(n) a1(n) … aN-1(n)]T es el vector de pesos de A(z) en tiempo n. b(n)=[b1(n) b2(n) … bM(n)]T es el vector de pesos de B(z) en tiempo n. y(n-1)=[y(n-1) y(n-2) … y(n-M)]T es el vector de señales contenido en la retroalimentación de salida con un retraso. N=orden de A(z). M=orden de B(z).

El algoritmo del filtrado-U RLMS puede ser expresado por dos ecuaciones vectoriales para los filtros adaptativos A(z) y B(z) tal y como sigue:

)(')()()1( nxnenana μ−=+ (31)

Memoria Descriptiva Pág. - 73 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera y

)1(')()()1( −−=+ nynenbnb μ (32) donde

[ ]TMnynynyny )('...)2(')1(')1(' −−−=− (33) y

∑=

−=M

jj jnycny

1)()(' (34)

es y(n) filtrada desde C(z), y x’(n) está definida en la ecuación (11).

Después que A(z) y B(z) converjan, la señal de error e(n) medida es igual a 0. Ahora:

)()()()(

)(1)()(

zFzPzHzP

zBzAzW

−−

=−

= (35)

Dada la complejidad y estructura de ceros y polos de P(z), H(z) y F(z), la

convergencia de A(z) y B(z) no puede ser generalizada. La solución óptima A*(z) y B*(z) no es única; sin embargo, el algoritmo convergerá a una solución que minimiza la señal de error residual e(n). Basándonos en la ecuación (35), un posible conjunto de soluciones es:

)()()(

zHzPzA −

=∗ (36)

y

Memoria Descriptiva Pág. - 74 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

)()()()(

zHzFzPzB =∗ (37)

Por esto, es razonable usar un orden mayor para B(z) que para A(z).

El sistema realiza un modelo fuera de línea para estimar la función de

transferencia de la trayectoria secundaria usando el algoritmo resumido dentro de la sección del algoritmo FXLMS. Después del modelo fuera de línea, el sistema CAR está operativo en modo de cancelación de ruido. El algoritmo detallado, mostrado en la figura 13, es resumido como sigue:

1. Tomamos la señal de referencia x(n) y la señal de error e(n) de los puertos de entrada.

2. Calculamos el anti-ruido y(n):

∑∑=

=

−+−=J

ji

N

ii jnynbinxnany

1

1

0)()()()()( (38)

donde N es el orden del filtro A(z) y J es el orden del filtro B(z).

3. Ponemos el anti-ruido y(n) en el puerto de salida para hacer al altavoz cancelador.

4. Realizamos la operación de filtrado-U:

∑−

=

−=1

0)()('

M

ii inxcnx (39)

y

∑−

=

−−=1

0)1()('

M

ii inxcny (40)

donde M es el orden del filtro C(z).

5. Actualizamos los coeficientes de los filtros adaptativos A(z) y B(z) usando algoritmo del filtrado-U RLMS:

)(')()()1( inxnenana aii −+=+ μ i = 0, 1,…, N-1 (41)

y

)(')()()1( jnynenbnb bjj −−=+ μ j = 1, 2,…, J (42)

6. Repetir el algoritmo para la siguiente iteración.

Memoria Descriptiva Pág. - 75 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera El sistema feedforward de banda estrecha.

En aplicaciones donde el ruido primario es periódico (o casi) y está producido por una máquina rotativa o similar, el micrófono de entrada puede ser sustituido por un sensor no acústico como un tacómetro, un acelerómetro, o un sensor óptico. Este cambio elimina el problema de la retroalimentación acústica (descrita anteriormente).

La siguiente figura muestra un diagrama de bloques del control activo de ruido mediante feedforward de banda estrecha. La señal del sensor no acústico es sincronizada con el origen del ruido y es usada para simular una señal de entrada que contiene la frecuencia fundamental y todos los armónicos del ruido primario. Este tipo de sistema controla los sonidos armónicos a través de adaptación filtrando la señal de referencia sintetizada para producir una señal de cancelación. En muchos vehículos la señal de las revoluciones por minuto (RPM) es accesible y puede ser usada como señal de referencia. Aún se necesita un micrófono de error para medir el ruido acústico residual. Esta señal de error es usada para ajustar los parámetros del filtro adaptativo.

Generalmente, la ventaja de este sistema CAR de banda estrecha es que el sensor no acústico es insensible al sonido cancelador, produciendo esto un control muy robusto. Específicamente esta técnica tiene las siguientes ventajas:

• Los problemas ambientales y de envejecimiento del micrófono son eliminados. Esto es especialmente importante desde el punto de vista de la ingeniería, porque es difícil de medir ruido de referencia a altas temperaturas y en conductos de gases explosivos como en tubos de escape de máquinas.

• La periodicidad del ruido permite eliminar la causalidad. La frecuencia de la señal de onda del sonio es constante. Sólo son requeridos ajustes por fase y magnitud. Esto da lugar a un posicionamiento más flexible del altavoz cancelador y permite que puedan ser introducidos retrasos más largos por el controlador.

Memoria Descriptiva Pág. - 76 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

• El uso de una señal de referencia controladora-generadora tiene la ventaja de una cancelación selectiva; esto es, tiene la habilidad de controlar cada armónico independientemente.

• Esto es necesario para modelar sólo la parte de la función de transferencia de la planta acústica correspondiente a los tonos armónicos. El filtro FIR de orden inferior puede ser usado, haciendo el control activo de ruido periódico más eficiente computacionalmente.

• Se evita la retroalimentación acústica no deseada del altavoz cancelador hacia la entrada del micrófono.

Algoritmos para sistemas CAR de feedforward de banda estrecha.

En muchas aplicaciones prácticas, la medida acústica de la señal de referencia no es accesible, tal y como ocurre cuando el ruido primario es producido por máquinas rotativas y es periódico como el ilustrado en la figura 14. En esos casos se usa un método alternativo. Este método estima la señal acústica usando una medida indirecta de un sensor no-acústico en lugar de un micrófono de referencia.

La síntesis de la señal de referencia es provocada por un pulso de entrada sincronizado desde la fuente del ruido, tal como la señal de un tacómetro sintetizada desde el motor de un automóvil. En general, hay dos tipos de señales de referencia, que están comúnmente usadas en sistemas CAR de banda estrecha:

• Serie de impulsos con periodo igual a la inversa de la frecuencia fundamental del ruido periódico.

• Onda senoidal que tiene la misma frecuencia que el armónico correspondiente a ser cancelado.

La primera técnica es llamada el método de la síntesis de forma de onda

(también llamada algoritmo Essex), el cual fue propuesto por Chaplin. Esta técnica puede ser analizada como un filtro adaptativo transversal excitado por

Memoria Descriptiva Pág. - 77 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera un tren de impulsos actualizados del algoritmo FXLMS. La segunda técnica es llamada el filtro adaptativo de ranura (notch) por intrusión de cancelación. La frecuencia simple del filtro de ranura usa dos pesos adaptativos y 90º de fase cambiante para cancelar una indeseada interferencia sinusoidal en la entrada primaria. La aplicación de esta técnica al control activo de ruido fue propuesta por Ziegler. Método de síntesis de forma de onda de sintetizado de la señal de referencia (algoritmo Essex)

Un sintetizador de forma de onda produce una señal de cancelación y(n) para llevar al altavoz cancelador. La forma de onda generada es llevada a la salida del altavoz cancelador secuencialmente y es sincronizada con pulsos del sensor no-acústico. Un micrófono en el área de anulación de ruido mide el sonido residual y lo lleva a la unidad de adaptación que es usada para modificar el sintetizador de forma de onda. La cancelación se produce sólo a la frecuencia del armónico; las bandas de frecuencias entre armónicos no se ven afectadas. Esto permite, por ejemplo, conversaciones normales ser oídas claramente dentro de habitaciones ruidosas, o permitir que la radio pueda ser oída a través de auriculares mientras pasa una motocicleta. Otra razón para eliminar sólo algunas partes del espectro de ruido en un coche pudiese ser el hecho de que el conductor necesita algunas indicaciones sonoras del motor para ser capaz de controlar el vehículo de manera segura.

La señal de sincronización preferente es derivada de una rueda dentada del motor, generando un tren de impulsos de posiblemente un centenar de pulsos espaciados igualmente en cada ciclo de la fuente (de ruido se entiende). El sintetizador de forma de onda almacena muestras de forma de onda canceladas {wj(n), j=0, 1, … N-1}, donde N es el número de muestras por cada ciclo de forma de onda. Esta señal de sincronización es usada para deducir un puntero de dirección de memoria, el cual puede ser un contador incrementado mediante software controlado por interrupciones generadas desde la señal de sincronización. Estas muestras representan la forma de onda requerida para ser generada y está presentada secuencialmente por un convertidor digital-analógico para producir la actual forma de onda anti-ruido para el altavoz cancelador. Esto es:

)()( nwny j= 10 −≤≤ Nj (43) representa el j-ésimo elemento de {wj(n)}, donde j es un puntero. Algunos procesadores de señal avanzados tienen punteros circulares para este tipo de direccionamientos.

El ruido residual recogido del micrófono de error es muestreado en sincronización con la referencia y las señales canceladoras. El muestreo de la señal de error e(n) es entonces usado por la unidad de adaptación para ajustar los valores de la forma de onda canceladora {wj(n)} siguiendo el siguiente algoritmo:

Memoria Descriptiva Pág. - 78 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

)]([)()1( nesignnwnw jj ⋅−=+ μ (44)

Este algoritmo es el algoritmo de signo de error LMS (desde la referencia de entrada x(n)=1), el cual se deriva basado en un criterio de minimización del valor absoluto de la señal de error instantánea. Para tener una convergencia más rápida, puede ser usado el algoritmo tradicional LMS:

)()()1( nenwnw jj μ−=+ (45) donde µ es menor que la unidad.

En la práctica, la señal corriente de error e(n) no corresponde con el elemento j-ésimo de la forma de onda canceladora wj(n). Para un sistema práctico, hay un retraso de varios milisegundos entre el tiempo en que la señal [y(n)=wj(n)] es alimentada hacia el altavoz y el tiempo en que esta es recibida por el micrófono de error. Este retraso puede tenerse en cuenta mediante un tiempo de offset sustraído desde el puntero circular j que está punteando la forma de onda:

)()()1( nenwnw jj μ−=+ Δ−Δ− (46) donde A es el retraso de tiempo de las muestras de datos entre la salida de la señal desde el sintetizador de forma de onda y su recepción en el micrófono de error; esto es:

Ttδ=Δ (47)

donde δ es el retraso de tiempo (el cual es constante para una configuración micrófono-altavoz dada) y T es el periodo de muestreo. Porque la tasa de muestreo esta sincronizada con la fuente de sonido, este número de offset es actualizado en correspondencia con los cambios de dicha tasa de muestreo.

El mayor grado de cancelación puede ser conseguido en presencia de un ruido no sincronizado en segundo plano si la forma de onda residual tiene una media por encima del número de ciclos. El funcionamiento mejora en 3-5 dB por componente de frecuencia. Sin embargo, el número necesario de promedios depende fuertemente de las características del ruido. Así, debe haber un equilibrio entre los grados de cancelación y el tiempo de adaptación requerido para cancelar formas de ondas estacionarias.

La complejidad de los sistemas CAR ancho de banda se discutió anteriormente y los sistemas CAR de banda estrecha usando métodos de síntesis de forma de onda son resumidos en la tabla 1, donde N es el orden del filtro y la complejidad es dada en términos del número de coeficientes que deben ser actualizados por periodo.

Memoria Descriptiva Pág. - 79 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

El concepto del método de la síntesis de la forma de onda puede ser analizado como si un filtro adaptativo fuera excitado por un tren de pulsos periódicos de periodo L. Para analizar la salida canceladora e(n) para una entrada d(n) dada, consideraremos la función de transferencia G(z) entre la entrada inicial D(z) y el error de salida E(z). Esto se muestra de la siguiente manera:

N

N

zz

zDzEzG −

−−−

==)1(1

1)()()(

μ (48)

Las propiedades de la función de transferencia G(z), dada en la anterior

ecuación (48), son aquellas de un filtro rastreador de ranura en cada frecuencia armónica de la interferencia. Por tanto, las componentes de los tonos del ruido periódico en la frecuencia fundamental y en la armónica pueden ser atenuadas por este filtro múltiple de ranura.

La ecuación (48) también muestra la localización de los polos y los ceros de G(z). Para una frecuencia fundamental genérica ω0=2π/L, los polos y los ceros están alineados exactamente con el mismo ángulo para algunos valores dados de tamaños de paso µ. Los ceros están en

0ωjkk ez ±= (49)

y los polos en

0)1( ωμ jkk eP ±−= (50)

donde 0≤k≤N-1 es un índice de frecuencia. La posición de los polos y los ceros está mostrada en la figura 15.

Memoria Descriptiva Pág. - 80 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Los ceros deben tener amplitud constante (|z|=1) y estar igualmente espaciados (2π/N) en el círculo unidad del plano z para crear áreas nulas (nulls) en la respuesta en frecuencia para la frecuencia kω0. Los polos tienen el mismo ángulo (frecuencia) que los ceros pero éstos están igualmente espaciados en el círculo una distancia (1-µ) del origen. El efecto de los polos debe introducir una resonancia en las cercanías del área nula (null), reduciendo el ancho de banda de la ranura. Si se usa una µ tal que µ<<1, el ancho de banda de cada ranura puede ser:

)(HzT

BWπμ

≈ (51)

Por lo tanto, mientras más pequeño el tamaño de paso µ, más cercano

los polos están para los ceros y más estrechos los anchos de banda de las ranuras que pueden ser logradas. El efecto de un polo en un ancho de banda de ranura (notch) es mostrado a continuación:

Memoria Descriptiva Pág. - 81 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Filtro adaptativo de ranura

El segundo tipo de señales de referencia usadas en sistemas CAR de banda estrecha son ondas senoidales con la misma frecuencia que el ruido de banda estrecha a cancelar. Cuando se emplea una señal senoidal como referencia de entrada, el algoritmo LMS se convierte en un filtro adaptativo de ranura para quitar la componente espectral primaria dentro de una banda estrecha centrada alrededor de la frecuencia de referencia. Normalmente se desea una ranura muy estrecha para filtrar la interferencia sin distorsionar la señal y puede ser realizada con un cancelador de ruido adaptativo. Las ventajas del filtro adaptativo de ranura son que ofrece fácil control de ancho de banda, un área nula infinita, y la capacidad de rastreo adaptable a la frecuencia exacta de la interferencia. Esto es realmente cierto cuando la frecuencia de la interferencia sinusoidal cambia lentamente.

La aplicación del filtro adaptativo de ranura al control activo periódico de ruido fue desarrollado por Ziegler. En la figura 17 se muestra un diagrama de bloques de este sistema CAR de banda estrecha con dos pesos adaptativos. El cronometraje de la señal del sensor, tal como el tacómetro de una máquina, es usado para determinar la frecuencia fundamental a la cual el ruido repetitivo está siendo generado. Por ejemplo, un motor eléctrico rodando a 1800 RPM da 30 revoluciones por segundo con una frecuencia fundamental de 30 Hz. Un motor de 4 cilindros rodando a 1800 RPM también da 30 vueltas por segundo pero con sólo 15 ciclos de disparo completos por segundo, y por lo tanto con una frecuencia fundamental de 15 Hz.

Memoria Descriptiva Pág. - 82 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

El controlador activo de ruido de frecuencia simple mostrado en la anterior figura puede ser configurado en estructuras paralelo o cascada para cancelar el ruido de banda estrecha a la frecuencia fundamental y su armónico. Un generador de ondas senoidales nos da una señal de referencia sinusoidal a la frecuencia deseada. Empleando la transformada de Hilbert como variador de frecuencia en 90º, la onda senoidal es dividida en dos componentes ortogonales, x0(n) y x1(n), las cuales pueden ser usadas como referencia de entrada para el filtro adaptativo. Estas señales son cargadas separadamente y luego sumadas para producir la señal de cancelación y(n):

)()()()()( 1100 nxnwnxnwny += (52) donde

)cos()( 00 nkAnx ω= (53) y

)sin()( 01 nkAnx ω= (54) donde ω0 es la frecuencia fundamental, k es el índice armónico, A es la amplitud de la señal de referencia, y n es el índice de tiempo. El generador de onda senoidal puede ser implementado por una técnica de búsqueda en una tabla ROM o por un resonador digital.

La magnitud y la fase de esta señal son ajustadas en el controlador, el cual alimenta uno o más altavoces sirviendo como fuente de control para cancelar el componente correspondiente de ruido. El algoritmo LMS actualiza los pesos de los filtros para minimizar el error residual e(n):

Memoria Descriptiva Pág. - 83 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

)()()()1( 000 knxnenwnw Δ−−=+ μ (55) y

)()()()1( 111 knxnenwnw Δ−−=+ μ (56) donde Δk es usado para compensar los efectos de la trayectoria secundaria en el armónico k. Este retraso representa el retraso introducido entre la salida del filtro adaptativo y la entrada del error residual.

Cuando el retraso de tiempo del sistema es fijo, los valores pueden ser estimados por una técnica off-line modelada por la trayectoria secundaria (descrita previamente) y entonces se construye dentro del controlador. En general, los valores del retraso dependen de la frecuencia. Estos retrasos pueden ser determinados convirtiendo la respuesta de los impulsos de C(z) dentro del domino de la frecuencia por la transformada discreta de Fourier y calculando los retrasos de los valores de fases. Esto es:

ft f

f π2Φ−

= (57)

donde tf es el retraso de tiempo a la frecuencia f en segundos, Φf es la fase a ala frecuencia f en radianes, y f es la frecuencia en Hz. Los valores de Δk en la ecuación (55) y (56) vienen determinados por:

sfk ft=Δ (58) donde fs es la tasa de muestreo.

Como se mencionó previamente, el retraso unitario z-Δ de la trayectoria secundaria de la figura 17 puede ser cambiado por la estimación de la segunda trayectoria. El algoritmo del filtro adaptativo de ranura puede ser expresado como:

)(')()()1( nxnenwnw iii μ−=+ (59)

Para i=0 ó 1 y donde xi’(n) es la versión filtrada de xi(n) por la estimación de la trayectoria secundaria C(z). Estructura para cancelación de frecuencia múltiple

En las aplicaciones prácticas, el ruido periódico usualmente contiene tonos en la frecuencia fundamental y varias frecuencias armónicas. Este tipo de ruido puede ser atenuado por filtros con múltiples ranuras. En general, la realización de múltiples ranuras requiere un filtro con orden alto, el cual también pueda ser realizado por una conexión en paralelo o cascada de múltiples secciones de segundo orden. Un método para eliminar múltiples

Memoria Descriptiva Pág. - 84 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera sinusoidales u otra interferencia periódica fue propuesto por Glover. La aplicación de estas técnica para el control activo de ruido periódico debe generar la entrada de referencia como una suma de M senoides. Esto es:

∑=

=M

mmm nAnx

1)cos()( ω (60)

donde Am y ωm son la amplitud y la frecuencia de la m-ésima sinusoidal, respectivamente.

Cuando una suma de sinusoidales es aplicada a un filtro adaptativo, el filtro converge a un tiempo variable, filtro de ranura ajustable con una ranura localizada en cada frecuencia de referencia. Tan largo como una referencia es posible que incluya todas las interferencias sinusoidales, el sistema CAR de banda estrecha crea una ranura sobre cada sinusoidal y la sigue si ésta cambia en frecuencia. Este filtro adaptativo en ranura proporciona un simple método para el rastreo y la eliminación de interferencias sinusoidales. La aplicación del método de Glover para atenuar activamente el ruido generado en el motor fue patentado por Pfaff. La señal de referencia representando la selección múltiple de componentes de ruido armónico es generada desde una predeterminada tabla de valores.

Una senoidal de frecuencia simple puede ser cancelada por un filtro adaptativo simple de dos pesos. Para el caso donde el ruido primario indeseado contiene M senoidales, M filtros de dos pesos pueden ser conectados en paralelo para atenuar esa componente de banda estrecha. Un conjunto de referencias senoidales estrechamente espaciadas es sintetizado desde la información proporcionada por la señal de sincronización. Una sinusoidal específica es usada como la referencia de entrada para el correspondiente canal del filtro adaptativo de dos pesos Wm(z), el cual es conectado en paralelo con los otros filtros, como se muestra en la figura 18.

La estructura de cada canal individual se muestra en la figura 17. La función de transferencia global de esta configuración en paralelo es:

∑=

=M

mm zWzW

1)()( (61)

donde m = 1, 2,… y M es el índice del canal. La señal de cancelación es una suma de M salidas de filtros adaptativos. Esto es:

∑=

=M

mm nwny

1)()( (62)

Cada entrada de referencia es filtrada por la trayectoria secundaria

estimada C(z) como:

Memoria Descriptiva Pág. - 85 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

∑−

=

−=1

0)1()(

L

imim nxcnx m = 1, 2,…, M (63)

Porque sólo se usa un micrófono de error, hay sólo una señal de error

e(n) para actualizar M filtros adaptativos basados en el algoritmo FXLMS.

El sistema CAR Feedback

El CAR feedback fue propuesto por Olson y May en 1953. En el esquema que plantearon, se usaba un micrófono como sensor de error para detectar ruido no deseado. La señal de error de este sensor retornaba a través de un amplificador (filtro electrónico) que daba magnitud y fase diseñadas para producir cancelación en el sensor, por medio de un altavoz colocado cerca del micrófono. Esta configuración daba una atenuación limitada a un rango de frecuencia restringido por ruido periódico o banda limitada. Además sufría de inestabilidad, a causa de la posibilidad de retroalimentación positiva a altas frecuencias. Sin embargo, debido a la naturaleza predecible de las señales de banda estrecha (narrowband), han sido desarrollados muchos sistemas robustos que usan esta salida del sensor de error para predecir la referencia de entrada (ver figura). La referencia de entrada regenerada es combinada con un sistema de control realimentado activamente de banda estrecha.

Memoria Descriptiva Pág. - 86 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Una de las aplicaciones del CAR retroalimentado reconocidas por Olson es el control del área de sonido en los auriculares y en los protectores auditivos. En esta aplicación, un sistema reduce la presión en la cavidad cerrada de la oreja del oyente. Esta aplicación está desarrollada y es comercialmente disponible. Algoritmos para sistemas CAR feedback (retroalimentados).

El principio del control activo de ruido retroalimentado para un caso de canal simple, el cual puede ser formulado como un "predictor" adaptativo, se muestra en la figura 19. Este sistema requiere un solo micrófono de error, porque así se evita el problema inherente de la retroalimentación acústica en un sistema de 2 micrófonos retroalimentados que fue discutido anteriormente. Los esquemas CAR retroalimentados dependen de las señales teniendo características periódicas. Algunos sistemas CAR retroalimentados no adaptativos han sido descritos en la literatura en los años recientes.

Burgués sugirió el uso de esta configuración con el algoritmo FXLMS para evitar el uso del micrófono de entrada. La idea básica de este algoritmo es que debe estimar el ruido primario d(n) y usarlo como referencia de entrada para el filtro adaptativo. Como se muestra en la figura 19 y usando el algoritmo FXLMS, el ruido primario es estimado como:

∑−

=

−−=1

0)()()(

M

ii inycnenx (64)

donde ci (i = 0, 1,… M-1) es el coeficiente del filtro de estimación de la trayectoria secundaria C(z) y M es el orden de dicho filtro C(z).

Memoria Descriptiva Pág. - 87 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

De la anterior figura se obtiene:

)()()()( zYzHzEzD −= (65) donde E(z) y Y(z) son accesibles. Si la función de transferencia H(z) de la trayectoria secundaria es modelada por C(z):

)()()()()( zYzCzEzXzD −=≈ (66)

La señal de error puede ser mostrada como:

)()()()()( zXzHzWzDzE −= (67)

La señal de error para este sistema CAR retroalimentado es 0 cuando:

)()()()( zDZXzHzW = (68)

El cual es posible si el ruido primario D(z) es periódico y la función de transferencia W(z)H(z) es igual a un retraso equivalente a un múltiplo del periodo de la señal.

El modelo fuera de línea está dirigido primero a estimar la función de transferencia de la trayectoria secundaria H(z) usando el algoritmo FXLMS. El modo de cancelación de ruido comienza después del aprendizaje. El algoritmo CAR retroalimentado ilustrado en la figura 19 se resume tal y como sigue:

1. Tomamos la señal de error e(n) del micrófono de error.

2. Calculamos (estimamos) la señal de entrada de referencia x(n):

∑−

=

−−=1

0)()()(

M

ii inycnenx (69)

Memoria Descriptiva Pág. - 88 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

3. Calculamos el anti-ruido y(n):

∑−

=

−=1

0)()()(

N

ii inxnwny (70)

donde wi(n) es el i-ésimo coeficiente del filtro adaptativo W(z) en tiempo n y N es el orden de dicho filtro W(z).

4. Llevamos el anti-ruido y(n) al puerto de salida para conseguir el

altavoz cancelador

5. Calculamos la versión filtrada-X de x’(n):

∑=

−=M

ii inxcnx

0)()(' (71)

6. Actualizamos los coeficientes del filtro adaptativo W(z) usando el

algoritmo FXLMS:

)(')()()1( inxnenwnw ii −−=+ μ i = 0, 1,…, N-1 (72)

7. Repetimos el procedimiento para la siguiente iteración. Los sistemas CAR multicanal.

Muchas aplicaciones pueden mostrar comportamientos complejos. Estas aplicaciones son:

• CAR en largos conductos o encerramientos. • Control activo de vibración en cuerpos rígidos o estructuras con

múltiples grados de libertad. • CAR en compartimentos de pasajeros en vehículos o aviones.

Se dan cuando la geometría del sonido de campo es complicada, es

decir, que no basta con ajustar una simple trayectoria secundaria para cancelar el ruido primario usando un simple micrófono de error. El control de campos acústicos complicados requiere exploración y desarrollo de estrategias óptimas y la construcción de un controlador multicanal adecuado. Esta tarea requiere el uso de un algoritmo de adaptación con múltiples entradas y múltiples salidas. El sistema CAR multicanal general abarca una matriz de sensores y actuadores. A continuación se muestra un diagrama de bloques de un sistema CAR multicanal de aplicación triple.

Memoria Descriptiva Pág. - 89 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

El “por qué” de la elección de los DSP´s.

Se hará un recorrido a través de las distintas opciones que se barajaron hasta llegar a una primera decisión importante dentro del proyecto. 1. Tarjeta de sonido de un PC:

Al principio se pensó la posibilidad de comenzar la investigación con la tarjeta de sonido de un PC. Adquiriendo datos y tratándolos con matlab y simulink, en una primera posibilidad, o Labview.

Se presentó como una buena opción ya que disponía de grandes

ventajas:

• En defecto de ninguna otra, la tarjeta con la que se comenzaría a trabajar sería la tarjeta de sonido del PC.

• Por tanto, no habría que hacer ninguna inversión inicial fuerte. • El fácil manejo de Matlab, Simulink y Labview • La tarjeta de sonido de un PC es muy fácil de manejar.

Además se presentaban ventajas según usásemos Matlab y Simulink o

Labview. • Simulink dispone de una librería específica para comunicarse con

una tarjeta de adquisición de datos. El problema es que esta librería es muy básica y no nos permite toda la libertad para la fabricación de un sistema CAR.

• Con Labview se asegura, en cierto modo, el problema del tiempo real (siempre hablando de baja frecuencia). Pero tenemos el problema de comunicar la tarjeta con el programa (se deberían crear archivos de muy bajo nivel, tocando registros del sistema para sincronizar la tarjeta con el software).

Memoria Descriptiva Pág. - 90 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Finalmente, tras indagar sobre el posible rendimiento que podría dar esta configuración, se decidió no escoger éste como el camino a seguir.

El principal problema que tenía el usar un PC, su tarjeta de sonido y

matlab y simulink era el tiempo real (aunque se pudiese solventar con Labview).

Nosotros precisamos de un sistema más o menos rápido para que

podamos capturar, tratar, reproducir y en algunos casos realimentar sonido de forma casi instantánea. Esto no es del todo el punto fuerte del sistema operativo bajo e que estamos acostumbrados a trabajar (Windows). Tendríamos que ver hasta qué punto podemos asegurar un tiempo más o menos real. Y si no se pudiese asegurar con este sistema operativo tendríamos que trabajar en otro.

Además de esta gran desventaja, tendríamos la falta de líneas de entrada (ya que nos hacen falta al menos dos y la mayoría sólo dispone de una), junto con el problema de la calidad.

Llegados a este punto en el que desechamos la posibilidad de comenzar

nuestra línea de investigación con un PC y su tarjeta de sonido. Era el momento de indagar a ver qué aparatos de captación eran los más adecuados para el control activo de ruido y en mayor medida para nuestro propósito.

Lo más extendido en cuanto al núcleo de captura y procesamiento de

datos en el marco actual son los DSP. Las principales líneas de investigación que han hecho algo en esta materia comenzaron trabajando con este tipo de tarjetas.

A nosotros lo que nos frenaba a tomar esta opción como válida era el

coste inicial del proyecto. De hecho, a pesar que parecía ser el mejor camino para iniciar una línea de investigación de garantías, se siguieron buscando otros medios. No era apropiado hacer ese desembolso económico en algo tan específico, y que luego, tras el presente proyecto, no tuviera utilidad alguna dentro del marco de investigación de la escuela. 2. DSP

Esta opción siempre estuvo presente. Sobre todo después de percatarnos de la dificultad de obtener un sistema en tiempo real.

El principal problema era el desembolso económico que suponía adquirir

un DSP. Sobre todo sabiendo que el presente proyecto no sería más que un acercamiento a la materia del control activo de ruido.

Tan sólo por esta razón se siguieron buscando otras vías de trabajo.

3. Tarjeta de adquisición de datos.

La solución ideal que mantuviera un equilibrio entre coste y prestaciones eran las tarjetas de adquisición de datos.

Memoria Descriptiva Pág. - 91 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Para el tema de la comunicación, Matlab contiene un paquete de libreras

para comunicarse con tarjetas de adquisición de datos, por lo que este problema en principio parecía superado, además como ya comentamos antes el propio Matlab nos proporciona un entorno de trabajo para operaciones de tiempo real.

(real-time workshop). Para que una de estas tarjetas nos fuera totalmente útil buscábamos una

que tuviera al menos las siguientes características:

- 2 entrada analógicas - 2 salidas analógicas - Frecuencia de muestreo suficientemente alta para nuestras pretensiones - Conectarse fácilmente a un PC

Además sería bastante interesante que fuese compatible con Windows y con algún entorno de tratamiento de datos que nos permitiera trabajar mejor.

En un principio se pensó fuertemente en adquirir una tarjeta de la serie

de National Instruments B Series Multifunction DAQ. Estas tarjetas de adquisición tienen las siguientes características: • Ideal para usuarios noveles • 2 entradas analógicas de 16 bits • 8 o 10 lineas de I/O digital • Triger Digital • Más de 4 rangos de señal de entrada analógica • Válido para los siguientes sistemas operativos:

- Windows 2000/XP - Mac OS X - Linux

• Software recomentdado: • LabVIEW • LabWindows/CVI •Measurement Studio • VI Logger • SignalExpress

Aquí de puede ver un detalle de la tarjeta de adquisición de datos que se

planteó con más posibilidades de ser la opción elegida:

Memoria Descriptiva Pág. - 92 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

En un principio se pensó que se podría trabajar con la tarjeta de adquisición a través de Matlab y Simulink. Desde Nacional Instruments se confirmó que esta tarjeta en concreto no era compatible para su uso en conjunto con el entorno de Matlab. Esto fue lo que hizo replantearse la elección de la tarjeta de adquisición de datos como camino a tomar.

Si se elegían las prestaciones justas y necesarias, no se tenía

compatibilidad con Matlab, y si se elegía compatibilidad con Matlab se excedía en características y prestaciones (no importaba en un principio) pero subía considerablemente el precio.

Además del inconveniente que podría surgir a la hora de adquirir datos

(no era compatible con Matlab), al estar hablando de una tarjeta de adquisición de datos simple se sabe que se tendrán que adaptar salidas y entradas (adaptación de impedancias, de clavijas,…).

Estos impedimentos llevaron a la solución final, los DSP’s.

Procesadores Digitales de Señal (DSP´s) Introducción

Los rápidos avances en la electrónica, particularmente en las técnicas de fabricación de circuitos integrados, han tenido, y sin duda continuarán teniendo, un gran impacto en la industria y la sociedad. El rápido desarrollo de la tecnología de circuitos integrados, empezando con la integración a gran escala (LSI, Large Scale Integration), y ahora la integración a gran escala (VLSI, Very Large Scale Integration) de circuitos electrónicos ha estimulado el desarrollo de computadores digitales más potentes, pequeños, rápidos y baratos y de hardware digital de propósito general. Estos circuitos digitales baratos y relativamente rápidos han hecho posible construir sistemas digitales altamente sofisticados, capaces de realizar funciones y tareas del procesado de señales

Memoria Descriptiva Pág. - 93 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera digitales que normalmente eran demasiado difíciles y/o caras con circuitería o sistemas de procesado de señales analógicas. De aquí que muchas de las tareas del procesado de señales que convencionalmente se realizaban analógicamente se realicen hoy mediante hardware digital, más barato y a menudo más confiable.

Sistemas de DSP's modernos son apropiados para su implementación

bajo el criterio VLSI. Las grandes inversiones necesarias para diseñar un nuevo circuito integrado sólo pueden ser justificadas cuando el número de circuitos a fabricar es grande, o cuando los niveles necesarios de desempeño son tan altos que no pueden ser alcanzados con la tecnología existente. A menudo, ambos argumentos son válidos, particularmente en comunicaciones y aplicaciones dirigidas a los consumidores. Avances en la tecnología de fabricación de circuitos integrados también abren nuevas áreas de desarrollo basadas en DSP, tales como sensores inteligentes, visión de robots y automatización, mientras entrega las bases para continuar los avances en áreas tradicionales del procesamiento digital de señales, tales como música, voz, radar, sonar, video, audio y comunicaciones.

Este apartado tiene como fin entregar una breve introducción a los

sistemas DSP a través de la presentación de sus principales características, aplicaciones y algunos datos de interés. Procesadores Digitales de Señal *¿Qué es el Procesamiento Digital de Señales (Digital Signal Processing – DSP)?

SEÑAL es definida como cualquier cantidad física que varia en el tiempo y que lleva información, generalmente acerca del estado o comportamiento de un sistema, como por ejemplo: radar, música, voz, sonar, etc.

PROCESAR UNA SEÑAL es la operación o transformación sobre la

señal.

PROCESAMIENTO DIGITAL DE SEÑAL (DSP) es una operación o transformación de una señal en un hardware digital según reglas bien definidas las cuales son introducidas al hardware a través de un software específico que puede o no manejar lenguajes tanto de alto como de bajo nivel.

En estricto rigor, digital signal processing se refiere al procesamiento

electrónico de señales tales como sonido, radio y microondas usando técnicas matemáticas para realizar transformaciones o extraer información. En la práctica, las características que hacen a los DSP's tan buenos en el manejo de señales los hacen adecuados para muchos otros propósitos, tales como procesamiento de gráficos de alta calidad y simulaciones en ingeniería.

Memoria Descriptiva Pág. - 94 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Un Procesador Digital de Señales (DSP, sigla en inglés de Digital Signal Processor) es un tipo de microprocesador, increíblemente rápido y poderoso. Un DSP es único porque procesa señales en tiempo real. Esta capacidad de procesamiento en tiempo real hace a los DSP ideales para aplicaciones que no toleran ningún retardo. Por ejemplo, no es fácil conversar a través de un teléfono celular cuando existe un retardo en la línea. Esto lleva a que la señal se corte o a confusión ya que ambos usuarios hablan a la vez. Con los teléfonos celulares actuales, los cuales usan DSP's, es posible hablar normalmente. El DSP dentro del teléfono procesa el sonido (convirtiéndolo de una señal analógica a digital, filtrando, comprimiendo y realizando otras tareas en forma digital) tan rápidamente que uno puede hablar y escuchar sin problemas de retardo ni ninguna molestia que ello implica. O sea, se procesa en tiempo real. *De Análogo a Digital

Las aplicaciones clásicas de los DSP's trabajan señales del mundo real, tales como sonido y ondas de radio que se originan en forma análoga. Como se sabe, una señal análoga es continua en el tiempo; cambia suavemente desde un estado a otro. Los computadores digitales, por otro lado, manejan la información discontinuamente, como una serie de números binarios, por lo que se hace necesario como primera etapa en la mayoría de los sistemas basados en DSP's transformar las señales análogas en digitales. Esta transformación la hacen los Conversores Análogo – Digital (ADC, en inglés).

Una vez terminada la etapa de conversión análoga – digital, los datos

son entregados al DSP el cual está ahora en condiciones de procesarla. Eventualmente el DSP deberá devolver los datos ya procesados para lo cual es necesaria una etapa final que transforme el formato digital a análogo. Por ejemplo, una señal de audio puede ser adquirida (ADC) y filtrada para eliminar en gran medida ruido, crujidos de estática, amplificar ciertas frecuencias de interés, eliminar otras, etc. Luego de esto, la información puede ser devuelta a través de una conversión digital – análoga (DAC).

Ejemplos interesantes de aplicaciones de DSP's son:

1. Eliminar el eco en las líneas de comunicaciones. 2. Lograr hacer más claras imágenes de órganos internos en los equipos

de diagnóstico médico. 3. Cifrar conversaciones en teléfonos celulares para mantener privacidad. 4. Analizar datos sísmicos para encontrar nuevas reservas de petróleo.

En su núcleo, un DSP es altamente numérico y repetitivo. A la vez que

cada dato llega, éste debe ser multiplicado, sumado y además de eso transformado de acuerdo a fórmulas complejas. Lo que permite realizar todo ello es la velocidad del dispositivo. Los sistemas basados en DSP's deben trabajar en tiempo real, capturando y procesando información a la vez que ocurre. Los conversores análogo – digital deben adquirir la información lo suficientemente seguido como para captar todas las fluctuaciones relevantes de las señales. Si el ADC es muy lento se perderá información. El DSP también

Memoria Descriptiva Pág. - 95 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera debe trabajar rápido para no perder información que le llega desde el ADC y además cumplir con el adecuado procesamiento de las señales. Por ejemplo, un sistema estéreo maneja sonidos de hasta 20 KHz, por lo tanto el DSP deberá ser capaz de procesar alrededor del centenar de millones de operaciones por segundo. Otras señales, tales como transmisiones por satélite son del orden de los Gigahertz por lo que requieren un procesamiento de mayor velocidad. *Un DSP para cada Aplicación

Una forma de clasificar los DSP's y aplicaciones es a través de su rango dinámico. El rango dinámico es un conjunto de números, desde pequeños a grandes, que deben ser procesados en el curso de una aplicación. Por ejemplo, para representar una forma de onda entera de una señal particular es necesario un cierto rango de números para manejar sus valores mayores y menores. El DSP debe ser capaz de manejar los números generados tanto en la transformación análoga – digital como durante los cálculos (multiplicaciones, sumas, divisiones) con dicha señal. Si no es capaz de manejar todo el rango de números ocurrirá "overflow" o "underflow", lo cual producirá errores en los cálculos. La capacidad del procesador es una función de su ancho de datos (el número de bits manipulados) y el tipo de aritmética que posee (punto fijo o flotante). Un procesador de 32 bits tiene un ancho de datos mayor que uno de 24 bits, el cual a su vez tiene un rango mayor que uno de 16 bits. DSP's de punto flotante tienen rangos mayores que uno de punto fijo. Cada tipo de procesador es ideal para un rango particular de aplicaciones. DSP's de 16 bits son ideales para sistemas de voz tales como teléfonos ya que ellos trabajan con un estrecho rango de frecuencias de audio. Estéreos de alta fidelidad requieren ADCs de 16 bits y un procesador de 24 bits de punto fijo. Los 16 bits del conversor permiten capturar todo el rango de la señal de audio y los 24 bits del procesador permiten operar cómodamente los grandes valores resultantes de la operación con los datos. Procesamiento de imágenes, gráficos 3–D y simulaciones científicas necesitan un rango dinámico mucho mayor y por lo tanto requieren procesadores de punto flotante de 32 bits y ADC's de 24 bits.

Diagrama de bloques conceptual de un sistema típico

ADC: Conversor Análogo Digital. – DSP: Digital Signal Processor. DAC: Conversor Digital Análogo.

Algunos ejemplos de los usos de DSP's en la actualidad son:

1. Wireless LAN 2. Reconocimiento de Voz 3. Manejo de imágenes digitales

Memoria Descriptiva Pág. - 96 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

4. Reproductores digitales de audio 5. Teléfonos celulares 6. Modems inalámbricos 7. Cámaras digitales 8. Control de motores 9. Manejo de bombas, ventiladores, HVAC 10. Inversores industriales 11. Automatización de fábricas 12. Transporte

*¿Qué hace a un DSP un DSP?

Una de las más importantes características de un DSP es su capacidad de realizar operaciones de multiplicación y acumulación (MACs) en sólo un ciclo de reloj. No obstante ello, es necesario que el dispositivo posea la característica de manejar aplicaciones críticas en tiempo real. Esto requiere de una arquitectura que soporte un flujo de datos a alta velocidad hacia y desde la unidad de cálculo y memoria. Esta ejecución a menudo requiere el uso de unidades DMA (Direct Memory Access) y generadores de direcciones duales (DAG's) que operan en paralelo con otras partes del chip. Los DAG's realizan los cálculos de direcciones, permitiendo al DSP buscar dos datos distintos para operar con ellos en un solo ciclo de reloj, de tal forma que es posible ejecutar algoritmos complejos en tiempo real.

Es importante para DSP's tener un mecanismo efectivo de salto para la

ejecución de loops ya que el código generalmente programado es altamente repetitivo. La arquitectura permite realizar estos loops sin instrucciones adicionales ni demoras, las que al ejecutarse millones de veces empiezan a generar retardos significativos.

Los DSP's deben manejar rangos dinámicos extendidos y de precisión

para evitar overflow y underflow y para minimizar los errores de redondeo. Para acomodarse a esta capacidad, los DSP's incluyen acumuladores dedicados con registros más anchos que el tamaño nominal de los datos para así conservar la precisión (por ejemplo, DSP's de 16 bits poseen acumuladores de 32 bits para manejar el resultado de las multiplicaciones). También deben soportar el manejo de buffers circulares para la ejecución de funciones algorítmicas, tales como filtros. En estos tipos de buffers el puntero del buffer se actualiza en paralelo con otras funciones del chip en cada ciclo de reloj. En cada ciclo el buffer circular realiza una comprobación de "fin de buffer" para verificar si es necesario volver al inicio de éste sin demorar así la ejecución del algoritmo a causa de la ejecución de instrucciones adicionales de comparación y salto.

Por otro lado, los microcontroladores se utilizan sobre todo en

aplicaciones donde existen acontecimientos externos los que requieren de la detección y el control. El ambiente externo es detectado por cualquiera de los dispositivos periféricos; puertos digitales I/O, pines dedicados de interrupción, o las entradas análogas (de analógico a digital). La fuente de las señales a estos pines viene de los interruptores, sensores análogos y/o digitales, y de las

Memoria Descriptiva Pág. - 97 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera señales de estado de otros sistemas. Cada entrada representa un pedazo de información sobre el estado de un cierto acontecimiento exterior. Las salidas se envían a actuadores, relays, motores o a otros dispositivos que controlen acontecimientos. Entre la detección y actuación está el microcontrolador, analizando las entradas y el estado actual del sistema, determinando cuándo y qué encender y/o apagar. El software es el que hace todo esto, toma las decisiones, generalmente trabaja de una manera condicional; es decir, realiza saltos sólo bajo ciertas condiciones y realiza manipulaciones a nivel de bits. Las interrupciones son consideradas como condiciones externas que alteran el flujo principal del programa. *Arquitecturas Estándar en DSP

Las arquitecturas de los computadores actuales están comúnmente clasificadas como RISC's (Reduced Instruction Set Computers) y CISC's (Complex Instruction Set Computers). Estos últimos tienen un gran número de instrucciones sumamente poderosas, mientras que la arquitectura RISC posee pocas instrucciones y realiza movimientos de datos entre registros en un ciclo de máquina. Hoy en día los computadores RISC comienzan a reemplazar a los CISC's, porque se puede alcanzar un más alto rendimiento por medio del uso de un eficiente compilador como a través de la ejecución de instrucciones simples en forma ordenada.

DSP's estándares tienen mucho rasgos de una arquitectura tipo RISC,

pero ellos son procesadores de propósitos específicos cuya arquitectura es especialmente diseñada para operar en ambientes de alta necesidad de cálculo. Un DSP estándar ejecuta varias operaciones en paralelo mientras que un RISC usa unidades funcionales altamente eficientes que pueden iniciar y completar una instrucción simple en uno o dos ciclos de reloj.

DSP's típicos son caracterizados generalmente por las siguientes

cualidades en su arquitectura:

1. Una unidad funcional rápida que puede multiplicar y acumular en un ciclo de instrucción. Un ciclo de instrucción puede durar generalmente 1 ó 2 ciclos de reloj. Disponibles en DSP's de punto fijo y flotante.

2. Varias unidades funcionales que realizan operaciones en paralelo,

incluyendo accesos a memoria y cálculo de direcciones. Las unidades poseen típicamente una unidad principal (ALU) junto con dos o más unidades de generación de direcciones. Estas unidades funcionales poseen su propio conjunto de registros y muchas instrucciones se realizan en un solo ciclo de instrucción.

3. Varias unidades de memoria on–chip (generalmente 2 ó 3) usadas para

almacenar instrucciones, datos o tablas. Cada unidad de memoria puede ser accedida una vez en cada ciclo de instrucción.

4. Varios buses para incrementar las tasas de transferencia hacia y desde

memoria y evitar conflictos de direcciones.

Memoria Descriptiva Pág. - 98 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

5. Soporte para tipos especiales de direccionamiento, especialmente

modulo y bit–reverse, requerido en el cálculo de la FFT. Direccionamiento módulo es muy eficiente para la implementación de buffers circulares.

6. Soporte para manejo de loop con bajo costo en tiempo y manejo rápido

de interrupciones, especialmente aquellas que se deben a los puertos seriales.

*Arquitectura Hardware

En la arquitectura clásica de Neumann la ALU y la unidad de control están conectadas a una sólo unidad de memoria que almacena tanto instrucciones de programa como datos. Durante la ejecución de un programa, una instrucción es leída desde la memoria y decodificada, los operandos necesarios son obtenidos (fetched) desde la memoria, y, finalmente, la instrucción es ejecutada. La principal desventaja es que la memoria se transforma en el cuello de botella de esa arquitectura.

La instrucción que con más frecuencia realiza un DSP estándar es la

multiplicación y acumulación. Ésta debe ser realizada con eficiencia, y para ello debería ser completada en un ciclo de instrucción. Esto implica que dos valores deben ser leídos desde memoria y (dependiendo de la organización) un valor debe ser escrito, o dos o más registros de direcciones deben ser actualizados, en ese ciclo. Por lo tanto, una longitud grande en la memoria es tan importante como la operación de multiplicación–acumulación.

Varios buses y memorias incluidas en el chip son utilizadas de forma que

lecturas y escrituras a diferentes unidades de memoria pueden ser hechas a la vez. Dos memorias son utilizadas en la arquitectura Hardware clásica. Una de ellas es utilizada exclusivamente para datos, mientras que la otra es utilizada para instrucciones. Esta arquitectura alcanza un alto grado de concurrencia (lecturas y escrituras simultáneas). Los DSP's actuales usan varios buses y unidades de ejecución para alcanzar niveles incluso más altos de concurrencia. Chips con múltiples DSP y procesadores RISC existen hoy en día.

Tipos de arquitectura de memoria entre un Microcontrolador (arquitectura von Neumann) y un

DSP (arquitectura Hardware).

Memoria Descriptiva Pág. - 99 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera *Diferencias entre Microcontroladores y DSP's

Una de las diferencias más importante encontrada entre un DSP y un Microcontrolador es la estructura de memoria que poseen. En un microcontrolador es posible encontrar una memoria lineal, en la que se almacenan tanto datos como instrucciones de programa. Esto obliga a generar programas que no sobrepasen límites de tamaño ya que podrían sobrescribirse datos por instrucciones o viceversa. Un DSP posee dos bloques separados e independientes de memoria, cada uno con su propio bus de acceso, permitiendo así al procesador ir a buscar la siguiente instrucción y dato en el mismo ciclo de reloj (Fetch). En la figura siguiente se muestra un diagrama de los tipos de memorias y su conexión con el núcleo operaciones.

Otra diferencia importante entre un Microcontrolador y un DSP (y aún

entre DSP's) es la cantidad de unidades de ejecución que poseen, las cuales son capaces de realizar operaciones en paralelo. Por ejemplo, además de la típica ALU, un DSP posee bloques MAC de multiplicación y acumulación, se encuentran también bloques sólo para corrimientos, shifters. En la figura siguiente se observa un diagrama de bloques de un microcontrolador PIC12C5XX, el cual sólo posee una unidad aritmética para todo tipo de cálculo, desde cálculo de direcciones de salto, búsqueda de datos hasta operaciones lógicas.

Diagrama de bloques de la arquitectura del PIC-12C5XX

La siguiente figura muestra parte de un diagrama de bloques del DSP

TMS320F241. En ella se pueden ver 3 unidades de cálculo, CALU, ARAU, y

Memoria Descriptiva Pág. - 100 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera una unidad de multiplicación la cual permite además realizar corrimientos: (siguiente página).

La unidad CALU realiza las operaciones aritmético – lógicas, mientras

que la unidad ARAU permite realizar cálculos sobre registros auxiliares para direccionamientos indirectos tanto a memoria de datos como de programa. Finalmente la unidad de multiplicación y suma permite una rápida ejecución de operaciones iterativas tales como algoritmos de filtros.

Cabe destacar que en la actualidad cada vez se empieza a desarrollar

más la tecnología mezclada entre microprocesadores y DSP's. Diversas son las razones para que se produzca esta integración, sin embargo a groso modo es posible identificar una en particular. Los requerimientos de control en tiempo real bajo condiciones cada vez más exigentes en cuanto a necesidad de cálculo han llevado a los fabricantes de microcontroladores (microchip, ST, etc.) a integrar a sus microprocesadores características de DSP (unidades de cálculo paralelas, pipeling, etc.) y por el otro lado los fabricantes de DSP's (Texas, Motorola, Analog Device, etc.) empiezan a utilizar las características de Microcontroladores (Conversores A/D, puertos digitales I/O, bloques PWM) integrándolas dentro del DSP.

Memoria Descriptiva Pág. - 101 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Diagrama de bloques del DSP TMS320F241

Ventajas y Desventajas de los DSP's

• La Tecnología VLSI (Very Large Scale Integration) da la posibilidad de diseñar sistemas con la capacidad para ejecutar procesamiento en tiempo real de muchas de las señales de interés para aplicaciones en comunicaciones, control, procesamiento de imagen, multimedia, etc.

• Los sistemas digitales son más confiables que los correspondientes sistemas análogos.

• Los sistemas digitales ofrecen una mayor flexibilidad que los correspondientes sistemas análogos.

• Mayor precisión y mayor exactitud pueden ser obtenidas con sistemas digitales, comparado con los correspondientes sistemas análogos.

• Un sistema programable permite flexibilidad en la reconfiguración de aplicaciones DSP.

• La tolerancia de los componentes en un sistema análogo hacen que esto sea una dificultad para el diseñador al controlar la exactitud de la señal de salida análoga. Por otro lado, la exactitud de la señal de salida para

Memoria Descriptiva Pág. - 102 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

un sistema digital es predecible y controlable por el tipo de aritmética usada y el número de bits usado en los cálculos.

• Las señales digitales pueden ser almacenadas en un disco flexible, Disco Duro o CD-ROM, sin la pérdida de fidelidad más allá que el introducido por el conversor Análogo Digital (ADC). Éste no es el caso para las señales análogas.

A pesar de ellas existen algunos inconvenientes que deberán ser

tomados en cuenta al momento de escoger una plataforma para el procesamiento de señales analógicas por medio digitales:

• La conversión de una señal analógica en digital, obtenida muestreando la señal y cuantificando las muestras, produce una distorsión que nos impide la reconstrucción de la señal analógica original a partir de muestras cuantificadas.

• Existen efectos debidos a la precisión finita que deben ser considerados en el procesado digital de las muestras cuantificadas.

• Para muchas señales de gran ancho de banda, se requiere procesado en tiempo real. Para tales señales, el procesado analógico, o incluso óptico, son las únicas soluciones válidas. Sin embargo, cuando los circuitos digitales existen y son de suficiente velocidad se hacen preferibles.

DSP TMS320VC5510/5510A Fixed-Point Digital Signal Processors

La gran ventaja que poseía el hacerse con un DSP es que existe gran diversidad de ellos, preparados especialmente para cierto tipo de datos y de tratamientos de señal. Sólo se tuvo que buscar uno que se adecuara a nuestras necesidades (tipos de datos, tratamiento, rapidez…)

Después de buscar las posibles opciones que ofrecía el mercado a nivel

de DSP, se encontró una tarjeta de Texas Instruments que poseía un codec de audio, y además la propia tarjeta ya estaba preparada con entradas y salidas de audio.

A continuación se puede ver un detalle de la placa DSP. En ella

podemos distinguir las partes más importantes y ver como es ideal para nuestra línea de investigación. (No olvidemos que estamos tratando de iniciar un sistema capaz de atenuar ruido a través de ruido).

Memoria Descriptiva Pág. - 103 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Introducción al TMS320VC5510 DSK

El DSK 5510 es la plataforma de desarrollo estándar de bajo coste que permite al usuario analizar y desarrollar aplicaciones para la familia de DSP C55XX de Texas Instruments. El DSK también es válido como referencia de diseño hardware para la DSP TMS320VC5510.

Todas las características disponibles sobre el funcionamiento completo

de esta plataforma de desarrollo se encuentra disponible (esquemáticos, ecuaciones lógicas, notas de aplicación, datasheets,…).

Seguidamente se aprecia un diagrama de bloques de la estructura (tanto

funcional como física) de la tarjeta adquirida.

Memoria Descriptiva Pág. - 104 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Se destacarán las características claves del dispositivo. Así se muestra a continuación las que se han considerado más importantes (tanto generales como específicas):

• Opera a 200 MHz (suficientemente rápida) • Flash externa de 256Kbytes y 16 bit de interface • Codec AIC23 estéreo (ideal para adquisición de señales de sonido) • 8 Mbytes de DRAM síncrona • 512 kbytes de memoria Flash no volátil • 4 LEDs accesibles al usuario e interruptores DIP • Configuración software de tarjeta a través de registros implementados

en CPLD • Jumper seleccionables • Conectores estándar de expansión para uso de tarjeta hija • Programable a través de puerto USB

Además, el paquete adquirido dispone de una fuente externa a la tarjeta

para poder enchufarla directamente a la red eléctrica. Merece la pena reseñar el codec AIC23, que permite al DSP transmitir y

recibir señales analógicas (más específicamente, señales de sonido). Las entradas y salidas analógicas son jacks de audio de 3.5 mm que se corresponden con entrada de micrófono, línea de entrada, línea salida y salida auriculares (mic in, line in, line out, headphoned). El codec, entre otras muchas posibilidades de funcionamiento, puede seleccionar el micrófono o la línea de entrada como entrada activa, variar el volumen tanto de la entrada como de la salida, especificar una salida,…

Cabe también destacar el dispositivo lógico programable (CPLD). En

este caso nuestro DSP, el C5510 DSK usa un CPLD de Altera, el modelo

Memoria Descriptiva Pág. - 105 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera EPM3128TC100-10. El CPLD del que se está hablando posee las siguientes características principales:

• 4 registros de control y estado de la memoria que permiten al software el control de varios aspectos de la tarjeta.

• Decodificador de direcciones y acceso lógico de memoria. • Control de interfaces y señales dependientes del DSP principal. • Permite la unión lógica entre los componentes de la tarjeta.

El entorno de programación suministrado con el paquete adquirido es el

Code Composer Studio. Este se comunica con la tarjeta a través de un emulador JTAG con un interfaz USB. Más adelante veremos más sobre este programa. AIC23 codec

Merece una especial atención el AIC23 codec Éste es específico de Texas Instruments y es el encargado del tratamiento del sonido. Es decir, se encarga se recoger y/o reproducir el sonido, tanto a nivel hardware como en software. A continuación vemos un detalle de la parte del DSP encargada del tratamiento del sonido (entradas, salidas y AIC23).

El codec muestrea señales analógicas procedentes de un micrófono (“mic in”) o de una señal de entrada (“line in”) y las convierte en datos digitales que pueden ser procesados por el DSP. Cuando el DSP termina con el procesado de datos usa el codec para convertir de nuevo las muestras en señales analógicas para su emisión a través de las salidas (auriculares o línea de salida) de manera que el usuario pueda oír la señal procesada.

Memoria Descriptiva Pág. - 106 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

El codec se comunica usando dos canales serie, uno para el control de la configuración de registros internos del codec y otro para mandar y recibir muestras digitales de audio.

Los canales son McBSP1 y McBSP2 (canal de control y de datos

respectivamente). El canal de control estará en modo SPI y tendrá reloj interno y paquetes

de datos sincronizados. El canal de datos será el AIC23 en modo maestro con un reloj de

sistema de 12MHz. Con cada muestra, el formato de los datos del DSP en el codec consiste en un paquete de dos elementos de 16 bits, correspondiéndose a la izquierda y a la derecha (canales en lo que podes dividir una señal estéreo). Reloj y paquete de datos sincronizados externos al AIC23 del DSP.

McBSP1 se usa como canal de de control unidireccional. Puede ser

programado para enviar una palabra de control de 16 bit al AIC23 en formato PCI. Los 7 bit más significativos de la palabra de control especifican el registro a modificar y los 9 bit menos significativos contienen el valor del registro. El canal de control solo se usa cuando se configura el codec, esto es, generalmente, cuando el dato está siendo transmitido.

McBSP2 se usa como canal de datos bidireccional. Todos los datos de

audio fluyen a través de este canal de datos. La mayoría de los formatos de datos son soportados en base a tres variables de ancho de muestreo, fuente de señal de reloj y formato de dato serie. El uso más habitual en el DSK es un ancho de muestreo de 16 bit con el codec en modo maestro. El formato preferido es el modo DSP, el cual es diseñado específicamente para operar con puertos McBSP en DSP’s De Texas Instruments.

El codec AIC23 tiene 10 registros para controlar funciones como el volumen, el formato de dato, las frecuencias de muestreo o los modos de bajo

Memoria Descriptiva Pág. - 107 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera consumo. Los registros se modifican a través del canal de datos. Estos registros son los siguientes:

Entorno software de programación. Code Composer Studio

El objetivo perseguido con este apartado consiste en la familiarización con la herramienta de desarrollo de DSPs utilizada. Para ello se hará un breve seguimiento por los pasos a dar para poder llevar a cabo un proyecto en el Code Composer Studio (a partir de ahora CCS). *Creación de un Programa para el DSP

En primer lugar se mostrarán los pasos básicos para el desarrollo de una sencilla aplicación que se ejecute en el DSP. Este apartado no pretende ser una guía exhaustiva de manejo de la herramienta Code Composer Studio o CCS. La aplicación consistirá en un sencillo programa que se limita a implementar un mero amplificador con ganancia. La figura muestra el diagrama de bloques del sistema a implementar. Para realizar la conversión digital/analógico y analógico/digital se utilizarán sendos conversores que integra el AIC23 de que dispone la tarjeta de desarrollo.

Memoria Descriptiva Pág. - 108 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

En primer lugar será necesario crear un proyecto para nuestra aplicación. Para ello seleccione las opciones del menú Project New apareciendo la ventana que se muestra en la figura siguiente. Introduzca el nombre del proyecto y pulse enter.

Para simplificar el desarrollo de esta aplicación en lo referente a la gestión de interrupciones y el manejo del AIC se utilizarán las librerías DSP/BIOS y de soporte de la tarjeta (CSL). El uso de estas librerías se puede simplificar en gran medida mediante el uso de la herramienta de configuración gráfica. Para ello es preciso crear un fichero de base de datos de configuración o CDB. Para ello se parte de una plantilla específica de la plataforma para la cual se va a compilar la aplicación. Utilice las opciones del menú FILE New

BIOS Configuration eligiendo la plantilla correspondiente a la tarjeta que n cada caso se vaya a programar (como se muestra en la figura).

Memoria Descriptiva Pág. - 109 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Tal y como muestra la figura siguiente, la operación anterior se limita a crear una nueva base de datos de configuración a partir de una plantilla genérica que posteriormente se modificará para adecuarla a las necesidades de la aplicación. Para poder utilizar esta configuración es preciso salvarla en disco de forma explícita mediante la opción FILE Save As.... Por cuestiones de claridad es recomendable asignarle al fichero .CDB el mismo nombre que el del proyecto (claro está, cambiando la extensión). De la misma forma, dicho fichero debe almacenarse en el directorio del proyecto. NOTA: Preste atención a este último aspecto ya que frecuentemente CCS ofrece como alternativa por defecto el último directorio utilizado a la hora de salvarlo, el cual puede no coincidir con el del proyecto.

Una vez creado el fichero CDB es necesario añadirlo de forma explícita al proyecto. Utilice para ello la opción del menú Project Add Files to Project.... El uso de ficheros CDB permite automatizar la generación de varios ficheros utilizados durante el proceso de compilación de la aplicación. Estos ficheros son: • Filename.cdb Base de datos de configuración. • Filenamecfg_c.c Código C creado por la herramienta de configuración. • Filenamecfg.s62 Código asm creado por la herramienta de configuración. • Filenamecfg.cmd Fichero de comandos del linker • Filenamecfg.h Fichero cabecera para *cfg_c.c • Filenamecfg.h62 Fichero cabecera para *cfg_c.s62

Al añadir el fichero CDB al proyecto se incluyen automáticamente todos los ficheros anteriormente citados excepto el fichero de comandos del linker. Es preciso añadirlo explícitamente al proyecto utilizando el método anteriormente descrito. Según esto el proyecto debe mostrar la estructura mostrada en la figura siguiente.

Memoria Descriptiva Pág. - 110 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Por otro lado es preciso añadir también la librería de soporte de la tarjeta que contiene las funciones de gestión del AIC. Esta librería se añade en las opciones del linker mediante la el menú Project Build Options... tal y como muestra la figura siguiente. (página siguiente)

Llegados a este punto ya se puede comenzar a crear los ficheros

fuentes específicos de la aplicación. En primer lugar es preciso incluir los ficheros .h correspondientes al

código generado automáticamente y a las librerías que se van a utilizar. Durante la inicialización de la tarjeta se fijan los valores de los registros

del CPLD a sus valores por defecto y se inicializan las estructuras de datos utilizadas por la librería BSL. Es preciso llamar a la función de iniciación antes de poder utilizar cualquiera de las restantes funciones.

Una vez realizada esta operación se puede proceder a configurar el AIC.

La librería BSL gestiona este elemento como un dispositivo del sistema operativo, es decir, antes de poder utilizarlo es preciso abrirlo mediante la función DSK6713_AIC23_openCodec(). Esta función recibe como primer parámetro el identificador del dispositivo que lo distingue de otros componentes idénticos de que pueda constar el sistema. El segundo parámetro es una estructura de datos mediante la cual se configura el AIC. Cada uno de los campos de esta estructura corresponde a uno de los registros de configuración del AIC.

Memoria Descriptiva Pág. - 111 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Un tipo declaración de estructura de datos se muestra a continuación: DSK6713_AIC23_Config config = { 0x0017, // 0 DSK6713_AIC23_LEFTINVOL Left line input channel volume 0x0017, // 1 DSK6713_AIC23_RIGHTINVOL Right line input channel volume headsetVol, // 2 DSK6713_AIC23_LEFTHPVOL Left channel headphone vol headsetVol, // 3 DSK6713_AIC23_RIGHTHPVOL Right channel headphone vol 0x0011, // 4 DSK6713_AIC23_ANAPATH Analog audio path control 0x0000, // 5 DSK6713_AIC23_DIGPATH Digital audio path control 0x0000, // 6 DSK6713_AIC23_POWERDOWN Power down control 0x0043, // 7 DSK6713_AIC23_DIGIF Digital audio interface format 0x0081, // 8 DSK6713_AIC23_SAMPLERATE Sample rate control 0x0001 // 9 DSK6713_AIC23_DIGACT Digital interface activation };

Esta función devuelve un identificador o handler que será utilizado en la llamada a las restantes funciones utilizadas para manejar el AIC (por ejemplo las utilizadas para leer y escribir las muestras). Este identificador debe declararse como una variable global ya que será posteriormente utilizada en la rutina de tratamiento de interrupción.

Siguiendo, a grandes rasgos, estos pasos, podremos comenzar a

realizar proyectos que sirvan en la ejecución de experimentos (siempre relacionados con el tratamiento de sonido).

Memoria Descriptiva Pág. - 112 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera Control Activo de Ruido con el DSP DSK C5510

Una vez elegida la herramienta principal con la que se comenzará a experimentar con el control activo de ruido, hechas las pertinentes introducciones e iniciaciones a los dispositivos y a la teoría, se tendrá que analizar cómo se implementará y que elementos se usarán para ello.

Los elementos que van a componer nuestro sistema de control activo de

ruido son:

• PC • Tarjeta DSP • Micrófono Electrovoice PL-80 • Altavoces estéreo • Micrófono AKG D55 S

De estos elementos hay algunos que ya han sido mencionados y

debidamente estudiados. Otros, como son el caso de los actuadotes (micrófonos y altavoces) no han sido comentados. No se hará mucho hincapié en la estructura y el funcionamiento de un micrófono ni de un altavoz, pero si se señalarán las características de los modelos usados en los montajes.

Del micrófono Electrovoice PL-80 podemos destacar, entre otras

características, que es un micrófono vocal, dinámico y súper cardiode.

Las principales características del micrófono AKG D55 S son:

• Micrófono para voces y karaoke • Transductor Dinámico • Direccional Cardioide • Respuesta Frecuencia 70Hz – 18Khz • Sensibilidad 2.5 mV/pa (-52dBV) • Impedancia 600(Ohm) • Conector Mini Jack

Memoria Descriptiva Pág. - 113 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

En los experimentos se han usado dos juegos de altavoces estéreo convencionales de PC.

La idea, principalmente, será aprovechar las entradas y salidas de la

tarjeta junto con el codec AIC23 para poder implementar el sistema deseado. Se usará el CCStudio para generar los programas (código en C) que

controlen y procesen las señales necesarias para el estudio del sistema. Primeros Experimentos

La primera toma de contacto con el DSP fue tan sólo para ver el funcionamiento básico del mismo. Es decir se generaron, a partir de ejemplos de la documentación, programas que simplemente reproducían sonido. De esa forma tuvimos un primer acercamiento a la configuración del codec y de sus registros. *Reproducción de Sonido

El primero de los experimentos realizados fue un sistema que se encargase de emitir un sonido, para ello aprovechamos un ejemplo de la documentación del CCS en el que se nos muestra un programa en C que emite un sonido.

La idea fue usar como base ese programa para, creando nosotros una

señal senoidal, en este caso de 1 kHz de frecuencia; reproducirla a través del DSP. Tendríamos que crear nuestro propio proyecto, configurarlo según la tarjeta que vamos a usar, ver qué librerías hacen falta,…. Luego tuvimos que configurar el codec AIC23 (entradas, salidas, volumen de las mismas,…). El resultado del programa debería ser una señal de audio que se emita a través de unos altavoces.

Memoria Descriptiva Pág. - 114 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

A continuación mostraremos el código del programa: #include "tonecfg.h" #include "dsk5510.h" #include "dsk5510_aic23.h" /* tamaño de la tabla seno */ #define SINE_TABLE_SIZE 48 /* Cofiguración del codec */ DSK5510_AIC23_Config config = { 0x0017, // 0 DSK5510_AIC23_LEFTINVOL 0x0017, // 1 DSK5510_AIC23_RIGHTINVOL 0x00d8, // 2 DSK5510_AIC23_LEFTHPVOL 0x00d8, // 3 DSK5510_AIC23_RIGHTHPVOL 0x0011, // 4 DSK5510_AIC23_ANAPATH 0x0000, // 5 DSK5510_AIC23_DIGPATH 0x0000, // 6 DSK5510_AIC23_POWERDOWN 0x0043, // 7 DSK5510_AIC23_DIGIF 0x0081, // 8 DSK5510_AIC23_SAMPLERATE 0x0001 // 9 DSK5510_AIC23_DIGACT }; /* Pre-generated sine wave data, 16-bit signed samples */ Int16 sinetable[SINE_TABLE_SIZE] = { 0, 0.1333, 0.2642, 0.3904, 0.5096, 0.6197, 0.7188, 0.8051, 0.8769, 0.9332, 0.9728, 0.9950, 0.9994, 0.9861, 0.9551, 0.9071, 0.8429, 0.7637, 0.6708, 0.5659, 0.4510, 0.3280, 0.1992, 0.0668, -0.0668,-0.1992, -0.3280, -0.4510, -0.5659, -0.6708, -0.7637, -0.8429, -0.9071, -0.9551, -0.9861, -0.9994, -0.9950, -0.9728, -0.9332, -0.8769, -0.8051, -0.7188, -0.6197, -0.5096, -0.3904, -0.2642, -0.1333, -0.0000 }; void main() { DSK5510_AIC23_CodecHandle hCodec; Int16 msec, sample; /* Inicializamos la librería del DSP */ DSK5510_init(); /* Abrimos el codec */ hCodec = DSK5510_AIC23_openCodec(0, &config); /* Generamos una senoidal de 1KHz durante 5 segundos */ for (msec = 0; msec < 5000; msec++) { for (sample = 0; sample < SINE_TABLE_SIZE; sample++) { while (!DSK5510_AIC23_write16(hCodec, sinetable[sample])); } } /* cerramoel codec */ DSK5510_AIC23_closeCodec(hCodec); } Conectando unos altavoces a la salida (“line out”) de la tarjeta, obtenemos como resultado la emisión de la señal seno (sonido constante) durante 5 segundos.

En primer lugar tenemos que definir los registros de control del codec

AIC23. Con esto definiremos parámetros esenciales a la hora de realizar los

Memoria Descriptiva Pág. - 115 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera experimentos de manera correcta, ya que con estos registros definiremos valores tales como la velocidad de muestreo, los volúmenes de los diferentes canales de las señales estéreo… (recordemos que ya hablamos de estos registros)

Luego, en el programa principal (función main()), sólo recorremos la

matriz de los valores del seno durante un periodo de tiempo. Esta primera prueba tan sólo pretendía un acercamiento a la tarjeta, al

AIC23, y al manejo de salidas (porque aquí no intervienen las entradas). *Recogida de sonido

Una vez realizados los experimentos de reproducción de sonido correctamente, nuestro siguiente paso era el opuesto, es decir, poder capturar un sonido a través de un micrófono línea de entrada. Para ello, al igual que existe la instrucción DSK5510_AIC23_write16, también sabemos que tenemos la instrucción DSK5510_AIC23_read16, que nos sirve para leer las muestras que nos llegan del micrófono o del line in.

Hemos realizados distintos experimentos analizando distintas opciones

para la recogida de sonido, ya que en transcurso de estas pruebas nos encontramos con distintos obstáculos. Para superarlos debimos estudiar distintos montajes y distintas opciones antes de llegar a una conclusión definitiva. A) PRUEBA 1 (proyecto recoge)

Este primer experimento de recogida de sonido a través de un micrófono consistía en intentar ver la fidelidad con la que se recoge una determinada señal conocida.

Uno de los experimentos que hicimos fue el recoger en vacío, es decir

no conectamos nada, durante 3000*25 muestras (recogemos 25 muestras en una matriz y la sobrescribimos 3000 veces). Suponemos que nos dará lo que realmente debiera recoger. (Hemos de reseñar que aunque no conectemos nada no nos recogerá ceros absolutos debido a la conversión de analógico a digital y a que el micrófono no es ideal y por muy aislado que esté siempre va a estar midiendo algo.).

El programa realizado para este experimento es el siguiente:

#include "recogecfg.h" #include "dsk5510.h" #include "dsk5510_aic23.h" #include "dsk5510_led.h" #define SINE_TABLE_SIZE 25 /* Configuración de los registros */ DSK5510_AIC23_Config config = { 0x0017, // 0 DSK5510_AIC23_LEFTINVOL

Memoria Descriptiva Pág. - 116 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera 0x0017, // 1 DSK5510_AIC23_RIGHTINVOL 0x01f9, // 2 DSK5510_AIC23_LEFTHPVOL 0x01f9, // 3 DSK5510_AIC23_RIGHTHPVOL 0x0010, // 4 DSK5510_AIC23_ANAPATH 0x0000, // 5 DSK5510_AIC23_DIGPATH 0x0000, // 6 DSK5510_AIC23_POWERDOWN 0x0043, // 7 DSK5510_AIC23_DIGIF 0x0081, // 8 DSK5510_AIC23_SAMPLERATE 0x0001 // 9 DSK5510_AIC23_DIGACT }; /*Aquí será donde guardemos el ruido recogido */ Int16 sinetable[SINE_TABLE_SIZE]; Int16 sinetable0[SINE_TABLE_SIZE]; void main() {

DSK5510_AIC23_CodecHandle hCodec; Int16 sample,i; /*Inicio la tarjeta*/ DSK5510_init(); /*inicio los led*/ DSK5510_LED_init(); /*inicializo el codec*/ hCodec = DSK5510_AIC23_openCodec (0, &config); /*recojo la primera matriz*/ for (sample = 0; sample < SINE_TABLE_SIZE; sample++) {

/*recojo un dato de la entrada mic*/ while (!DSK5510_AIC23_read16(hCodec, &sinetable0[sample]));

} /*recojo la última matriz*/ for (i=0; i<3000; i++) {

for (sample = 0; sample < SINE_TABLE_SIZE; sample++) {

/*recojo un dato de la entrada mic*/ while (!DSK5510_AIC23_read16(hCodec, &sinetable[sample]));

} } DSK5510_LED_toggle(0);

/* Cierro el codec */ DSK5510_AIC23_closeCodec(hCodec); /*lo uso como bandera de fin*/ DSK5510_LED_toggle(1);

}

Lo que hemos hecho con el LED es usarlo de bandera para ver en que momento se cierra el codec, es decir, como bandera de fin.

A la hora de recoger el sonido a través del micro hemos usado dos

variables para ver cuanto tiempo tarda en recoger muestras continuas, ya que las primeras muestras no van a ser válidas. Teniendo en cuenta este dato y que las variables elegidas son sinetable0, para la primera vez que se recogen muestras y sinetable para la última recogida de muestras.

A continuación veremos una tabla con los datos obtenidos para la

primera vez que recorremos la matriz y los datos de la última. Obtenemos (no siempre se obtendrá lo mismo), lo siguiente:

Memoria Descriptiva Pág. - 117 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

sinetable0 HEX sinetable HEX sinetable0 DEC sinetable DEC [0] 0x0000 [0] 0xFFFE [0] 0 [0] -2 [1] 0x0000 [1] 0xFEFF [1] 0 [1] -257 [2] 0x0000 [2] 0xFFFF [2] 0 [2] -1 [3] 0x0000 [3] 0xFFFF [3] 0 [3] -1 [4] 0x0000 [4] 0xFFFD [4] 0 [4] -3 [5] 0x0000 [5] 0xFDFF [5] 0 [5] -513 [6] 0x0000 [6] 0xFFFF [6] 0 [6] -1 [7] 0x0000 [7] 0xFFFF [7] 0 [7] -1 [8] 0x0000 [8] 0xFFFE [8] 0 [8] -2 [9] 0x0000 [9] 0xFEFF [9] 0 [9] -257

[10] 0x0000 [10] 0xFFFF [10] 0 [10] -1 [11] 0x0000 [11] 0xFFFF [11] 0 [11] -1 [12] 0x0000 [12] 0xFFFF [12] 0 [12] -1 [13] 0x0000 [13] 0xFFFF [13] 0 [13] -1 [14] 0x0000 [14] 0xFFFE [14] 0 [14] -2 [15] 0x0000 [15] 0xFEFF [15] 0 [15] -257 [16] 0x0000 [16] 0xFFFD [16] 0 [16] -3 [17] 0x0000 [17] 0xFDFF [17] 0 [17] -513 [18] 0x0000 [18] 0xFFFE [18] 0 [18] -2 [19] 0x00FF [19] 0xFEFF [19] 255 [19] -257 [20] 0xFFFF [20] 0xFFFE [20] -1 [20] -2 [21] 0xFFFF [21] 0xFEFF [21] -1 [21] -257 [22] 0xFFFF [22] 0xFFFF [22] -1 [22] -1 [23] 0xFF00 [23] 0xFFFF [23] -256 [23] -1 [24] 1 [24] 0xFFFE [24] 1 [24] -2

Podemos decir, que en nuestro experimento se tarda en torno a las 19 ó

20 muestras en tomar lo que realmente se tomará de forma continuada. Lo que demostramos con este experimento fue que son necesarias el

menos 20 muestras hasta que se recoge la señal que debemos recoger, debido a que estas primeras 20 muestras son las que necesita la tarjeta para estabilizarse y recoger correctamente.

Es importante tener este hecho en cuenta, ya que a la hora de hacer

tratamiento de las muestras recibidas hay que tener en cuenta que no todas son válidas y que dicho tratamiento habrá que hacerlo pasado un determinado tiempo, para hacerlo sobre muestras que sean fiables.

Una vez visto el número de muestras necesarias para empezar a tener

una medida fiable realizamos distintos experimentos de recogida de sonidos de distinta naturaleza con el objetivo de depurar el programa y comprobar que funciona correctamente.

Ahora que ya recogemos sonido, la idea es ver cual de las dos posibles

entradas (“mic in” o ”line in”) da una mayor calidad en la captación de señales. B) PRUEBA 2 (Proyecto expe2)

Memoria Descriptiva Pág. - 118 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

En este apartado los experimentos realizados van encaminados a poder manejar las dos entradas (line in o mic in).

Ya pensando en el que sería montaje definitivo realizamos el siguiente

experimento, que es ir tomando alternativamente señal de las dos entradas posibles (line in o mic in), ya que para el sistema CAR nos hacen falta dos señales de recogida.

Para ello la idea era abrir y cerrar el codec cada vez que fuéramos a

usar una entrada distinta. Es decir, ir definiendo continuamente el codec cada vez que se quiera recoger señal para especificar por qué entrada queremos recoger dicha señal, teniendo en cuenta que cada vez que se hace la recogida de la señal tenemos que, al finalizar la recogida, volver a cerrar el codec para poder volver a usarlo en el siguiente proceso de recogida. En resumen, el proceso sería abrir el codec seleccionando la entrada line in para recoger señal a través de esa entrada, cerrar el codec una vez realizada la recogida y a continuación volver a abrirlo pero seleccionado la entrada mic in, y volver a realizar el proceso de recogida.

Para ello tenemos que definir los registros del según la entrada que

queramos en cada comento cada vez que abramos el codec. Este método además traerá de nuevo el problema de que debemos de

tomar 20 muestras antes de una válida. Por lo tanto cada vez que abramos el codec tenemos que tener en cuenta este hecho y saber que las primeras 20 muestras no van a ser válidas.

Para la realización del experimento seguimos los siguientes pasos:

1. Para trabajar con el módulo AIC23 (el encargado de seleccionar las

distintas entradas y salidas de sonido) es necesario inicializarlo con unos parámetros (registros) que habrá que definir.

2. Con estos registros podremos elegir la entrada, los volúmenes de

entrada y salida, la frecuencia de muestreo. De estos registros, recordemos que ya hemos hablado.

3. Deberemos darles valores según nuestras necesidades y luego iniciar el

codec con ellos; con la instrucción: o hCodec = DSK5510_AIC23_openCodec(0, &config); donde config lleva los valores de los registros.

4. Una vez cargado el módulo AIC23 tendremos seleccionada una u otra

entrada (mic o line in). 5. Para seleccionar la otra tendremos que iniciar el módulo de nuevo.

Para seleccionar la entrada de la que queremos recoger señal tenemos

que modificar el registro “Analog audio path control”. Para ello, a continuación, mostramos como es el funcionamiento y como esta definido este registro:

Memoria Descriptiva Pág. - 119 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

De manera que para seleccionar como entrada line in tenemos que especificar el valor del dicho registro de manera que el valor del bit INSEL sea 0, ya que es el que selecciona la entrada. El valor del registro con line in seleccionada es 0x0012 (en hexadecimal). Para hacer la selección de la entrada de micrófono hay que poner el bit INSEM a 1 para que esta sea seleccionada, de manera que el valor del registro queda como 0x0014.

Realizamos un programa que simplemente es un bucle que tomando

alternativamente de las dos entradas de sonido. Al ejecutarse el programa podemos escuchar que se produce un golpe de ruido que provoca que los datos obtenidos en el programa no sean realmente lo que en teoría se debe obtener. Este golpe de ruido se produce cada vez que se inicia el codec (cada vez que se ejecuta DSK5510_AIC23_openCodec).

Para nuestro montaje final tendremos que tomar datos de una y otra

entrada casi simultáneamente por lo que este “golpe” es un problema grave ya que falsea los datos y a la hora de plantearnos un algoritmo de control es muy importante obtener unos datos que sean lo más fiel posible a la señal de ruido que queremos eliminar.

Para solucionar el problema de ruido intentamos realizar las siguientes

pruebas:

1. Intentar cambiar de línea de entrada (modificar el codec) sin haber cerrado la anterior configuración de codec. Es decir, si primero recogemos a través de la entrada LINE IN. Una vez realizada la recogida no cerrar el codec para cambiar la entrada de recogida. Este método no nos soluciona el problema porque continúa el golpe de ruido.

2. Una de las causas por las que podría aparecer el golpe de ruido puede

ser el hecho de que las 20 muestras primeras que se recogen no son válidas por lo que hicimos que el programa leyera la entrada varias veces sin reproducir el sonido (para evitar esas 20 primeras muestras) y a continuación que se produjera la recogida normal. El golpe de ruido continúa apareciendo.

Memoria Descriptiva Pág. - 120 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

3. La otra idea fue modificar el codec directamente, especificando que registro vamos a modificar y que valor va a tomar. Es decir, para cambiar de entrada lo único que vamos a hacer es que el codec solo cambie el valor del registro “Analog audio path control” de 0x0012 a 0x0014 o viceversa.

o Lo haremos con la instrucción DSK5510_AIC23_rset. Esta instrucción nos permite cambiar uno de los registros iniciales con los que se abrió el codec.

El programa es el siguiente:

#include "expe2cfg.h" #include "dsk5510.h" #include "dsk5510_aic23.h" #include "dsk5510_led.h" /*LED's*/ #define SIZE 10 #define TIME 30000 /*Toma datos de "line in"*/ DSK5510_AIC23_Config config1 = { \ 0x0017, /*(000010111) 0 LEFTINVOL*/ 0x0017, /*(000010111) 1 RIGHTINVOL*/ 0x01f9, /*(111111001) 2 LEFTHPVOL*/ 0x01f9, /*(111111001) 3 RIGHTHPVOL*/ 0x0012, /*(000010000) 4 ANAPATH (entrada "line in")*/ 0x0000, /*(000000000) 5 DIGPATH*/ 0x0000, /*(000000000) 6 POWERDOWN*/ 0x0043, /*(001000011) 7 DIGIF*/ // 0x0081, /*(010000001) 8 SAMPLERATE*/ 0x009C, /*(010000001) 8 SAMPLERATE*/ 0x0001, /*(000000001) 9 DIGACT*/ }; Int16 linein[2*SIZE]; Int16 mic[2*SIZE]; Int16 i,j,x,y; /*variables*/ void main() { /*manejador, configurado en archivo DSP/BIOS*/ DSK5510_AIC23_CodecHandle hCodec; /*utilizo el DSK5510*/ DSK5510_init(); /*Inicializo los led's*/ DSK5510_LED_init(); /*Arranco el codec*/ hCodec = DSK5510_AIC23_openCodec(0, &config1); x=2; /*bucle de lectura*/ while(x) { for (i = 0; i < TIME; i++) { for (j = 0; j < SIZE; j++) { while (!DSK5510_AIC23_read16(hCodec, &linein[j])); /*comprobamos que toma sonido de line in*/ /*reproducimos*/ while (!DSK5510_AIC23_write16(hCodec, linein[j])); /*Cambio de entrada "line in" a "MIC"*/ DSK5510_AIC23_rset(hCodec, 4, 0x0014);

Memoria Descriptiva Pág. - 121 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera while (!DSK5510_AIC23_read16(hCodec, &mic[j])); /*Vuelvo a cambiar de entrada "MIC" a "line in"*/ DSK5510_AIC23_rset(hCodec, 4, 0x0010); } } /*bandera de cambio*/ DSK5510_LED_toggle(0); for (i = 0; i < TIME; i++) { for (j = SIZE; j < 2*SIZE; j++) { while (!DSK5510_AIC23_read16(hCodec, &linein[j])); /*Cambio de entrada "line in" a "MIC"*/ DSK5510_AIC23_rset(hCodec, 4, 0x0014); while (!DSK5510_AIC23_read16(hCodec, &mic[j])); /*comprobamos que toma sonido de mic, reproducimos*/ while (!DSK5510_AIC23_write16(hCodec,mic[j])); /*Vuelvo a cambiar de entrada "MIC" a "line in"*/ DSK5510_AIC23_rset(hCodec, 4, 0x0010); } } x--; /*bandera de cambio*/ DSK5510_LED_toggle(0); } /*Cierro el codec*/ DSK5510_AIC23_closeCodec(hCodec); /*bandera de cambio*/ DSK5510_LED_toggle(3); }

Con este programa el golpe de ruido es prácticamente inapreciable pero además podemos sacar otras conclusiones.

Con esto podremos analizar las entradas más fielmente y ver en que se

diferencian (análisis espectral, valor de datos,…). En las dos entradas vamos a introducir la misma señal (un seno de

400Hz creado en Simulink).

• En el programa se pueden diferenciar claramente 2 grandes bucles for. • En los dos tomo datos alternando las entradas (instrucción

DSK5510_AIC23_rset). • En el primero de ellos reproduzco sólo lo que obtengo de la entrada line

in. • En el segundo, hago lo propio con la entrada mic in. • Además voy guardando lo obtenido en matrices (linein[2*SIZE] y

mic[2*SIZE]. • En el primer bucle obtengo sólo la mitad de ambas matrices y sólo

reproduzco la perteneciente a line in (viceversa en el 2º for).

Memoria Descriptiva Pág. - 122 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

• Recordemos que en un primer experimento introduzco a ambas entradas la misma señal (seno de 400Hz.)

Conclusiones:

1. Aunque en el primer for reproduzco line in y en el segundo mic in, no hay

diferencia apreciable al oído. 2. La anterior conclusión se explica al mirar ambas matrices: SON

IGUALES. a. Esto no se corresponde con el experimento anterior en el que

comprobamos (de manera experimental, es decir, observando el mismo ruido por las dos salidas) que la entrada mic in tiene más calidad y volumen.

b. Podría ser por los registros, ya que podemos alterar varios parámetros de captura que no han sido muy probados (bypass, sidetone, de-emphasis control, power down…).

Es mucha casualidad que las dos matrices obtenidas sean exactamente

iguales. Así que procedemos a otro sencillo experimento usando el mismo

programa anterior. Vamos a introducir distintos sonidos. Hemos usado para una entrada un seno de 400Hz (el mismo que antes estábamos usando) y para la otra entrada, otro sonido cualquiera que sea bastante diferente del anterior (música, la radio,…)

Conclusiones:

1. Al tomar datos alternativos de LINE IN y MIC, si los tomamos uno a uno (y a la vez vamos reproduciendo) se mezclan; aún reproduciendo sólo un canal.

2. Si no los tomamos alternativos sino que primero capturamos un paquete de datos de un canal (y a la vez vamos reproduciendo) no ocurre lo anterior.

3. Si miramos las tablas de datos, ambas contienen EXACTAMENTE los mismos.

Posibles causas:

1. Velocidad del convertidor Analógico-Digital, ya que este es único para

las dos entradas y es posible que si no trabaja suficientemente rápido puede que mezcle las dos señales de entrada.

a. Ya que parece que será allí donde los datos de una entrada y de otra se mezclarán.

b. Luego, los datos mezclados en uno se guardan donde proceda. i. Por tanto se reproducen las dos señales solapadas y a la

vez (aunque durante un tiempo reproduzca sólo line in y otro tiempo mic in).

Memoria Descriptiva Pág. - 123 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera C) PRUEBA 3 (proyecto expe1)

Parece que el problema será del control del módulo AIC23; éste tiene dos canales serie, uno para controlar la configuración interna de los registros y otro que se envía y recibe muestras de audio. Recordemos la siguiente figura:

Aquí es donde creemos que puede estar el problema, ya que es en este módulo donde se encuentran los convertidores ADC y DAC.

McBSP1 y McBSP2 siempre fueron configurados como la ayuda nos

indica que se han de configurar. Vamos a modificar la velocidad de muestreo de los convertidores para

intentar que trabajen más rápido y así conseguir que no se mezclen las señales. Normalmente tenemos 0x0081 en la palabra Simple Rate Control, que corresponde a 010000001; lo que quiere decir, viendo la tabla de la siguiente página.

Comprobamos qué frecuencia de muestreo corresponde a los bits SR

sabiendo que estamos trabajando en modo USB. Viendo los datasheets sabemos que se corresponde con una frecuencia de muestreo de 48kHz. Además tenemos divisor de reloj de salida (MCLK/2).

Cambiaremos dicho registro con la función que ya hemos mencionado y

que anteriormente hemos usado para cambiar el registro en el que se elige la entrada (ANAPATH). La función es DSK5510_AIC23_rset. Simple Rate Control (address 0001000)

BIT D8 D7 D6 D5 D4 D3 D2 D1 D0 Function X CLKOUT CLKIN SR3 SR2 SR1 SR0 BOSR USB/NormalDefault 0 1 0 0 0 0 0 0 1

Memoria Descriptiva Pág. - 124 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

CLKOUT Clock output divider 0 = MCLK 1 = MCLK/2

CLKIN Clock input divider 0 = MCLK 1 = MCLK/2 SR[3:0] Sampling rate control

Base oversampling rate USB mode 0 = 250 fs 1 = 272 fs BOSR

Normal mode: 0 = 256 fs 1 = 384 fs USB/Normal Clock mode select: 0 = Normal 1 = USB

X Reserved

Vamos a cambiar esta palabra por una que haga funcionar en modo normal (en lugar de USB), y que trabaje a la mayor frecuencia posible (96 kHz.). Esta palabra es 010011100 (que corresponde con 9C en hexadecimal).

Para el nuevo experimento:

• Se siguen mezclando los datos. • Parece que se escucha más el dato que se pretende reproducir en cada

for. • Las matrices linein[j] y mic[j] ya no son iguales, pero se parecen

bastante.

Con esta misma configuración, vamos a leer cada valor 2 veces:

• Cada vez se escucha más el que se pretende

Introduzco un for(y=0;y<100;y++); (lo suponemos como operaciones entre que recojo un dato y el siguiente).

• No parece que se mejore en el camino que pretendemos.

Probamos a, en el segundo for, no tomar datos de una de las entradas:

• Se distorsiona el sonido muchísimo. • No parece que se deje de tomar valores en una de las entradas.

o Distorsión de sólo una de las entradas. o Valores en ambas matrices

Esto lleva a: EL ERROR PUEDE ESTAR EN LAS INTRUCCIONES

1. DSK5510_AIC23_rset(hCodec, 4, 0x0012); 2. DSK5510_AIC23_rset(hCodec, 4, 0x0014);

con las que nosotros pretendemos cambiar de una entrada a otra (de

line in a mic in)

Memoria Descriptiva Pág. - 125 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Pero estas instrucciones eran la solución a los “golpes de ruido” al abrir y cerrar los codecs.

Como última prueba veremos qué ocurre si aumentamos la frecuencia

de muestreo a 96kHz.

/*Pongo la frecuencia de muestreo a 96kHz.*/ DSK5510_AIC23_setFreq(hCodec, DSK5510_AIC23_FREQ_96KHZ);

No se obtiene solución

D) PRUEBA 4 (proyecto expe3)

Un posible experimento sería abrir el codec con el registro que controla el encendido del DAC (convertidor digital-analógico, el de salida para que nos entendamos), desconectado. Evidentemente la tarjeta no reproduce ningún sonido.

¿Podrá ser esta una solución al “golpe de ruido”? ¿Abriendo el codec

con el DAC off y luego encendiéndolo? Si en cada for abro y cierro distintos codec’s, uno para cada entrada, no

toma bien los datos; se vio que tiene que tomar alrededor de 20 datos para que se conviertan en fiables. Llamaremos a esto tiempo (o muestras) de estabilización.

Otro posible experimento podría ser el siguiente: Con el registro power-down podemos, en teoría, desactivar una serie de

parámetros. Veámoslos: Power Down Control (Address: 0000110)

BIT D8 D7 D6 D5 D4 D3 D2 D1 D0 Function X OFF CLK OSC OUT DAC ADC MIC LINE Default 1 0 0 0 0 0 1 1 1

OFF Device power 0 = On 1 = Off CLK Clock 0 = On 1 = Off OSC Oscillator 0 = On 1 = Off OUT Outputs 0 = On 1 = Off DAC DAC 0 = On 1 = Off ADC ADC 0 = On 1 = Off MIC Microphone input 0 = On 1 = Off LINE Line input 0 = On 1 = Off X Reserved

1. Si se nota gran disminución de ruido si al tomar datos de mic, por ejemplo, desactivamos line in (y viceversa).

2. Pero siguen mezclándose los datos de las dos entradas.

Incluso desactivando las entradas (mic in muted, line in muted) cuando

se recoja de la otra, se siguen mezclando. Suponemos que aunque digamos

Memoria Descriptiva Pág. - 126 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera que no se tomen datos de una entrada específica, el último dato de la entrada ya silenciada se mezcla con el dato de la entrada recién activada. Tomando dos muestras cada vez ocurre; no sabemos cuántas muestras harán falta para que esto ya no ocurra. *NOTA: Una de las hipótesis que se estuvieron barajando como posible fuente del error que se observaba fue la del convertidor analógico digital (ADC). Citando un poco de teoría de los convertidores, y hablando de forma brusca, se puede decir que los convertidores toman las muestras con las que trabajarán en condensadores. En sucesivas muestras estos condensadores han de cargarse (para almacenar la muestra) y descargarse (para posibililitar la carga de otra muestra). Se ha pensado que el error podía estar en el tipo de señal que inicialmente se está capturando; y decimos inicialmente porque de momento las muestras que estamos tomando sólo las necesitamos (y así se están usando) para que sirvan de ayuda al manejo y aprendizaje del DSP. Puede estar pasando que al estar tomando, por un lado una señal senoidal y por otro simplemente se está usando una señal de salida de la tarjeta de sonido de un PC (dos señales claramente diferenciadas), una de las dos señales esté saturando en ADC, no esté dando el tiempo suficiente de carga y descarga a esos condensadores de los que hablábamos. Para comprobar que esto no era así se dieron los siguientes pasos:

− Se comprobó la frecuencia de muestreo del ADC (establecida en el programa de prueba a 96kHz).

− Se hicieron dos señales senoidales por debajo de la frecuencia del ADC con el objetivo de que no saturen. Realizas en Simulink creando un archivo .wav como resultado de una onda senoidal de amplitud la unidad.

− Se volvió a realizar el experimento. Se siguen mezclando las señales es decir:

- Cuando escucho las muestras tomadas, que se hace a la vez que se van tomado los datos, las dos señales se entremezclan teniendo mayor peso y escuchándose la que se desea reproducir pero sonado siempre de fondo la otra.

Se obtuvieron los mismos resultados con señales que eran de frecuencia menor a la mitad de la de muestreo y con frecuencias mucho mayores. Además se ha hecho la prueba de realizar el experimento con sólo una señal, es decir, recogemos datos de las dos entradas pero sólo metemos señal por un de ellas. Lo que se obtuvo era de esperar, en ambas reproducciones (la de la entrada con señal y la correspondiente a la entrada en vacío) se oye la señal. Si se ha de decir que en la correspondiente a la que sí tiene señal se nota una mayor intensidad que en la otra.

Memoria Descriptiva Pág. - 127 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera E) PRUEBA 5 (proyecto expe8)

Otra prueba que se ha realizado es la correspondiente al proyecto “expe8”. Este proyecto consta de un programa exactamente igual que el “expe3” con la salvedad que, además de que no se les da señal a las dos entradas, ponemos un es:

- Cuando estamos reproduciendo lo que se supone corresponde a la entrada con señal, escuchamos dicha señal muy distorsionada.

- Y cuando se reproduce lo que en teoría sería la nada (entrada sin señal) escuchamos la señal introducida POR LA OTRA ENTRADA perfectamente.

Lo único que ha generado esta prueba es la pregunta del por qué de

este fenómeno. F) PRUEBA 6 (proyecto expe9)

También se probó silenciando la entrada de la que no se debían tomar datos. Ahora en cada cambio de entrada, además de cambiar el registro nº 4 para que tomase datos de line in o mic según conviniese, silenciamos la otra.

Ahora se introducen en el código las siguientes líneas según convengan:

/*Cambio de entrada "line in" a "MIC"*/

/*y line in muted*/ DSK5510_AIC23_rset(hCodec, 4, 0x0014);/*Cambio*/ DSK5510_AIC23_rset(hCodec, 0, 0x0097);/*muted left*/ DSK5510_AIC23_rset(hCodec, 1, 0x0097);/*muted right*/ ó

/*Vuelvo a cambiar de entrada "MIC" a "line in"*/ DSK5510_AIC23_rset(hCodec, 4, 0x0012); DSK5510_AIC23_rset(hCodec, 0, 0x0017); DSK5510_AIC23_rset(hCodec, 1, 0x0017);

Se sigue sin obtener los resultados deseados; seguimos obteniendo un sonido principal y otro de fondo; y además se observa un retraso añadido, posiblemente, como consecuencia de tantos cambios en la configuración del codec. * NOTA: Hay que recordar que todas estas pruebas y experimentos los estamos haciendo con entradas y salidas estéreo. Es decir, que para cada entrada (dos en nuestro DSP, line in y mic) y para cada salida (el DSP dispone de otras dos, headphoned y line out) disponemos, a su vez, de dos canales, canal izquierdo y canal derecho.

Memoria Descriptiva Pág. - 128 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera Una vez llegados aquí se nos plantea el ser un poco menos ambiciosos en nuestras pretensiones ya que, después de haber intentado, experimentado y probado bastantes métodos no hemos conseguido obtener señales “limpias” de una y otra entrada si las tomamos de forma alternativa. Recordemos:

- Pretendemos abrir una línea de investigación sobre CAR (control activo de ruido).

- Para ello y tras indagaciones sobre el tema: o Posibilidad de hacerlo sobre PC, en matlab o simulink usando la tarjeta

de audio del mismo ordenador. o Mediante una tarjeta de adquisición de datos simple a la que le

acoplaríamos periféricos para poder capturar y reproducir sonido. o …

- Nos decantamos por la adquisición de un DSP (digital signal processor) especial para la adquisición de audio.

- Ahora bien, se inició un aprendizaje sobre la tarjeta (entradas, salidas, potencia de procesado, memoria, …); además tuvimos que adquirir manejo del hardware asociado (para la programación, que podría ser en lenguaje máquina o en C).

- Como idea inicial de programación y dada su vistosidad y fácil manejo y entendimiento, comenzamos a programar en lenguaje C.

Hasta aquí los pasos que no llevaron a programar en lenguaje C el DSP TMS3200C5510 de Texas Instrument (que fue el elegido para comenzar a trabajar). Como sabemos la base del control activo de ruido es la adición de señales tratadas al ruido ambiente; es decir, la suma de más ruido al que ya había. Para esto necesitaríamos un sensor receptor del ruido que queremos atenuar y un actuador como podrá ser un altavoz (por el que reproduciremos el ruido cancelador). Si optamos por esta forma de cancelación no debemos encontrar problema a la hora de realizar el controlador. Dicho controlador tendrá sólo una señal de entrada y una de salida. Sin embargo, si queremos hacer un control un poco más fiable deberemos añadir un segundo sensor receptor de ruido que recogerá el ruido residual que quede después de la cancelación. Será lo que se conoce como señal de error. Para este caso necesitaremos dos entradas (referencia y error) y tan sólo una salida. Fue a partir de aquí cuando comenzó nuestra “lucha” particular con el DSP. Pues se buscó la manera de poder leer de las dos entradas (referencia y error) de forma alternativa y obteniendo resultados fiables.

Hasta ahora siempre se ha intentado un control de ruido en estéreo. Es decir, usando cada una de las entradas del DSP. Una para la referencia de ruido (ruido a cancelar) y la otra para el ruido residual después de la atenuación (ruido de error). Usábamos las dos entradas del DSP, mic in y line in.

Hicimos bastantes pruebas con el objetivo de poder tomar datos de

entrada de ambas alternativamente (esta será la base del control, la toma de muestras). Después de estos experimentos y pruebas, sin obtener el resultado deseado pensamos en un control de ruido monocanal (no estéreo).

Memoria Descriptiva Pág. - 129 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

De esta forma usaremos una misma entrada estéreo de la tarjeta (line in

por ejemplo) en la que dedicaremos de forma independiente los canales derecho e izquierdo para el ruido de entrada (referencia) y el de error.

Por tanto ahora nos pusimos ha experimentar con los dos canales de

una misma entrada. Primero se intentó recoger alternativamente de una misma entrada pero

silenciando el canal (derecho o izquierdo) del que no nos interese en ese caso obtener señal. Esto se puede hacer de nuevo cambiando registros de la configuración inicial del codec.

Recordemos que los dos primeros registros son los pertenecientes a los canales de entrada (tanto de la línea de entrada, line in como del micrófono, mic). G) PRUEBA 7 (proyecto expe9)

Así, se realizó un nuevo programa de prueba en el que sólo se utilizaba la entrada line in para capturar datos.

El grueso del programa es prácticamente igual a los anteriores:

- Includes y defines - Declaración de la configuración del codec - Declaración de variables - Bucle principal (main)

o Declaración del manejador del codec o Iniciación del DSK5510 o Arranque del codec o Bucles de recogida o Cierre del codec

En cada programa lo que cambia son los bucles de recogida. En este

caso hay dos muy similares que toman la siguiente forma: for (i = 0; i < TIME; i++) {

for (j = 0; j < SIZE; j++) {

while (!DSK5510_AIC23_read16(hCodec, &in_left[j])); /*comprobamos que toma sonido de line in, reproducimos*/ while (!DSK5510_AIC23_write16(hCodec, in_left[j])); while (!DSK5510_AIC23_read16(hCodec, &in_left[j])); while (!DSK5510_AIC23_write16(hCodec, in_left[j])); /*Cambio de canal izq. a der.*/ DSK5510_AIC23_rset(hCodec, 0, 0x0097); DSK5510_AIC23_rset(hCodec, 1, 0x0017); while (!DSK5510_AIC23_read16(hCodec, &in_right[j])); while (!DSK5510_AIC23_read16(hCodec, &in_right[j]));

Memoria Descriptiva Pág. - 130 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

/*Cambio de canal der. a izq.*/ DSK5510_AIC23_rset(hCodec, 0, 0x0017); DSK5510_AIC23_rset(hCodec, 1, 0x0097);

} }

Al cambiar de canal derecho a izquierdo y viceversa lo que estamos haciendo es silenciar el canal que dejará de ser el activo y dar volumen al canal del que, en esa ocasión, recogeremos datos.

Mostramos uno de los registros (en el que podemos configurar el canal

izquierdo) para que se pueda entender mejor el código del programa. 0 - Left line input channel volume control (Address: 0000000)

BIT D8 D7 D6 D5 D4 D3 D2 D1 D0 Function LRS LIM X X LIV4 LIV3 LIV2 LIV1 LIV0 Default 0 1 0 0 1 0 1 1 1

LRS Left/right line simultaneous volume/mute update

Simultaneous update 0 = Disabled 1 = Enabled LIM Left line input mute 0 = Normal 1 = Muted LIV[4:0] Left line input volume control (10111 = 0 dB default)

11111 = +12 dB down to 00000 = –34.5 dB in 1.5-dB steps X Reserved

El registro encargado del canal derecho es exactamente igual; sólo varía en su nombre: 1 - Right Input Volume (DSK5510_AIC23_RIGHTINVOL)

Con la prueba de este programa no avanzamos aún. Ya se ha probado prácticamente todo a nivel de cambio en los registros y seguimos teniendo de fondo la señal que no se debía de reproducir. * NOTA: Buscando en la red toda la información posible y preguntando en foros y demás (ya que la ayuda que se nos dispone no nos da la clave para llegar a donde queremos) encontramos información sobre cómo recoge datos la instrucción DSK5510_AIC23_read16(hCodec, &variable). Esta instrucción (hablemos del DSP en sí) para tomar datos tiene una memoria para un filtro FIR anti-aliasin la cual almacena datos anteriores que son los que producen el sonido de fondo (aunque esperemos a que se descarguen los supuestos condensadores). Además averiguamos que el DSK5510 no soporta la multiplexión de la entrada en tiempo real. Esto quiere decir que no podemos cambiar de entrada de line in a mic y viceversa de forma alternativa e inmediata.

Memoria Descriptiva Pág. - 131 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera H) PRUEBA 8

Buscando otro nuevo punto de vista en el que capturásemos el sonido de forma totalmente distinta a la que hasta ahora habíamos intentado dimos con un ejemplo en el que se usaba el acceso dinámico a memoria para liberar al DSP de la tarea de la transferencia de datos.

Tras leer este ejemplo se pensó bajar hasta bajo nivel (cosa a la que no

se quería llegar, pues lo interesante era hacerlo en lenguaje C). Lo importante de este ejemplo y la lectura y enseñanza que sacamos de

él fue el aprendizaje de cómo se tratan los canales en cada muestreo de la entrada.

Lo importante, y lo que nos despertó de nuevo las esperanzas de poder

hacer lo que se planteó en un principio fue lo siguiente:

Es decir, una vez recogido los datos de la entrada de audio, son almacenados en palabras de 16 o 32 bits (hasta ahí era conocido); lo importante viene cuando nos damos cuenta que los canales izquierdo y derecho de cada muestra se intercalan en palabras de 4 bits.

Podemos hacer un tratamiento de los datos recogidos y elegir el canal que deseamos. Se eliminará un canal u otro para almacenar posteriormente datos por separado del canal izquierdo y del derecho.

Este concepto del tratamiento del ruido se ha visto en un programa

ejemplo de la ayudadle DSP. Puede ser una buena manera de tratar la señal ya que:

- Tendríamos sólo que utilizar una entrada. - La separación de señales se haría a nivel de procesado. - Una vez captado el ruido sería cuando se haría la separación de las

señales de referencia y de error. - Al usar sólo una entrada, no tenemos que hacer un cálculo previo para

llevarlas al mismo nivel de ruido, ganancia, etc.…, de forma que puedan ser comparadas perfectamente dichas entradas.

- Por el contrario, dejamos de lado el tratamiento estéreo para pasar a uno monocanal.

Memoria Descriptiva Pág. - 132 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

La desventaja que tiene este tipo de tratamiento de la señal (monocanal) no podemos considerarla como tal ya que hablar de un control de ruido con tratamiento estéreo era ya una característica que estaba de más. EXPERIMENTO

Realizamos un programa de experimento para ver si sería factible seguir esta línea como futura de captación de ruidos.

Haremos un programa con las instrucciones que hemos venido

manejando hasta ahora, es decir, la presencia del módulo de instrucciones de manejo del AIC23 será fundamental en el desarrollo del mismo.

Las primeras pruebas revelan que el tratamiento que pensábamos

nosotros, a la vista del ejemplo que se ha realizado, no es el correcto. Para obtener un tratamiento así habría que tratar directamente con los

puertos de entrada y no usar ninguna interfaz intermedia (como en el caso que se ha programado es el ya archiconocido módulo AIC23).

Estamos, siempre hablando, del tratamiento de la muestra que se ha

visto hace un momento: cuatro bits para el canal izquierdo y cuatro para el derecho (dentro de la misma palabra de muestra).

Realizando este experimento, y para comprobar si estábamos en lo

cierto en cuanto al tratamiento de ruido, hicimos algunas pruebas especiales. Reprodujimos señales formadas por valores preparados para reproducir

tan sólo por un canal. O tratamos las señales capturadas por la entrada para hacer lo propio. Fue entonces cuando nos dimos cuenta que no estábamos en lo cierto al pensar ese tratamiento de la señal.

Seguíamos teniendo señal de salida por ambos canales.

* Captura y Reproducción de Sonido

Con todo esto, al ver que no encontrábamos solución para el problema de la mezcla de sonidos, recurrimos a Internet y en foros especializados en el dsp que usamos expusimos nuestro caso y la solución que se nos dio fue que intenta recoger en de cada una de las entradas alternativamente y estas emitirlas por separa no se podía hacer en C. La única solución era programar a más bajo nivel (ensamblador). Esta solución era factible para solucionar el problema de la mezcla de señales pero la idea del proyecto era programar en C para, así, facilitar la inclusión de un algoritmo de control cualquiera que sea en medio del programa.

La solución que se obtuvo al final para poder conseguir la programación

del sistema fue olvidarnos de usar dos entradas y dos salidas, ya que nos habían producido muchos problemas (golpe de ruido, mezcla de señales…).

Memoria Descriptiva Pág. - 133 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera I) PRUEBA 9

Haciendo más pruebas con este mismo tipo de tratamiento nos dimos cuenta que las funciones encargadas de capturar y reproducir sonido capturan o reproducen (valga la redundancia) primero de un canal y después de otro. No hemos de decirle a la función de qué canal queremos tomar la muestra, y no podemos tomar dos muestras seguidas de un mismo canal.

Una vez ejecutado openCodec cada vez que se ejecute read tomará

muestras alternando canales; de igual forma hará con la función write. Por tanto para muestrear sólo un canal deberemos alternar dos usos de

la función read, uno guardando datos correctos y otro no haciendo casos a esos datos. Por ejemplo:

/* Tomar una muestra del canal izquierdo */ while (!DSK5510_AIC23_read16(hCodec, &left)); /* Tomar una muestra del canal derecho */ while (!DSK5510_AIC23_read16(hCodec, &light));

De esta forma estaríamos guardando por separados datos del canal

derecho e izquierdo. Y si quisiéramos reproducir tan sólo por un canal:

/* Escribe una muestra en el canal izquierdo */ while (!DSK5510_AIC23_write16(hCodec, left)); /* No reproduce nada en el canal derecho */ while (!DSK5510_AIC23_write16(hCodec, 0x00));

Para lograr usar únicamente una de las salidas hay que entender como

funciona la instrucción en C que se encarga de transmitir un determinado dato a cualquiera de los dos terminales de salida para que este sea reproducido a través de altavoces, auriculares…

La instrucción tiene la siguiente estructura:

while (!DSK5510_AIC23_write16(hCodec, sonido[j]));

Es decir, la instrucción escribe a la salida el dato sonido(j). La salida

estará definida según hayamos definido los registros del codec. Pues bien, si ponemos esta instrucción dos veces seguidas el tratamiento del dato funciona de manera muy particular. Esto es, al poner dos veces la instrucción lo que ocurre es que la primera vez el dato se transmite a través del canal izquierdo de una señal estéreo y la segunda vez a través del canal derecho, de manera que si tenemos unos altavoces a la salida de la tarjeta sonará en primer lugar en el altavoz izquierdo y después el altavoz derecho. Teniendo en cuenta que los experimentos que estamos realizando es con señales senoidales puras (señales mono) podemos trabajar con un solo para de altavoces para la construcción del sistema CAR. De manera que el altavoz derecho se encargará de emitir el ruido original (ruido que queremos eliminar) y el altavoz izquierdo se encargará de reproducir el ruido de cancelación.

Memoria Descriptiva Pág. - 134 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Este hecho es también importante tenerlo en cuenta ya que a la hora de

hacer bucles con la instrucción write16 es importante asegurarse de que se ejecuta un número de veces par, es decir, que se ha reproducido por los dos canales,.l Ya que si se ejecuta un número de veces impar a la hora de hacer cálculos podemos llegar a errores.

Así podremos representar el que será nuestro sistema de salida de la

siguiente forma:

En el caso de las líneas de entrada (mic in y line in), vamos a hacer algo parecido. Recordamos que si tratamos de usar las dos entradas simultáneamente en el mismo programa nos aparecen distintos problemas tales como la aparición de un golpe de ruido cada vez que abrimos el codec para seleccionar entrada y el solapamiento de las señales de las dos entradas cuando son reproducidos debido a la existencia de un único convertidor analógico-digital demasiado lento para procesar las dos señales.

Así pues, el planteamiento es el mismo que para el caso de las salidas,

solo que en este caso vamos a tener que usar dos micrófonos. La base para poder usar este tipo de sistema es que el funcionamiento

de la instrucción para la lectura de señal de una determinada entrada es el mismo que el de la instrucción de escritura:

while (!DSK5510_AIC23_read16(hCodec, sonido[j]));

Es decir, que la primera vez que aparece esta instrucción va a leer del canal izquierdo de la entrada que esté seleccionada (a través del registro ANAPATH del codec) y la segunda vez que aparezca leerá el canal derecho de dicha entrada.

Memoria Descriptiva Pág. - 135 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Para realizar este montaje correctamente usaremos dos micrófonos. El primero se encargará de recoger la señal primaria y el segundo de recoger la señal que hayamos creado (en teoría esta será la que creemos para cancelar el sonido). Estos dos micrófonos irán conectados a un mismo cable (estéreo) siendo cada una de las señales de los dos micrófonos las dos señales (canal izquierdo y canal derecho) que lleva normalmente una señal estéreo. El cable que contiene las dos señales irá conectado a la conexión de entrada que elijamos.

La estructura del sistema sería la siguiente:

Con estos dos montajes se solucionan todos los problemas derivados de ir cambiando la configuración del codec para seleccionar tanto las salidas como las entradas, como son el golpe de ruido, solapamiento de señales..

Una vez solucionado este problema, en el siguiente experimento

realizamos un montaje en el que emitimos una señal a través del canal derecho de la salida LINE OUT (señal senoidal) y la recogemos con un micrófono a la entrada MIC IN. La intención de este experimento es ver la fidelidad con que se recoge una señal senoidal con el micrófono que tenemos para monta el sistema y ver la calidad de dicha señal.

Con este experimento tendremos un primer acercamiento a las distintas

posibilidades que podremos exigir al sistema CAR definitivo. Tendremos una primera visión de los distintos problemas de amplitud y retraso en la recogida de señales debido a los procesos en la tarjeta y a la calidad del micrófono.

La idea es hacer un bucle en el que vayamos emitiendo un sonido y a su

vez recogiéndolo a través del micrófono todo usando la tarjeta dsp. Con el software CCstudio podemos ver los valores que se obtienen en la recogida del micrófono almacenándolos en un vector. La señal que vamos a emitir es un seno puro de 1 kHz de frecuencia.

Memoria Descriptiva Pág. - 136 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera El programa es el siguiente: #include "loopbackcfg.h" #include "dsk5510.h" #include "dsk5510_aic23.h" #define SINE_TABLE_SIZE 48 // Creamos un vector donde irá señal la señal senoidal /* Configuración registros del codec */ DSK5510_AIC23_Config config = { \ 0x0017, /* 0 DSK5510_AIC23_LEFTINVOL */ 0x0017, /* 1 DSK5510_AIC23_RIGHTINVOL */ 0x01f9, /* 2 DSK5510_AIC23_LEFTHPVOL */ 0x01f9, /* 3 DSK5510_AIC23_RIGHTHPVOL */ 0x0012, /* 4 DSK5510_AIC23_ANAPATH */ 0x0000, /* 5 DSK5510_AIC23_DIGPATH */ 0x0000, /* 6 DSK5510_AIC23_POWERDOWN */ 0x0043, /* 7 DSK5510_AIC23_DIGIFt */ 0x0081, /* 8 DSK5510_AIC23_SAMPLERATE */ 0x0001, /* 9 DSK5510_AIC23_DIGACT */ }; Int16 i,j,left,right; /* Definimos la señal seno que vamos a emitir a través de los altavoces (LINE OUT) */ Int16 sinetable[SINE_TABLE_SIZE] = { 0x0000, 0x10b4, 0x2120, 0x30fb, 0x3fff, 0x4dea, 0x5a81, 0x658b, 0x6ed8, 0x763f, 0x7ba1, 0x7ee5, 0x7ffd, 0x7ee5, 0x7ba1, 0x76ef, 0x6ed8, 0x658b, 0x5a81, 0x4dea, 0x3fff, 0x30fb, 0x2120, 0x10b4, 0x0000, 0xef4c, 0xdee0, 0xcf06, 0xc002, 0xb216, 0xa57f, 0x9a75, 0x9128, 0x89c1, 0x845f, 0x811b, 0x8002, 0x811b, 0x845f, 0x89c1, 0x9128, 0x9a76, 0xa57f, 0xb216, 0xc002, 0xcf06, 0xdee0, 0xef4c }; // Definimos el vector donde vamos a almacenar los valores recogidos por el micrófono Int16 sinetable_in[2*SINE_TABLE_SIZE]; void main() { DSK5510_AIC23_CodecHandle hCodec; /* Para inicializar las librerías de la tarjeta tenemos que llamar primero con esta función */ DSK5510_init(); /* Abrimos el codec */ hCodec = DSK5510_AIC23_openCodec(0, &config); /* Creamos un bucle que se realizará 3000 veces. Este bucle define el tiempo que estará sonando la señal seno en los altavoces */ for (i = 0; i < 3000; i++) { /* Cada vez que pasa una por el bucle principal hacemos 48 recogidas de muestras con el micrófono y emitimos 48 veces a través de los altavoces */ for (j = 0; j < 48; j++) { /* Escribimos dato en el canal izquierdo de salida */ while (!DSK5510_AIC23_write16(hCodec, sinetable[j])); /* Leemos dato canal izquierdo de entrada */ while (!DSK5510_AIC23_read16(hCodec, &sinetable_in[j]));

Memoria Descriptiva Pág. - 137 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera /* Escribimos dato en el canal derecho de salida */ while (!DSK5510_AIC23_write16(hCodec, 0x0000)); /* Leemos dato canal derecho de entrada */ while (!DSK5510_AIC23_read16(hCodec, &right)); } for (j = 0; j < 48; j++) { /* Escribimos dato en el canal izquierdo de salida */ while (!DSK5510_AIC23_write16(hCodec, sinetable[j])); /* Leemos dato canal izquierdo de entrada */ while(!DSK5510_AIC23_read16(hCodec,&sinetable_in[j+48])); /* Escribimos dato en el canal derecho de salida */ while (!DSK5510_AIC23_write16(hCodec, 0x0000)); /* Leemos dato canal derecho de entrada */ while (!DSK5510_AIC23_read16(hCodec, &right)); } } /* Cerramos el codec */ DSK5510_AIC23_closeCodec(hCodec); }

El funcionamiento del programa es bastante sencillo, ya que solo emitir una señal a través de la salida line out y recoger otra a través de la entrada mic in. Para ello nos basamos en el funcionamiento de las dos instrucciones explicadas anteriormente read16 y write16.

Si analizamos el bucle de emisión y recogida vemos que lo primero que

hacemos es emitir por el canal izquierdo de la salida line out y justo después recogemos del canal izquierdo de la entrada mic in. La siguiente que pongamos esas instrucciones harán lo mismo solo que en por el canal derecho. Por lo tanto lo que hemos hecho es crear un vector que se llama right en el que vamos a ir almacenando las recogidas del canal derecho que, en este caso, no recogemos nada. Y a su vez, lo que hacemos es transmitir al canal derecho de la salida line out 0x000 para que no suene nada en el altavoz derecho del para de altavoces estéreos que tenemos conectada a esa salida.

Otro hecho importante en el programa es el que hagamos que el vector

de recogida de sonido sea el doble de grande, esto es para que a la hora de representarlo se vea mejor como recoge el micrófono.

Cuando teníamos el vector de recogida del mismo tamaño que el de la

señal seno obteníamos los siguientes resultados:

Memoria Descriptiva Pág. - 138 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Como podemos comprobar la señal recogida por el micrófono es bastante diferente a la señal original. La principal causa es que el micrófono es un atenuador bastante fuerte, pero además existen otras causas.

Estos resultados se han realizado en espacio abierto (una habitación)

con el micrófono pegado al altavoz. Como podemos comprobar la recogida por parte del micrófono es demasiado deficiente.

Memoria Descriptiva Pág. - 139 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Si analizamos la introducción incluida en esta memoria podemos comprobar que todos los experimentos se han realizado en el interior de un tubo tubería por lo que para el correcto desarrollo del proyecto tomamos la decisión de usar un tubo.

El tubo es de material de PVC de 200 mm. de diámetro y un longitud de

3 metros. El diámetro ha sido elegido con el fin de poder introducir los altavoces y los micrófonos sin problemas y la longitud se ha elegido a fin de que el sistema tenga suficiente espacio para realizar todas las operaciones necesarias en el interior del tubo. Esto es: emisión ruido a eliminar, captación de dicho ruido, operaciones para la crear ruido cancelación, emisión ruido cancelación y recogida de la señal definitiva. Si tenemos un tubo muy corto es probable que todas estas operaciones no podamos realizar las de manera que se ejecutan en su correcto orden en el interior del tubo y además utilizando un tubo de longitud alta podemos reducir problemas de ecos y demás al poder tener los altavoces suficientemente alejados.

Una vez que hemos conseguido el tubo, volvimos a realizar los

experimentos que realizamos en espacio abierto. Como para el sistema CAR necesitamos dos micrófonos hemos

realizado diferentes pruebas con los dos micrófonos que vamos a usar para el montaje definitivo para así comparar la calidad de los dos micrófonos.

Los dos micrófonos que se han usado en la consecución del proyecto ya

son conocidos ya que anteriormente se ha hablado de sus características, así que no nos extenderemos más en los mismos.

Lo primero que vamos a hacer es comprobar como miden ambos

micrófonos en el interior y exterior del tubo para así comprobar la diferencia de recogida entre uno y otro micrófono y además la diferencia en la captación de sonido en el interior y exterior del tubo.

Memoria Descriptiva Pág. - 140 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Memoria Descriptiva Pág. - 141 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Para estos experimentos utilizamos el programa que ya hemos analizado de emisión captación de sonido: #include "loopbackcfg.h" #include "dsk5510.h" #include "dsk5510_aic23.h" #define SINE_TABLE_SIZE 48 //Vector con señal senoidal /* Configuración registros del codec */ DSK5510_AIC23_Config config = { \

0x0017, /* 0 DSK5510_AIC23_LEFTINVOL */ 0x0017, /* 1 DSK5510_AIC23_RIGHTINVOL */ 0x01f9, /* 2 DSK5510_AIC23_LEFTHPVOL */ 0x01f9, /* 3 DSK5510_AIC23_RIGHTHPVOL */ 0x0012, /* 4 DSK5510_AIC23_ANAPATH */ 0x0000, /* 5 DSK5510_AIC23_DIGPATH */ 0x0000, /* 6 DSK5510_AIC23_POWERDOWN */ 0x0043, /* 7 DSK5510_AIC23_DIGIF */ 0x0081, /* 8 DSK5510_AIC23_SAMPLERATE */ 0x0001, /* 9 DSK5510_AIC23_DIGACT */

}; Int16 i,j,left,right; /* Definimos la señal seno que vamos a emitir a través de los altavoces (LINE OUT) */ Int16 sinetable[SINE_TABLE_SIZE] = {

0x0000, 0x10b4, 0x2120, 0x30fb, 0x3fff, 0x4dea, 0x5a81, 0x658b, 0x6ed8, 0x763f, 0x7ba1, 0x7ee5, 0x7ffd, 0x7ee5, 0x7ba1, 0x76ef, 0x6ed8, 0x658b, 0x5a81, 0x4dea, 0x3fff, 0x30fb, 0x2120, 0x10b4, 0x0000, 0xef4c, 0xdee0, 0xcf06, 0xc002, 0xb216, 0xa57f, 0x9a75, 0x9128, 0x89c1, 0x845f, 0x811b, 0x8002, 0x811b, 0x845f, 0x89c1, 0x9128, 0x9a76, 0xa57f, 0xb216, 0xc002, 0xcf06, 0xdee0, 0xef4c

}; // Vector para almacenar los valores recogidos por el micrófono Int16 sine_in[2*SINE_TABLE_SIZE]; void main() {

DSK5510_AIC23_CodecHandle hCodec;

/* Para inicializar las librerías de la tarjeta tenemos que llamar primero con esta función */

DSK5510_init();

/* Abrimos el codec */ hCodec = DSK5510_AIC23_openCodec(0, &config); /* Creamos un bucle que se realizará 3000 veces. Este bucle define el tiempo que estará sonando la señal seno en los altavoces */

for (i = 0; i < 3000; i++) { /* Cada vez que pasa una por el bucle principal hacemos 48 recogidas de muestras con el micrófono y emitimos 48 veces a través de los altavoces */

for (j = 0; j < 48; j++) {

/* Escribimos dato en el canal izquierdo */ while(!DSK5510_AIC23_write16(hCodec,sinetable[j])); /* Leemos dato procedente del canal */ while(!DSK5510_AIC23_read16(hCodec,&sine_in[j])); /* Escribimos dato en el canal derecho */

Memoria Descriptiva Pág. - 142 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

while(!DSK5510_AIC23_write16(hCodec,0x0000)); /* Leemos dato procedente del canal derecho */ while (!DSK5510_AIC23_read16(hCodec, &right));

} for (j = 0; j < 48; j++) {

/* Escribimos dato en el canal izquierdo */ while(!DSK5510_AIC23_write16(hCodec,sinetable[j])); /* Leemos dato procedente del canal izquierdo */ while(!DSK5510_AIC23_read16(hCodec,&sine_in[j+48])); /* Escribimos dato en el canal derecho */ while(!DSK5510_AIC23_write16(hCodec,0x0000)); /* Leemos dato procedente del canal derecho */ while(!DSK5510_AIC23_read16(hCodec,&right));

} } /* Cerramos el codec */ DSK5510_AIC23_closeCodec(hCodec);

}

Este programa tan sólo recoge señal de sonido de sólo un canal de entrada. En este caso concreto del canal izquierdo. Decimos que sólo recoge del canal izquierdo porque, aunque si esté recogiendo del canal derecho, en realidad por el canal derecho no se está reproduciendo nada. Por lo que, en teoría, recoge vacío.

Los dos bucles son porque rellenamos primero los datos de la parte baja

de la matriz correspondiente a la recogida de datos (el tamaño de esta matriz será del doble que de la de entrada), y luego los de la parte alta.

La señal que vamos a emitir para que los micrófonos la recojan en el

interior y exterior del tubo es una senoidal tal y como la que sigue:

Memoria Descriptiva Pág. - 143 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Para los dos micrófonos hicimos varios experimentos. Mostraremos a continuación algunos de los últimos realizados (para cada caso), en el que ya se puede ver la fidelidad de los datos.

Micrófono EV PL-80

Los resultados obtenidos con este micrófono en el exterior del tubo son:

Comprobamos que en el exterior del tubo a parte de producirse una fuerte atenuación se produce una deformación de la señal, lo que hace que sea más complicado plantearse un control activo de ruido de esta señal.

No mostramos más resultados para el exterior del tubo ya que la gráfica obtenida en cada caso difiere bastante de otra posible anterior o posterior en las mismas condiciones. Eso es debido a que en el exterior del tubo hay muchos factores que son determinantes y que no podemos controlar.

Si analizamos los resultados obtenidos en el interior del tubo:

Memoria Descriptiva Pág. - 144 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

En este caso vemos que la señal además de que tiene una atenuación menor que en el caso exterior, se puede comprobar que la forma es completamente senoidal.

Viendo otro de los ejemplos que se hicieron dentro del tubo se puede comprobar lo mismo.

Micrófono AKG D 55 S

Memoria Descriptiva Pág. - 145 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

En el caso del exterior del tubo obtenemos los siguientes resultados:

Como vemos ocurre exactamente lo mismo que con el otro micrófono, es decir, se produce una gran atenuación y la señal se deforma.

En el caso del interior del tubo tenemos:

Ocurre también lo mismo que con el micrófono anterior, ya que la atenuación disminuye y la señal es completamente senoidal.

Memoria Descriptiva Pág. - 146 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Veámoslo de nuevo:

* NOTA: A la hora de comparar los dos micrófonos nos damos cuenta de que recogen prácticamente con la misma calidad de señal. Una vez realizados estos experimentos de emisión y recogida de sonido vamos a tratar de simular lo que sería un sistema de control activo de ruido. Este sistema consistirá en un altavoz (canal derecho) que emitirá un ruido, lo recogeremos a través de un micrófono (canal derecho) lo haremos un tratamiento en tiempo real con la ayuda de la tarjeta, en emitiremos el ruido tratado a través de un segundo altavoz (canal izquierdo) y recogeremos este con un segundo micrófono (canal izquierdo). En lo que sería estrictamente un sistema CAR el tratamiento que se le realizaría al ruido recogido primario debería ser un algoritmo de control adaptativo, pero debido a que este es un proyecto de introducción a este tipo de sistemas el tratamiento se limitará a una amplificación del ruido recogido. Este tratamiento nos servirá principalmente para comprobar las posibilidades reales que tenemos con nuestra tarjeta de poder implementar un verdadero sistema de control activo de ruido, ya que mediremos los retrasos que se producen entre el ruido primario y el ruido secundario (tratado). Con estas medidas podremos comprobar si el tubo es suficientemente largo y si la tarjeta es suficientemente rápida para poder incorporar un algoritmo más complejo y que este a su vez sea eficiente a la hora de cancelar el ruido.

Memoria Descriptiva Pág. - 147 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera Sistema Completo de Control Activo de Ruido

Recordando la teoría vista en la amplia introducción de este proyecto, implementaremos uno de los más básicos sistemas de CAR. Es uno de los más básicos por su simpleza en cuanto a actuación no controlada; además de porque el número de actuadores y receptores es el mínimo posible para un sistema CAR. El sistema que vamos a implementar es el siguiente:

Este es lo que sería el sistema de control activo de ruido definitivo. Pero antes de hacer el montaje definitivo, tenemos que verificar otro montaje que es el que nos indicará las posibilidades reales que tenemos con nuestro equipamiento para poder realizar este sistema. El sistema de comprobación es exactamente igual que el de la figura pero con dos diferencias fundamentales. El controlador CAR se va a limitar a una ganancia que se va a usar para amplificar la señal recogida del primer micrófono y el micrófono de error lo vamos a usar para recoger le señal que emitimos por el segundo altavoz.

Con este montaje vamos a medir los retrasos que se producen en la

tarjeta a la hora de coger las dos señales para comprobar si es posible hacer un tratamiento correcto en el interior del tubo, es decir, si daría tiempo a introducir un algoritmo de control complejo y que las operaciones se produjeran con tiempo necesario para que la cancelación de ruido se produjera en el interior del tubo (de 3 m. de largo).

Una vez que ya tenemos claro el montaje que vamos a realizar, tenemos

que tener en cuenta el hecho de que vamos a trabajar con señales mono a través de canales estéreo por lo que a la hora de hacer la conexión con la tarjeta lo tendríamos que hacer del siguiente modo:

Memoria Descriptiva Pág. - 148 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Para conectar los micrófonos tenemos que usar una misma entrada y separar en los dos canales de la señal estero:

Memoria Descriptiva Pág. - 149 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

El mismo montaje tendríamos que hacer para conectar los dos altavoces De esta manera evitamos todos los problemas anteriormente

mencionados derivados del uso de dos entradas, ya que nos limitamos al uso de una única entrada y salida.

El sistema real que hemos montado es el mostrado en la siguiente

página. Este es el sistema completo donde vemos la tarjeta y la salida a los

altavoces y a los micrófonos, que está en interior del tubo. Como vemos de la salida de la tarjeta sale un cable que va a los

altavoces (altavoz derecho se encargará de la emisión del ruido primario y el altavoz izquierdo de la del ruido tratado), y a la entrada line in nos llega un cable que se separa en dos (uno para cada canal) que es donde van conectados los micrófonos.

Memoria Descriptiva Pág. - 150 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

El sistema que se encarga de recoger y emitir el ruido primario es el siguiente:

Memoria Descriptiva Pág. - 151 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Y el sistema que se encarga de la señal tratada es idéntico pero con el otro altavoz de la pareja y el otro micrófono.

Una vez que tenemos preparado el quipo de pruebas (micrófonos y

altavoces dentro del tubo de PVC) vamos a realizar diversos experimentos para ver como funciona.

Lo primero que haremos será poner a prueba el sistema completo para

ver si es verdad que podemos transmitir una señal mono por uno de los canales de line out, recogerlo con uno de los canales de line in, tratar la señal recogida (en nuestros casos tan sólo añadiremos ganancias), reproducirla por el otro canal de salida de line out y volver a recoger por el otro canal de line in.

Lo que se hará será crear un programa que nos cree un ruido que emita

por una de las salidas y que este sea recogido por los canales disponibles. De esta manera vamos a comprobar si realmente eficiente la idea de transmitir la señal mono a través de los dos canales de la señal estéreo. La idea es conectar directamente la misma señal de salida a las dos canales y estos a su vez se conectarán a la entrada LINE IN de la tarjeta. Al conectar directamente a la entrada de la tarjeta podremos comprobar que la señal recogida esta mucho menos atenuada que cuando colocamos los micrófonos ya que estos son unos grandes atenuadores de señal. El programa sería el siguiente: #include "loopbackcfg.h" #include "dsk5510.h" #include "dsk5510_aic23.h" #define SINE_TABLE_SIZE 48 // Vector donde irá señal la señal senoidal /* Configuración registros del codec */

Memoria Descriptiva Pág. - 152 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera DSK5510_AIC23_Config config = { \

0x0017, /* 0 DSK5510_AIC23_LEFTINVOL */ 0x0017, /* 1 DSK5510_AIC23_ */ 0x01f9, /* 2 DSK5510_AIC23_ */ 0x01f9, /* 3 DSK5510_AIC23_ */ 0x0012, /* 4 DSK5510_AIC23_ANAPATH */ 0x0000, /* 5 DSK5510_AIC23_DIGPATH */ 0x0000, /* 6 DSK5510_AIC23_POWERDOWN */ 0x0043, /* 7 DSK5510_AIC23_DIGIF */ 0x0081, /* 8 DSK5510_AIC23_SAMPLERATE */ 0x0001, /* 9 DSK5510_AIC23_DIGACT */

}; Int16 i,j,left,right; /* Definimos la señal seno que vamos a emitir a través de los altavoces (LINE OUT) */ Int16 sinetable[SINE_TABLE_SIZE] = {

0x0000, 0x10b4, 0x2120, 0x30fb, 0x3fff, 0x4dea, 0x5a81, 0x658b, 0x6ed8, 0x763f, 0x7ba1, 0x7ee5, 0x7ffd, 0x7ee5, 0x7ba1, 0x76ef, 0x6ed8, 0x658b, 0x5a81, 0x4dea, 0x3fff, 0x30fb, 0x2120, 0x10b4, 0x0000, 0xef4c, 0xdee0, 0xcf06, 0xc002, 0xb216, 0xa57f, 0x9a75, 0x9128, 0x89c1, 0x845f, 0x811b, 0x8002, 0x811b, 0x845f, 0x89c1, 0x9128, 0x9a76, 0xa57f, 0xb216, 0xc002, 0xcf06, 0xdee0, 0xef4c 0x0000, 0x10b4, 0x2120, 0x30fb, 0x3fff, 0x4dea, 0x5a81, 0x658b, 0x6ed8, 0x763f, 0x7ba1, 0x7ee5, 0x7ffd, 0x7ee5, 0x7ba1, 0x76ef, 0x6ed8, 0x658b, 0x5a81, 0x4dea, 0x3fff, 0x30fb, 0x2120, 0x10b4, 0x0000, 0xef4c, 0xdee0, 0xcf06, 0xc002, 0xb216, 0xa57f, 0x9a75, 0x9128, 0x89c1, 0x845f, 0x811b, 0x8002, 0x811b, 0x845f, 0x89c1, 0x9128, 0x9a76, 0xa57f, 0xb216, 0xc002, 0xcf06, 0xdee0, 0xef4c

}; //Vectores de valores recogidos por el micrófono Int16 sinetab_i[SINE_TABLE_SIZE]; // Para el canal izquierdo Int16 sinetab_d[SINE_TABLE_SIZE]; // Para el canal derecho Int16 i,j; void main() {

DSK5510_AIC23_CodecHandle hCodec; /* Para inicializar las librerías de la tarjeta tenemos que llamar primero con esta función */ DSK5510_init(); /* Abrimos el codec */ hCodec = DSK5510_AIC23_openCodec(0, &config); /* Creamos un bucle que se realizará 3000 veces. Este bucle define el tiempo que estará sonando la señal seno en los altavoces */ for (i = 0; i < 3000; i++) {

for (j = 0; j < 48; j++) {

/* Escribimos dato en el canal derecho de salida */ while(!DSK5510_AIC23_write16(hCodec,sinetable[j])); /*Recojo en mic 1 y lo meto en sinetable_d */ while(!DSK5510_AIC23_read16(hCodec,&sinetab_d[j])); /* Escribimos dato en el canal izq de salida */ while(!DSK5510_AIC23_write16(hCodec, sinetable[j])); /*Recojo en mic 1 y lo meto en sinetable_d */ while(!DSK5510_AIC23_read16(hCodec,&sinetab_i[j]));

Memoria Descriptiva Pág. - 153 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

} } /* Cerramos el codec */ DSK5510_AIC23_closeCodec(hCodec);

}

Como ya se ha explicado el programa consiste simplemente en emitir el mismo sonido por los dos canales que, a su vez, hemos conectado a la entrada de la tarjeta. Los datos que se recogen son almacenamos separadamente en dos vectores (sinetab_d, para el canal derecho y sinetab_i, para el canal izquierdo).

Representando los dos vectores obtenemos los siguientes resultados:

Como podemos comprobar los dos canales recogen prácticamente lo mismo, salvo por un ligero retraso.

Suponemos que este retraso es debido a la estructura que tiene la

función de lectura que lee primero de un canal y después del otro (no lo hace simultáneamente). La atenuación como se podrá comprobar después es mucho menor que cuando se incorporan los dos micrófonos y los altavoces ya que estos atenúan en gran medida la señal (llega a ser 50 veces menor que la señal original).

Ya podemos decir, al fin, que se encontró la forma de poder trabajar con

dos entradas y dos salidas de sonido de forma simultánea. Hemos tenido que prescindir de sonidos estéreos pero se han solventado los problemas que nos

Memoria Descriptiva Pág. - 154 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera han ido surgiendo: golpe de ruido, mezcla de canales entre los más importantes.

Teniendo ya certeza de que la división en cales nos va a dar una medida

fiable de las señales emitidas ya podemos plantearnos experimentos más completos.

Una vez que tenemos claro cual va a ser la estructura del sistema,

tenemos que programar las acciones necesarias para convertirlo en un sistema de emisión y recepción de sonido.

Lo que se pretende con esta estructura es emitir un ruido primario a través de un altavoz (canal derecho señal salida) que recogeremos en el primer micrófono (canal derecho señal entrada). A este ruido primario se le efectuará un tratamiento para comprobar la capacidad a nivel de tiempo de respuesta que tiene la tarjeta al introducir distintas operaciones en el cuerpo del programa (en este caso vamos a amplificar la señal recogida ya que al intervenir tanto el micrófono como el altavoz se produce una gran atenuación). Una vez tratada la señal vamos a emitirla a través del segundo altavoz (canal izquierdo señal

Memoria Descriptiva Pág. - 155 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera salida) que recogeremos a su vez a través del segundo micrófono (canal izquierdo señal entrada).

El programa que gestiona estos pasos es el mostrado a continuación.

Haremos especial descripción de este programa (por partes) ya que es el que podemos considerar como programa final de nuestra investigación. Es el siguiente: #include "dsk5510.h" #include "dsk5510_aic23.h" #define SINE_TABLE_SIZE 48 // Vector de señal la señal senoidal Tenemos una primera parte del código en la que sólo definimos las librerías que nos hacen falta para el proyecto. Llamamos a la propia del DSP y a la del módulo AIC23. También se define una variable que usaremos bastante a lo largo del programa. /* Configuración registros del codec */ DSK5510_AIC23_Config config = { 0x0017, /* 0 DSK5510_AIC23_LEFTINVOL */ 0x0017, /* 1 DSK5510_AIC23_RIGHTINVOL */ 0x01f9, /* 2 DSK5510_AIC23_LEFTHPVOL */ 0x01f9, /* 3 DSK5510_AIC23_RIGHTHPVOL */ 0x0012, /* 4 DSK5510_AIC23_ANAPATH */ 0x0000, /* 5 DSK5510_AIC23_DIGPATH */ 0x0000, /* 6 DSK5510_AIC23_POWERDOWN */ 0x0043, /* 7 DSK5510_AIC23_DIGIF */ 0x0081, /* 8 DSK5510_AIC23_SAMPLERATE */ 0x0001, /* 9 DSK5510_AIC23_DIGACT */ }; Vendría a continuación la configuración de los registros del codec (volumen de las entradas y salidas, definición de las mismas,… Int16 i,j,left,right; Declararemos algunas variables que nos harán falta en el transcurso del programa. Serán contadores (para bucles) y variables en las que guardaremos valores instantáneos de ruido. /* Definimos la señal seno que vamos a emitir a través de los altavoces (LINE OUT) */ Int16 sinetable[SINE_TABLE_SIZE] = { 0x0000, 0x10b4, 0x2120, 0x30fb, 0x3fff, 0x4dea, 0x5a81, 0x658b, 0x6ed8, 0x763f, 0x7ba1, 0x7ee5, 0x7ffd, 0x7ee5, 0x7ba1, 0x76ef, 0x6ed8, 0x658b, 0x5a81, 0x4dea, 0x3fff, 0x30fb, 0x2120, 0x10b4, 0x0000, 0xef4c, 0xdee0, 0xcf06, 0xc002, 0xb216, 0xa57f, 0x9a75, 0x9128, 0x89c1, 0x845f, 0x811b, 0x8002, 0x811b, 0x845f, 0x89c1, 0x9128, 0x9a76, 0xa57f, 0xb216, 0xc002, 0xcf06, 0xdee0, 0xef4c, 0x0000, 0x10b4, 0x2120, 0x30fb, 0x3fff, 0x4dea, 0x5a81, 0x658b, 0x6ed8, 0x763f, 0x7ba1, 0x7ee5, 0x7ffd, 0x7ee5, 0x7ba1, 0x76ef, 0x6ed8, 0x658b, 0x5a81, 0x4dea, 0x3fff, 0x30fb, 0x2120, 0x10b4, 0x0000, 0xef4c, 0xdee0, 0xcf06, 0xc002, 0xb216, 0xa57f, 0x9a75, 0x9128, 0x89c1, 0x845f, 0x811b, 0x8002, 0x811b, 0x845f, 0x89c1, 0x9128, 0x9a76, 0xa57f, 0xb216, 0xc002, 0xcf06, 0xdee0, 0xef4c, 0x0000, 0x10b4, 0x2120, 0x30fb, 0x3fff, 0x4dea, 0x5a81, 0x658b, 0x6ed8, 0x763f, 0x7ba1, 0x7ee5, 0x7ffd, 0x7ee5, 0x7ba1, 0x76ef,

Memoria Descriptiva Pág. - 156 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera 0x6ed8, 0x658b, 0x5a81, 0x4dea, 0x3fff, 0x30fb, 0x2120, 0x10b4, 0x0000, 0xef4c, 0xdee0, 0xcf06, 0xc002, 0xb216, 0xa57f, 0x9a75, 0x9128, 0x89c1, 0x845f, 0x811b, 0x8002, 0x811b, 0x845f, 0x89c1, 0x9128, 0x9a76, 0xa57f, 0xb216, 0xc002, 0xcf06, 0xdee0, 0xef4c, 0x0000, 0x10b4, 0x2120, 0x30fb, 0x3fff, 0x4dea, 0x5a81, 0x658b, 0x6ed8, 0x763f, 0x7ba1, 0x7ee5, 0x7ffd, 0x7ee5, 0x7ba1, 0x76ef, 0x6ed8, 0x658b, 0x5a81, 0x4dea, 0x3fff, 0x30fb, 0x2120, 0x10b4, 0x0000, 0xef4c, 0xdee0, 0xcf06, 0xc002, 0xb216, 0xa57f, 0x9a75, 0x9128, 0x89c1, 0x845f, 0x811b, 0x8002, 0x811b, 0x845f, 0x89c1, 0x9128, 0x9a76, 0xa57f, 0xb216, 0xc002, 0xcf06, 0xdee0, 0xef4c }; /* Lo que hacemos es reproducir 4 veces la misma señal seno para poder comparar con el vector de recogida de las señales primaria y tratada */ Definimos la señal seno que será el ruido generado por la tarjeta y que luego trataremos tras recogerlo por los micrófonos. La matriz es tan amplia porque tenemos un seno cuatro veces. Lo hacemos así para poder comparar con las demás matrices de entrada (de esta forma nos aseguramos ver señales senoidales completas. Int16 sinetable_in[SINE_TABLE_SIZE]; // Señal micro 1 Int16 sinetable_in_tratada[SINE_TABLE_SIZE]; // Señal tratada Int16 sinetable_error[SINE_TABLE_SIZE]; // Señal micro 2 Int K=50; // Ganancia de amplificación Declaramos las variables donde guardaremos los datos recogidos y tratados. Además declaramos y damos valor a la ganancia añadiremos. A continuación tenemos el programa principal en sí, el bucle main(). Inicializamos las librerías de la tarjeta, iniciamos el codec, y entramos de lleno en el bucle que será el punto base del programa. void main() { DSK5510_AIC23_CodecHandle hCodec; /* Para inicializar las librerías de la tarjeta */ DSK5510_init(); /* Abrimos el codec */ hCodec = DSK5510_AIC23_openCodec(0, &config); /* Creamos un bucle que se realizará 3000 veces */

/* Este bucle define el tiempo que sonará la señal */ for (i = 0; i < 3000; i++) {

/* Cada vez que pasa una por el bucle principal hacemos 192 recogidas de muestras con el micrófono y emitimos 192 veces a través de los altavoces */

for (j = 0; j < 192; j++) { /* Escribimos dato en el canal derecho de salida */ while(!DSK5510_AIC23_write16(hCodec, sinetable[j]));

Memoria Descriptiva Pág. - 157 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

/* Leemos dato canal derecho de entrada */ while(!DSK5510_AIC23_read16(hCodec, &sinetable_in[j]));

/* Creo sinetable_in_tratada*/

sinetable_in_tratada[j]=K*sinetable_in[j];

/* sinetable_in_tratada al altavoz del canal izquierdo*/ while(!DSK5510_AIC23_write16(hCodec, sinetable_in_tratada[j]));

/* Recojo en mic 2 y lo meto en sinetable_error */ while(!DSK5510_AIC23_read16 (hCodec, &sinetable_error[j]));

} En este bucle realizaremos la reproducción del sonido prediseñado por el canal derecho de salida, el muestreo de dicha señal por el canal derecho de entrada, el tratamiento de dicha señal, la reproducción de la señal tratada por el canal izquierdo de salida y, de nuevo, el muestreo de esta señal tratada por el canal izquierdo de entrada. } /* Cerramos el codec */ DSK5510_AIC23_closeCodec(hCodec); Finalmente terminamos cerrando el codec }

El siguiente esquema representa el procedimiento que sigue el sistema según el programa que hemos elaborado:

Ya explicado el funcionamiento de nuestro sistema, solo nos queda la realización de diversos experimentos para analizar los resultados y llegar a conclusiones finales. A continuación se detallan los diferentes experimentos realizados con este montaje y las conclusiones finales a las que llegamos con ellos.

Memoria Descriptiva Pág. - 158 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera * EXPERIMENTOS 1) EXPERIMENTO 1 (montaje 1)

El primer experimento que hemos realizado es el sistema sin ninguna variación es decir en el exterior del tubo con el micrófono ev de micro 1 y el AKG de micro 2. Tenemos que tener en cuenta que para poder comparar las señales recogidas con los micrófonos con la señal original les hemos aplicado a ambas señales una amplificación de 50, ya que la que recogen directamente está demasiado atenuada.

Antes de hacer cualquier análisis lo primero que tenemos que explicar es

que el eje X de estas gráficas no indica unidades de tiempo sino número de muestras.

El resultado obtenido es el siguiente:

Lo primero que tenemos que destacar de este primer experimento es que a pesar de la atenuación que se lleva a cabo a través de los altavoces y micrófonos la señal resultante es completamente senoidal y de frecuencia idéntica a la original. Este hecho es importantísimo a la hora de poder plantearse un algoritmo de control activo de ruido, ya que al ser bastante fiel a nivel de seno el sistema va a facilitar mucho los cálculos a la hora de buscar la onda contraria a la original. 2) EXPERIMENTO 2 (montaje2)

En este segundo experimento vamos a realizar el mismo montaje que en el anterior solo que en el interior del tubo, para intentar demostrar que la

Memoria Descriptiva Pág. - 159 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera atenuación es menor al concentrarse el sonido solo en el interior del tubo por lo que el micrófono pueda recoger en mejores condiciones el sonido.

Si comparamos esta gráfica con la anterior comprobamos que el desfase entre las ondas varía. Pero el principal dato que nos deja esta representación es que la atenuación es prácticamente la misma que en el exterior del tubo. En teoría, la atenuación en el interior del tubo debería se menor pero en este caso no lo es. Esto es debido a dos factores: los altavoces y el acople de sonido.

El problema que tenemos con los altavoces con los que hemos realizado

los experimentos es que el cono emisor de sonido es muy pequeño (lo ideal sería de unos 100 mm. de diámetro) por lo que al micrófono le cuesta mucho recoger sonido claramente de los altavoces.

Memoria Descriptiva Pág. - 160 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Los primeros altavoces tienen una superficie de emisión mucho más pequeña y delimitada que los de la derecha, por lo que a la hora de colocar el micrófono se nos dificulta en gran medida la precisión de la captación.

A continuación se muestra una foto del montaje que tuvimos que hacer

para poner el micrófono perfectamente alineado con la zona de emisión de sonido.

Memoria Descriptiva Pág. - 161 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Solo tenemos una pequeña superficie donde podemos colocar el micrófono, por lo que a la hora de colocarlo en el interior del tubo un pequeño movimiento hace que la captación se vea muy devaluada.

En experimentos anteriores realizados con altavoces con un cono de

emisión mayor, la diferencia de atenuación entre el exterior del tubo y el interior era más que notable. Ya que en el exterior del tubo la señal recogida por el micrófono era desorden de 500 veces menor que la señal original, mientras que en el interior solo era de unas 100 veces menor que la señal original.

El otro problema que provoca la alta atenuación de la señal en el interior

del tubo la explicaremos en el siguiente experimento. 3) EXPERIMENTO 3 (montaje3)

Con este experimento pretendemos dar explicación a la influencia del acople en el interior del tubo a la hora de hacer el montaje.

Teniendo en cuenta que estamos haciendo experimentos con un par de

altavoces estéreos, usándolos de manera que el altavoz derecho sea la fuente de emisión del ruido y el altavoz izquierdo sea la fuente de emisión del ruido tratado (en nuestro caso amplificado), es importante reseñar que la longitud del cable de que une los dos altavoces no viene a ser más de 120 mm. Esto implica que a la hora de introducirlos en el tubo estos van a estar muy cerca el uno del otro con sus respectivos micrófonos.

La siguiente gráfica es el resultado de realizar el experimento en el

interior del tubo al mismo volumen que cuando se realizó el experimento en el

Memoria Descriptiva Pág. - 162 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera exterior. Lo que ocurre es que al estar tan cerca fuentes de emisión de sonido y receptores de sonido se produce un acople que distorsiona la señal que debe emitirse a través de los altavoces. Para evitar esto es necesario bajar el volumen de los altavoces hasta que cese el acople. Esto produce que la recepción de ruido del micrófono sea menor por esta más bajo el volumen lo que aumenta la atenuación y hacen que se igualen las señales entre experimentos en el exterior y en el interior del tubo.

Si volvemos a realizar el experimento obtenemos los siguientes

resultados:

Para solucionar este problema lo que habría que tener es una mayor distancia entre altavoces para evitar el acople y así poder realizar los experimentos en la misma referencia de volumen. 4) EXPERIMENTO 4 (montaje6)

La intención de este experimento es mostrar la atenuación real que se produce por la aparición del micrófono y altavoz. Para ello lo que hacemos es ejecutar igual que en los casos anteriores el programa, solo que vamos a representar la medida de los micrófonos sin amplificar y comprarla con la señal real que creamos de ruido primario.

Los resultados son los siguientes:

Memoria Descriptiva Pág. - 163 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Si hacemos zoom para poder ver la amplitud real de las dos señales de micrófono obtenemos que:

Podemos comprobar que el efecto de la atenuación es bastante fuerte, pero a nivel de fidelidad en términos de seno, vemos que la señal muestra una calidad excelente. 5) EXPERIMENTO 5 (montaje8 y montaje9)

Memoria Descriptiva Pág. - 164 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Con esto dos últimos experimentos pretendemos dar valores de retrasos entre las diferentes señales, para comprobar si es factible plantearse un control activo de ruidos.

Para ello, tenemos que tener en cuenta que la señal que emitimos como

original es una señal seno de 1 kHz de frecuencia y el muestreo de nuestro sistema.

Recordemos, entonces, esa parte del código del programa encargada

del muestreo (antes dijimos que era la parte fundamental del programa): for (i = 0; i < 3000; i++) {

/* Cada vez que pasa una por el bucle principal hacemos 192 recogidas de muestras con el micrófono y emitimos 192 veces a través de los altavoces */

for (j = 0; j < 192; j++) { /* Escribimos dato en el canal derecho de salida */ while(!DSK5510_AIC23_write16(hCodec, sinetable[j]));

/* Leemos dato canal derecho de entrada */ while(!DSK5510_AIC23_read16(hCodec, &sinetable_in[j]));

/* Creo sinetable_in_tratada*/

sinetable_in_tratada[j]=K*sinetable_in[j];

/* sinetable_in_tratada al altavoz del canal izquierdo*/ while(!DSK5510_AIC23_write16(hCodec, sinetable_in_tratada[j]));

/* Recojo en mic 2 y lo meto en sinetable_error */ while(!DSK5510_AIC23_read16 (hCodec, &sinetable_error[j]));

} }

El primer for nos indica que vamos a repetir 3000 veces el sonido definido mediante el vector sinetable que tiene una dimensión de 192 veces, y por cada vez que vayamos a repetir el sonido tomamos 192 muestras del sonido de recogida. Lo que implica que el tiempo de muestreo es bastante alto. Teniendo en cuenta estos datos y analizando los resultados a continuación expuestos (solo se van a mostrar 2 gráficas pero hay que tener en cuenta que el experimento de medida de retrasos está realizad infinidad de veces repitiéndose continuamente los mismos resultados).

El primero de los experimentos está realizado en el interior del tubo.

Debido al problema del acople las señales recogidas por los micrófonos están bastante atenuadas pero a nivel de retrasos son válidas para nuestro estudio.

Memoria Descriptiva Pág. - 165 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Teniendo en cuenta los valores de muestreo comentados anteriormente y haciendo cálculos aproximados, llegamos a la conclusión de que el retraso máximo que hay entre dos de las ondas es 10-9 ms. lo que nos proporciona un margen suficientemente amplio de trabajo para poder incluir algoritmos de control.

Haciendo el mismo experimento pero en el exterior del tubo (sin

problemas de acople) obtenemos que:

Memoria Descriptiva Pág. - 166 David Toyos Sibón

Análisis e Implementación de Algoritmos de Compensación Activa de Ruido en una Plataforma DSP Proyecto Final de Carrera

Comparando con la gráfica anterior nos damos cuentas que influye la atenuación pero los retrasos permanecen constantes, por lo que el retraso máximo entre ondas es de 10P

-9 ms. Este retraso máximo hace que tengamos

tiempo suficiente para incluir algoritmos complejos en el cuerpo del programa ya que el tubo es de 3 metros y la frecuencia de la onda de 1 kHz por lo que la velocidad que tardará aproximadamente en recorre el tubo la señal es de 8 ms.

Memoria Descriptiva Pág. - 167 David Toyos Sibón