I built and simulated this BJT current buffer for an opamp based on examples I found in various places online: enter image description here

Link to simulation of above schematic

It simulates fine, but I am pretty sure it will not work as drawn in practice. For one thing, any actual opamp cannot swing instantaneously through the 1.4V crossover region without some form of distortion. I'm sure there are other things as well.

What alterations would need to be done to make this a functional circuit in practice?

EDIT: Goal is to drive a speaker with AC signals (20Hz-20kHz). Total power output of 1/4W. OpAmp in question is an NE5532. I don't have LM386s on hand and they are not unity-gain stable anyways. Yes there are monolithic solutions, but this is partly a design exercise and partly a challenge to make do with parts I have on hand.

EDIT: If I diode-bias the bases like this: will I get suitable audio performance? It doesn't need to be exactly hi-fi quality, just not noticeably distorted. With Diode Biasing

  • 3
    \$\begingroup\$ Define "functional". \$\endgroup\$
    – jonk
    Commented Sep 19, 2017 at 17:35
  • 1
    \$\begingroup\$ Seems like a quite typical class B output amplifier to me. Using diodes to bias your transistors is common to improve the crossover distortion (called class AB) \$\endgroup\$
    – Joren Vaes
    Commented Sep 19, 2017 at 17:37
  • \$\begingroup\$ Will diode bias work without any bias current through them? \$\endgroup\$
    – Frosty
    Commented Sep 19, 2017 at 17:43
  • \$\begingroup\$ No, you need to send some current through them. \$\endgroup\$
    – Joren Vaes
    Commented Sep 19, 2017 at 17:45
  • \$\begingroup\$ Is that \$32\:\Omega\$ load a speaker? Is there a reason you don't use an LM380 or LM386? What opamp are you using and why? Is this just a matter of trying to learn how to design with this output topology? \$\endgroup\$
    – jonk
    Commented Sep 19, 2017 at 17:52

5 Answers 5


Let's start at the given output driver topology:


simulate this circuit – Schematic created using CircuitLab

On the left is the basic idea, but it is worth some discussion already.

\$C_1\$ exists, in part, because a speaker is a complicated device and doesn't entirely enjoy an average DC current flowing through it and because you aren't using a bipolar power supply. So \$C_1\$ exists, in small part, to block DC currents. In use, it will soon charge up to an appropriate average voltage across it so that the average current centers around zero. The speaker is complex, but for these purposes (low power, etc), other than justifying an output capacitor, we can just lump it out the way, as you did, and move on.

To avoid most of the cross-over distortion, you want both \$Q_1\$ and \$Q_2\$ to always be (close to) active. So as an initial guess, you probably want two \$V_{BE}\$ separating the base voltages between the two BJTs.

Now, look to the right side. I've added some emitter degeneration (which helps for several reasons.) A lot has been written about this and I've read some. I won't try and replace the discussions by professionals in this area. But suffice it that if you set the voltage drop across these resistors to around \$60\:\textrm{mV}\$ or so at the expected RMS current, you are close enough to optimal for hobbyist work. (A professional producing a commercial product would anguish over this whole single detail a lot more than I'm going to.) Given that you want \$\frac{1}{4}\:\textrm{W}\$ into \$8\:\Omega\$, this means you have \$\approx 180\:\textrm{mA}_\textrm{RMS}\$. From this, I get pretty close to the resistor values you see there on the right side. All this really means is that you might need just a little bit more voltage between the bases. Best to plan on making some room for it, though.

