Summary
I've designed a beamforming circuit that uses two electret condenser microphones (ECMs) in a differential end-fire array and outputs to a bluetooth module's ADC for transmission.
I explain my design below. I'm pretty confident when it comes to calculating parameters, but I lack the more practical skills and experience of circuit design. So in addition to my questions, please call out anything obviously wrong or silly mistakes.
Requirements
- Array parameters should be set to increase gain and directivity on an approximate bandwidth 300 Hz to 1000 Hz.
- Low cost. Total component cost should be less than $40.
- Circuit should be designed for single supply power since bluetooth module power pins will not provide dual supply.
- Signal-to-noise ratio as low as possible within budget.
Architecture
Design
BOM
- Microphone: PUI Audio AOM-5024L-HD-R ($3)
- Bluetooth Module: Microchip BM83 ($12)
- Op-amp: Analog AD8655 (<$1)
- Battery: 18650 ($10)
Simulation Results
Testing at 1kHz. First, putting a 233us delay on the MIC2 voltage source will simulate sound coming in from the front. The constructive interference shows that it is working as desired.
Next, putting a 233us delay on the MIC1 voltage source will simulate sound coming in from the back. The destructive interference shows that it is working as desired.
Array Performance Explanation
I used equations in DIY Microphones Blog, How Array Microphones Work, to calculate the gain and directivity of the differential end fire array with the spacing and delay described in the design. As you can see from the graphs, both show improved performance over the bandwidth in my requirements.
Group Delay Explanation
I used the equations provided by Analog Devices' MT-202 to calculate the time constants required for the all pass filter. I also compared using a single filter (1st order) and splitting the delay among 3 filters (3rd order). As you can see from the graph, the 3rd order makes the group delay roughly constant over the bandwidth in my requirements.
Questions
- Biasing the microphones: The AOM-5024L-HD-R specification recommends 3.0V and a load resistor 2.2kOhm. Since the system voltage is a nominal 3.7V, I assumed the mic's drain current should be equal to the current implied by the spec and used Ohms law to get 2.7kOhm load resistance (ie 3V / 2.2kOhm = 3.7V / 2.7kOhm). I'm concerned my reasoning is over-simplified. Is this correct way to think about biasing this microphone?
- Biasing the microphones: C1 is just there as a low pass filter to remove noise from the Vcc. However, should I have two capacitors after the junction, or just one where it is?
- LTspice microphone modeling: The AOM-5024L-HD-R specification lists the microphone output impedance as 2.2kOhm. So in LTspice, I set the "Parasitic Impedances, Series Resistance" of the voltage source to 2.2kOhm. Is this the correct way to simulate the microphones in this circuit?
- Using single supply: Since the module's system power only provides single supply, I selected a single supply op-amp and tried to design the circuit to accommodate. Conveniently, the signal needed to be biased anyway for mic power. You can see from Test Points 1 and 2 that the signal is biased exactly in the middle of the op-amp's output range. Furthermore, the coupling cap C3 on the negative side of the difference amp ensures that the output of the difference amplifier is also in range. Do these good results in the simulation mean that I have designed for single supply correctly? Is there anything I'm overlooking or simulating incorrectly?
- Noise reduction: I've read that using the same power supply for biasing signal and op-amps can lead to power supply noise amplification in the signal. However, since I'm using a battery, is this really an issue? Would putting a low-pass RC filter at the end be a smart idea or unnecessary? Any other design flaws that might increase noise?
- Impedance bridging: From Table 9-7 of the BM83 spec, it says that the input impedance of the module's ADC is 24kOhm. The AOM-5024L-HD-R specification lists the microphone output impedance as 2.2kOhm. So if I'm understanding impedance bridging correctly, the circuitry between the two should step up from 2.2 to 24 kOhm. I got good results out of the simulation by just setting everything to 22kOhm. Could I be implementing impedance bridging in a better way?
- I'd like to connect the output of this circuit to the analog input left and right (AIL/AIR) of the BM83 because this provides me more features on the software side. What is the right way to implement a mono to stereo connection with coupling cap C4? Are either of the options below correct?
Thank you! Apologies for not linking all my references. I don't have enough reputation to include all the links I wanted.






