Interfacing MAX4466 Microphone Amplifier Module with Arduino

Published  June 27, 2024   0
MAX4466 Microphone Amplifier Module

As you may know many of our everyday appliances or devices such as smartphones, home automation systems, smart speakers, headphones and many others have their own built-in microphones to capture the audio data. And if we look at them there are different types of microphones available, such as condenser, ribbon, dynamic and MEMS. Most modern devices like smartphones use MEMS microphones for better sensitivity. But the problem with them is that they are digital and will need digital processing to get the audio out of them. On the other hand analog microphones have been there for decades, and they can be found in most devices from cheap toys to high-end studio setups. Among the analog type microphones, the most popular one would be the condenser microphone, they are cheap and easy to interface. But since their output signal is very weak, we will need to do some amplification to the signal before using it. That's where microphone amplifiers come into play.

So, in this article, we will look into such a microphone amplifier module built with the MAX4466 IC, which offers an adjustable gain. We will learn about the basics of MAX4466 microphone amplifier module and how to interface it with an Arduino Board. Previously we have also build many Arduino projects and tutorials here at circuitdigest you can also check them out if you are intrested. 

The MAX4466 Microphone Amplifier Module

The MAX4466 microphone amplifier module is a very versatile and easy-to-use microphone amplifier module. As the name suggests it is based on the MAX4466 amplifier chip from Analog Devices. It offers a very high gain of up to 125, adjustable via a potentiometer on the module. This allows users to fine-tune the sensitivity according to their specific application requirements. It also offers an excellent power supply rejection ratio of 112dB and a common mode rejection ratio of 126dB while providing a rail-to-rail output.

MAX4466 Microphone Amplifier Module

The MAX4466 is capable of delivering a 600kHz AV ≥ 5 gain bandwidth product from only 24µA of supply current. The module also includes an electret microphone capable of capturing audio ranging from 20 Hz to 20 kHz. With all these excellent features the MAX4466 microphone amplifier module is capable of producing exceptional sound quality even in noisy environments.

MAX4466 Microphone Amplifier Module Pinout

The MAX4466 module only has 3 pins, making it very easy to interface. The pins include VCC, GND and OUT. The VCC and GND pins are used for supplying power to the module and the output signal is taken from the OUT Pin.

MAX4466 Microphone Amplifier Module Pinout

VCC  Power supply input for the module. Input range +2.4V to +5.5V.
GND  Power supply ground.
OUT  Output pin provides amplified signal from the microphone.

MAX4466 Microphone Amplifier Module - Parts

In the below parts marking image, you can see the main components in the module marked. As you can see in the front side there is nothing much but the electret microphone itself.

MAX4466 Microphone Amplifier Module Parts Marking

The remaining circuitry is on the back side of the module. Here you can see the MAX4466 amplifier chip along with its complimentary circuitry. A surface mount potentiometer is provided to adjust the gain of the module. You can also find two SMD ferrite beads on the PCB, which are in aeries with the VCC and GND pins. They are there to suppress EMI interference and to enhance the CMRR performance further.

MAX4466 Microphone Amplifier Module Circuit Diagram

The Schematic diagram for the MAX4466 Microphone Amplifier Module is given below. The circuit consists of bare minimum components. As we know the main component is the MAX4466 chip. Along with the MAX4466 chip the circuit consists of the microphone, ferrite beads for noise suppression and other complimentary components for the amplifier chip. It is the same as the typical application diagram provided on the MAX4466 datasheet.

MAX4466 Microphone Amplifier Module Circuit Diagram

Commonly Asked Questions About MAX4466 Module

Is MAX4466 analog or digital?

The MAX4466 provides an analog output.

What is the frequency range of MAX4466?

The audio signal can be in the frequency range 20 - 20 kHz.

How to adjust gain on MAX4466?

On the back side of the board, a small potentiometer is included for changing the gain. It is possible to set the gain from 25x to 125x.

What is the difference between MAX9814 and MAX4466?

