Manejo de señales de audio en un ADC de 5v

Hace unos días realicé una grilla LED multiplexada de 3x8 basada en Arduino RGB Controller. En mi caso no uso RGB sino fila1, fila2 y fila3. Si bien ya hice algunas animaciones agradables, no estoy muy contento con el resultado. La matriz es de 1m x 2,8m, planeo agregarla sobre una especie de "estudio de música en casa". Como saben, ¡visualizar cosas de audio es genial! Entonces, las animaciones estáticas en esa matriz LED serían inútiles si no siguieran el ritmo. Necesito agregar un analizador de espectro. Por suerte, todas las E/S analógicas son de uso gratuito. Otro punto que hace que esta cuadrícula sea perfecta para un analizador de espectro de 8 canales es el hecho de que puedo usar PWM en las 3 filas. Esto significa que tengo una cuadrícula de espectro teórico de 256 * 3 x 8. Naturalmente, la curva de 0-100% del brillo del LED no es lineal, eso se puede resolver usando una función exponencial simple.

En primer lugar, déjame decirte una vez más, no soy ingeniero electrónico y estoy haciendo todo lo posible para entender las cosas por mí mismo, pero en este caso no puedo hacerlo correctamente. Mi único sistema de medición es un multímetro limitado muy lento. También rompí un arduino hace algunos meses, así que no solo conecto cosas.

¿Puede el arduino crear un analizador de espectro usando solo un pin?

¡Sí! FHT

Y entonces comencé a leer sobre eso.

  1. Necesito de alguna manera convertir la señal de audio a 0-5V
  2. Necesito leer los datos en el ADC0 (canal de audio izquierdo) y hacer algunos cálculos y enviarlos a los LED.

Estoy atascado en el punto 1.

Cada salida de auriculares del dispositivo de audio tiene un máximo de diferimiento, por lo que necesito un potenciómetro. El voltaje de audio es de miliamperios bajos, pero también la mayor parte del tiempo de voltaje más bajo.

De los varios circuitos elegí el siguiente. Antes de conectarlo al arduino usé un zumbador para probar si salía algo. Sí, pero obtengo sonido si invierto GND con señal (Jack in) y también obtengo sonido si invierto la polaridad del capacitor C1. Tampoco hay ningún tipo de protección en este circuito, estoy atascado.

Nota.: También probé otros circuitos diferentes y obtuve siempre los mismos resultados, excepto que en este el potenciómetro no tiene efecto.

ingrese la descripción de la imagen aquí

Resultado:

Con una simple lectura analógica siempre obtengo 0 (CERO).

esquemático

simular este circuito : esquema creado con CircuitLab

Al leer más sobre el problema, encontré muchas publicaciones que usan amplificadores operacionales. Dado que mi tienda local de componentes electrónicos solo tiene una cantidad limitada de circuitos integrados, a veces compro circuitos integrados aleatorios si son compatibles con Arduino y otros microcontroladores. Y también rescato cosas viejas. Aquí hay una lista de componentes que podría usar.

  1. Amplificador operacional de propósito general MC1458 DUAL
  2. Amplificador de potencia de bajo voltaje DUAL TDA2822M
  3. Amplificador operacional único de propósito general UA741CN
  4. DAC de 12/10 bits de entrada serie doble AD7395

Como no tengo un osciloscopio y otras cosas profesionales para medir la corriente electrónica, espero que me puedan mostrar cómo conectar correctamente una señal de audio al ADC de mi microcontrolador .

Considera el hecho de que no sé nada. Una explicación compleja sin un esquema no ayudaría a resolver el problema para mí y probablemente para muchas otras personas.

La pregunta:

¿Cómo conectar CORRECTAMENTE un conector de auriculares estándar (reproductor de mp3) / cable de salida de audio a un pin de microcontrolador convertidor analógico a digital de 0-5V?

Problemas principales:

  1. Con los circuitos disponibles en línea probados, no obtengo lecturas del pin analógico 0. El pin analógico 0 funciona perfectamente (solo potenciómetro probado).
  2. Ahora, no quiero conectar algo a los pines del MC sin estar seguro de que emito 0-5V con el amperaje correcto.

