High resolution noise (volume) sensor?

The standard solution is an input bias circuit:Audio Input Schematic

With the input biased at (about) half the supply voltage the regular Arduino with it's 10-bit ADC will read (about) 512 with silence. Typically, you'll want to subtract that out.

If the signal is too hot you can add a potentiometer (volume control) between your audio output and the bias circuit. Or you can use a voltage divider (2 resistors).

Of if you just need the volume/loudness (no frequency information) you can use a peak detector. A peak detector puts-out a relatively-slowly varying DC voltage, so you can read the "loudness" 10 times per second (or so) rather than reading the waveform thousands of times per second. Also, because it's not biased you can use the optional 1.1V ADC reference if you need more sensitivity. But it requires an op-amp and if you want it to "work right" the op-amp really needs positive and negative power supply voltages.

1 Like