Showing results for 
Search instead for 
Did you mean: 

Digital MEMS microphone used for sound pressure level measurements

Associate II

Hello everyone,

I'm interfacing a digital MEMS microphone with a stm32l152re mcu cortex M3 using I2S with DMA In order to measure sound pressure level. the communication is based on acquiring PDM ( Pulse density modulation) values that represents the analog signal and then convert it into a PCM ( pulse code modulation) values. Based on these PCM values the sound pressure value is calculated. I tested the microphone with a sonometer using an acoustic signal generator with frequencies from 20Hz-20Khz.

The MEMS microphone in my case uses 16kHz as a sampling frequency. The measurement was 2-3 dB close to the sonometer taken values using frequencies ranging from 800Hz-8Khz. However, a difference of 10dB is measured in low and High frequencies. In addition, when a sudden and loud noise is abrupted, the noise level difference measured between the MEMS microphone and the sonometer is around 20dB and more. I'm open to any suggestion on which parameter to adjust in order to get close values of the sonometer Or anyone have an idea of what's going wrong.

I hope I made the situation clear and I'm open into any questions or further information related to this topic.

Best Regard,

Principal III

> in my case uses 16kHz as a sampling frequency.

By the sampling theorem, one cannot expect accurate results above 8kHz.

> when a sudden and loud noise is abrupted

might have to do with peak measurment and integration time interval?

Thanks for your reply.

>might have to do with peak measurment and integration time interval?

How can I check this ?

Commonly, your code would collect short buffers of audio samples and calculate the audio energy it it. The buffer length (in ms) is then the integration time. The question remains how your sonometer does it. Are there docs for it or does it follow some standard?

In the sonometer manual there is a parameter called Time weighting. I think it represents the integration time that you mentioned. The sonometer time weighting used is 125ms. Here is a link for the manual :

As for my sensor, the sound pressure level is updated each 64ms but my I2S buffer is updated each 1ms