modified: Friday 1 May 2020
Project; Small self-powered speaker
A week back I realised that I was wasting lots of time making one-off audio amplifiers for each of my radio projects. I realised this was silly, and started planning a better, generic solution.
The end result:
- Wide gain range. Input signals from 1mV to 1V p-p.
- Battery powered. This means it's isolated, one less thing to worry about blowing up my circuit.
- Low-power. Make it last forever if I forget to turn it off.
I had hoped some of my off-the-shelf amplifier chips would be useful here, but they tended to fall into one of two camps. The linear (class AB) ones tended to have obscene idle current requirements (probably because they're older designs) and high minimum voltage requirements (making them hard to battery power). The switchmode (class D) ones I had called themselves "filterless" or other such sinister things.
"Filterless"? Essentially they rely on the inductance of your dynamic speaker coils to filter the output, ie get rid of the HF noise. This sounds really radiative to me, especially if I want to use this amplifier for open-air unshielded radio prototypes on my bench. I don't want the PWM frequency of the audio amplifier spewing 1ft away from a sensitive or borderline radio receiver.
I could have built my own filters and put them on anyway, but I thought this would probably end up taking just as many parts or time as making my own amplifier. That and I'd probably want to fold some little shields for it.
So begun the descent into chaos, as I concluded I needed to make my own from scratch:
My god this ended up ugly :D I love it. Don't stare directly at the battery-pack that's just hanging in there or the capacitors sticking through the mounting board due to a lack of space. Despite its size this entire amplifier can only deliver a few watts -- we're far from the miniaturisated realm of technology.
Specs and front panel
Max gain: ~43dB
Idle current draw: 8mA
Power supply: 4 flat AA batteries (around 5-6V)
Output swing: to about 1V of the power rails.
I originally had the idle current draw to below 1mA, but I had troubles with output biasing. Stuff it, 8mA is still many hundreds of hours of idle time on ordinary AA batteries.
Nothing too fancy. Uses a low-power quad opamp (MCP6L04) and two Sziklai pairs for the class AB output:
Ideally I would use mosfets instead of BJTs, especially since I'm driving a 4ohm speaker (BD139/140's top out around 1A). Sadly I didn't have any to hand with low-enough turn-on voltages for me to make this easily and quickly. Common-source mosfet amplifier stages, like what I have pictured previously, are another more complex topic for another day!
I made an ordinary 100K pot into a logarithmic pot by putting a small resistor in parallel with its centre wiper. This is a common practice in audio and it gives you about 20dB of linear-dB-ish range. In the last few degrees of low-end travel it rockets towards negative infinite dB, which is useful for muting the output. 20dB is sadly only "just enough" range to feel useful, in reality I would like a lot more but it's physically impossible to do with this design unless you use double-stacked pots (ie it doesn't matter what you do with the resistors, you can't get a much better dB curve). In future designs I plan to investigate voltage-controlled amplifiers, or just use an off-the-shelf class AB chip that does it all for me :P
Originally I had the output driver opamp setup to 10x the signal (+20dB again), but I changed the feedback resistors to provide +3dB instead. I discovered that placing all of this gain late in the circuit was a bad idea, too much noise was picked up, it's much better to put the gain near the input. Now the picked up interference is mostly imperceptible under normal use.
Biasing this amplifier was interesting. My original design omitted the two 100nF capacitors near the diodes you see in the schematic and used 100k instead of 10k resistors top and bottom. This was very power efficient (the amplifier used less than 1mA total at idle) but didn't work very well.
The first problem was that the diodes can't be thought of as nice bias-halving resistors. Instead they misbehave when the opamp tries to drag their centre voltage up and down, ruining (reducing) the bias voltage across the two diodes and hence introducing notable crossover distortion. The fix for this was to add the two capacitors.
The second problem was horribly reduced output range. With 100K resistors this amplifier could only output 0.2V p-p (!) before hard-clipping. Changing them to 10K fixed this.
After some SPICE simulation I've since discovered that it's marginally better to not join the opamp output directly to any of the diodes. Instead it's better to only capacitively couple it in, and do so to both above and below the diodes (using two capacitors). If you only drive one side of the diodes (or the center, like I did) then you get reduced output swing range. I'm still to test this in real life, however, and I suspect that only having capacitive coupling from the opamp could cause problems with DC drift.
Coming soon ™: my article on "lazy" high-voltage amplifier output stages, which will include lots of fun regarding stability and just general cheating.