SoundMeter with A-Weighting Filter – Strip PCB Version
The Sound Meter Project
Since I had a few days off, the weather in Dresden was pretty bad and we are going into the 2nd lockdown in 2020 now, I decided to do a small electronics project. Idea behind is to improve my skills in KiCad, StripPCB Desing and do some soldering for fun.
I also want a more accurate db(A) Sound measurement as the typical sound measurement inputs for microcontrollers. I hope to do some frequency / FFT measurement in a later project, especially for the the Sensebox. So I want to add an AVR like the ATTiny85. Idea behind, use this AVR as a converter to I2C for environment sound measure.
But for now I added charlieplexing output to drive a 10 digit bar graph.
The project is right from the scratch, just discrete parts, OPV is a LM358(link to pdf) and an ATTiny, parts I already owned. For sure, there are better options for parts (especially the OP-AMP, mike…) but I want to use what I could find in the depths of my storage boxes and had accumulated over the years, only collecting dust.
If you want to build it to: Find all necessary files (schematics, programm, pictures, BOM…) here:
- SM_SPCB_v1.zip (Version 1.0 – 20.Oct.2020)
- …
The project itself is not finished yet, I will do some more measurements, adjust it to an Sound Meter I bought (Amgaze / Benetech GM1356), and of course I will adapt it to the Sensebox. The final goal is to have a sound sensor, continuous reading of the noise in my environment.
A-Weight Filter
I found the idea for a discrete A-Weight Filter at Elliot Sound Products. Therefor all credits to Rod Elliott, I just copied that exact filter design and adapted it a little bit to my design (for the LM358)
Elliot gives a nice insight into the function of the filter. But he is not quite happy with the use of the filter for noise measurement. Not that the filter doesn’t work technically, but for sound measurements, he thinks, the type of filter will not fit and is therefore pointless (just read his rant 🙂 “Proof That A-Weighting Does Not Work“). I can follow his point, but when the industry has agreed and using this as standard, I will use it to get comparable measurements – even if it is not perfect.
So I make a little strip PCB and measured just the filter network. The max. gain is around -6 db @ 2,6kHz for this real live exampl.
(CSV-Data: Bode_SoundSensor_A-Wighting_Filter)
Mike Amp
I spend half of the LM358 for a standard microphone pre-Amp and the other half as driver and for adjustment. Nothing special, but it runs with 3V, using an electret condenser microphone
Complete analog part of the Circuit
So the analog part combine all three components together, straight forward:
Power supply
I using 3.3V (2x AA batteries together with MAX756 DC-DC). But there is a problem: You have to decouple the ATTiny from the analog part. If you don’t you will have a lot of noise in your analog part of the circuit. I know this behaviour very well, especially in the RF circuits where – without this measure – it is impossible to use microprocessors directly connected to the analog circuit. Most of the interference comes via power supply. It is necessary to decouple power supply and ground. That is my standard design for NF to RF:
Actual (October 2020) there is also no power stabilisation. So even with the low power consumption – if the voltage level drops <<3V the amplifier will stop to work. I think I will ad a MAX756 CPA. So I can suck out all energy from the battery.
Charlieplexing and AVR Programm
The idea for charlieplexing the ATTiny85 are from David Johnson Davies / Technoblogy
Therefor all credits to David / Technoblogy. I just adapted the resistors so they are bright enough for 3V power supply. Program for the Arduino you will find in the ZIP File. Actually I don’t fully understand it, so I have to study it a little bit in the future. I just adapted it a little bit, because the full read ist 1/2 of VDD (max. 1.5V). So thanks to David Johnson-Davis for this great design and I still have something to learn about how to program ATTiny85… Here you find the arduino IDE scetch:Â sketch_voltmeter_v1-ino.
Using the bar version (only one digit on per time) will be save a lot of energy. Doing so I measure ~2.1mA for the circuit in summary. Important is the “/50” because the LM358 output is 1/2 VDD
else { Display = Bar(ReadADC()/50); return; } // When Row=2 read ADC, Full Bar
BTW – David has also a simple sound meter with only a few additional parts (but no A-Weight Filter as I want).
Complete Design
Link to SM_D001_v5.pdf.
Strip PCB
Strait forward, but because of the charlieplexing I need a lot of extra wires. Good thing is: Not so much cut-outs. The arrangement of the individual circuit parts is straight forward. On Top microphone amplifier and drivers, below filters. Then comes decoupling of the power supply for digital / analog. At the bottom Attiny with the bargraph LED display. I also add some measurement points for easy access for measurement (MP1,2,3)
[…]