En este artículo, te mostraremos cómo conectar el módulo amplificador de micrófono MAX4466 a tu Arduino. Este dispositivo te permitirá mejorar la calidad de audio de tus proyectos y aplicaciones con micrófono, amplificando la señal de entrada. Sigue leyendo para descubrir paso a paso cómo realizar esta conexión y sacar el máximo provecho de este útil componente.
Agregue un oído a su proyecto con el módulo amplificador de micrófono MAX4466.
Es un módulo bien diseñado con voltaje de suministro flexible y ganancia ajustable, lo que lo hace adecuado para una amplia gama de aplicaciones de audio. Este módulo es particularmente adecuado para proyectos como cambiadores de voz en tiempo real, grabación/muestreo de audio y proyectos reactivos de audio que utilizan algoritmos de Transformada Rápida de Fourier (FFT).
¿Sabes cómo funcionan los micrófonos electret?
Dentro del micrófono hay una membrana delgada y una placa trasera. Juntos forman un condensador.
Cuando hablas por el micrófono, las ondas sonoras generadas por tu voz golpean el diafragma y lo hacen vibrar.
A medida que la membrana vibra, se acerca o se aleja de la placa posterior. Este movimiento cambia la capacidad entre ellos. Este cambio de capacitancia crea un voltaje entre las placas, que podemos medir para determinar la amplitud del sonido.
Descripción general del hardware
El corazón del módulo es un amplificador operacional de micropotencia, el Maxim MAX4466, que fue diseñado específicamente para su uso como amplificador de micrófono. Debido a su alto rechazo de modo común y su excelente relación de rechazo de fuente de alimentación, el MAX4466 es una excelente opción para entornos ruidosos. Por lo tanto, este amplificador ofrece una calidad de sonido excepcional, libre de silbidos o rayones que son comunes en otros amplificadores de micrófono.
El módulo también incluye un micrófono electret capaz de detectar ondas sonoras en el rango de 20 Hz a 20 kHz, así como los circuitos auxiliares necesarios para controlar el MAX4466.
Además, el módulo contiene perlas de ferrita SMD conectadas en serie con los rieles de alimentación. Estas perlas desempeñan un papel crucial en la supresión de las emisiones electromagnéticas; bloquean el ruido de baja frecuencia y absorben el ruido de alta frecuencia, mejorando aún más la tasa de rechazo del modo común.
Hay un pequeño potenciómetro de ajuste en la parte posterior del módulo que se puede usar para ajustar la ganancia. La ganancia determina cuánto amplifica el módulo la señal de sonido. Girar el potenciómetro en el sentido contrario a las agujas del reloj (CCW) aumenta la ganancia, mientras que girarlo en el sentido de las agujas del reloj (CW) disminuye la ganancia.
La ganancia se puede ajustar entre 25x y 125x. La configuración más baja amplifica a alrededor de 200 mVpp (adecuada para un volumen de conversación normal a unos 15 cm de distancia), ideal para conectarse a dispositivos que esperan una entrada de «nivel de línea» sin saturación. En el extremo superior se puede amplificar hasta aproximadamente 1 Vpp, lo que es ideal para leer desde el ADC de un microcontrolador. Vale la pena señalar que la salida es de riel a riel, lo que significa que la salida puede alcanzar hasta 5 Vpp con un volumen suficientemente alto.
Usar el módulo es sencillo: conecte el pin GND a tierra y el pin VCC a 2,4-5 VCC. La forma de onda de audio proviene del pin OUT, que se puede conectar directamente al pin ADC del microcontrolador. Tenga en cuenta que la salida tiene una polarización de CC de VCC/2, por lo que el voltaje permanece constante en un nivel de VCC/2 en reposo absoluto.
Configuración de pines del módulo MAX4466
El módulo tiene tres pines.
VCC es el pin de fuente de alimentación que acepta voltaje CC de 2,4 V a 5,5 V.
Dimensiones es el pin de tierra.
FUERA DE es el pin de salida analógica que proporciona la señal de audio amplificada. Tenga en cuenta que la salida tiene una polarización de CC de VCC/2, por lo que el voltaje permanece constante en un nivel de VCC/2 en reposo absoluto.
Cableado de un módulo MAX4466 a un Arduino
El cableado es relativamente sencillo. Todo lo que necesitas hacer es conectar tres cables: dos de alimentación y uno de salida.
El VCC del módulo MAX4466 puede estar entre 2,4 y 5 VDC. Para un rendimiento óptimo, se recomienda utilizar el pin de 3,3 V, ya que proporciona el suministro «más silencioso» al Arduino. Por lo tanto, suministre 3,3 V al sensor y conecte tierra a tierra. Luego conecte la salida a un pin de entrada analógica. En este ejemplo utilizamos el pin A0.
La siguiente tabla enumera las asignaciones de pines:
Módulo MAX4466 | arduino | |
VCC | 3,3 V | |
Dimensiones | Dimensiones | |
FUERA DE | A0 |
El cableado se muestra en la siguiente imagen.
Código de ejemplo de Arduino: medición de niveles de sonido
La salida del amplificador MAX4466 es simplemente un voltaje variable. Para medir los niveles de sonido, necesitamos realizar varias mediciones para determinar los valores mínimo y máximo o, en términos técnicos, la “amplitud pico a pico” de la señal.
En el código de ejemplo siguiente, elegimos una ventana de muestreo de 50 milisegundos. Esta duración es suficiente para medir niveles de sonido en frecuencias de hasta 20 Hz, que es la frecuencia más baja que los humanos pueden oír. Después de encontrar las muestras mínima y máxima, calculamos la diferencia (para obtener la amplitud pico a pico del sonido) y la convertimos a voltios. Luego, la salida se imprime en el monitor serie.
const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
int const AMP_PIN = A0; // Preamp output pin connected to A0
unsigned int sample;
void setup()
{
Serial.begin(9600);
}
void loop()
{
unsigned long startMillis = millis(); // Start of sample window
unsigned int peakToPeak = 0; // peak-to-peak level
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
// collect data for 50 mS and then plot data
while (millis() - startMillis < sampleWindow)
{
sample = analogRead(AMP_PIN);
if (sample < 1024) // toss out spurious readings
{
if (sample > signalMax)
{
signalMax = sample; // save just the max levels
}
else if (sample < signalMin)
{
signalMin = sample; // save just the min levels
}
}
}
peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude
Serial.println(peakToPeak);
//double volts = (peakToPeak * 5.0) / 1024; // convert to volts
//Serial.println(volts);
}
Después de cargar el boceto, abra el monitor serie y establezca la velocidad en baudios en 9600. Ahora intenta chasquear los dedos cerca del sensor. Notarás un cambio en las lecturas.
Los datos seriales pueden ser difíciles de visualizar si solo nos fijamos en los valores. Si está utilizando Arduino IDE v1.6.6+, existe una opción para mostrar los datos en un gráfico Trazador serie Arduino.
En el IDE de Arduino, seleccione Herramientas > Trazador en serieSi chasquea los dedos cerca del sensor, debería observar una forma de onda similar a la imagen a continuación.
Explicación del código:
El código comienza definiendo algunas constantes y variables.
Primero, una constante llamada sampleWindow
que establece el ancho de la ventana de muestra en milisegundos. Está ajustado a 50, que corresponde a 20 Hz. La siguiente es otra constante AMP_PIN
el cual representa el pin analógico A0 al que está conectada la salida del módulo MAX4466. Una variable entera sin signo llamada sample
también está definido para almacenar los valores que provienen del AMP_PIN
.
const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
int const AMP_PIN = A0; // Preamp output pin connected to A0
unsigned int sample;
En setup() el monitor serie se inicializa con fines de depuración.
void setup() {
Serial.begin(9600);
}
Al comienzo de la función loop(), la hora actual (en milisegundos desde que se inició Arduino) se almacena en la variable startMillis
.
unsigned long startMillis= millis();
Entonces las variables peakToPeak
, signalMax
Y signalMin
están inicializados. peakToPeak
contiene la diferencia entre los valores máximo y mínimo leídos por el micrófono y representa la amplitud del sonido. signalMax
Y signalMin
se utilizan para almacenar los valores más alto y más bajo leídos desde el micrófono durante la ventana de muestreo.
unsigned int peakToPeak = 0;
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
El while
El bucle se ejecuta mientras la diferencia entre la hora actual y startMillis
es menos que sampleWindow
(en este caso 50 milisegundos). Este bucle se utiliza para leer la salida del micrófono y encontrar los valores más altos y más bajos durante ese período de tiempo. El voltaje aumenta dentro del circuito. AMP_PIN
se lee con analogRead()
y almacenado en el sample
Variable. Si la muestra es válida (y no falsa) y mayor que signalMax
lo actualiza signalMax
; si la muestra es menor que signalMin
lo actualicé signalMin
.
while (millis() - startMillis < sampleWindow)
{
sample = analogRead(AMP_PIN);
if (sample < 1024) // toss out spurious readings
{
if (sample > signalMax)
{
signalMax = sample; // save just the max levels
}
else if (sample < signalMin)
{
signalMin = sample; // save just the min levels
}
}
}
Una vez finalizada la ventana de muestreo, la diferencia entre signalMax
Y signalMin
se calcula para obtener la amplitud pico a pico del sonido. Este valor se almacena en peakToPeak
.
peakToPeak = signalMax - signalMin;
El peakToPeak
Luego, el valor se imprime en el monitor serie.
Serial.println(peakToPeak);
Las líneas comentadas al final del código convierten la amplitud pico a pico del sonido a voltios. Esto puede resultar útil si desea ver el gráfico de voltaje de la amplitud.
//double volts = (peakToPeak * 5.0) / 1024; // convert to volts
//Serial.println(volts);
Proyecto Arduino: medidor de nivel de sonido desplazable
Vale, eso no fue muy emocionante. Ahora tomemos la medición pico a pico y usémosla para controlar una matriz LED basada en MAX7219 para mostrar el nivel de sonido. Para hacerlo más interesante, desplazamos la pantalla para graficar las últimas 8 mediciones en tiempo real.
Si no está familiarizado con la pantalla de matriz de puntos LED MAX7219, puede leer el siguiente tutorial.
Conexión del hardware
La siguiente imagen muestra cómo se construye el circuito.
Las siguientes tablas enumeran las asignaciones de pines:
Módulo MAX4466 | arduino | |
VCC | 3,3 V | |
Dimensiones | Dimensiones | |
FUERA DE | A0 |
Módulo MAX7219 | arduino | |
VCC | 5V | |
Dimensiones | Dimensiones | |
RUIDO | 11 | |
CS/CARGAR | 10 | |
CLK | 13 |
Instalación de la biblioteca LedControl
Para trabajar con el chip MAX7219, necesita utilizar una biblioteca. Biblioteca LedControl de Eberhard Fahle es una biblioteca excelente. Esta biblioteca proporciona un conjunto estándar de funciones para controlar cada LED individualmente, lo que será extremadamente útil para este proyecto.
Para instalar la biblioteca, navegue hasta Bosquejo > Incluir biblioteca > Administrar bibliotecas… Espere a que el administrador de la biblioteca descargue el índice de la biblioteca y actualice la lista de bibliotecas instaladas.
Filtra tu búsqueda ingresando 'controles LED'. Buscar controles LED de Eberhard Fahle. Haga clic en esta entrada y luego seleccione Instalar.
Sube el código
Copie y pegue el siguiente código en el IDE de Arduino y cárguelo.
#include "LedControl.h"
int displayCnt = 1; // # of displays connected (between 1-8)
int intensity = 1; // Brightness of displays (between 0-15)
LedControl lc = LedControl(11, 13, 10, displayCnt); // Pins: DIN, CLK, CS, # of Displays
const int maxScale = 8;
const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
unsigned int sample;
byte columnData[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // To store the 8 column data
void setup() {
for (int idx = 0; idx < displayCnt; idx++) {
lc.shutdown(idx, false); // Wake up displays
lc.setIntensity(idx, intensity); // Set intensity levels
lc.clearDisplay(idx); // Clear Displays
}
}
void loop() {
unsigned long startMillis = millis();
unsigned int peakToPeak = 0;
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
while (millis() - startMillis < sampleWindow) {
sample = analogRead(0);
if (sample < 1024) {
if (sample > signalMax) {
signalMax = sample;
} else if (sample < signalMin) {
signalMin = sample;
}
}
}
peakToPeak = signalMax - signalMin;
int displayPeak = map(peakToPeak, 0, 512, 0, maxScale);
// Shift column data in the array
for (int i = 0; i < 7; i++) {
columnData[i] = columnData[i + 1];
}
// Create new measurement column
byte newData = 0;
for (int i = 0; i < displayPeak; i++) {
newData |= (1 << i);
}
columnData[7] = newData;
// Update the display
for (int col = 0; col < 8; col++) {
lc.setColumn(0, col, columnData[col]);
}
delay(100);
demostración
Ahora intenta hablar con voz normal desde una distancia de unos 15 a 20 centímetros del micrófono. Ahora debería ver que la pantalla de matriz del sonómetro comienza a desplazarse.
Añade un oído a tu proyecto con el módulo amplificador de micrófono MAX4466
El módulo MAX4466 es un dispositivo bien diseñado con voltaje de alimentación flexible y ganancia ajustable, lo que lo hace adecuado para una amplia gama de aplicaciones de audio. Este módulo es especialmente adecuado para proyectos como cambiadores de voz en tiempo real, grabación / muestreo de audio y proyectos reactivos al audio que utilizan algoritmos de Transformada Rápida de Fourier (FFT).
¿Cómo funcionan los micrófonos electret?
En el interior de un micrófono, hay un diafragma delgado y una placa posterior. Juntos, forman un condensador. Cuando hablas en el micrófono, las ondas sonoras producidas por tu voz golpean el diafragma, haciéndolo vibrar. A medida que el diafragma vibra, se mueve más cerca o más lejos de la placa posterior. Este movimiento modifica la capacitancia entre ellos. Este cambio en la capacitancia produce un voltaje a través de las placas, que podemos medir para determinar la amplitud del sonido.
Descripción del hardware
En el núcleo del módulo se encuentra un amplificador operacional de micropotencia, el Maxim MAX4466, diseñado específicamente para su uso como amplificador de micrófono. Debido a su alta rechazo de modo común y su excepcional relación de rechazo de la fuente de alimentación, el MAX4466 es una excelente opción para entornos ruidosos. Como resultado, este amplificador ofrece una calidad de sonido excepcional, libre del ruido o chirridos que a menudo se encuentran en otros módulos amplificadores de micrófono.
- Suprime las emisiones electromagnéticas
- Módulo con micrófono electret
- Potenciómetro de ajuste de ganancia
Pinout del módulo MAX4466
El módulo consta de tres pines:
- VCC: Pin de alimentación que acepta voltaje de CC de 2,4V a 5,5V
- GND: Pin de tierra
- OUT: Pin de salida analógica que entrega la señal de sonido amplificada
Conexión de un módulo MAX4466 a un Arduino
La conexión es relativamente sencilla. Solo hay tres cables para conectar: dos para la alimentación y uno para la salida.
- VCC del módulo MAX4466 se puede variar entre 2,4-5VDC
- Conectar la salida a un pin de entrada analógica
Ejemplo de código Arduino: Medición del nivel de sonido
El código proporcionado en este artículo te permitirá medir el nivel de sonido y visualizarlo en el monitor serie de Arduino. Se muestra cómo realizar esta medición de manera efectiva.
Proyecto de Arduino: Medidor de nivel de sonido
Este proyecto te permite visualizar el nivel de sonido en una matriz LED controlada por un MAX7219. Descubre cómo implementar este proyecto y agregar una función interactiva a tu dispositivo.
Muy útil el tutorial para conectar el módulo amplificador de micrófono a Arduino. ¡Gracias por la explicación clara y sencilla! ¡A seguir experimentando con proyectos de audio!
¡Genial tutorial para aprender a conectar y usar el módulo amplificador de micrófono MAX4466 con Arduino! Me encanta la claridad y la sencillez de las instrucciones. ¡Excelente trabajo! ¡Gracias por la ayuda!
Interesante forma de potenciar el audio en tus proyectos con Arduino. ¡Gracias por compartir!
Buena guía para sacarle el máximo provecho al módulo amplificador de micrófono con Arduino. ¡Gracias por la info!
¡Vaya! Me parece super útil y práctico este tutorial para conectar el módulo amplificador de micrófono MAX4466 a Arduino. Definitivamente voy a probarlo en mis próximos proyectos. ¡Gracias por la información detallada y fácil de entender! ¡Sigan así!