Class AB Amplifier
MJL3281A / MJL1302A outputs · ~77% efficiency near peak
Overview
ECE 3201 final project, Spring 2026 — built with Karen He. The brief was open-ended enough that we could do anything, so we aimed for something I actually wanted: a portable speaker that could fill outdoor space without a $200 BOM. We landed around $40 total.
The starting point was Rod Elliot's P217. I wasn't going to redesign a Class AB topology from scratch for a final project, but I also wasn't going to just drop in the exact values and call it done. So I hand-measured Vbe on each transistor and forward drop on each diode, then adjusted component values until the bench behavior matched what LTspice predicted with the real device parameters. That gap — between nominal datasheet values and what's actually in your parts bin — is something you don't appreciate until you've chased it around a protoboard for a few hours.
Separately: Rod Elliot's site (Elliot Sound Products) is one of the most genuinely useful resources on the internet for analog electronics. Bookmark it.
How it works / the build
Full schematic is in the sidebar link — I'm not going to paraphrase a design that's already documented well. What I'll describe is the architecture, the component choices that weren't obvious from the schematic alone, and what I actually changed.
Topology: complementary push-pull Class AB. A 2N3906 PNP at the input feeds a VAS built around 2N2222 transistors. A six-diode string (1N4007 × 6) sets the bias across the output stage; a trimpot (R14) adjusts quiescent current. The goal with that trimpot is finding the point where crossover distortion is acceptably low without running idle dissipation up to the point where the heatsink gets unhappy.
Output transistors are MJL3281A (NPN) and MJL1302A (PNP). The 8 Ω woofer at 8.70 W output draws roughly 1.65 A peak — well past what any 2N-series device in our kit could handle continuously. Both are mounted to a 150×100×18 mm aluminum heatsink. I checked junction temperatures under full drive; they stayed within spec with margin.
Speaker is a 4PF-8 4″ surround woofer, fs ≈ 137 Hz, usable to about 10 kHz. That's fine for this project but it's one driver doing the job of two — a proper crossover with a dedicated tweeter (2–20 kHz) would recover a lot of the high-frequency response the woofer rolls off.
Key values I ended up on: R6 = 12 kΩ, R7 = R8 = 1.8 kΩ (VAS collectors), R9 = 82.5 Ω (bias), R15 = 20 kΩ (feedback). Supply bypassed with 47 µF ceramics; 4700 µF output cap; 330 µF AC input coupling. The feedback network was the main thing I tuned after measuring — the nominal P217 values gave a slightly different frequency response shape than what LTspice showed with the real Vbe measurements plugged in.
Results & measurements
77.3% peak efficiency at 8.70 W into 8 Ω from a 30 V supply. The theoretical ceiling for Class AB into a resistive load from a single dual-rail supply is around 78.5%, so we're 1.2 percentage points off ideal — most of that is the bias current and the diode string doing their jobs. Idle dissipation sitting at 0.90 W with max at 4.49 W means the heatsink is adequately sized; it got warm but not uncomfortable to touch at sustained full drive.
The efficiency curve climbs steeply with output power, which is the whole point of Class AB over Class A — you don't pay the idle dissipation penalty unless you're sitting quiet. The power budget chart below shows where the watts are going at each drive level: at low power most of it is heat, and that flips as you approach clip.
FFT at 2.5 kHz showed a clean fundamental well above the harmonic floor. I don't have a proper distortion analyzer so I can't give you a THD number, but the scope FFT was cleaner than I expected from a protoboard build.
Challenges & what's next
The quiescent bias is where I lost the most time. Crossover distortion shows up immediately if you're too conservative, and idle dissipation climbs fast if you go too far the other way — both visible on the scope and the bench supply readout simultaneously. I iterated the diode string count and the R14 trimpot while watching both, which works but is slow. A dedicated bias circuit that stabilizes against temperature drift would make this a much less annoying procedure.
The Vbe measurement pass was worth it. I measured each transistor on the bench before putting it in the circuit, plugged the real values into LTspice, and got a much tighter match between simulation and measured waveforms than I would have gotten with datasheet typicals. It takes maybe 20 extra minutes and it visibly improves the result.
If I rebuild this — and I will — the list is: proper PCB instead of protoboard (parasitics on a protoboard at audio frequencies are annoying but not disqualifying; at RF they'd be fatal), a soft-start relay to kill the speaker pop on power-up, and a proper two-way crossover. The 4PF-8 starts rolling off above ~5 kHz; a tweeter crossed around 3–4 kHz with an LC network would recover what the single-driver setup leaves on the table. Port-tuning the enclosure for the 137 Hz resonance would also extend the bass response, though that's more cabinet work than circuit work.
Demo videos
Three bench clips: output waveform responding to music, the idle bias point, and the 2.5 kHz FFT. The scope is a TBS1064.
Gallery