Menu
in

Microcontroladores: Preamplificador de audio de alta gama

Si tu pasión es la música y deseas ser un DJ importante, no puedes dejar pasar por alto el proyecto que te proponemos hoy: un circuito totalmente digital para manejar consolas de audio de la más alta calidad de sonido, con prestaciones increíbles, y operables tanto en forma local como remota (a través de un ordenador). Si el audio profesional es lo tuyo, te recomendamos darle una leída a este artículo y conocer esta aplicación basada en el TDA7449.

Entre las virtudes destacables del TDA7449 se encuentra la posibilidad de seleccionar entre dos fuentes de sonido estéreo independientes, cada una con la posibilidad de ajustarse a distintos niveles de ganancia de entrada mediante la configuración de sus registros. El TDA7449 posee, además, controles de tonos agudos y graves por pasos de 2dB, mientras que el control de volumen se puede regular por pasos de 1dB, al igual que el balance entre canales de audio. Puedes realizar todas estas maravillas de funciones con tan sólo dos cables, a través de un bus I2C, y desde un microcontrolador sencillo.

Para controlar y manejar nuestro preamplificador de audio utilizaremos un PIC 16F628A, un display alfanumérico de 2 líneas X 16 caracteres, y tan sólo cuatro pulsadores para todas las funciones y ajustes: uno para controlar la función ON-OFF del sistema, que también puede activar el MUTE de sonido; otro para seleccionar dentro de un menú de posibilidades (Volumen, Balance, Graves y Agudos); y los dos últimos para aumentar o disminuir los parámetros elegidos por la función MENÚ. Antes de pasar a detallar el circuito a utilizar, te dejamos algunos valores para que puedas comprobar la calidad y prestaciones del TDA7449:

Diagrama en bloques del sistema a implementar
En la siguiente imagen puedes ver el diagrama en bloques de la aplicación que vamos a construir hoy. A primera vista puede resultarte algo complejo, pero a medida que avancemos en las explicaciones podrás ver que todo es muy sencillo si se trabaja de manera organizada, prudente, y prestando atención a las indicaciones que te iremos brindando.

La Fuente de alimentación
Si deseas utilizar un amplificador monitor, ya sea para auriculares o para altavoces de retorno, y piensas hacerlo a través del circuito propuesto con un TDA2004 (6W + 6W RMS), debes dejar (para alimentarlo) una conexión de 12 Volts, capaz de entregar 1 Amper para trabajar cómodamente y sin grandes complicaciones de disipación de calor. Luego encontrarás, en el circuito propuesto, un regulador de 9 VCC, del tipo 7809, para alimentar al TDA7449; y más adelante aún, se conecta un 7805 para obtener los 5 Volts necesarios para el PIC y el LCD.

Esta fuente está pensada y diseñada originalmente para trabajar a partir de una batería de 12 VCC o, en su defecto, una fuente de alimentación regulada. Debido a que permite la conexión a un sistema u otro (batería o fuente conectada a la red domiciliaria), hemos colocado un diodo (D1) para evitar complicaciones en caso de error involuntario en la polaridad al momento de la conexión. Igualmente, T1 protege al sistema de un error de este tipo, lo que hace innecesario la utilización de fusibles en este punto del circuito.

Al momento de pulsar el botón Power, D2 pondrá (a través de R2) la tensión de base del transistor T1 (trabajando como conmutador serie) a un potencial bajo para que éste (T1) comience a conducir. En ese momento, la alimentación llegará al PIC, y el programa comenzará a funcionar colocando al pin RA3 del microcontrolador en un estado alto (High) para mantener en conducción a T2 (entre Colector y Emisor). De esta forma, T1 se mantendrá en conducción mediante el potencial bajo existente en su base, dejando el circuito encendido a lo largo de todo el funcionamiento del programa y el sistema.

