¿Cómo obtengo + 5v para ruido fuerte, 0v para silencio del micrófono Electret (u otros componentes)?

12

He estado haciendo algunas preguntas aquí para llegar a una adecuada, las preguntas iniciales que hice están vinculadas al final. Usé Fritzing para hacer algunos esquemas de mis pensamientos iniciales, pero al menos necesito ayuda con los valores de los componentes, que solo entiendo vagamente y seleccioné lo que parecen ser valores razonables o comunes.

Básicamente, tengo un Arduino que tiene 6 entradas analógicas. Utiliza un ADC de 10 bits para leer el voltaje en cualquiera de los pines analógicos, por lo que 0 = 0v, 511 = 2.5v y 1023 = 5v, y todos los valores intermedios. Hace una lectura LINEAR DC, así que no estoy buscando lógica 1-0 aquí.

Tengo esto conectado a las luces LED, y quiero que respondan a la música. Lo que quiero es una resolución máxima con componentes mínimos, y creo que estoy usando WAY demasiados componentes y haciendo que WAY sea demasiado complejo. Quizás los micrófonos Electret no son lo que quiero aquí, estoy abierto a otra cosa. Prefiero no usar amplificadores operacionales para ahorrar espacio en mi PCB.

Lo que quiero es un sensor de nivel de ruido simple. No estoy buscando reproducir el audio, ni tener claridad ni nada, pero me gustaría, lo más cerca que pueda estar:

  • Silencio perfecto = lo más cercano posible a 0v DC (estable, no AC)
  • Ruido medio = alrededor de 2.5v DC (estable, no AC)
  • Ruido fuerte = lo más cercano posible a 5v DC (estable, no AC)

Entiendo con un BJT que lo mejor que puedo obtener será de 0.6v a 4.4v, pero esto es lo suficientemente aceptable. Lo que no es, sin embargo, es la mitad de la onda, 0.6v a 2.5v. Esto parece estar desperdiciando la mitad de mi resolución disponible sin ninguna razón. Sin embargo, si hay otras configuraciones además de un BJT que me pueden acercar a 0v-5v, estaría interesado en darles una oportunidad; siempre y cuando sean simples.

Aquí hay uno más simple, que espero que sea posible, pero requiere que la señal de electret tenga suficiente amplitud para conducir el circuito detector de envolvente (diodo, resistencia y condensador) para obtener solo la mitad positiva. No creo que pueda debido a la caída hacia adelante del diodo, pero ¿tal vez esto se pueda reorganizar o hacer antes del límite de salida? ¿Cuáles deberían ser los valores del detector de envolvente y las resistencias del amplificador? ¿Debería colocarse un potenciómetro de sensibilidad en la señal, o RE, o RL, y cuál debería ser su valor? Lineal o Logarítmico?

Sencillo

Sin embargo, tal vez la salida del electret no puede sobrevivir al detector de envolvente, la derivación de sensibilidad y aún así conducir un transistor NPN. Si no, aquí hay una versión más compleja. ¿Necesito ir por esta ruta? ¿Obtener mi salida deseada del circuito realmente requiere todos estos componentes?

Complejo

Estas son algunas de las preguntas anteriores que hice antes de comprender mejor lo que estaba tratando de articular, para obtener más detalles. Esto es lo que se supone que debe hacer el detector de envolvente, y no estoy seguro de cómo ajustarlo para la salida de electret:

Detector de sobres Diagrama de circuito

Ehryk
fuente
Creo que esto sigue siendo bastante amplio. La pregunta que debe hacerse es "¿qué significa que un sonido sea alto?" La percepción humana del volumen es compleja y puede depender de la frecuencia, la duración del sonido, el estado de ánimo, el consumo de café, etc. La percepción humana del "silencio" también depende en gran medida del ambiente y el ruido ambiental. Tendrá que traducir estas percepciones subjetivas en definiciones más objetivas antes de poder realizar un circuito eléctrico para medirlas.
Phil Frost
Estos son algunos términos de búsqueda que ayudarán: "detector de pico", "circuito RC", "constante de tiempo", "frecuencia de esquina", "filtro de paso bajo", "dB SPL"
Phil Frost,
Tengo ese potenciómetro de sensibilidad en el diseño para dar cuenta de eso (debe ser lo suficientemente amplio como para que pueda ser 'efectivamente todo silencioso' o 'siempre ruidoso', y puedo sintonizar desde allí). Sin embargo, no sé si debería estar en lugar de RL, RE (control de ganancia o algo), o desviar la señal. No sé cómo más puedo ser más específico, ¿podría ayudarme a aclarar qué más se necesita?
Ehryk
1
Si cambia el voltaje de referencia ADC del controlador al intervalo de banda 2V56, no necesita el voltaje de salida 0-5V. Alcanzará una resolución completa de 0 - 2.56V. Dependiendo del controlador exacto, tiene varios voltajes de banda prohibida para usar como referencia.
jippie
1
Busque "rectificador activo de señal pequeña" y encuentre un circuito como techonlineindia.com/Libraries/tol/Signal3.sflb.ashx que elimine el voltaje de umbral de diodo de la ecuación.
jippie

