What is the output unit for a electret microphone ?

Hello everyone,

I hope you can help me. See, I'm doing a project for my exams this year and I use a microphone in that project. But I don't know what the output unit of this electret microphone. Do anyone know what is the output unit ?

Thanks

For now this seems an “off-topic” thread.

Nevertheless, the definition of “output unit” is unclear; it could be voltage (usually in the millivolt range if not amplified) or decibels as sound intensity/“dynamic range” measure (does it count to the air pressure that makes the sound too?).

The "units" are volts. A microphone typically puts-out 10-100mV AC (0.010 - 0.10V) depending on the sensitivity of the particular microphone, and of course the loudness of the sound.

In most applications (including with the Arduino) you need a preamp to boost the signal to [u]audio linel level[/u] (about 1V). Your computer's soundcard, PA systems, and mixers, etc., all have built-in preamps. Usually preamps have a gain/volume control because the signal level is unpredictable.

Electret microphones (like all condenser mics) require power. An electret stage microphone* is usually powered from 48V phantom power (from a mixer or audio interface) or sometimes they have an internal battery.

Computer soundcards supply 5V for a "computer mic".

If you buy a "raw" electret microphone element (like [u]this[/u]) you'll have to figure-out how to power it.

[u]Here is a schematic[/u] for an electret mic preamp (without variable gain). It supplies power to the mic and it has a biased output so it can be used with the Arduino (which can't read the negative half of a normal AC audio signal.

*Stage/studio microphones and computer microphones are NOT INTERCHANGABLE.

Stage/studio mics are low-impedance balanced (3-wire) and studio condenser microphones require 48V phantom power.

Computer mics are unbalanced (2-wire) and 5V is supplied from the soundcard (for electret condensers).

Dynamic mics don't require power but dynamic stage/studio mics have balanced connections and they don't interface correctly with a computer.

Hi, with output unit I think about the data that the microphone send to the Serial Monitor in arduino. I was making test and I saw when whe the sound source is closer it write 1023 or 0. And I was asking myself about the unit of this numbers, because it's pretty like a potentiometer. About the connections, I plugged the AUD pins of the electret microphone to the A5 of the arduino and I send 3.7 V in the VCC. For testing the sound i send the numbers of the microphone to the piezo buzzer that I've got.

Thanks

You must be using some code to get numbers from the microphone to the Serial Monitor. If you show us the code and say exactly which "electret microphone" you have we might have a better idea what you're talking about.

Steve

int ledPin=13;
int sensorPin=A5;
int val =0;
int buzzer = 12;

void setup(){
pinMode(ledPin, OUTPUT);
pinMode(sensorPin, INPUT);
pinMode(buzzer, OUTPUT);
Serial.begin (9600);
}

void loop (){
val =analogRead(sensorPin);
Serial.println (val);
delay(500);
tone(buzzer, val);
}

Here is the code. I thought i could send the data i received from the Microphone to a buzzer. I use a electret microphone for arduino. There it is :

FK3AF92I10JDZZC.SMALL.jpg

Prankky,

You have a microphone board with a built-in preamp. The output is biased at half the supply voltage so the 10-bit ADC (0-1023) should read about 512* with silence. If you wish you can subtract-out the bias to get positive & negative values.

[u]Here is a little tutorial about how digital audio works[/u]. You are sampling an continuously-varying analog waveform that passes-through zero twice per cycle (assuming no bias). Your readings should "look random" within a range depending on loudness. Even with a pure test-tone the readings will be random because you are sampling at random** points (at random times) along the waveform.

Since the (normal unbiased) audio waveform (or acoustic sound-pressure wave) is positive half the time, and negative half the time with approximately-equal positive & negative values, the average is zero.

Normally, you sample at a known sample rate. i.e. The CD sample rate is 44,100 samples-per second. Then, the digital-to-analog converter can "connect the dots" at the same sample rate to re-construct the continuous analog waveform.

Depending on what you're doing it's sometimes useful to find the peaks, or the average of the absolute values, the average of the positive values, or the RMS value.

With your 500ms delay you are sampling very infrequently. The serial writes will also slow down your loop.

tone(buzzer, val);

That's "interesting" but you're just changing the tone frequency twice per second, based on the "random" readings.

You are not "reconstructing" the analog waveform... If that's what you're trying to do... The Arduino can't do that because it doesn't have a DAC.***

Plus, you can't digitize an audio waveform at 2 samples-per-second (500mS). You need to sample at at-least twice the audio frequency (one sample for each positive & negative half-cycle). Twice per second may be OK if you just want to collect some data and find the peak or average, etc., but it's obviously going to be slow.

  • The 512 value assumes the Arduino and the microphone have the same Vcc voltage and that you are using the default ADC reference voltage (Vcc) .

** Your sampling isn't truly-random, but it's uncorrelated with the audio waveform so the readings are unpredictable, except you may know the maximum or minimum limits/values.

*** The TMRpcm library can "approximate" analog with PWM.

Hello, thanks for your answer. I saw somewhere in the Internet that the arduino isn't make for doing broadcast of sound kept with the mic and send him clearly to a speaker. What do you think about this ?

Prankky ,

Sorry, I'm having trouble with the "translation". English is not your first language, right?

See, I'm doing a project for my exams this year and I use a microphone in that project.

I'm guessing you are not studying electronics or engineering? Or is this your 1st electronics class?

Exactly what is your project?

I saw somewhere in the Internet that the arduino isn't make for doing broadcast of sound kept with the mic and send him clearly to a speaker.

What do you mean by "broadcast"?
But, I'm going to say, correct... The Arduino is not good at audio DSP (digital signal processing).

I've made some sound-activated "dance lighting" effects with the Arduino and it's good for that.

Some people have made SPL meters (loudness meters) and that can work, but it's not easy to make one that's accurate with all kinds of sounds.

But...

  • The built-in analog-to-digital converter is only 10-bits and it's not fast-enough to capture the full audio frequency range.... So no "CD quality" audio.

  • There is no built-in digital-to-analog converter so there is no analog output. (You can add a DAC.)

  • It's too slow for most DSP operations. I don't think it's fast-enough to transmit digitized audio over Ethernet or Bluetooth. And even if it is, it's not powerful enough to do DSP at the same time.

  • There is not much RAM for audio storage/buffering. For example, CD audio is 16-bit stereo so that's 4 bytes per sample. At 44.1kHz, that's 176,000 bytes per second of stored audio. (That's just an example, since you'll have to use lower a lower sample rate anyway.)