El firmware cargado en el PIC estará continuamente atento a la pulsación del botón “Power ON-OFF” para controlar que exista siempre un potencial alto en RA4 brindado por R5 de 10K. A esta tarea la puede realizar el microcontrolador a través del uso del Timer0 (TMR0), o a través de una rutina controlada periódicamente para chequear el estado lógico de este pin. Si el botón llega a ser pulsado, D3 colocará al pin RA4 a un nivel lógico bajo. Esto será detectado por el firmware y provocará un salto en la rutina del programa a una secuencia de apagado con mensaje de despedida (si se desea) y un potencial bajo (LOW) en el pin RA3 para asegurar el apagado y corte de T1. Notarás que T3 (en caso de utilizarse) también pasará al corte, desenergizando el relé Rel1 y cortándole la alimentación al amplificador de audio. El circuito quedará totalmente apagado sin consumir corriente, lo que lo transforma en un sistema ideal para ser utilizado con alimentación a batería.

Te recomendamos la instalación de un conector hembra USB, tipo “A”, en aquellos casos en los que el sistema se construya con características de portabilidad para ser utilizado, por ejemplo, en un coche. Una potencia sonora de 6W + 6W RMS no es para nada despreciable cuando no se tiene música en el vehículo. Con un buen par de altavoces y un reproductor MP3 o MP4, puedes tener buena música durante un viaje. Sobrio, disimulado, discreto, sin necesidad de mostrar cadenas de audio de primeras marcas (tentadoras para cualquier ladrón), puedes disfrutar de un sonido genial sin ostentar de manera.

Otra parte del circuito que puede ser considerada como opcional también está en recuadro de líneas de puntos y corresponde a la alimentación del amplificador de audio cuando el sistema se completa en una unidad autónoma. Observen que la conexión al amplificador se realiza a través de un relé para garantizar un suministro de energía sin inconvenientes y eficaz. Tomando señal desde RA3, y con un sencillo transistor BC639 o equivalente, resolvemos la activación del relé, que no será de dimensiones importantes.

Por último, cabe aclarar que es aconsejable montar esta parte del proyecto (la fuente de alimentación) en una placa separada del sistema de audio. Esta recomendación es muy útil para prevenir ruidos y zumbidos en caso de utilizar el preamplificador a partir de una fuente alimentada de la red domiciliaria, como sería el caso de la utilización dentro de una consola profesional de DJ.

El amplificador de audio
El amplificador que utilices para monitorear el canal de trabajo será de la calidad y potencia que tú elijas. Te servirá para conocer de qué manera, por ejemplo, sale al aire tu emisora de FM, cómo preparar un tema para efectuar una mezcla de sonido en vivo, y miles de aplicaciones más. Lo importante en todos los casos es que tú estés conforme con el resultado obtenido.

No es necesario utilizar un módulo amplificador STK4142II, ni tampoco llegar al mínimo extremo de un LM386. Un TDA2004 es una muy buena opción y puede proporcionarnos una potencia altamente satisfactoria con sus 6W RMS por canal @ 12Volts de alimentación. Debido a que no estamos presentando un artículo orientado a un amplificador de audio, no abundaremos en detalles funcionales del circuito integrado TDA2004, pero sí te dejamos su diagrama esquemático y algunas fotografías del prototipo de este amplificador terminado, junto a un diagrama tentativo del PCB. Puedes variarlo a tu gusto, conveniencia y comodidad.
No es necesario ni obligatorio utilizar al TDA7449 sólo en consolas mezcladoras. También puedes construir a partir de él un sistema de audio autónomo y de la potencia que tú decidas para la aplicación que mejor te plazca, por lo que la parte de amplificación de audio final queda a tu exclusiva elección, decisión, criterio y posibilidades económicas.

