12 votos

¿Cómo obtengo +5v para ruido fuerte, 0v para silencio desde un micrófono de electret (u otros componentes)?

He estado haciendo algunas preguntas aquí para llegar a una correcta, las preguntas iniciales que hice están vinculadas al final. Utilicé Fritzing para armar algunos esquemáticos de mis pensamientos iniciales, pero al menos necesito ayuda con los valores de los componentes, que solo entiendo vagamente y elegí 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. Realiza una lectura DC LINEAL, por lo que no estoy buscando lógica 1-0 aquí.

Tengo esto conectado a luces LED, y quiero que respondan a la música. Lo que quiero es máxima resolución con componentes mínimos, y creo que estoy usando DEMASIADOS componentes y haciendo esto DEMASIADO complejo. Quizás los micrófonos Electret no sean lo que quiero aquí, estoy abierto a otra cosa. Preferiría no usar op-amps para conservar 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 obtener:

  • Silencio perfecto = lo más cerca posible de 0v DC (estable, no AC)
  • Ruido Medio = Alrededor de 2.5v DC (estable, no AC)
  • Ruido Fuerte = lo más cerca posible de 5v DC (estable, no AC)

Entiendo que con un BJT lo mejor que puedo obtener será de 0.6v a 4.4v, pero esto es aceptable. Sin embargo, lo que no es aceptable es la mitad de la onda, de 0.6v a 2.5v. Parece que estoy desperdiciando la mitad de mi resolución disponible sin motivo. Sin embargo, si hay otras configuraciones que un BJT que puedan acercarme a 0v-5v, estaría interesado en intentarlas; 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 impulsar el circuito detector de envolvente (diodo, resistor y capacitor) para obtener solo la mitad positiva. No creo que pueda debido a la caída directa del diodo, pero ¿tal vez esto se puede reorganizar o hacer antes del capacitor de salida? ¿Cuáles deberían ser los valores de los resistores del detector de envolvente y 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?

Simple

Sin embargo, tal vez la salida de electret no pueda sobrevivir al detector de envolvente, a la derivación de sensibilidad y aún impulsar un transistor NPN. Si no, aquí hay una versión más compleja. ¿Necesito seguir este camino? ¿Realmente requiere todos estos componentes para obtener la salida deseada del circuito?

Complejo

Aquí hay algunas de las preguntas anteriores que hice antes de comprender más completamente lo que estaba tratando de articular, para más detalles. Aquí está 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 Envoltura Diagrama del Circuito

7voto

Kip Diskin Puntos 11

Pareces estar en el camino correcto. Se necesitan muchos componentes discretos para hacer este tipo de cosas. Puede que no me creas, pero el uso de op-amps puede hacer que todo esto sea más simple y más pequeño. Estoy seguro de que puedes encontrar circuitos integrados aún más específicos que hagan más de lo que necesitas en un paquete más pequeño. Apuesto a que hay un CI por ahí que hace exactamente lo que necesitas. Sin embargo, aprenderás más si sigues sin ellos, incluso si solo es por valor académico.

También puedes simplificar algunas de estas cosas moviendo la lógica al microprocesador. La detección de envolvente es fácil en software, y dependiendo de qué tan preciso necesitas ser y la sensibilidad de tu micrófono, incluso podrías prescindir del amplificador después del micrófono, y poner su salida directamente en el ADC. Esto no te dará de 0V a 5V, pero ¿importa? Puedes multiplicarlo por una constante en el software. Lo que pierdes es la precisión de tener todo el rango del ADC disponible, pero tal vez eso no es tan importante como la simplicidad. Tú decides.

4voto

Mario Puntos 191

En primer lugar, no necesitas el arduino a menos que necesites hacer más procesamiento; todo lo que realmente necesitas es un amplificador (un amplificador operacional serviría, hay un montón de circuitos básicos en todo internet) para amplificar la salida del micrófono en el rango de 0-5v. Si no te preocupa demasiado la precisión (como si esto fuera más por diversión que por medición científica), puedes utilizar un circuito de recorte bastante básico, enviar la salida a un disparador de Schmitt, o usar un LM3914 para generar una pantalla.

Un poco más de sofisticación se podría lograr haciendo un circuito de AGC para ajustar automáticamente la ganancia hacia arriba y hacia abajo con el nivel promedio.

De cualquier manera, obtienes una gran karma positiva al deshacerte del arduino y hacerlo de forma analógica como la naturaleza lo concibió ;)

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

3voto

Christian Berg Puntos 7039

Aunque podrías hacer todo esto con solo un amplificador y un microcontrolador (Arduino), por lo que veo, prefieres la opción analógica. He intentado crear un circuito que genere la señal de nivel de voz en el micrófono. El rango va desde 0V hasta 4V. Sin embargo, puedes mejorarlo fácilmente a un rango de 0V a 5V simplemente cambiando el OP-AMP. Ahora, entremos en ello;

En primer lugar, he reemplazado el amplificador de transistor con el OP-AMP. Aquí está lo que se me ocurrió;

introducir la descripción de la imagen aquí

Se trata de un amplificador inversor simple con una ganancia de 100. Aquí tienes la fórmula para calcular la ganancia;

