Electret Microphone (CZN-15E) circuit interfacing with Arduino?

Hi. I am trying to build my own (very basic) microphone + amplifier circuit. I bought these electret microphones, numbered CZN-15E for which I found the product sheet and it provides a schematic:

which being relatively simple, I tried to replicate on a board (R = 2.2k, C = 4.7uF) :

I wrote some basic code to read the analog voltage (yellow wire going off-frame in the picture above):

#define VCC 5.0
#define GND 0.0
#define ADC 1023.0

const int sensorPin = A0;
float voltage; 

void setup() {
  Serial.begin(9600);
}

void loop() {
  voltage = GND + VCC*analogRead(sensorPin)/ADC;
  Serial.println(voltage);
}

I get the following output:

As you can see there are little spikes whenever I tap my fingers close to the mic, which I am guessing is the output from the mic (could also be electrical noise though, I can't say for sure): what I am aiming to do is amplify these bursts using a CE stage. But what I don't understand is why there is a constant DC level. The schematic shown uses what I am assuming is an AC coupling capacitor right? so shouldn't the DC levels be removed. Speaking of which, the value of C was not given in the schematic so I experimented with a few values (1u,F 4.7uF, 10 uF and 470 uF specifically)---this is also something I am unsure about. Any help is appreciated. Thank you!

How to Use Microphones on the Arduino - Circuit Basics

How to Use a Microphone with Arduino? - ElectronicsHacks

1 Like

Well assuming that the Vs in your circuit is Vcc, that's what your code does!
voltage = GND + VCC*analogRead(sensorPin)/ADC;
Serial.println(voltage);
Vcc is 5, analog read is 1023,ADC IS 1023. The result is just Vcc.

Two things...

  • There is no DC current path for the analog input so it floats to an unknown DC value.

  • There is probably leakage through the electrolytic capacitor into the Arduino's very-high impedance input. A 10K resistor between the analog input and ground will bring the DC voltage down to zero.

BUT, since audio is AC and the Arduino can't read the negative half of the audio waveform, the input is usually biased at 2.5V (which reads about 512 on the 10-bit ADC). The bias can be subtracted-out in software if you want the AC data.

The tiny (AC) microphone output (a few millivolts) also has to be amplified. Microphone ALWAYS need a preamp stage.

1 Like

You did not build the amplifier you mentioned in your first post. The schematic shown is not an amplifier, it is a FET impedance matching circuit, which is just what the specifications state.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.