El TDA7449 y su técnica de trabajo
El intercambio de datos entre el TDA7449, el microcontrolador y viceversa se efectúa a través de la comunicación serie de dos cables, conocida como protocolo I2C, del que ya hemos hablado en otro artículo y del que nos ocuparemos con mucho ahínco en NeoTeo. Este protocolo es utilizado ampliamente para conectar y operar sofisticados y elaborados dispositivos con complejas y poderosas instrucciones, a través de sólo dos líneas de conductores llamadas SDA y SCL, que llevan conectadas una resistencia de 10K a VCC cada una (resistores PULL-UP).
Tal como hemos mencionado en otras oportunidades, el bus requiere una condición de START para iniciar una conexión de “diálogo” entre el microcontrolador y los dispositivos conectados a él. Una vez terminada la comunicación, el bus “debe” cerrarse; a esta situación se la conoce como STOP.

Aquellos que trabajan con sistemas de programación de microcontroladores distintos al BASIC, recuerden que para generar una situación de START en el bus debe existir una transición de estado lógico alto a un estado lógico bajo en la línea SDA, mientras SCL se encuentre en estado alto. De la misma forma, para generar una detención de comunicación dentro del bus (condición de STOP), SDA debe pasar de un estado bajo a otro estado alto, mientras SCL se encuentra en estado lógico alto. En BASIC bastará con un simple BSTART y/o BSTOP para abrir o cerrar la comunicación bidireccional de datos dentro del bus.

Luego de abrir el bus, y como en todos los casos en los que trabajamos con I2C, debemos llamar al dispositivo por su nombre o dirección, conocida esta última como “Address”, que en el caso del TDA7449 está formada por el byte: 10001000. Luego, vendrá una sub-dirección o “Sub-Address” que será la encargada de indicarle al circuito integrado cuál de todos su parámetros vamos a manipular, por ejemplo, Volumen, Graves, Agudos, etc., según nos muestra el siguiente diagrama que se encuentra en el datasheet del IC:

Como deja ver el cuadro, los tres primeros bits (MSB) no intervienen en la selección de los que serán luego los ajustes que realizaremos a través del menú. El bit 4, que se representa con la letra B, se utiliza para indicarle al IC que debe entrar en un lazo incremental automático hasta el final o tope de valor de la función seleccionada. Es decir, si seleccionamos la sub-dirección de variar los graves y colocamos el bit D4 en estado alto (H), el sistema ingresará en un estado incremental automático hasta llegar al tope de valor de +14dB de amplificación de sonidos graves. Si, en cambio, este bit se programa con un estado bajo, debemos enviar dato a dato para poder incrementar o decrementar el parámetro seleccionado, situación que obviamente será la que seleccionaremos para luego enviar un tercer byte con el valor que deseemos darle al ítem elegido.

Para la elección de los datos a colocar en el tercer byte será aconsejable que imprimas las hojas del datasheet donde se expresan todas las variables posibles, y desde allí optar por la correcta sin errores. Una vez que hayas enviado el tercer byte, puedes cerrar el bus con una condición de STOP y puedes pasar a comunicarte con otro dispositivo conectado al bus o, de lo contrario, quedar a la espera de una nueva instrucción.

A diferencia de otros circuitos integrados que permiten conectarse a un bus I2C, el TDA7449 no posee una dirección configurable dentro del bus. Es decir, sólo se permite uno por microcontrolador, y en los casos en los que nuestro deseo pase por conformar una gran consola de sonido, podemos quitar el display LCD alfanumérico, utilizar los pines que queden liberados y, a través de un par de ellos, conectarnos a una gran red RS485 de hasta 32 controles (utilizando los pines que dejarán libre el LCD). Una consola de 32 canales con la totalidad de sus controles digitalizados y con la capacidad de ser operada desde el ordenador, sin piezas mecánicas, sin fallas ni roturas… nada despreciable ¿verdad?

Un ejemplo de programación en BASIC del TDA7449 sería la siguiente:

  • BSTART                                  ‘abro el bus
  • BUSOUT %10001000          ‘envío la dirección que llama al TDA7449
  • BUSOUT %00000000         ‘le indico que voy a seleccionar una entrada
  • BUSOUT %00000011          ‘selecciono la entrada 1
  • BSTOP                                     ‘cierro el bus

