¿Cómo leer audio de un conector de 3,5 mm?

Una pregunta aparentemente simple que tiene una gran cantidad de respuestas en toda la web.

Objetivo: Estoy tratando de diseñar un dispositivo que pueda leer audio analógico y extraer distribución de frecuencia. No me importa la amplitud absoluta, solo la amplitud relativa, es decir, solo estoy tratando de comparar la intensidad de ciertas frecuencias en una señal de audio dada.

Por qué las otras respuestas no son suficientes: todas las respuestas que he encontrado no parecen abordar el problema de la diferencia de voltaje pico a pico entre dispositivos y configuración de volumen a configuración de volumen. Mi dispositivo se colocará entre la fuente y el altavoz, por lo que debe poder recalibrarse cuando se cambia el volumen. También se utilizará con al menos tres dispositivos diferentes: mi computadora de escritorio, computadora portátil y teléfono. El voltaje P2P a volumen máximo en las salidas de auriculares de estos 3 dispositivos varía de cientos de mV a 4V. Tengo entendido que existen otros dispositivos con voltajes P2P tan altos como 12V. Me gustaría diseñar con esos dispositivos en mente también.

Tengo la intención de usar el ADC en mi MCU con rango 0-3V3.

Si aún no estaba claro, de ninguna manera soy un ingeniero eléctrico y mi comprensión es bastante limitada y no he podido idear una manera de hacer que esto funcione. El problema, tal como lo veo, es que necesito un circuito que ajuste la ganancia y la compensación de CC de manera adecuada en función de la fuente.

Mis pensamientos hasta ahora: mi solución actual es usar dos amplificadores operacionales como detector de picos y usarlos para agregar una compensación de CC a la señal usando otro amplificador operacional como amplificador inversor. La ganancia de este amplificador se ajustará usando un potenciómetro digital que está siendo controlado por la MCU. El amplificador comienza con la ganancia máxima y sigue bajando hasta que el pico de la señal es inferior a 3V3. La solución tiene la ventaja de que, con solo presionar un botón, puedo restablecer el detector de picos e indicarle a la MCU que comience la recalibración. No estoy en absoluto casado con esta solución (estoy preguntando cómo resolver mejor mi objetivo, no cómo arreglar la solución).

Mi solución

Sin embargo, no estoy seguro de cómo proteger mi MCU de daños por voltajes de entrada superiores a 3V3 (ya que el método de calibración se basa en comenzar por encima de 3V3 y bajar).

¿Qué voltajes de fuente de alimentación tiene en su diseño?
@ThreePhaseEel, realmente no importa qué voltajes de suministro se estén utilizando. Si la señal de entrada se recorta de manera protectora a los voltajes de suministro, los dispositivos están protegidos independientemente del voltaje específico.
@RichardCrowley: pido tener una idea de qué partes se pueden usar en este diseño :) (estar con un suministro único de 5 V o 3.3 V para el lado analógico es una restricción diferente a poder ejecutar su AFE fuera de +/-15V, incluso con el ADC en ambos casos siendo una unidad de 0-3.3V)
Tengo un +12V, un +3V3 y 0V en mi diseño actual. Había planeado que los amplificadores operacionales se ejecutaran en +12V/0V y la MCU (y el ADC, ya que está integrado) funcionando a 3V3/0V.
No soy un experto, solo estoy lanzando la idea de que lo que describe debe ser cómo funciona un AGC, ¿no es así?
No los había encontrado en mi búsqueda, me has dado algo más para investigar. Sin embargo, según mi breve lectura de los AGC, parece que conservan la frecuencia pero distorsionan la amplitud. Quiero poder notar la diferencia en la intensidad de varias frecuencias no solo en un intervalo de tiempo determinado sino también en múltiples intervalos. Una vez calibrada, la unidad no debería cambiar la ganancia hasta que se vuelva a calibrar.
¿Puede obtener un suministro de -12V en su diseño? (No tiene que ser fornido, solo tiene que estar allí; 25 mA harán el trabajo bastante bien aquí)
No estoy muy seguro de cómo. Esta cosa se apagará con un adaptador de CC de 12 V (los bloques de alimentación que son casi omnipresentes). Tengo un regulador de conmutación DCDC reduciéndolo a 3v3. No veo cómo podría agregar -12V fácilmente . Aunque supongo que podría hacerse con un poco de trabajo de diseño adicional. ¿Por qué es necesario? ¿Los amplificadores operacionales no funcionarán bien en 12v/0v ya que no me importa la parte negativa de la señal?
@ApoorvaKharche: tener un suministro dual abre sus opciones con respecto a: selección de IC. Una bomba de carga inversora o DC-DC puede generar fácilmente -12V a partir de sus +12V, por cierto.