Respuestas:

27

Aunque podría hacer todo esto solo con un amplificador y un microcontrolador (Arduino), por lo que puedo ver, desea la opción analógica. He intentado crear un circuito que emita el nivel de voz en el micrófono. El rango es de 0V a 4V. Sin embargo, puede actualizarlo fácilmente de 0V a 5V simplemente cambiando el OP-AMP. Ahora, vamos a ello;

En primer lugar, he reemplazado el amplificador de transistores con el OP-AMP. Esto es lo que se me ocurrió;

ingrese la descripción de la imagen aquí

Este es un amplificador inversor simple con una ganancia de 100. Aquí está la fórmula para calcular la ganancia;

Vout=RfRinVin=100kRinVin=100Vin

Como puede ver, U1 toma la señal de entrada, la invierte y luego la multiplica por 100. Puede cambiar R2 o R3 y verá que la ganancia de U1 cambia. La inversión de la señal de entrada no importa aquí, como comprenderá más adelante. Miremos la salida de este amplificador y verá que hay un gran crecimiento en la señal de entrada.

ingrese la descripción de la imagen aquí

En el gráfico anterior, verá que la salida tiene un voltaje de compensación de CC de 2.5 voltios. Eso se debe al terreno virtual que hemos utilizado. Si creamos una tierra virtual, eso significa que llevamos la tierra a otro nivel de voltaje. En este caso lo hemos movido a 2.5 V. Con la nueva configuración, hemos creado algo que se ve como -2.5 V, 0 V y 2.5 V al circuito. Para lograr esto, tuve que crear un nuevo riel de voltaje de 2.5 voltios. Dado que ese riel de voltaje no suministrará mucha energía (menos de 1 mA), es fácil de crear;

ingrese la descripción de la imagen aquí

Observe la retroalimentación negativa en el circuito anterior. Eso le dará al OP-AMP la orden de hacer . OP-AMP hará todo lo posible para lograr esta ecuación. Por lo tanto, la salida será de 2.5 V, o en otras palabras, la mitad de la tensión de alimentación. Y ese es nuestro nuevo punto de partida.V+=V

Después de la amplificación, debemos poner la señal en un "detector de envolvente" o, en otras palabras, "seguidor de envolvente". Esto obtendrá el nivel de la señal, como lo desee y como lo mostró en la imagen de su pregunta. Así es como se ve un seguidor de sobres básico:

ingrese la descripción de la imagen aquí

Se ve muy bien, sin embargo, tenga en cuenta que aquí, D3 es un diodo y deja caer aproximadamente 0.6 V sobre sí mismo. Entonces, pierdes el voltaje. Para superar esto, vamos a utilizar lo que se llama el "super-diodo". ¡Es súper, ya que la caída de voltaje es casi 0V! Para lograr eso, incluimos un OP-AMP con un diodo, ¡y eso es todo! El OP-AMP compensará la caída de voltaje del diodo, y tendrá un diodo casi ideal;

ingrese la descripción de la imagen aquí

Como hay retroalimentación negativa en esta configuración, U5 hará todo lo posible para hacer . Entonces, siempre que la entrada sea de 3V, hará que su salida sea de 3.6V para compensar con la caída de voltaje de 0.6V en D3. Entonces, la salida de este super diodo, por lo tanto, la entrada será igual a su voltaje de entrada . Sin embargo, cuando la entrada es negativa, D3 no permitirá que U5 haga que la salida sea negativa. También tenga en cuenta que el raíl negativo para U5 es GND, que es 0 V. Ya no podrá ir por debajo de 0 V en ningún caso. ¡Funciona como un diodo ideal!V+=VVVV+