En el listado vemos claramente definidos los byte START, CHIP ADDRESS, SUBADDRESS, DATA y STOP. Otro modo aceptado para el ajuste o “seteo” (como el del ejemplo) puede ser realizado mediante la asignación de “ALIAS” dentro de la instrucción BUSOUT. Esto se realiza a través de la instrucción SYMBOL y se aplica a las direcciones o sub-direcciones de los registros del IC que permiten modificar las características de funcionamiento del sistema. Por ejemplo: si la dirección del IC dentro del bus es %10001000, podemos colocarle un “alias” que se llame TDA, a través de la instrucción SYMBOL. El método es muy sencillo: basta con escribir SYMBOL TDA = %10001000. Luego, estos “alias” son llamados dentro del firmware de la siguiente forma:

  • SYMBOL TDA = %10001000                 ‘a la dirección la llamo “TDA”
  • SYMBOL ENTRADA = %00000000     ‘a la sub-dirección de entrada, la                                           llamo del mismo modo = “ENTRADA”
  • BSTART                                                      ‘abro el bus
  • BUSOUT TDA, ENTRADA, [%00000011] ‘envío dirección + sub-dirección + dato a registrar en la dirección especificada
  • BSTOP                    ‘cierro el bus

Observa ahora que la instrucción viene presentada de la siguiente forma: BUSOUT Dirección, Sub-dirección, [Variable a cambiar]. Se puede realizar este tipo de selección para setear condiciones de start-up, donde los controles de menú que se encuentran a tu alcance no intervienen. Otro dato a considerar al programar el PIC es el nivel de ganancia de entrada que seleccionemos, ya que estos son datos que no cambiarán en todo el uso del sistema. Volumen, Graves y Agudos requieren otro tipo de rutinas que permiten un cambio en cualquier instante de uso y que veremos al momento de programar el PIC.

En la próxima página nos metemos de lleno en el circuito eléctrico del TDA7449 y en la programación del microcontrolador.  Avanza a la siguiente página y no te pierdas los videos de demostración!!! Síguenos!

El circuito eléctrico del TDA7449
En el diagrama podemos ver que el circuito es muy sencillo cuando utilizamos sólo  una de las entradas y un pequeño puñado de componentes alrededor del IC para darle un correcto funcionamiento. La alimentación por pin 2 debe ser filtrada (además del clásico electrolítico) con capacitores cerámicos tipo disco, de 100nF, que deben colocarse físicamente lo más próximo posible al TDA. Otro dato destacable es la diferenciación entre las conexiones a GND de las partes digitales respecto a las analógicas. Los circuitos digitales son ruidosos y siempre es bueno separar (con algunas decenas de Ohm) las terminales de tierra de ambos sectores. En este caso, 33 Ohms es una buena opción, según la hoja de datos del IC.

Por último, no debemos olvidar que cada vez que trabajemos con señales de audio, los planos de tierra deben ser tan amplios como sea posible. Es decir, no debemos realizar un impreso de vías finas y grandes espacios vacíos, sin conexión a GND. Siempre tratemos de ocupar la mayor superficie posible con un plano de tierra para minimizar los ruidos que puedan inducirse en el circuito. La misma recomendación es válida para los cableados de señal de entrada y salida del TDA7449, desde y hacia los conectores RCA. Deben ser lo más cortos posibles y blindados de buena calidad (mallados). Si este principio fundamental de la construcción de equipos de audio no se contempla, podemos llegar a escuchar ruidos muy molestos e inaceptables cuando escuchemos sonidos a bajo volumen.

Programando el PIC
Siguiendo con la misma orientación de artículos anteriores, te daremos aquí las indicaciones para realizar el programa que irá cargado en el microcontrolador. Como es costumbre, primero se declara el dispositivo a utilizar con su correspondiente cristal, el conexionado, el tipo de LCD a utilizar, y los pines destinados para la comunicación por bus I2C. Podrás notar que, en este caso, hemos incorporado una nueva instrucción: la de utilizar un bus lento (100 Khz.) debido a que el TDA7449 es utilizado con esta característica de velocidad en sus aplicaciones masivas en receptores de televisión.

