Following up on Part 2, it’s time to talk about the output stage.
This output stage is the brainchild of my friend Kostas, all I did was lay out the PCB.
It is a fully discreet single-ended class-A output stage, outputting ~2.4V RMS.
I have been working on some games for the ESP32 and needed some decent quality audio with a minimum number of additional components. I was bouncing between using the DAC and using the I2S bus. The DAC requires less external parts, so I went that way. I ended up creating a very simple library for use in he Arduino IDE. (Note: This only works with ESP32)
This article is the first of a series detailing the design and build process of an Arduino controlled Dual Mono AK4490 DAC by DimDim:
The design goal was to do a dual mono design so as to maximize SNR and channel separation. A 4-layer PCB design was chosen so as to have a very solid, low impedance ground plane as well as proper power and signal planes. The I2S, audio signals and power after the local LDO regulators are routed on the top layer, the 2 middle layers are ground and power planes, and the bottom layer serves to route I2C signals and some power lines.
Holtek’s App note about their audio to digital signal converter chip BH45F0031 that together with an phone app, communication via audio phone jack is possible. Link here (PDF)
The BH45F0031 is a Flash type 8-bit high performance RISC architecture microcontroller, which is designed for smart phone headset interface applications that can directly transmit data and communicate with the microcontroller using their audio earphone interface.
The BH45F0031 can convert the analog audio signals from mobile phones into digital data and transmit them to a master external MCU. The device can also convert the digital data from the master MCU into analog audio signals and transmit them to mobile phones.
One of the problems that has accompanied the advent of ever more complex home entertainment systems is the complexity of the burgeoning stack of remote controls that manifest themselves alongside your system. It doesn’t matter if you have a fancy does-the-lot universal remote, you are still left with a slew of functions to perform before you can sit down to enjoy the music.
[Robert Cowan] had this problem with his whole-house audio system. Playing music required a fiddle with the remote, and the moment was gone. What was needed was an automatic system that simply issued the relevant commands to the stereo without all the fuss.
His solution was to have everything happen when an audio output was detected from his Sonos Connect streaming media player. He tried rectifying its line output to detect music but hit problems, so instead used a SparkFun audio detector module. This in turn speaks to an Arduino, which then talks via a level shifter to the stereo’s RS232 port. [Robert] included all the relevant parts, schematic, and software is links in the video description. It’s a project that should almost be a feature built into a decent stereo, yet the manufacturers prefer the awful interfaces of their remote controls.
We can’t help wondering if his spotless bench and suspiciously tidy workshop is a scene of real hardware hacking or a TV studio, but we’ll forgive him that for his good result.
You try to be good, but the temptation to drown out the noise of parenthood with some great tunes is just too much to resist. The music washes over you, bringing you back to simpler times. But alas, once you plug in the kids started running amok, and now the house is on fire and there’s the cleaning up to do and all that paperwork. Maybe you should have tried modifying a baby monitor to interrupt your music in case of emergency?
Starting with an off-the-shelf baby monitor, [Ben Heck] takes us through the design goals and does a quick teardown of the circuit. A simple audio switching circuit is breadboarded using an ADG436 dual SPDT chip to allow either the baby monitor audio or music fed from your favorite source through to the output. [Ben] wisely chose the path of least resistance to detecting baby noise by using the volume indicating LEDs on the monitor. A 555 one-shot trips for a few seconds when there’s enough noise, which switches the music off and lets you listen in on [Junior]. The nice touch is that all the added components fit nicely in the roomy case and are powered off the monitor’s supply.
On the hardware front, it’s a tiny four-layer board that’s crammed with parts. At the core is an STM32F4 microcontroller and a DAC. Indeed, the build was inspired by other folks’ work on the STM32F4 Discovery dev kit that has been used to make some pretty interesting synthesizer devices. [Mario]’s version adds two stereo headphone outputs, two microphone inputs, two IR reflective distance sensors used as control inputs, some buttons, and a ton of LEDs. And then it makes good use of all of them.
The firmware isn’t open source yet (poke! poke!) but it looks like it’s going to be. On his blog, [Mario] works through an example of adding a drum machine into the existing firmware, so it looks like it’ll be hackable.
Squeezing a lot of DSP functionality out of a single microcontroller is a feat. On a similar chip from a different manufacturer, [Paul Stoffregen]’s Teensy Audio Library could also be made to do a lot of the same things. But the real beauty of the Gecho project is that it has some interesting hardware features already built in and ready to go. It wouldn’t be a bad launching pad for your own musical or audio explorations.
We all know that speakers are microphones and microphones are speakers, right? If not, take a moment to plug your headphones into a microphone jack and yell into them. It’s not exactly hi-fi, but it works.
So it’s not a huge surprise that three security researchers in Israel have managed to turn the combination headphone and microphone input jacks that are present on most laptops into an eavesdropping device. (Paper here as PDF, with an obligatory demo video on YouTube, embedded below.) Speake(a)r is a neat proof-of-concept and a horrid pun.
There’s almost no exploit here; the just ask the codec chip to dump its output to an input channel, and listen in. The audio is weak, but they fully characterize what they can get out of it, and that includes voice or up to 1 Kbps of bandwidth. And the fact that this exfiltration capability is sitting around in almost every office environment just waiting to be (ab)used is reason for concern.
Of course, you could just unplug the earphones, and this makes us think about cell phones with their built-in hardware. The exploit assumes that the malware has access to your audio devices, so if you’ve got a microphone in your laptop, the game would be already over. Discuss this hack amongst yourselves in the comments.
via TechCrunch, and thanks for the tip from [bthy]!
Everyone has a chip-of-shame: it’s the part that you know is suboptimal but you keep using it anyway because it just works well enough. Maybe it’s not what you would put into a design that you’re building more than a couple of, but for a quick and dirty lashup, it’s just the ticket. For Hackaday’s [Adam Fabio], that chip is the TIP120 transistor. Truth be told, we have more than one chip of shame, but for audio amplification purposes, it’s the LM386.
The LM386 is an old design, and requires a few supporting passive components to get its best performance, but it’s fundamentally solid. It’s not noise-free and doesn’t run on 3.3 V, but if you can fit a 9 V battery into your project and you need to push a moderate amount of sound out of a speaker, we’ll show you how to get the job done with an LM386.
Stuck in the Past
There are a lot of better audio amplifier chips these days if you’re looking for lower voltages. Cellphones and lithium-ion batteries, along with the overall trend toward lower voltages in gizmos across the board, have pushed chip manufacturers to do more and more with less and less. There are some great amplifier chips out there running on 3.3 V and 5 V instead of 9 V or 12 V.
In particular, there are a number of chips that run in “bridge-tied-load” mode, which means that it drives both sides of the speaker, which makes it louder for a given voltage and removes the necessity for a big output capacitor in the design. This is a win on all fronts.
Because these amplifiers are marketed toward use in tiny devices, the vast majority are in surface-mount technology (SMT) packages. With the exception of making heat dissipation a bit difficult, we’re big fans of smaller parts and not having to drill holes in home-made PCBs. If you’re not down with SMT, you’re going to have to catch up soon. For instance, our other favorite DIP chip amp, the TDA7052, has been end-of-lifed.
So for an SMT PCB design, the LM386 is dead. There are hundreds of few-hundred-milliwatt amplifiers out there that can outperform it. We’ve designed with the TPA321D, for instance, and it runs circles around the LM386, but it’s SMT. Maybe you’d like to point out your favorite grain-of-rice, few-hundred-milliwatt, 8 ohm speaker amplifier in the comments? Anyone want to buy a stick of LM386s off of our hands?
Good, Basic Design
Just kidding! The LM386 has its place — on the breadboard, in the one-off perfboarded circuit, or even free-formed with parts hanging off of it in mid-air. And as the granddaddy of DIP-format amplifiers, it’s not going anywhere. In contrast to other, supposedly superior, amplifier chips, the LM386 is still manufactured after (who knows?!) how many years. And the reason is not just the form-factor. It’s also a very solid design.
In fact, it’s a classic push-pull amplifier. The basic design uses two output transistors, one for the positive half of the voltage waveform and one for the negative half. The problem with the basic design is crossover distortion, which can be reduced by biasing the transistors just into their operating region, or by using an op-amp to provide feedback and push them through the dead zone. The LM386 does both.
If there were no such thing as an LM386, you could take a very nice op-amp for the voltage gain stage and wrap up the output transistors in the op-amp’s feedback loop to handle the current demand. The op-amp will swing the output transistors around like wild to make sure that the output voltage is a scaled-up version of the input voltage, whatever the load on the outside. The better op-amp you use, the better the overall circuit will sound.
That’s exactly what’s going on inside an LM386. The schematic, copied from the datasheet, is a simple differential amplifier (the mess of symmetric transistors on the left-hand side) that takes feedback from the output voltage on the right-hand side between the pull-up and pull-down power transistors. The diodes are there to bias the transistors just into conduction to help minimize crossover distortion. This is called class A/B operation, and depending on the audiophile in question, it’s second only to pure class A for sound quality.
In short, aside from the simplistic differential amplifier, the internals of the LM386 are essentially what you’d build anyway. No wonder it has stood the test of time: it’s a solid, basic design. Unfortunately, that’s not the same as saying that it’s easy to use.
The LM386 in Application
Have a look at the “typical applications” section of the datasheet. What’s missing? The worst omission is decoupling on the power rails, but you were going to include that anyway, right? If you’re running on batteries with low internal resistance and short wires, 0.05 microfarads is fine. If not, decouple with at least 100 microfarads plus a 0.05 – 0.1 microfarad capacitor for noise immunity.
What else is missing? In a few of the examples, they’ve included a “bypass” capacitor on pin 7, but only in a few. Even when they do add it, it’s drawn as if it were optional. It is optional if you don’t mind the amplifier hissing like a mad cat. Otherwise, this is a good place for some capacitance: anywhere from 0.1 to 10 microfarads seems plausible. Another secret trick: grounding pin 7 can be used to mute the amplifier circuit when not in use.
We’ve also noticed, and we’re not alone, that the inverting input seems to be less noisy than the non-inverting. See how the datasheet applications ground the inverting input (pin 2) and put the signal into pin 3? Do exactly the opposite and you’ll reduce your noise floor even further.
An additional circuit is listed as being “with Bass Boost”. This circuit adds highpass-filtered (negative) feedback between the output and pin 1 which damps down some of the high-frequency hiss and adds a lot more to the bass and midrange. Since a common complaint about the LM386 is that it is prone to high-frequency hiss when it’s idling, adding about 5 dB more mid-range signal to that noise is a clear win. It’s especially welcome on the small toy speakers that are usually paired with LM386 circuits.
Finally, there’s the question of the snubber capacitor and resistor on the output (pin 5). In practice, we’ve included this some times, and not other times. We built up a test board with a jumper that puts the snubber in and out of the circuit for this article. We can’t tell the difference. Supposedly, if the amplifier is prone to wild self-oscillations, this should damp it. The datasheet authors wouldn’t add it if it didn’t help with performance or reliability, we just can’t verify which of these two it is.
Not missing in any of the examples is the absolutely massive 250 microfarad output capacitor. You need it, and it needs to be big if you want to pass any bass through it. With an 8 ohm speaker and a 250 microfarad capacitor, you’re still attenuating some of the bass: 1/(2pi250 uF * 8 ohms) = 80 Hz is already reduced by 3 dB and the low E on a bass guitar is another octave down from there. That tiny little speaker is probably not helping either. Use the bass boost circuit for any low end at all.
More decoupling of the power supply: this chip can push peaky power, you need to feed it.
Bypass pin 7 for noise immunity. Ground it to mute the amp.
Use the inverting input.
Use the Bass Boost. Think of it as hiss-reduction.
The snubber. Do what you think is best. Retrofit if you need it?
Don’t forget the output capacitor. Bigger is bassier.
The best design we’ve seen on the web? The 9 V battery Ruby guitar amp gets everything right. Because guitar pickups have a very low high output impedance, they also add a JFET preamp. We’d also use the bass boost option, but guitarists like their high-and-janglies and don’t seem to mind hiss.
Our Cold Dead Hands
The LM386 is a well-designed, basic workhorse that does a decent job when its hooves are kept clean and it’s well-fed. Aside from having a slow op-amp stage by today’s standards, it has decent performance. It can also sound horrible if you neglect it.
Because it’s one of the classics, it’ll always be available in through-hole DIP format, so it’s easy to wedge into a breadboard or one-off designs. You’ll never have to worry about it going out of production or costing much more than a quarter. And it runs decently loud off of a 9 V battery, which is pretty convenient to just toss into your project alongside the 3 V that’s powering the logic. Keeping the power and logic supplies separate is always a win.
It’s not a modern chip, though. The modern chips have X times more stuff going on inside. Some of this is to increase audio fidelity by speeding up the op-amp. Some of this extra circuitry helps the chips remain stable even with fewer supporting parts. The killer innovation, and the one that leads us to use a modern chip in anything that’s actually designed instead of just lashed together, is driving the speaker in bridge-tied-load mode. BTL means no output capacitors and is louder to boot — loud enough that a higher voltage for the power amplifier may not be necessary after all, though you’ll still want to decouple the supplies well.
We’re not saying that the LM386 is the best amp of all time: it can be a bit noisy and it’s demanding. But with a little care, it can work out fine. It’s absolutely not our favorite amplifier chip, but we’d miss it if it were gone, and it would make our desert-island IC list unlike other parts of its generation such as the LM741 op-amp or the TIP120 transistors — they are old, but the LM386 is a classic.