Ahora, cambie D3 en el circuito seguidor de envolvente anterior con un super diodo, ¡y tendrá un mejor seguidor de envolvente! Veamos nuestro resultado;

ingrese la descripción de la imagen aquí

Nos estamos acercando. Como puede ver, la salida del seguidor de envolvente, que es la línea roja, puede ir de 2.5 V a 4 V. 2.5 V no tiene sonido, 4 V tiene un sonido alto y 3.25 V para un sonido medio. Para escalar eso a lo que ha deseado, podemos restar 2,5 V de voltaje de compensación y escalarlo. Entonces, cuando restas 2.5 V, se convierte en; 0 V para no sonido, 1.5 V es de sonido fuerte y 0.75 V para sonido medio y así sucesivamente. Después de eso, si multiplica esto por aproximadamente 3, obtendrá lo que desea exactamente. 0 V para ningún sonido, 2.5 V para sonido medio y 5 V para sonido fuerte. En resumen, lo que queremos es esto;

Vout=(Vin2.5V)3

Para lograr esto, utilizaremos un amplificador diferencial o, en otras palabras, un " sustractor ".

ingrese la descripción de la imagen aquí

Cuando resistencias, R1 = R2 y R3 = R4, la función de transferencia para el amplificador diferencial se puede simplificar a la siguiente expresión:

Vout=R3R1(V2V1)

Si haces V1 = 2.5V y R3 / R1 relación 3, obtendrás la salida que deseas.

Aquí está el esquema completo que hará lo que quieras:

ingrese la descripción de la imagen aquí

He usado LM324 OP-AMP aquí para fines de simulación. Eso limitará el voltaje de salida máximo a 4V. Para tener una salida de rango completo, debe usar un OP-AMP de salida de riel a riel. Sugeriría MCP6004 . Cambie R1 y R2 hasta obtener el resultado deseado. Esto es lo que obtuve con la simulación:

ingrese la descripción de la imagen aquí

Ahora, al medir estos valores en ADC, no obtendrá un sentido lineal , en cambio, el sonido se entiende mejor logarítmico, ya que nuestros oídos escuchan de esa manera. Entonces, debes usar decibelios . Si no está familiarizado con los decibelios, aquí hay un gran video tutorial al respecto.

Una habitación silenciosa, por ejemplo, se mide alrededor de 40 dB. Una fiesta en una sala hará que el nivel de la sala suba a 100 dB, o quizás 110 dB. En este sitio web , puede encontrar gran información al respecto, desde donde también he incrustado la imagen de abajo. Piense en los niveles de decibelios y experimente con la salida de voltaje del circuito. Luego, calcule la resolución ADC que necesitará. Probablemente, estarás bien con un ADC de 12 bits.

ingrese la descripción de la imagen aquí

abdullah kahraman
fuente
55
Esta es una respuesta fenomenal; si SE tuviera un salón de la fama, lo nominaría. ¡Gracias por ser muy preciso y explicativo! ¿Cómo está generando esas imágenes, una captura de un osciloscopio, un software de alcance de PC o un algoritmo de resolución?
Ehryk
1
@Ehryk Gracias, pero estás exagerando :). Es LTSpice que uso.
Abdullah Kahraman
@Ehryk Actualicé mi respuesta y agregué más información sobre la medición del sonido.
Abdullah Kahraman
¡Use circuitlab para poder compartir y hacer que la gente ejecute simulaciones inmediatamente! Te daré 50 repeticiones por ello.
Kortuk
1
@Kortuk No pude simularlo correctamente .. Enlace de CircuitLab
abdullah kahraman
7

Parece que estás en el camino correcto. Se hace tomar una gran cantidad de componentes discretos de hacer este tipo de cosas. Puede que no me creas, pero el uso de amplificadores operacionales puede hacer que todo esto sea más simple y más pequeño. Estoy seguro de que puede encontrar circuitos integrados aún más específicos que hacen más de lo que necesita en un paquete más pequeño. Apuesto a que hay un IC que hace exactamente lo que necesitas. Sin embargo, aprenderá más si continúa sin ellos, aunque solo sea por valor académico.

