How to convert sound sensor output reading to decibel value?


My project is about measurement of sound with microphone sensor using arduino. The microphone sensor detected the sound and I got the reading from the serial monitor in the arduino. But I didn’t know how to convert that reading form the serial monitor into decibel.

So kindly provide me with your possible answer so that my project will be fulfilled.

If there is any expression which convert the reading into decibel value, kindly mention below

Thanks in advance


The open-circuit voltage of the microphone doesn’t tell you anything about the sound intensity if it’s not calibrated.

If you just want to convert it to a logarithmic scale, the power in dBm is defined as 10 log10(P / 1 mW).
For voltages, this is defined as the power dissipated by the voltage into a 600Ω resistor. Remember that P = VI = V² / R.

In other words: dBm = 10 log10(10/6) + 20 log10(V).

If you don’t even care about the voltage, just the scale, you can just use: dB = 20 log10(ADC_value).


But if you want the value in dB(A), i.e. normal SOUND intensity decibels, then you'll need to calibrate your microphone against a known decibel meter and sound source. A free smartphone app might do for the sound meter if you're not too bothered about high accuracy.


dB(A) implies A-weighting of the input signal to account for the relative loudness perceived by the human ear. AFAIK, this is not possible on an Arduino.

You probably mean dB(SPL) which is the sound pressure level.

Thanks. Is there any expression is available to obtain the decibel value

Is there any expression is available to obtain the decibel value

Yes See reply #1
Otherwise no.

Thanks. Is there any expression is available to obtain the decibel value

We can’t give you an exact formula/expression because your microphone & preamp are uncalibrated.

But, I’ll give you a made-up example -

Let’s say your real SPL meter reads 80dB when the Arduino reads 270. 270 is your reference analog reading AREF at 80dB SPL.

Now the volume increases and we get a new analog reading of A = 540 and we can calculate the dB difference or change. dB = 20 log(A/AREF) = 20 log (540/270) = +6dB.

That’s 6dB higher than your reference so we have 86dB SPL.

So in this case the formula would be dB SPL = (20log(A/270)) + 80 …That’s the formula, not the C++ expression.

…That assumes that your ‘270’ readings are “true” and proportional to loudness and they are unbiased (so silence reads zero, although you’ll never get total silence).