At this point the question is how are you going to actually drive those two BJTs. The simple approach is to just use "diodes" somehow. Of course, if you go that way, you will need to supply them enough current that they develop the voltage you want to have. It would be better to use a constant current because that would provide a nearly constant voltage across them (assuming their temperature doesn't drift around a lot.)

But since you want this as a learning lesson, the next thing to consider is an adjustable \$V_{BE}\$ multiplier. These are worth learning about and they are not expensive or difficult.


simulate this circuit

I've designed the above \$V_{BE}\$ multiplier based upon the idea that there will be something like \$\frac{250\:\textrm{mA}}{\beta=100}=2.5\:\textrm{mA}\$ peak base drive current needed for \$Q_1\$ or \$Q_2\$. The \$15\:\textrm{mA}\$ current source at the top represents something we need to worry about, later. For now, just assume it exists. The unconnected lead at the bottom will have to sink this current somehow (or the portion of it that isn't used for base drive, anyway.) I decided to pick \$14\:\textrm{mA}\$ as the "nominal" design current for the multiplier.

Out of this \$14\:\textrm{mA}\$, I decided to assume \$1\:\textrm{mA}\$ for the base resistor divider branch of the \$V_{BE}\$ multiplier, leaving the collector current to be \$13\pm 1.5\:\textrm{mA}\$, depending on instantaneous circumstances. With that level of collector current, I decided to estimate \$V_{BE}\approx 750\:\textrm{mV}\$ for \$Q_3\$. So \$R_3=\frac{750\:\textrm{mV}}{1\:\textrm{mA}}=750\:\Omega\$. I want the sum of \$R_2\$ and \$R_4\$ to then be \$1150\:\Omega\$, discounting an error due to the base current for \$Q_3\$. I've added a standard \$1\:\textrm{k}\Omega\$ potentiometer, along with a nominal value for \$R_2\$ that will provide a settable voltage range of from about \$1.3\:\textrm{V}\$ to about \$2.3\:\textrm{V}\$. That covers the desired value and provides some adjustment range.

By the way, the \$1.9\:\textrm{V}\$ isn't cast in concrete. The actual value you want will vary a bit because discrete BJTs for \$Q_1\$ and \$Q_2\$ vary a bit. Make it too big and you will waste unnecessary power. Make it too small and you will hear the cross-over distortion.

\$R_1\$ is there to correct for the incremental resistance and the Early Effect. I won't belabor how that gets calculated, unless you ask. That value might be "good" somewhere between \$10\:\Omega\$ to about \$33\:\Omega\$.

Now you need to supply a current source. This can be done with a current mirror. But a much "cheaper" technique uses bootstrapping from \$C_1\$. The new arrangement is:


simulate this circuit

