How to get correct output of sound level meter in db

I am doing a project of sound level meter using arduino. I have mounted all components and have done all connection as shown in figure but i am not getting the exactly correct output. I have tried alot to get output.
The output is in range of 40 to 55 db but when i play sound it does not change . I have use the formula for db conversion from adc is
db =( adc +83.237)/ it correct? ?...
So plzz help me and give any suggestions u have i want to get correct output...give solutions as early as possible.
Image of figure..:

all connection as shown in figure

Nope. Nothing.



fixed link

forum bug = cannot link to PNG file


Welcome to the forum.

Please read the first post in any forum entitled how to use this forum.,148850.0.html then look down to item #7 about how to post your code.
It will be formatted in a scrolling window that makes it easier to read.

Can you please post a copy of your circuit, in CAD or a picture of a hand drawn circuit in jpg, png?

Can you please tell us your electronics, programming, Arduino, hardware experience?

Do you have an oscilloscope to check that your sound interface is working?
How are you calibrating your system?

Thanks.. Tom.. :slight_smile:

db =( adc +83.237)/ it correct?

dB is a logarithmic scale, relative to some standard.

What is connected to the analog input?

Where did you get that formula?

OPs circuit.
No logarithmic amplifier…

Tom… :slight_smile:

The + & - connections to the op-amp are reversed (or maybe the schematic is just wrong). The negative-feedback has to go to the - input.

What kind of raw readings do you get with silence? With loud sounds? (i.e. Running the Analog Read Serial Example code.)

db =( adc +83.237)/ it correct? ?..

No! It’s impossible to know the exact formula because we don’t know the sensitivity of the microphone. And, decibels are logarithmic.

You’ll need a working SPL meter to calibrate your SLP meter.

Also, the amplifier should be biased at 2.5V (which will read ~512 on the ADC) because the Arduino can’t (directly) read the negative half of the the audio signal.

Then you should get readings near 512 with silence (although you probably won’t have “dead silence”) and you can subtract that out.

With the bias subtracted-out, quiet sounds should “jump around” with small positive & negative numbers and louder sounds should jump-around with bigger positive & negative numbers.

Since audio is a wave the numbers will look random… Half the time you are reading positive, half the time you are reading negative, sometimes you are reading zero (or near zero), etc.

So, you’ll have to decide if you want to find the peak, and if-so how often you want to find the peak. Or, you can find the average (or a moving average). However, the true will always be zero (positive half the time and negative half the time) so you can either ignore the negative readings or take the average of the absolute values.

…Sorry, I gotta’ take a break from the forum but I’ll be back later to explain how to use/calibrate the dB calculation which is:
dB = 20 x log(ADC/ADCRef)

…I’m back.
Let’s say your SPL meter reads 80dB and the ADC reads 100 (after taking-out the bias and averaging or finding the peak or whatever you want to do). That’s your reference.

Now let’s say you’re reading an unknown dB SPL level and the ADC reads 200.

We can calculate the relative dB level as 20log(200/100) = +6dB. That’s 6dB higher than the reference so we’ve got 86dB SPL.