Te equivocas, en primer lugar
El control automático de ganancia (AGC) de tu placa de micrófono actual no es lo que quieres en este caso: un detector de nivel de sonido se va a desviar por la acción del bucle de AGC cambiando la ganancia por todas partes mientras intenta mantener un nivel de salida constante (¿qué otra cosa esperarías de un bucle de AGC?). También podrías conseguir un micrófono electret barato, como Sparkfun's y utilízalo directamente en cualquier circuito que montes.
Los logaritmos analógicos son el camino a seguir aquí
Una de las verdades básicas de los ADCs modernos y baratos, especialmente los que se suministran en sistemas altamente integrados, es que su rango dinámico está limitado por el ruido en el extremo inferior y la baja tensión de alimentación disponible en el extremo superior. Además, al tomar los logaritmos digitalmente, se hace un mal uso de los bits del ADC disponibles: pequeños cambios en la señal en el extremo inferior causan un cambio relativamente grande en el registro, pero son difíciles de distinguir para el ADC debido a su limitada resolución.
Como resultado de todo esto, yo usaría un chip convertidor RMS-DC lineal-en-dB para convertir tu entrada de sonido en dBs, y luego alimentar ese "voltaje de control" detectado a tu ADC para propósitos de medición. Afortunadamente, esto no es difícil - el convertidor RMS-DC de un ESO4316 funciona felizmente con 3.3 o 5VDC, y es simple de aplicar -- un circuito de ejemplo que lo utiliza, el micrófono electret de Sparkfun enlazado arriba, y el LT1678 amplificador doble de bajo ruido se muestra a continuación.
simular este circuito - Esquema creado con CircuitLab
OA1A, R5 y R6 son un amplificador no inversor de una sola fuente de alimentación que sirve como preamplificador de micrófono con su entrada polarizada al punto medio del rango de alimentación por R2, que también polariza el micrófono. La ganancia se eligió porque el THAT4316 tiene un nivel de entrada mínimo de 100nA, o 100uV con la resistencia elegida, y con la sensibilidad de 5mV/Pa del micro elegida, sólo obtenemos 1uV del micro para una entrada de 30dB. C5 y R1 AC acoplan la señal de audio a U1 y la convierten en corriente, respectivamente, mientras que C2 es el condensador de temporización RMS-DC. R3, R4 y OA1B aumentan la oscilación de salida de +/-300mV de U1 para ajustarse mejor al rango de entrada del ADC. C1, C3, C4 y C6 se encargan del desacoplamiento de la alimentación.
Ten en cuenta que C2 y C5 deben ser condensadores de película (no cerámicos, electrolíticos o de tantalio), y R1, R3, R4, R5 y R6 deben ser resistencias del 1% o mejores, preferiblemente de película fina o metálica, ya que no tienen exceso de ruido. Además, C3 debe conectarse directamente entre el pin 8 del U1 y el extremo conectado a tierra de C2 - esto evita que los picos de corriente del convertidor RMS-DC del U1 estropeen el resto del funcionamiento del circuito. Por último, si no puedes conseguir un LT1678, deberás prestar atención a la oscilación de la salida - necesitas una pieza que pueda tirar dentro de un par de cientos de mV más o menos del carril negativo, además de funcionar con una sola fuente de 3,3V con un rango de modo común decente, y ser silencioso - el LT1678 puede tirar de 4. 4nV/root-Hz de ruido de voltaje a 10Hz, y con el bajo Zin (dominado por R2) y los valores de resistencia elegidos (consejo: Rg domina Rf cuando se trata de cálculos de ruido), estamos op-amp limitado en el ruido aquí, aunque no por mucho.
La señal resultante es un voltaje que oscila entre casi 0V y casi 3,3V, con una función de transferencia lineal en dB -- el convertidor RMS-DC del THAT4316 tiene la agradable propiedad de que la salida es de 6mV por dB de nivel de entrada.
0 votos
¿Has seguido al pie de la letra todas las instrucciones que figuran en la página del enlace? learn.adafruit.com/adafruit-microphone-amplifier-breakout/
0 votos
@jonk He seguido ese tutorial completamente, lo que pregunto aquí es por una solución que me permita usar RPI para leer los valores, y los valores que estoy leyendo de RPI, no responde a los "sonidos que hice". En ese tutorial, adafruit sólo utiliza arduino, y pude recoger valores de voltaje, sin embargo, necesito niveles de sonido, tal vez usted podría proponer cómo podría convertir estos valores a niveles de sonido, etc en decibelios?
1 votos
Los valores de tensión son los que obtendrá. Para convertirlos en otra cosa, como niveles sonoros, tendrás que leer detenidamente la hoja de datos del micro que utilizan Y el CI con AGC que utilizan y tendrás que desarrollar tú mismo las matemáticas. El micro tendrá especificaciones sobre su comportamiento como transductor de presión sonora. El IC tendrá más especificaciones. En fin, es lo que yo haría si este fuera mi proyecto. Sentarme con el papeleo, sacar algún papel, leer hasta que lo entendiera completamente, luego desarrollar las matemáticas y después el código. Te propongo que tú también lo hagas.
0 votos
¿Has pensado en hacer la conversión de nivel de sonido a dB en el dominio analógico?
0 votos
@jonk suena bastante justo, sería intentar esta solución en primer lugar.
0 votos
@ThreePhaseEel Yo desde luego no, ¿podrías detallar más esta propuesta de solución?
0 votos
En primer lugar, me gustaría preguntar si lo que propongo, utilizar el micrófono para medir los niveles sonoros, es realmente factible.
0 votos
No sabría decirte. No tengo ni idea de qué rango de SPL quieres. No he leído los detalles AGC del IC. No he considerado el micrófono. Y si usted está buscando seriamente cualquier rango de registro significativo en absoluto, entonces creo que ThreePhaseEel te está moviendo en la dirección correcta (dominio analógico en primer lugar.) Si usted escribió más, ... Pero no lo has hecho. Así que más que nada siento que compraste algo que no te llevará a donde quieres ir. Pero podrías estar bien, si tu rango es pequeño y posicionado justo para lo que compraste.
0 votos
Tenga en cuenta que la salida de los electretos suele variar linealmente con los pascales. No ocurre lo mismo con los decibelios, donde 6 dB significan un factor de 2 en pascales. Se supone que usted debe considerar y especificar cuidadosamente su propio rango deseado y luego seleccionar con el mismo cuidado un transductor apropiado que soporte ese rango. A continuación, debe averiguar qué tipo de soporte y acondicionamiento electrónico (preamplificador, etc.) necesitará para que todo encaje con la capacidad de su ADC y el rango de rendimiento deseado. Dada la falta de información en tu pregunta, supongo que no has hecho nada de eso.
0 votos
¿Has pensado que el AGC podría estropear tus resultados?
0 votos
@ThreePhaseEel Eso también se me pasó por la cabeza. (He leído que hay algunos controles manuales de ganancia en esa placa) Ahora no voy a leer fichas técnicas. El OP ni siquiera ha pensado qué tipo de SPL procesar (0 dB está referenciado a \$20\:\mu \textrm{Pa}\$ .) 50 veces más, \$1\:\textrm{mPa}\$ ...se trata de un susurro. Un despertador es unas 100 veces eso. 100 veces más y resulta doloroso oírlo. Todo esto puede ser de interés para la OP. Pero, ¿qué electreto es útil por encima de 5 o 6 órdenes de magnitud? Creo que es necesaria una información completa. (Debería ser el párrafo #1 de cada Q aquí.) E incluso entonces...
0 votos
@jonk Deseo recoger niveles de sonido de unos 30-60dB, normalmente conversaciones humanas o simplemente ruido ambiental. Lo que realmente quiero conseguir con esto es recoger sonidos que puedan ser perceptibles para los humanos. Es cierto que realmente no entiendo estas terminologías sobre los datos que deseo recoger y quiero agradecerte que me ofrezcas tu consejo.
0 votos
Así que un rango dinámico de unos 30-40... ¿Qué lecturas de voltaje obtienes en los niveles más bajos? ¿Qué lecturas de voltaje obtienes en los niveles más altos? ¿Dispone de un dispositivo calibrado independiente con el que pueda medir el SPL para comparar? ¿El AGC del chip le proporciona información adicional para saber cómo interpretar los voltajes?
0 votos
Asegúrate de tener una buena conexión con el micrófono. Utilicé la placa de micrófono electret de adafruit en un proyecto sencillo y recibía datos erróneos hasta que soldé el cabezal a la placa.