Recientemente traje un Google Chromecast Audio y la señal de audio se envía directamente a mi estéreo. Quiero detectar el nivel de sonido para encender y apagar el estéreo. Luego logré decodificar con éxito la señal de datos en la interfaz que conecta los dispositivos de audio B&O, como reproductores de CD y cintas, a sus amplificadores.
A continuación, he utilizado un enfoque ingenuo para conectar una entrada analógica de un Arduino para detectar el sonido.
En general, el proyecto está funcionando bien. Pero el problema es que el sonido, especialmente el bajo, se distorsiona/degrada cuando se conecta el Arduino. ¿Cómo puede esto ser evitado?
Tengo una experiencia muy limitada en electrónica analógica y no tengo osciloscopio ni ningún otro equipo. Supongo que una gran cantidad de corriente debe fluir a través del Arduino. En segundo lugar, el Chromecast podría ofrecer niveles de voltaje superiores a 5v.
La señal de audio que proviene del dispositivo Chromecast es CA; es decir, el voltaje varía entre voltajes positivos y negativos. Cualquier señal negativa probablemente exceda las especificaciones de la entrada de arduino. Conectar directamente una señal de audio a los pines de arduino es una mala idea y podría resultar en un arduino roto dependiendo de la amplitud de la señal y la impedancia de la fuente.
La distorsión que escucha es causada por los diodos de protección de entrada integrados en los pines IO del microcontrolador:
El diodo a tierra se encenderá cuando la señal de audio esté por debajo de cero, cargando los condensadores de bloqueo de CC dentro de la salida del Chromecast y la entrada del amplificador y creando una compensación de CC local en el audio. Cuando la señal de audio se vuelve positiva, si el volumen es lo suficientemente grande, encenderá el diodo de protección al suministro y descargará los capacitores de bloqueo de CC.
Esto recorta efectivamente los picos de la señal de audio y coloca una carga relativamente grande en la salida de Chromecast, distorsionando la señal.
El arduino realmente no necesita recibir la señal de audio completa (negro) para hacer el trabajo que desea. Sería suficiente saber qué tan alto es el pico de amplitud (rojo). Esto se hace fácilmente con un circuito simple conocido como detector de envolvente o detector de pico.
Lo que debe hacer es agregar un capacitor a la CA para acoplar el audio, agregar un detector de picos para detectar fácilmente la presencia de una señal de audio y agregar un divisor de voltaje para garantizar un nivel de entrada seguro para el arduino.
simular este circuito : esquema creado con CircuitLab
Tenga en cuenta que este circuito no funcionará para señales de audio por debajo de aproximadamente 1,4 V de pico a pico . Si su señal es más débil que eso, puede:
Reemplace D1 y D3 con diodos Schottky, que tienen un voltaje directo más bajo. Si lo hace, permitiría que el circuito funcione para señales de hasta alrededor de 0,4 V.
Usar un detector de picos basado en un amplificador operacional
Condicione la señal no modificada (sin detección de picos) para el ADC de arduino y realice todo el procesamiento requerido en el software:
Este circuito atenúa la amplitud a un tercio y polariza la señal a 2,5 V, de modo que las señales por debajo de 15 V pico a pico estén siempre dentro del rango de entrada del ADC.
usuario3528438