Detectar sonido de Google Chromecast Audio

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.

ingrese la descripción de la imagen aquí

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.

Otra cosa que puede intentar es habilitar s/pdif y detectar la señal láser, entonces su audio analógico eléctrico será perfectamente sin pérdidas.

Respuestas (1)

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.

esquemático

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:

esquemático

simular este circuito

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.

En mi opinión, el último circuito es la mejor opción, solo aumentaría un poco todas las resistencias, creo que el ccast espera una impedancia de carga en el rango de 10k, por lo que los 3k3 que está agregando son demasiado.
@VladimirCravero Sin tener en cuenta la impedancia compleja de C1 y la impedancia (bastante alta) del propio ADC de arduino, el último esquema tiene una impedancia de CA de 10k + 1/(1/10k + 1/10k) = 15k desde el lado de la entrada de audio. No 3.3k. Además, el audio Chromecast puede controlar los auriculares , por lo que la impedancia adicional de 15k no es un problema.
Sí, son 15k, lo siento. Pensé que se suponía que el cc estaba conectado a una entrada de línea, si está hecho para auriculares, incluso 100 ohmios no es un problema