[sdiy] [SDIY] Measuring the sound levels from a microphone using an ESP32 board

Spiros Makris spirosmakris92 at gmail.com
Mon Jul 6 16:01:10 CEST 2020

I have been studying some of the circuits there. I'm leaning towards those
on figure 6-6A, but I will use the lm324 opamp instead (to get an output
down to 0V), followed by a simple LPF (so basically increase C1 on the
schematic shown below), making a very simple envelope follower. Taking the
average of that is an easy task and doesn't need much speed.
The peak detection circuit will catch sudden noises better, though. Perhaps
I could employ both, for sustained and impulsive noises, respectively.
[image: image.png]

On Mon, Jul 6, 2020 at 2:58 PM Richie Burnett <rburnett at richieburnett.co.uk>

> Do the calculations digitally on the audio data as Tom said, if your micro
> is up to the job.
> If you have to use an analogue circuit approach because the micro isn't
> fast enough or draws too much current, then take a look here...
> https://sound-au.com/appnotes/an001.htm
> This excellent web page shows many precision rectifier circuits that go a
> long way towards eliminating the dead band that you otherwise get using
> just a single rectifier diode.
> Good luck with your project!
> -Richie,
> Sent from my Xperia SP on O2
> ---- Tom Wiltshire wrote ----
> >I’d sample the incoming audio directly at a good rate (48KHz maybe) and
> then do any processing on the data. Much easier to do math inside the uP,
> rather than outside in analog circuitry.
> >
> >As to what algorithm you use to measure sound level, there are an
> absolute ton of them, as I discovered when I looked into VU meters.
> >
> >Tom
> >
> >==================
> >       Electric Druid
> >Synth & Stompbox DIY
> >==================
> >
> >
> >
> >> On 6 Jul 2020, at 09:18, Spiros Makris <spirosmakris92 at gmail.com>
> wrote:
> >>
> >> Hello list,
> >> I have to develop a small metering application for a university
> project. The idea behind it is to demonstrate the internet of things and
> how it can be used to monitor the (audio) noise levels in a room, to be
> used in places like studios, production facilities or even bars.
> >> The sensor used is a common electret type microphone, which is
> preamplified using a current to voltage opamp stage, based on the OPA172
> amplifier. The supply voltage is 3V (same as the microcontroller), but I
> have the option of 5, 9 or even 12V if needed (only unipolar, though.)
> Then, this amplified signal needs to be converted to a measurement that
> will somehow relate to "how loud" the sounds are. Accurate SPL measurements
> are not required (although they would sure be nice if this was a commercial
> application). I may have access to a measuring microphone in order to
> calibrate this when I'm done. I'm using an ESP32 board and its onboard ADC.
> >>
> >> I first tried to use the RMS Arduino library, which measures an AC
> signal coming into any analogue pin (no external processing, other than
> prequalification). I couldn't get it to show any coherent readings - I'm
> not sure if this is due to the sample number or sampling period I'm using.
> Making an RMS calculation method from scratch wasn't much better either -
> the variations I could detect were (or seemed to be) minuscule - definitely
> not enough to be meaningful in this application.
> >> I'm now trying a more analogue approach: the preamp signal is passed
> through a Schottky diode, connected to a large capacitor. A transistor is
> placed parallel to the capacitor, to be used as a reset switch (controlled
> by the processor).
> >> <image.png>
> >> I have tried AC coupling and DC coupling the input - both methods work
> (DC coupled version is shown). When the input goes over the threshold of
> the diode, the capacitor is charged (with a pretty large current), and the
> droop rate is small enough to measure it with the controller, then reset
> it, to take another measurement. So far so good, but I need some way of
> eliminating that 0.3V threshold.
> >> <image.png>
> >> The graph is taken from the AC coupled version (but is identical to the
> DC-coupled one, save for some DC offset). The X-axis shows the input
> amplitude and the Y-axis shows the capacitor's final voltage.
> >> The ESP32 has adjustable attenuation for the ADC - the maximum range
> can be adjusted to ~1.3V, ~2.5V and ~3.3V (approximate values). The
> resolution is 12bits.
> >>
> >> I thought of using a rail to rail opamp to make an ideal diode -
> however, I only have a SOIC8 version of an OPA172 and no time to print a
> PCB. Perhaps I can source adapters quickly though - is there a single opamp
> circuit that could help me?
> >> I can also mess around with the preamplifier stage, adjusting the dc
> bias or gain.
> >> I'm kinda stuck. Any ideas?
> >>
> >>
> >>
> >> _______________________________________________
> >> Synth-diy mailing list
> >> Synth-diy at synth-diy.org
> >> http://synth-diy.org/mailman/listinfo/synth-diy
> >
> >
> >_______________________________________________
> >Synth-diy mailing list
> >Synth-diy at synth-diy.org
> >http://synth-diy.org/mailman/listinfo/synth-diy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://synth-diy.org/pipermail/synth-diy/attachments/20200706/a8a4df17/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 10769 bytes
Desc: not available
URL: <http://synth-diy.org/pipermail/synth-diy/attachments/20200706/a8a4df17/attachment.png>

More information about the Synth-diy mailing list