¿Circuito analógico para verificar si hay una señal de audio presente?

2

En el proyecto en el que estoy trabajando, tengo 3 señales de audio de nivel de línea y necesito determinar en un arduino si existe una señal no silenciosa en cada línea y actuar de manera apropiada (en mi caso, "desconectar" a Dispositivo de tensión de red). Mi primera idea sobre-diseñada es amplificar cada señal, agregar un sesgo dc, luego hacer algunas operaciones costosas en el arduino para determinar si existe una señal de audio.

Cada señal de audio es una señal mono que consta de un cable de tierra y un cable de audio de CA, de bajo voltaje.

Ahora no recuerdo mucho de mi clase analógica de la universidad, pero mi instinto es que esto se puede hacer simplemente usando componentes analógicos donde puedo alimentar el resultado (una señal digital psuedo donde alta sería por encima del voltaje x y bajo estaría por debajo del voltaje y) y haría un cálculo mucho más sencillo en el microcontrolador para determinar si existe una señal.

La frecuencia de la señal de audio está entre 10 y 22,000 Hz. La tensión pico a pico (del nivel de línea del nivel del consumidor) es 894mV, pero el circuito debe poder manejar desde 10mV pico a pico

¿Alguna idea?

    
pregunta Mike

2 respuestas

4

Esto sería más fácil si estuviera detectando señales en su nivel máximo de -10 dBV. Pero como quiere que esto detecte niveles tan bajos como 10 mV, necesita usar comparadores. Obtienes 4 comparadores en un paquete de 14 pines (LM339).

Un par de cosas a tener en cuenta:

1) debe asegurarse de que el diferencial de voltaje que desea medir sea mayor que el voltaje de compensación de entrada del caso más desfavorable de su comparador elegido. Un chequeo rápido con mi hoja de datos de National Semiconductor anterior dice que el voltaje de compensación de peor caso para el LM339 es 2mV.

2) estos comparadores son de colector abierto. Necesitan resistencias pullup a cualquier voltaje de suministro que necesite (+ 5V o lo que sea). Esto es realmente una ventaja porque facilita la adición de un detector de retención de pico.

3) necesita desviar la entrada a los comparadores MÁS ALTO que su señal de pico negativa máxima esperada y MENOS que su señal de pico positiva máxima esperada. Por lo general, establezco el sesgo en el punto medio de la fuente de alimentación.

4) esto va a ser realmente caro (sonrisa). El costo total de la lista de materiales debe ser de aproximadamente un dólar para 4 canales.

Voy a hacer un esquema rápido aquí. Tenga en cuenta que necesitará usar resistencias del 1% en el sesgo de entrada y en la sección de referencia del comparador para obtener una sensibilidad cercana a 10 mV.

simular este circuito : esquema creado usando CircuitLab

Resulta que aproximadamente la mejor sensibilidad que esto hará es aproximadamente 11 mV pico (22 mV P-P) y tolerará señales de entrada hasta aproximadamente 2.5V pico. Puede mejorar la sensibilidad cambiando el resistor inferior en el divisor de voltaje de referencia al mismo resistor de 22.1K que se usa en cualquier otro lugar y agregando un potenciómetro de bajo valor en serie con ese resistor. Ajuste la olla para la sensibilidad deseada.

Tenga en cuenta que este detector incluye retención de pico. La salida pasa a LO cada vez que el audio detectado supera el voltaje de referencia y se reduce a + 5V cuando el audio desaparece. La constante de tiempo actualmente está cerca de 1 segundo, pero se puede cambiar fácilmente modificando los valores de la red RC en los pines de salida.

    
respondido por el Dwayne Reid
1

El Arduino Leonardo podría funcionar, dentro de límites, sin circuitos externos complejos, ya que tiene un ADC diferencial con ganancia adicional.

Solución:

1) DC desvía cada señal de entrada con dos resistencias (divisor de voltaje entre GND y 5V) y un capacitor, otro divisor de voltaje a un pin de referencia común ADC. El voltaje de referencia del ADC se debe configurar a aproximadamente 100 mv (divisor de voltaje + capacitor). El ADC se saturará en señales por encima de ± 100 mV, pero no está interesado en cuánto se supera el umbral.

2) El ADC permite 15k muestras por segundo, a bajo en caso de que tenga señales con frecuencias muy altas. Es posible overclockear el ADC, al precio de precisión reducida. ± 10mv a 100mv a escala completa es de aproximadamente 5 bits. Según Overclocking AVR ADC la velocidad de reloj ADC de 2 MHz aún proporciona una precisión de 8,5 bits. Una conversión necesita 14 ciclos de reloj ADC, por lo que aproximadamente 142 k muestras por segundo o 47 kHz por canal.

3) El algoritmo sería algo así como "N muestras consecutivas por encima del umbral".

Problemas:

Nada de esto es compatible con las bibliotecas de Arduino, tiene que hacer usted mismo todo el acceso de registro AVR de bajo nivel. Dependiendo de su conocimiento y experiencia, una curva de aprendizaje empinada podría estar más adelante.

Hoja de datos de AVR 32U4 Mapeo de Arduino a 32U4 pin

    
respondido por el Roland Mieslinger

Lea otras preguntas en las etiquetas