Luego, declaramos las variables a utilizar dentro del programa: aquellos parámetros que variarán según nuestra acción en los comandos que hemos asignado al PIC. Los nombres de las variables pueden ser cualquiera con tal de que nos relacione con el nombre real de lo que estamos queriendo cambiar. Es decir, si queremos contar perros, los nombres habituales de variables pueden ser “dog”, “can”, “pichicho”, o cualquier otro nombre corto que pueda asociarse en nuestra mente con el elemento a mencionar. También en esta parte inicial del programa definimos los SYMBOL o “alias” que, como ya te hemos explicado antes, son reemplazos de cosas tediosas de escribir (son más sencillos y rápidos de escribir en un lenguaje habitual). Un ejemplo de lo que te mencionamos es el caso de valores numéricos en notación binaria. Si bien podemos colocar los valores numéricos en cualquier notación (HEX, BIN, DEC, etc.), siempre será más sencillo llamarlos por un solo nombre que por un conjunto de ceros y unos, que pueden prestarse fácilmente a confusión. Es más sencillo escribir la palabra GRAVES que acordarnos de escribir “%00000100” cuando hagamos referencia a la sub-dirección GRAVES dentro del protocolo de comunicación I2C.

En la imagen también puedes ver que se coloca en alto el pin 3 del puerto A para mantener a T1 conduciendo, y al relé energizado, a pesar de haber soltado el pulsador ON-OFF. Luego, le damos al sistema un retardo de 500 milisegundos para estabilizar la tensión en los circuitos antes de comenzar a trabajar con los registros del TDA7449.

Al iniciar el funcionamiento del equipo, siempre es interesante observar un mensaje de bienvenida o la también conocida pantalla de inicio o splash. En nuestro caso, hemos colocado un mensaje con un saludo de toda la gente de NeoTeo para quien vea en acción al preamplificador. Pero lo más interesante será cuando tú personalices y hagas bien custom tu propio preamplificador. Mensajes formales como el sugerido, e incluso textos que digan “¡Quítate el corpiño, nena!”, pueden pasar por el display al iniciar el equipo. Seguramente tu imaginación creará mensajes dignos de ser leídos y compartidos con tus padres para despertar su orgullo por tu trabajo.

Luego de los dos segundos de muestra del mensaje, cargaremos los datos iniciales que les queremos asignar a las variables que deban ser, a nuestro criterio, modificables al inicio del funcionamiento del sistema. Como ejemplo hemos optado por colocar la ganancia de la etapa de entrada del IC en 0dB, el volumen en -32dB (un cuarto aproximadamente del volumen total), y los controles de tono al máximo en ambos casos: Graves y Agudos.

Ten presente que el TDA7449 expresa el nivel de volumen en decibeles y manifiesta que el máximo volumen que puede seleccionarse corresponde a 0dB, mientras que hacia abajo (disminuyendo el volumen) las expresiones se realizan en números negativos y determinan la “atenuación” que sufre el libre sonido máximo (0dB).
A esta altura de la explicación ya es momento de cargar los datos en los registros y comenzar a disfrutar de la música. La manera de hacerlo es tan sencilla como te adelantamos más arriba: abrir el bus > enviar dirección > enviar subdirección > enviar dato > cerrar el bus.

