Important note: I'm learning about design with transistors and this is an investigation of transistor design techniques
and presents a first prototype of a possible circuit, it's a long way from being a finished project suitable for
I said in the original blog that I'd explain how I arrived at the design, so in this blog I'm going to give a quick run-
through of how the design came together. I won't explain everything in great detail (looking at some of the building
blocks more closely will provide material for future 'transistor' blogs), so you'll need to understand the basics of how
transistors work and how they get configured in circuits, but it should give a flavour of how I went about it and the
decisions that I made. I don't have a great deal of experience of this kind of design, so this most definitely isn't a
tutorial and you should keep in mind that there may well be [= definitely are!] better ways to do some of these things.
At the end I'll go through some of the deficiencies of the current circuit that I'm aware of and how I think they might
In a work situation, a tight written specification of the operation would almost always be mandatory, but for a simple
personal project we can get by with a spec in our heads. That's what I did here. Although the circuit looks quite complex
and a bit of a tangle, the way it works is quite simple and the spec isn't too involved.
I decided that the input voltage would simply match the voltage that comes from the sense resistor.
The generator input would terminate in 50 ohms.
The load current would be quite modest, no more than a few amps.
It would operate from a single 12V supply.
Here's the complete circuit diagram again. I've corrected the preset pots (just in case anyone actually wants to try
building one). I've also renumbered the components so that it will be easier to locate them for the following discussion
of the operation; the original had become very messy with me adding and removing components as I developed the design.
If I were to try and sum up the basic operation in one sentence, it would go something like this: the load is a control
system that compares the output current with the requested current (the input voltage) and adjusts the output current to
A Run-Through of the Operation
The requested current is going to be input as a voltage (in the first instance, from a function generator) and the idea
is that the circuit will control the output current to be proportional to the input. To do that we need to monitor the
output current and turn it into a voltage so that it can be compared to the input. There are several ways that could be
done but the simplest is to use a resistor (R16). The voltage across the resistor will be proportional to the current and
the resistor does that very well over the whole frequency range I'm interested in (up to a few megahertz). The biggest
source of error with using a resistor with large currents is that it will get hot and the resistance will change.
Choosing the actual resistor value is a compromise: it needs to be large enough to give a reasonable swing in voltage but
at the same time be as small as possible so that the output will work with low voltages powering the output current loop.
I chose a value of 100mOhm. That then gives me 100mV per amp of current. That won't be too much of a burden on the output
but gives signal levels that I can work with and where noise won't be too much of an issue.
The error term is generated by a differential amplifier (in older books you may see this called a 'long-tailed pair')
made up of transistors T3 and T4.
They are the two inputs that would correspond to the + and - inputs of an op amp. The differential amplifier is a useful
building block and if you look at the kind of equivalent circuits that are shown in IC datasheets you'll see just how
much use chip designers make of it. The emitters of the two transistors are connected together and, in my circuit, to a
constant-current source [T9]. The differential pair then steer that current to either side depending on which base
voltage is the higher. Sometimes, you'll see the differential amplifier with just a resistor for the tail. That works
reasonably well where there is a high negative supply as it approximates to a current source but for this, where I wanted
the emitters within a couple of volts of the ground rail, I chose to use the current source. One good thing about the
differential amplifier is the symmetry. Symmetry in circuits is often very useful and I've made use of it in the input
stage, where the symmetry is side by side, and the output where the symmetry is top to bottom.
The current source (I always used to call something like this a 'current sink' but modern usage seems to be to refer to
them all as sources irrespective of the function in a circuit) is made up of T9, D1, D2 and R6.
The two diodes determine the base voltage, that in turn then defines the emitter voltage, giving about a diode drop across the
resistor to set the current out of the emitter (which, in turn, is more or less the collector current). It's not all that
precise but it doesn't really need to be, it just needs to define and hold steady a reasonable collector current for the
differential amplifier transistors.
Above the differential amplifier, each transistor needs a load to turn the collector current back into a voltage. That
could be done with a simple resistor but a resistor has limitations so here I've opted for a current mirror made up of T7
As the transistors aren't going to match perfectly, I've also included a preset potentiometer. That allows me to adjust
for any imbalance between the two transistors and also to account for the additional loading on one side where the two
transistor bases have to be driven with a small current. Overall it functions as the zero adjustment pot.
The final part of the input stage proper is a cascode stage made up of T5 and T6.
Although it may not be instantly apparent, these are functioning in a common-base configuration. The load current of the
differential amplifier transistor passes through the device whilst it keeps the collector at a fixed potential. Because
the change in collector-base potential of the differential transistor is much reduced, it means the effects of the Miller
capacitance is reduced too. That improves the bandwidth of the differential amplifier and improves the gain we get from
The biasing for those transistors comes from splitting the resistor supplying the diodes of the current source. The bases
need some decoupling to stop them moving around once they've found the dc operating point.
The final part of the input stage are the emitter-followers T1 and T2 that precede the differential stage.
These are necessary to get around the problems I created for myself by going for a single supply rail. They allow the
input and the feedback from the current sense to operate down to a couple of hundred millivolts below ground. Translation
up to the differential inputs is done by a potential divider each side. It's far from ideal, not least because I'm
throwing away some of the gain with the divider, but it does work.
For the output stage (the output of the voltage amplifier section made up of the BJTs), I have a simple class-B set-up
with a pair of complementary followers and diodes to bias the bases. To drive it, I simply reversed the diodes into the
collector path of the differential amplifier (think of the diode pair sliding up and down).
Finally, there's the compensation capacitor which feeds back from the output to what is effectively the inverting input.
The output then can drive the MOSFET gate through a low value resistor.
Overall, the gain is quite modest compared to a general purpose op amp (an op amp would have additional gain stages).
That does affect the DC precision but it (possibly) helps me at higher frequencies.
What Were the Problems and What Did I Get Wrong?
I'm still learning this stuff, so inevitably I got things wrong.
Trying to operate with a single rail was trying to be clever for no reason.
I thought that to drive the MOSFET quickly I'd need the push-pull output stage, but at the kind of speeds that the
amplifier can manage the output stage is practically redundant and just serves to slow things further.
The best lesson, I think, is that I now understand how vital consideration of Miller capacitance is at high frequencies
in a way that I didn't before. What I did with this circuit was partly right, using a cascode to reduce the effect of the
capacitance is definitely useful, but unfortunately I've placed them wrongly - I failed to understand that I need the
cascode stages on the drive side of the differential amplifier. With the current circuit, the Miller capacitance of the
mirror output transistor slows the mirror and hence limits the overall open-loop bandwidth.
The other useful lesson was the compensation, which I'm gradually starting to get a feel for, and, conversely, the
difficulties of engineering an amplifier with overall negative feedback that is also fast and makes real use of the
transistors' naturally good GBW.
The biggest problem was (and remains) the MOSFET. It's probably the only real candidate for handling high power at speed,
but the non-linearity makes a real mess of the compensation (unless you really slug it and overcompensate) and also the way
that the loop operates down at low currents. Unfortunately, in this case, all my problems meet in the middle in the area
around 1MHz where the amplifier is out of bandwidth, the MOSFET is just beginning to affect the response, and the lead
inductance will resonate with the intrinsic capacitance in the MOSFET to bad effect.
It's a great learning exercise for me, but I don't think it's going to be a project to build any time soon (if ever).