Extra:

  1. No sé por qué siempre recibo la lectura 0 de Arduino incluso si puedo escuchar el zumbador.
  2. Nunca usé un amplificador operacional, así que no sé qué es la entrada inversora y la entrada no inversora.
  3. ¿Qué hace el condensador C1 y por qué funciona si invierto la polaridad? (zumbador)
  4. Los pines de cable de audio invertidos también producen el mismo sonido en un zumbador, ¿por qué?
  5. Estoy probando en un micro Arduino, pero la línea final se usaría en un micro Arduino, no estoy seguro de si es relevante.

EDITAR 1

Esto usa el mismo amplificador operacional que tengo

¡El ruido puede ser horrible!

https://bochovj.wordpress.com/2013/06/23/analisis-de-sonido-en-arduino/ https://bochovj.files.wordpress.com/2013/06/circuitschematics.png

EDITAR 2

Arduino Prescaler: hasta 19kHz, no 17 lo que he escrito en los comentarios.

http://apcmag.com/arduino-project-audio-spectrum-analyser.htm/

Pero al reducir el preescalador de 128 a 32, ahora aumentamos la frecuencia de muestreo en el mismo factor hasta 38,4 kHz. Gracias a Nyquist nuevamente, eso nos brinda un ancho de banda de audio de 19.2kHz, que está lo suficientemente cerca de la perfección de 20kHz.

EDITAR 3

esquemático

simular este circuito

¿Conoce MSGEQ7 ? ¿Sería útil?
Creo que no funcionaría con mi configuración... la rejilla de led ya usa casi todos los pines. el msgeq7 necesita más pines... entonces necesitaría un multiplexor externo ic... con FHT solo necesito un pin y tengo una matriz lista para usar en el software... eso me permite mostrar todo como quiero. También como dije mi el suministro eléctrico local es muy limitado... creo que no tienen un msgeq7...
También al final, el modo FHT es más preciso que el MSGEQ7, ya que permite hasta 256 bandas frente a 7. Todo en un solo pin.
Entonces, ¿ha calculado qué tan rápido necesita muestrear su ADC para resolver todas las frecuencias que desea? ¿Cuál es la velocidad del reloj y el tiempo mínimo de establecimiento del ADC? ¿Todo esto es compatible con sus requisitos?
Leí que los ejemplos muestran a 38 khz y eso sería hasta 17 khz en 256 bandas. si es eso lo que quieres decir... pero hasta que no obtenga una lectura analógica adecuada, no puedo continuar.
pero sí ... en el arduino ya configuré el preescalador timer1 en 1 para lograr los LED sin parpadeos ... así que ahora no estoy 100% seguro si agregar el cálculo FHT al código ralentizaría la multiplexación de LED ... .pero todo eso viene después... ahora necesito que mi arduino lea la señal de audio correctamente
¿tal vez el arduino micro es diferente al arduino uno?... estoy probando en arduino micro... el código final se pondrá en un arduino uno.
Lo que importa es el microprocesador, no la placa de desarrollo. Verifique las especificaciones de cualquier chip Atmel que use el Uno y también verifique el cristal. Eso debería decirle qué tan rápido puede procesar. Sospecho mucho que FHT introducirá un retraso notable.
sí, creo que ambos funcionan... no en el mejor de los casos, pero funcionan. uno funciona, micro>uno prolly también funciona... el procesador es casi el mismo arduinos usa cristales de 8/16mhz... unoµ 16mhz... El problema es el circuito. No hay señal, no hay prueba.
En mi ejemplo, necesito 8 bandas con 4 o más valores posibles cada una... así que no mucho. Puedo configurar el fht en 32 o probablemente también en 16 u 8.... esto debería disminuir el retraso
pero sí, la gente ya probó con muchas más bandas LED y lo que sea en arduino y funciona ... así que no creo que sea imposible. todos usan una matriz LED comercial... quiero usar la mía.
dice que el preescalador está configurado en 32... atm mi multiplexación LED está configurada en 1... pero necesito mantenerlo al menos en 8. eso podría ser un problema si el fht no puede funcionar a la vez mayor frecuencia

Respuestas (1)