There's about \$1\:\textrm{V}\$ between the base of \$Q_2\$ and its emitter (plus the little \$RE_2\$ resistor.) And since the average voltage across your speaker is \$0\:\textrm{V}\$, there will be about \$6\:\textrm{V}-1\:\textrm{V}=5\:\textrm{V}\$ across \$R_5\$. With a signal applied, \$C_1\$'s steady state voltage of about \$6\:\textrm{V}\$ still applies and as the base of \$Q_2\$ moves upward, so will its emitter (it's an emitter-follower, after all.) So \$C_1\$ will be hauled up, as well. The same logic applies for downward signal directions, too. So the voltage across \$R_5\$ remains rather unusually constant regardless of the signal changes. Which is all we actually need to create a cheap current source out of \$R_5\$.

I've computed the value as \$R_5=\frac{5\:\textrm{V}}{15\:\textrm{mA}}\approx 330\:\Omega\$.

At this point, you have the makings of a cheap hobbyist quality output driver for your speaker.

The output of your NE5532 isn't guaranteed to be more than about \$10\:\textrm{mA}\$ (worst case and into a dead short.) So let's reduce the current source above to about \$6\:\textrm{mA}\$ ... and plan on letting that work out. (Won't be nearly so stiff, but probably acceptable for your case?)


simulate this circuit

(I adjusted \$R_1\$, \$R_2\$, and \$R_3\$ for the lower collector current.) Here, you will need to set up a voltage divider for the mid-point voltage of \$6\:\textrm{V}\$, using \$R_6\$ and \$R_7\$. Do what you think is appropriate, there. It isn't difficult, though. Then you need to decide on the gain you want. I've provided allowances here with \$R_8\$ and \$R_9\$, so you can make some decisions here. \$C_3\$ is there for your convenience, if you need it, as that is the path for your single-ended audio input.

That's about it. Make \$C_1\$ huge, though. Add bypass capacitors where you think appropriate. Build that and play with the value of \$R_4\$. It should be about right with the wiper in the mid-range position.

Oh, and keep in mind that the NE5532 output swing range isn't all that much. Luckily, I think it will be fine for \$\frac{1}{4}\:\textrm{W}\$, which doesn't require more than \$\pm 2\:\textrm{V}\$ swing. It's output only needs to get within about \$3\:\textrm{V}\$ of ground. And it probably can do that.

I'd added \$C_2\$ to help stabilize the \$V_{BE}\$ multiplier section, earlier. But there are problems with capacitors (such as, it takes time for them to charge up.) You can dump the capacitor and get nearly as good a performance (voltage stability vs current changes) by adding yet another BJT.

For example:


simulate this circuit

That's another approach (one I actually kind of prefer.)

I've barely scratched the idea of thermal management. I'll address it in a moment, after making a few points.

  1. Your voltage rail is actually a bit high for the power output you wanted. Given this topology, and ignoring your NE5532 opamp's own output voltage limitations (you can get better ones), you are still probably only good for \$V_{PP}\approx 8\:\textrm{V}\$ into your \$8\:\Omega\$ load. This would be a power of \$1\:\textrm{W}\$, or about 4 times what you are asking to achieve. So if you chose a different opamp, you might be able to use this output circuit to deliver more power... but not more than \$1\:\textrm{W}\$.
  2. Completely ignoring the circuit overhead voltage requirements (reality), you theoretically could get \$\frac{V_{CC}^2}{8\cdot R}=2\frac{1}{4}\:\textrm{W}\$ with your power supply rail. And if this were a perfectly set class-B amplifier, and not a class-AB, then in theory you could achieve 50% efficiency. So this theoretical perfect class-B amplifier would consume \$2\frac{1}{4}\:\textrm{W}\$ and yield \$2\frac{1}{4}\:\textrm{W}\$ into the load.
  3. A real circuit requires operational overhead voltages. In addition, it's class-AB so additional power will be wasted because both high and low side sections are always active to some degree and there is a quiescent base of power consumed, regardless.

Let's work out an estimate of wasted power, just as a very rough back of envelope calculation.

In this case, \$Q_1\$ and \$Q_2\$ have a DC voltage average of about \$6\:\textrm{V}\$ and will have an AC variation around that of \$V_{\textrm{peak}}=\sqrt{2\cdot \frac{1}{4}\:\textrm{W}\cdot 8\:\Omega}=2\:\textrm{V}\$. However, only one-half cycle is a powered one. So for power computations, I get an AC \$V_{\textrm{RMS}}=\frac{V_{\textrm{peak}}}{2}=1\:\textrm{V}_\textrm{RMS}\$. Combining these gives me an effective \$V_{\textrm{RMS}}=\sqrt{6^2+1^2}\approx 6.1\:\textrm{V}_\textrm{RMS}\$.

The current in each BJT will also happen for only one-half cycle. So the current in each BJT (if you've adjusted the \$V_{BE}\$ multiplier correctly) is \$I_{\textrm{RMS}}= \frac{250\:\textrm{mA}}{2}\approx 125\:\textrm{mA}_\textrm{RMS}\$.

This means the power in each BJT will be \$P=\frac{1}{2}\cdot 6.1\:\textrm{V}\cdot 125\:\textrm{mA}= 380\:\textrm{mW}\$ -- each. So twice that is about \$\frac{3}{4}\:\textrm{W}\$. From this estimate, you can see that to deliver \$\frac{1}{4}\:\textrm{W}\$, this amplifier stage will require about \$\frac{3}{4}\:\textrm{W}\$ of its own dissipation.

Not exactly efficient.

But this points up another thing. This means that you should expect about \$380\:\textrm{mW}\$ of dissipation in each BJT. TO-92 parts usually have a thermal resistance of \$200\:\frac{^\circ\textrm{C}}{\textrm{W}}\$, or a \$76\:^\circ\textrm{C}\$ rise in temperature, here. This is VERY SIGNIFICANT. And it will impact everything, because the \$V_{BE}\$ voltage for a BJT varies at around \$-2.2\:\frac{\textrm{mV}}{^\circ\textrm{C}}\$ and this throws off what you want for the \$V_{BE}\$ multiplier, etc.

The whole thing ceases to work quite like it was designed.

One approach is to couple the \$V_{BE}\$ multipler to the driver BJTs, thermally, because the multiplier's \$V_{BE}\$ will also vary and so therefore also will it's final voltage across it. Another approach in this case might be to choose TO-220 BJTs for your output stage because they have MUCH BETTER thermal resistance and their temperature change will be much less. Heat-sinks are good, as well. Anything to reduce the change in temperature is good. Or else just accept the change and create a thermal design as part of your circuit.

Or... easier... use a smaller voltage rail and a better opamp. Here, you might get away with about half the dissipation in each BJT.

As you can see, even in the case of a simple quarter-watt output stage, there are a lot of considerations in making something that "just works right."

  • \$\begingroup\$ Thank you so much for this incredibly detailed answer. Lots for me to think about and experiment with. \$\endgroup\$
    – Frosty
    Commented Sep 21, 2017 at 18:10
  • \$\begingroup\$ @Frosty Thanks for the kind words. I hope it helps a little. I tried to include enough detail to expand your thinking, without diving too deeply to completely overwhelm. As it turns out, one can write several chapters and perhaps even a whole book on nothing more than this "simple" output stage topology. (You can just replace the VBE multiplier with diodes, too, by the way.) \$\endgroup\$
    – jonk
    Commented Sep 21, 2017 at 19:04
  • \$\begingroup\$ @jonk Wow, thanks so much for very detailed, step-by-step explanation. I think know now why my simple complementary emitter follower amplifier is loading down the output of my op amp. See this discussion: electronics.stackexchange.com/questions/423702/… \$\endgroup\$ Commented Mar 19, 2019 at 19:24
  • \$\begingroup\$ @BrockR.Wood Even with all the revisions in your question/answer, there's still a lot of problems left over. Your halfway biasing needs to be stiffer. The 1k going from output to (-) input of the opamp isn't appropriate, either. Volume control as you have it isn't the best place for it. The added output transistors need more work (thought.) And there's more. But if you've got something that seems adequate, I think that's great, too. \$\endgroup\$
    – jonk
    Commented Mar 19, 2019 at 21:01

Yes it will work.

Will it be any good? Nope.

The problem with this circuit is around the "zero crossings" which are not at 0 Volt in your circuit but around 6 V since you're using a 12 V supply.

The problem occurs when the direction of the output current needs to change. Then the transistor which had been supplying current must be switched off and the other transistor must be switched on.

At the switching point there's a moment when both transistors are off and this results in crossover distortion.

The solution is to take care that some current always flows through both transistors. A class AB stage has this.

Here's a typical example of a class AB stage:

enter image description here

  • 2
    \$\begingroup\$ Going to ask what might be a dumb question... in a new question. \$\endgroup\$
    – Trevor_G
    Commented Sep 19, 2017 at 18:27
  • 2
    \$\begingroup\$ re: crossover distortion: If the OpAmp can slew 9V/uS won't it be able to traverse the deadzone in a few hundred nanoseconds? Or is that not fast enough? \$\endgroup\$
    – Frosty
    Commented Sep 19, 2017 at 19:02
  • 2
    \$\begingroup\$ How fast the opamp is is irrelevant, there will still be crossover distortion. It will be less compared to using a slower opamp but the distortion will still be there. Anyway, that slew-rate of the opamp means little if it cannot change the voltage at the output (where the large transistors are) as quickly. Also those large transistors might slow things down. \$\endgroup\$ Commented Sep 19, 2017 at 19:29
  • \$\begingroup\$ Or is that not fast enough? Fast enough for what ? There is no "good / bad" in electronics. If you build an audio amp with this it might be good enough for elderly people as these cannot hear high frequencies due to distortions. But the same audio amp will be thrown out of the window by someone with excellent hearing who values distortion free sound. \$\endgroup\$ Commented Sep 19, 2017 at 19:33

Bandwidth and crossover distortion is not the issue with unity loop voltage gain.

Your main problem is insufficient current drive.

Your Op Amps has a large signal bandwidth of 140kHz of 10V on 600 ohms or 17mA.

The GBW os 10 MHz so you can raise the gain from 1 to 100 easily with R negative feedback ratio.

The ratio of 600/8 ohms implies base current gain of 75 but if the bias current is 15mA your Op Amp will be wasting most its current capacity into the DC bias with AC swing.

Consider Op Amp current limit of 30mA is possible, but still you need more hFE at all times, which isnt going to happen.


matching power Darlington complementary pair.

There are finer details for lowest distortion, but this is a must have if you need more than Vcc=9V


Whether the class-B stage you propose is a good choice depends entirely on the application.

When the output current changes sign, the opamp will have to slew to turn on the other transistor, as you mention. So it will generate a large amount of crossover distortion.

For driving a DC voltage into a load, it will be absolutely fine.

For audio, it would sound like crap: since audio signals spends most of their time near zero amplitude, any discontinuity near zero is a deal breaker. If the signal is small enough, but still keeps changing sign, because it's AC, this simple design can end up with more distortion than signal...

For driving AC signals into a load, that'd depend on the frequency and the allowable amount of distortion.

Bimpelrekkie gave an example, I'll give a counter-example, where the opamp's supply current is used to drive a pair of darlingtons. This is a bit ugly.

Honestly, the simplest solution for you is to use something like a LM1875, LM3886 or TDA2030 which are very cheap and capable power opamps.

For example LM1875 costs 2.70€ and it includes comprehensive protection (short circuit, overcurrent, crude SOA, overheat, etc). LM3886 has a very clever full SOA protection.

There is also TDA7294 but its protection is a bit less smart (I had one burst into flames on a short) and I prefer the sound of the LM parts.

Now if you want to know what I use to drive AC current into stuff? An old crusty audio amp I got at a garage sale for €20. It has plenty of nice features like: an enclosure, not having to build it, got it for cheaper than the heat sink or the transformer, a volume knob... very useful ;)


It simulates fine, but I am pretty sure it will not work as drawn in practice. For one thing, any actual opamp cannot swing instantaneously through the 1.4V crossover region without some form of distortion. I'm sure there are other things as well.

Indeed it can't. The rate at which the opamp output can charge is the slew rate. For example the LM358 has a slew rate of about 0.5V/us, so it would take about 3 microseconds to swing through the crossover region.

Many opamps internally suffer from crossover distortion as well, which should be clear when you look at the equivalent schematic and see a class B amplifier for the output

on the left, class B amplifier with short-to-ground protection and 50uA offset Darlington NPN Q5/Q6 and PNP Q13 form a push pull class B amplifier. Q7 provides short-to-ground protection. The resulting crossover zone is about 2 volts.

So the choice of whether to eliminate the crossover distortion by using a more complex design depends on whether the crossover distortion affects the signal quality. For example, if the crossover distortion lasts 3 microseconds and the worst case signal is a constant 20kHz (25 us between zero crossings), it could experience distortion of 12%.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.