Observa en el ejemplo citado en la imagen que, una vez abierto el bus, puedes enviar muchos datos a muchas subdirecciones, una tras otra, hasta terminar el diálogo con el dispositivo y luego cerrar el bus con la clásica instrucción BUSTOP.
Si no te has equivocado en la construcción del hardware y todo está correcto, el sonido aparecerá según tus ajustes iniciales, y ya puedes comenzar la experiencia del manejo del bus I2C, junto al despliegue de tus habilidades como programador.
Ahora hay que armar y organizar la estructura del firmware de modo tal que puedan variarse los controles de tono, volumen, y todo lo que desees, en tiempo real, sin detenciones en la escucha del sonido, ni cuelgues inesperados e impredecibles del microcontrolador. No dejes de probar bien a fondo tu firmware y, como consejo, siempre debes armarlo a prueba de inquietos como tú quienes tienden a tocar todos los pulsadores en simultáneo, forzar y buscar el error de diseño al pulsar distintas secuencias de teclas, y todas las acciones tendientes a desestabilizar el sistema de todas las formas posibles que puedas imaginarte.

Arma contadores con sencillas instrucciones incrementales o decrementales, como pueden ser TREBLE = TREBLE + 1. También puedes detectar si las teclas son pulsadas con simples instrucciones IF – THEN – ELSE – ENDIF, y apelar a todos tus conocimientos para tratar de lograr un funcionamiento estable y seguro.

Tómate un instante y observa las etiquetas RETALTOSUP y RETEALTOSDWN. Si el usuario es una clase de juguetón como del que hablamos antes, se quedará prendido al pulsador viendo en qué momento el sistema enloquece o se cuelga dentro de un lazo de variaciones incontrolables. En cambio, aplicando estas sencillas rutinas con un condicional IF – THEN – GOTO, el programa (hasta que no suelte el pulsador) entrará en un bucle infinito, impidiendo la utilización de otras teclas. De esta forma, te aseguras de que las teclas se pulsen de a una por vez y de a una vez para cada acción. Es sencillo y confiable, ¿no crees?

Al final, dedica algunas líneas de programa para un apagado del equipo categórico y con elegancia. Un buen mensaje de despedida es visto con mucho agrado por los usuarios del sistema (al igual que el mensaje de bienvenida).

Lo primero es cortar el sonido al entrar en la rutina, colocando los registros de volumen y atenuación de canales (balance) en condición de MUTE. Luego, debes emitir un mensaje de salida de un par de segundos para no hacerlo muy extenso. También aquí tu capacidad de imaginación le dará un toque mágico al mensaje. La condición de apagado es muy sencilla: coloca en estado bajo el pin que mantenía activo el relé y el transistor serie de encendido (T1 a través de T2) (ver circuito de fuente), y provoca un lazo infinito hasta que el equipo apague. Para entrar en la rutina de apagado puedes colocar, dentro del programa, instrucciones como las que aparecen a continuación, que deben estar diseminadas a lo largo de todo el firmware (no deben faltar en ninguna secuencia). Siempre debe existir la posibilidad de salir hacia un apagado desde cualquier lugar y situación. Ese es uno de los datos que te ayudará a evitar los cuelgues que antes mencionábamos.

Así de sencilla es la instrucción que detecta si se ha pulsado el botón ON-OFF y su continuación hacia la subrutina de apagado antes mostrada.

Consideraciones finales
Con disponibilidad de tiempo, paciencia, buen gusto, imaginación, y muchas ganas de aprender, lograrás construir un eslabón muy importante dentro de un sistema de audio. El TDA7449 es un IC que la empresa ST Microelectronics te envía GRATIS (sí, gratis) a tu casa con sólo registrarte en su sitio y solicitarlo. El programa de Samples (muestras gratis) de ésta y otras empresas hacen que la disponibilidad de materiales y los precios altos ya no sean un impedimento para que puedas estudiar, desarrollar y experimentar en electrónica.

Ahora sí lo que estabas esperando: el audio en acción! En la siguiente página encontrarás cuatro videos imperdibles. Todo lo explicado hasta aquí funcionando para que lo veas. Avanza a la siguiente página. Vamos!

¿Te ha gustado? ¡Anímate! El TDA7449, la electrónica y el buen sonido te esperan.

Escrito por Mario

Leave a Reply