Esto debería hacer lo que está pidiendo: toma el audio (acoplado por CA) y lo amplifica (invertido, pero eso no importa) con una ganancia variable de hasta aproximadamente 5.5 (use R1 para ajustar la ganancia). También polariza al centro la señal alrededor de 2,5 V (analogRead = 512 en el Arduino).

esquemático

simular este circuito : esquema creado con CircuitLab

Sin embargo, preste atención a los otros comentarios aquí con respecto a las tasas de muestreo y la cantidad de procesamiento necesario para obtener el resultado que desea. Además, no cambie el amplificador operacional sin pensarlo un poco: esa parte tiene una clasificación de entrada y salida de riel a riel, que necesitará para usar el rango de entrada completo del ADC de Arduino.

Mi suministro de shure no tiene ese opa344... ¿puedo hacer lo mismo con los ic que mencioné? UA741CN, MC1458??
No, necesita un amplificador operacional con una salida que pueda oscilar muy cerca de sus rieles de voltaje, conocido como amplificador operacional de salida de riel a riel (RRO o, a veces, R / RO). Ninguno de los opamps que enumera es adecuado. Pero el que he sugerido está disponible en CPC, Farnell, Mouser, Digikey, RS, es de bajo costo y viene en un paquete DIP para facilitar la creación de prototipos.
Y esa solución de mezcla de condensadores de resistencia (donde publiqué los esquemas) ... ¿por qué eso no funciona en mi arduino micro?
El único esquema que tiene en línea debería haber funcionado parcialmente, aunque no con una oscilación completa de 0 a 5 V ya que no hay ganancia (y de hecho hay atenuación, lo que no ayuda). Debería haber leído 512 (o algo así) casi todo el tiempo, con pequeñas variaciones hacia arriba y hacia abajo. Sin embargo, habría tenido que asegurarse de que la entrada de tierra de audio estuviera conectada a la tierra de Arduino; esto no está muy claro en su esquema.
No pude encontrar un conector de audio adecuado... de todos modos, hay una línea que comienza en una de las entradas de audio (-), pasa a través de algunas tapas y resistencias y entra en la tierra de arduino (GND).
También debe conectar la tierra de audio directamente a la tierra de Arduino; de lo contrario, el circuito no tiene referencia de entrada.
el audio - está conectado a tierra. el suelo es lo único que hay que compartir con todos los componentes... así que sí. el gnd está conectado. si me dices donde encontrar los triangulos que representan el suelo vuelvo a dibujar los esquemas... si prefieres triangulos
triángulos añadidos
Excelente, bueno, como dije, eso debería haberle dado lecturas de alrededor de 512 pero sin ganancia, por lo que no hay un swing completo de 0-5V.
legible ?? factible ... quiero decir, ¿sería suficiente para que se encienda el gráfico de barras ... de una manera no superprecisa? Aparentemente, no obtengo lecturas 512 ...
Es un poco marginal: el rango de voltaje de modo común de entrada solo se extiende hasta 3,7 V a 5 V Vcc, y 2,5 V + alrededor de 1 V pico de línea = 3,5 V, que es demasiado cerca para mi gusto.
también en el opa344, ¿es un problema si toca los 5,5 voltios en un microcontrolador, ya que solo permiten un máximo de 5 voltios? -¿Y sobre el ts942in si agrego una segunda fuente de alimentación de 7-8 voltios?
por cierto, ya lo hice funcionar con la versión ic less... el rango es muy bajo... el ruido toca hasta 120 de 1024... y la cantidad es solo alrededor de 10-20... ya tengo una buena animación
No sé dónde estarían los 5.5V en su microcontrolador; generalmente funcionan a 5V. Sí, la parte alternativa funcionará con una segunda fuente de alimentación de 7-8 V, pero luego deberá limitar la salida a un máximo de 5 V para proteger el micro. Realmente recomendaría ir con el opa344.
el opa sube a 5.5v? También tengo algunos equipos de DJ profesionales... y la salida de auriculares puede ser muy alta... así que creo que maximizar el opa344 o lo que sea
¿Cómo podría hacerlo, si está alimentado por 5V y es un dispositivo lineal? El voltaje de salida máximo no puede exceder el voltaje del riel para un opamp normal.
ah seguro que sí... lo siento. si le doy al opa max 5v me sale max 5v