Medir sonido con Arduino y micrófono amplificado MAX9812


arduino-microfono-amplificador-max9812

¿Qué es un MAX9812?

El MAX9812 es un amplificador de sonido especialmente diseñado para tratar la señal proveniente de micrófonos. Podemos emplearlo junto con Arduino para medir sonido desde un procesador como Arduino.

Cuando vimos los módulos con micrófono comentamos que, en general, la señal generada es demasiado baja para ser registrada correctamente. Si queremos poder medir sonidos, deberemos amplificar la señal.

El MAX9812 dispone de entradas single/dual, ganancia fija de 20dB, ancho de banda de 500 kHz, bajo ruido y baja distorsión de señal 0.015% THD. Existen dos modelos, el MAX9812L tiene una tensión de alimentación de 2.7V a 3.6V, y el MAX9812H tensión de alimentación de 45V a 5.5V.

Podemos emplear los sensores con MAX9812 para aplicaciones que requieran medir la intensidad o frecuencia del sonido. Por ejemplo, podemos variar la iluminación de una tira LED en función del sonido, o mostrar un ecualizador en una pantalla TFT.

Anuncio:

Si únicamente queremos detectar el sonido, y no medir su volumen o frecuencia, podemos emplear un módulo de micrófono con comparador como el KY-038, que proporciona una salida digital cuando el sonido supera un cierto umbral.

Precio

Los sensores con MAX9812 son sensores muy baratos. Podemos encontrar módulos como el FC-109, que incorporan el micrófono y amplificador MAX9812 en una placa fácil de conectar a Arduino por 0.85€, buscando en vendedores internacionales de eBay o AliExpress.

arduino-microfono-amplificador-max9812-componete

También existe una versión mejorada, el MAX9814, que dispone de una ganancia variable a 40, 50 o 60DB, aunque el precio es muy superior, unos 2.45€.

Esquema de montaje

El esquema eléctrico es sencillo. Alimentamos el módulo conectando GND y 5V a los pines correspondientes de Arduino. Por otro lado, conectamos la salida analógica del sensor a una entrada analógica de Arduino.

arduino-microfono-amplificador-max9812-esquema

Mientras que la conexión vista desde Arduino quedaría así,

arduino-microfono-amplificador-max9812-conexion

Ejemplos de código

Cuando manejemos sonidos lo primero que debemos entender es que la señal que obtenemos varia rápidamente y además tiene mucho ruido. De esta forma, el valor puntual de una medición no suele tener importancia, y deberemos realizar la integración en un determinado periodo. Para ello lo habitual es trabajar con ventanas temporales, es decir, un intervalo en el que realizamos la medición.

Para ello, definimos una ventana temporal de 50 ms, equivalente a una frecuencia de 20 Hz, y calculamos el máximo y mínimo registrado dentro de la ventana. A continuación mostramos el valor registrado por puerto serie.

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección tutoriales de Arduino

Anuncio:

Previous Detectar sonido con Arduino y micrófono KY-038
Next Entrada analógica de 16 bits con Arduino y ADC ADS1115
1000
2 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
newest oldest
Josseph Anthony Sobrado Marcos

Y para medir el sonido e imprimirlo en el monitor serie como decibeles? Gracias

Juan Carlos

Hola Luis, me encanta tu blog y lo sigo desde hace tiempo. He adquirido recientemente un par de módulos MAX9812 con la idea de hacer un medidor de nivel de sonido, por lo que tendría que transformar esos datos en decibelios. He estado buscando mucho por la red y sobretodo por el foro de arduino pero no encuentro una forma de hacerlo correctamente, ¿podrías ayudarme?

Muchas gracias!