$$ V_{out}=-\dfrac{R_f}{R_{in}}*V_{in} = -\dfrac{100k}{R_{in}}*V_{in} = -100*Vin $$

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

introducir la descripción de la imagen aquí

En el gráfico anterior, verás que la salida tiene un voltaje de polarización de CC de 2.5 voltios. Eso es debido a la tierra virtual que hemos utilizado. Al crear una tierra virtual, estamos llevando la tierra a otro nivel de voltaje. En este caso, la hemos movido a 2.5 V. Con la nueva configuración, hemos creado algo que *parece ser* -2.5 V, 0 V y 2.5 V para el 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;

introducir la descripción de la imagen aquí

Observa la retroalimentación negativa en el circuito anterior. Eso le dará al OP-AMP la orden de hacer \$V+=V-\$. El 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 del voltaje de alimentación. Y ese es nuestro nuevo punto de tierra.

Después de la amplificación, debemos colocar la señal en un "detector de envolvente" o, en otras palabras, "seguidor de envolvente". Esto determinará el nivel de la señal, tal como deseas y como mostraste en la imagen de tu pregunta. Así es como luce un seguidor de envolvente básico:

introducir la descripción de la imagen aquí

Se ve genial, sin embargo, observa que aquí, D3 es un diodo y cae alrededor de 0.6 V por sí mismo. Por lo tanto, pierdes voltaje. Para superar esto, vamos a usar lo que se llama el "superdiodo". ¡Es super, ya que la caída de voltaje es casi 0V! Para lograrlo, incluimos un OP-AMP con un diodo, ¡y eso es todo! El OP-AMP compensará la caída de voltaje del diodo y tendrás un diodo casi ideal;

introducir la descripción de la imagen aquí

Dado que hay una retroalimentación negativa en esta configuración, U5 hará todo lo posible para hacer \$V+=V-\$. Entonces, cada vez que la entrada es, digamos, 3V, hará que su salida sea 3.6V para compensar la caída de voltaje de 0.6V en D3. Por lo tanto, la salida de este superdiodo, y por lo tanto la entrada \$V-\$ será igual a su voltaje de entrada \$V-\$. Sin embargo, cuando la entrada \$V+\$ es negativa, D3 no permitirá que U5 haga que la salida sea negativa. También hay que tener en cuenta que el riel negativo para U5 es GND, que es 0 V. No podrá ir por debajo de 0 V en ningún caso, de todos modos. ¡Funciona exactamente como un diodo ideal!

Ahora, cambia D3 en el circuito de seguidor de envolvente anterior con un superdiodo y tendrás un mejor seguidor de envolvente. Veamos nuestro resultado;

introducir la descripción de la imagen aquí

Estamos cerca. Como puedes 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 es sin sonido, 4 V es con sonido fuerte y 3.25 V para sonido intermedio. Para ajustar eso a lo que deseas, puedes restar el voltaje de polarización de 2.5 V y ajustarlo. Por lo tanto, al restar 2.5 V, se convierte en; 0 V para sin sonido, 1.5 V para sonido fuerte y 0.75 V para sonido intermedio y así sucesivamente. Después de eso, si multiplicas esto por aproximadamente 3, obtendrás exactamente lo que deseas. 0 V para sin sonido, 2.5 V para sonido intermedio y 5 V para sonido fuerte. Para resumir, lo que queremos es esto;

\$V_{out}=(V_{in} - 2.5V) * 3 \$

Para lograr esto, usaremos un amplificador diferencial o, en otras palabras, un "restador".

introducir la descripción de la imagen aquí

Cuando los resistores, R1 = R2 y R3 = R4, la función de transferencia del amplificador diferencial se puede simplificar a la siguiente expresión:

$$V_{out}=\dfrac{R_3}{R_1}*(V2-V1)$$

Si haces V1= 2.5V y el cociente R3/R1 3, entonces obtendrás la salida que deseas.

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

introducir la descripción de la imagen aquí

He utilizado el OP-AMP LM324 aquí con fines de simulación. Eso limitará el voltaje de salida máximo a 4V. Para tener una salida de rango completo, deberías usar un OP-AMP con salida riel a riel. Te sugeriría el MCP6004. Cambia R1 y R2 hasta que obtengas el resultado deseado. Aquí está lo que obtuve con la simulación:

introducir la descripción de la imagen aquí

Ahora, al medir estos valores en un ADC, no obtendrás un sentido lineal, en lugar de eso, el sonido se comprende mejor de manera logarítmica, ya que nuestros oídos oyen de esa manera. Por lo tanto, deberías usar decibelios. Si no estás familiarizado con los decibelios, aquí tienes un excelente video tutorial al respecto.

Una habitación tranquila, por ejemplo, se mide alrededor de 40 dB. Una fiesta en una habitación hará que el nivel de la habitación suba a 100 dB, o tal vez 110 dB. En este sitio web, puedes encontrar excelente información al respecto, de donde también he incrustado la siguiente imagen. Piensa en los niveles de decibelios y experimenta con la salida de voltaje del circuito. Luego, calcula la resolución del ADC que necesitarás. Probablemente, estarás bien con un ADC de 12 bits.

introducir la descripción de la imagen aquí

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X