También puede simplificar algo de esto moviendo la lógica al microprocesador. La detección de envolventes es fácil en el software y, dependiendo de cuán preciso sea necesario y la sensibilidad de su micrófono, incluso podría saltarse la omisión del amplificador después del micrófono y poner su salida directamente en el ADC. Esto no te dará 0V-5V, pero ¿eso importa? Puedes multiplicarlo por una constante en el software. Lo que pierde es la precisión de tener disponible todo el rango del ADC, pero tal vez eso no sea tan importante como la simplicidad. Tú decides.

Phil Frost
fuente
No le creo que los amplificadores operacionales puedan hacerlo de manera más simple, estaba tratando de minimizar los bienes inmuebles de PCB. Sin embargo, se está volviendo dolorosamente obvio que una inmersión de 8 pines LM358 será DRÁSTICAMENTE más simple. También me pregunto si un micrófono electret también es una mala elección; Parece ridículo que un deseo tan simple (sensación de volumen, 0V-5V) sea absurdamente complejo.
Ehryk
Un electret por sí solo da ~ 20mV pico-pico. Con el ADC de Arduino, se trata de una diferencia de dos, desde perfectamente silencioso hasta lo más ruidoso posible (resolución de 4.9mV, si 511 cuando está en silencio, 513 a 509 a todo volumen). Quiero buenos rangos de sensibilidad, no "Silencioso / Medio / Fuerte" como los únicos gradientes, y eso supone que la línea era perfectamente estable.
Ehryk
@Ehryk si solo quieres mantener las cosas pequeñas, estoy seguro de que puedes encontrar el LM358 (o cualquier otro amplificador operacional común) en un paquete de montaje en superficie grande como SOIC . Mucho fácil de soldar a mano con buenas herramientas, y no tiene que perforar agujeros. A menos que compre un sensor que ya hace exactamente lo que necesita, dudo que lo haga de manera más simple que un micrófono electret y que mueva todo menos la polarización y la amplificación al microcontrolador.
Phil Frost
4

En primer lugar, no necesita el arduino a menos que necesite hacer más procesamiento: todo lo que realmente desea es un amplificador (un amplificador operacional lo haría, un montón de circuitos básicos en todas las gafas) para aumentar la salida del micrófono en el rango 0-5v. Si no está demasiado preocupado por la precisión (ya que esto es por diversión en lugar de una medición científica), puede usar un circuito de recorte bastante básico, canalizar la salida en un disparador schmitt o usar un LM3914 para generar una pantalla.

Se podría obtener un poco más de delicadeza haciendo un circuito AGC para aumentar y disminuir automáticamente la ganancia con el nivel promedio.

Lo que sea, obtienes un gran karma positivo abandonando el arduino y haciéndolo de forma análoga como la naturaleza pretendía;)

Editar: Lo más probable es que también haya muchos circuitos de "preamplificador de micrófono" en la web, probablemente un chip SOT23 de $ 0.10 para que lo haga por usted en estos días ...

John U
fuente
El arduino está controlando una matriz de LED con 5 de sus pines PWM, y lo haré parpadear con diferentes letras / patrones con brillos de varias fracciones de la entrada de ruido. Entonces, se requiere el arduino, y de alguna manera necesito decirle, con buena resolución, qué tan fuerte es para que pueda transmitir el patrón a diferentes grados de brillo para la música. Realmente no sé de qué se trata sin un diagrama de circuito.
Ehryk
No se obsesione con los diagramas de circuitos, estoy describiendo circuitos que son bloques de construcción básicos, que aparecen en cada libro de texto, un google rápido debe activar circuitos básicos para diversas funciones (preamplificador, AGC, clipper, etc.), así como la mayor cantidad de música disco (circuitos de ecualización gráfica, controladores de pantalla, órganos de luz, etc.) que ha sido el tema de la electrónica de hobby desde que se inventó Disco.
John U
El problema es que hay demasiados ejemplos, con diferentes componentes y 'características', vagamente descritos o no descritos en absoluto. Los diagramas específicos con alguna explicación acerca de por qué se seleccionaron ciertos componentes y se alcanzaron los valores es lo que considero más útil, y lo que generalmente pido en mis preguntas. Esta respuesta fue fenomenal y extremadamente útil, por ejemplo.
Ehryk
Estás pidiendo lego, te ofrezco un trozo de plástico y un bisturí, es un enfoque diferente.
John U
2
... y estoy respondiendo con el hecho de que ya tengo 10 trozos de plástico y mi propio bisturí, y puedo obtener cientos más buscando. Además, pedí específicamente un lego en la pregunta, y estás diciendo 'no esperes legos'.
Ehryk