The MAX4466 is quite classical and has an integrated op-AMP and gain can change from 25x to 125x while the MAX9814 has an automatic gain control.

What is the working voltage of MAX4466?

The MAX4466 module can be powered with range of voltage from 2.4V to 5V.

MAX4466 Module Arduino Interfacing Circuit Diagram

For interfacing the MAX4466 module with the Arduino, we will be using an analog pin. Follow the circuit diagram below and make the connections as per that.

MAX4466 Microphone Amplifier Module Arduino Connection Diagram

The connection is relatively simple and only requires 3 wires, in which two are for power and one for signal. Connect the VCC pin of the module to the 5V pin on the Arduino and the GND pin to the GND pin on the Arduino. Next connect the OUT pin to the A0 pin of the Arduino.nce the connections are done we can move forward with the coding. Here's how the real-life connection looks. 

MAX4466 Microphone Amplifier Assembled Image

Arduino MAX4466 Microphone Amplifier Code

In this example we will read the microphone output and the peak values will be plotted on the serial plotter. At first, we have declared all the variables we need as global variables. Next in the setup function we have initialised the serial interface with a baud rate of 9600. We will be sending the peak value over the serial, and this send value will be then plotted on to the Arduino IDE serial plotter.

const int sampleWindow = 50;  // Sample window width in mS (50 mS = 20Hz)
int const Input_Pin = A0;     // Preamp output pin connected to A0
unsigned int ADC_Value;
void setup() {
 Serial.begin(9600);
}

Next in the loop function we will read the ADC values continuously for sample window, in this example 50ms, and then calculate the peak value de detected within this window. This peak value is then send to the PC using the serial print function. You can also see that we have eliminated the value below 20, because its mostly noice. You can also adjust the gain control pot to adjust the sensitivity.

void loop() {
 unsigned long startMillis = millis();  // Start of sample window
 unsigned int PeakValue = 0;  // peak-to-peak level
 unsigned int InMax = 0;
 unsigned int InMin = 1024;

 // collect data for 50 mS and then plot data
 while (millis() - startMillis < sampleWindow) {
   ADC_Value = analogRead(Input_Pin);
   if (ADC_Value < 1024)  // toss out spurious readings
   {
     if (ADC_Value > InMax) {
       InMax = ADC_Value;  // save just the max levels
     } else if (ADC_Value < InMin) {
       InMin = ADC_Value;  // save just the min levels
     }
   }
 }
 PeakValue = InMax - InMin;  // max - min = peak-peak amplitude
 if (PeakValue < 20) {
   PeakValue = 0;
 }
 Serial.println(PeakValue);
}

Now Compile the code and upload it to the Arduino. Open up the serial plotter and you can see when there is a sound the value is plotted to the serial plotter window.

Here’s the GitHub repo where you can find the complete code and the circuit diagrams that we have used in this tutorial. 

Code

const int sampleWindow = 50;  // Sample window width in mS (50 mS = 20Hz)
int const Input_Pin = A0;     // Preamp output pin connected to A0
unsigned int ADC_Value;
void setup() {
 Serial.begin(9600);
}

void loop() {
 unsigned long startMillis = millis();  // Start of sample window

 unsigned int PeakValue = 0;  // peak-to-peak level
 unsigned int InMax = 0;
 unsigned int InMin = 1024;
 // collect data for 50 mS and then plot data
 while (millis() - startMillis < sampleWindow) {
   ADC_Value = analogRead(Input_Pin);
   if (ADC_Value < 1024)  // toss out spurious readings
   {
     if (ADC_Value > InMax) {
       InMax = ADC_Value;  // save just the max levels
     } else if (ADC_Value < InMin) {
       InMin = ADC_Value;  // save just the min levels
     }
   }
 }
 PeakValue = InMax - InMin;  // max - min = peak-peak amplitude
 if (PeakValue < 20) {
   PeakValue = 0;
 }
 Serial.println(PeakValue);
}
 

Have any question realated to this Article?

Ask Our Community Members