Respuestas (1)

Estás en el camino correcto. Es muy poco probable que las señales de audio con sobrevoltaje causen algún tipo de "daño" a la CPU o al ADC. Lo peor que puede pasar es que la señal sea "recortada" o "aplanada", lo que causará distorsión. Entonces puede escribir el firmware para su aplicación para buscar una secuencia extendida de mínimo (cero) o máximo (¿reveló su resolución digital?) Y reducir la ganancia de la etapa de entrada. O, por el contrario, detecte un nivel de audio promedio que sea demasiado bajo y aumente la ganancia, etc. Es posible que esté anticipando "problemas" que en realidad no son "problemas".

Gracias por su respuesta. Todavía no me he decidido por un buen equilibrio entre frecuencia de muestreo y resolución, así que dejé esa parte fuera de discusión. No creo que sea un gran problema, en su mayoría es solo un problema tangencial que tendré que resolver en función de un poco más de muestreo de datos y matemáticas básicas. Sí, sentí que podría estar pensando demasiado en esto. Muy pocos dispositivos van a tener voltajes extremadamente altos, y la mayoría probablemente estará cerca de 500mV-1V RMS. Pero he tenido demasiados proyectos que fallan porque olvido que existen casos extremos, por lo que me gusta considerarlos y diseñar para ellos si es posible.
Sí, es muy admirable considerar los casos extremos y tienes toda la razón al hacerlo. Sin embargo, está trabajando con una suposición incorrecta de que las señales de entrada de gran amplitud serán "dañinas" de manera significativa.
No estoy seguro de entender por qué no lo serán. ¿Es porque no hay ninguna corriente real que se esté ejecutando en el ADC (siempre que haya un menú desplegable)?
Los convertidores de analógico a digital necesitan muy poca corriente de señal para funcionar correctamente. Por lo tanto, puede usar una resistencia de entrada en serie de alto valor relativo para reducir la corriente de falla de sobrevoltaje de entrada. Y utilice diodos para sujetar la señal de entrada a un nivel seguro. Si detecta que la señal de entrada está siendo bloqueada por el circuito de protección, simplemente reduzca el nivel por medio de su potenciómetro digital.
Ni siquiera pensé en poner una abrazadera de diodo en el extremo exterior. En retrospectiva, esa fue una solución bastante obvia. Especialmente porque no necesita ser muy preciso, solo dentro de la tolerancia de los pines MCU GPIO. Y también hace que la detección de recorte sea mucho más fácil si usa un transistor para una de las abrazaderas y configura una interrupción en un pin GPIO digital. Gracias.
No puedo editar mi comentario anterior, pero en caso de que no fuera obvio, estaba pensando en usar un diodo y un BJT como abrazadera en lugar de un solo diodo zener. Me ahorra un poco de complejidad en el firmware. Con el BJT, solo reduzco la ganancia en una interrupción en lugar de verificar activamente cualquier condición en particular. Estoy pensando en algo como: i.imgur.com/V1FQkjS.png Parece un poco sospechoso y lo probaría en un simulador SPICE, pero he estado un poco frustrado con LTspice, y no tengo acceso a PSPICE nuevamente hasta agosto.
Usar un transistor muy "aguas abajo" parece más complejo y más peligroso. El uso de abrazaderas de diodo simples en la ENTRADA (antes de cualquier circuito activo) lo protege contra la sobretensión. El uso de ese transistor en sentido descendente no hace nada por la protección.
Me di cuenta de eso, eventualmente. Como se indicó anteriormente, no tengo un aprendizaje formal y, en su mayoría, solo me tambaleo con la mayoría de estas cosas de circuitos analógicos. En este momento, mi plan se ve bastante diferente al anterior. El cambio más grande que he hecho es asumir que la señal de entrada será de 6V pp como máximo, y solo encenderá un LED enojado al usuario si es más que eso. Me deshice del detector de picos porque es superfluo si estoy sujetando la señal justo antes del ADC. Moví mis opamps a +3v3/-3v3 en lugar de 12V/0V y agregué dos zeners antes del primer opamp.
Lo que tengo hasta ahora: tinyurl.com/h4xd979 Sin duda todavía hay margen de mejora. Y no estoy muy seguro de cómo haría para que los LED enojados parpadeen cuando se activa la protección Zener al comienzo del circuito, no hay suficiente corriente que fluya allí para poder colocar un LED allí. Bueno, no debería haber? No estoy del todo seguro. También tuve que mover el potenciómetro digital ya que todos los potenciómetros pdip parecen tener el mismo voltaje máximo según las especificaciones en sus pines. Esa fue la razón principal para excluir cualquier señal superior a 6v pp.