# Discrete op-amp small voltage offset

I have a design for a valve tester that previously used OPA445 op-amps to create the grid voltage - the grid circuit is just a 4.096 V I2C DAC running into the amp with a gain of -16.5, which means I can create grid voltages up to -66 V.

The OPA445 is a rare beast because it has a maximum supply voltage of 90 V (my supplies are +8 V and -70 V) and is available in DIP rather than SMT so it is more viable for the hobbyist - but it is pretty much the only device I can use with these characteristics and it isn't cheap.

In my latest design I have replaced the OPA445 with a simple discrete op-amp (making the build far more accessible), thus:

simulate this circuit – Schematic created using CircuitLab

Having assembled the PCB, it mostly seems to work OK, but an input of 0 V from the DAC (which measures as 0 V) results in an output of +0.7 V. This seems to be a systematic offset as I can increase the DAC output slightly to get the output to 0 V and its maximum output is pretty close to -66 V.

Given that putting +0.7 V on the grid of, say, an ECC83, is a bit unkind I really need to fix this small offset but I am stumped as to what is causing it. I haven't measured the devices I've soldered in, but the batch of 2N5551s seem pretty good with an hFE of ~190 and a VBE of 0.74 V - the 2N5401s are a little less consistent with an hFE of 55 - 70 and a VBE of ~0.725 V.

Things I have tried so far:

• removing the emitter degeneration on the LTP (no effect)
• lowering the resistance on the non-inverting input to 10 kΩ (no effect)
• lowering the VAS current source resistance to 470 Ω thus putting a little over 1 mA through the VAS (no effect)
• putting a 5 kΩ pot on the current source for the LTP (the full 5 kΩ takes the offset down, but only to about 0.35 V)

Things I am now speculating over include:

• using 2 x 1N4148 for output stage bias may not result in sufficient quiescent current through the output stage (possibly made worse by the emitter degeneration in the output)?
• the emitter degeneration of the current mirror may not be helping?
• the offset may be caused by the CMRR given that the circuit's ground is significantly biased towards the amp's Vcc (in which case, how would I fix that)?
• Mouser has several packge types including surface mount for less than \$20CAD. Feb 6 at 15:26
• Have you measured the output quiescent current ? e.g. by measuring the voltage across the 2 ohm? Feb 6 at 15:41
• Hi tobalt, I hadn't previously but have just checked. Within the limits of my multimeter it looks like the quiescent current is around 0.6mA - am guessing that's not unreasonable. Feb 6 at 17:26

## 5 Answers

Personally I would:

• Flip the whole schematic upside down so the input stage becomes NPN

• Now the input transistors operate at low Vce, so they can be replaced with cheap low offset matched BCM847 or similar, which have matched Vbe and hFe ; for the current mirror you can use matched BCM857 too.

• Equalize base resistance, as mentioned in the other answers.

Another option: use a low voltage low offset opamp, combined with the usual opamp booster circuit, or something like this:

The opamp, combined with R8, operates as a low input offset transconductance error amp. It does essentially the same thing as the input stage in the discrete amp. Then common base transistor Q1 steers this current to drive the output stage.

The big difference is that the opamp has a single pole response, whereas the LTP it replaces does not. This gives better accuracy at low frequency, but headaches at high frequency.

Compensation is likely to be fiddly and annoying. What compensation circuit to use depend on who's faster, the opamp or the output stage.

Episode 2

Since you said you wanted "a solution that could be used by hobbyists" I picked LM2904 as an opamp: it has +/-1mV offset, and it's easy to find. It's also pretty slow (1MHz gain bandwidth product). I changed the circuit to one much easier to compensate, it should be pretty robust.

Since the opamp provides extra gain, the VAS transistor in the discrete opamp was no longer needed. Due to your "negative only" output voltage this makes a very simple circuit where the LTP collector drives the output directly. It has feedback, the negative input of this opamp is Q3's base. At "high" frequency ("high" for LM2904 is above 100kHz) feedback is through C2 so the discrete opamp acts as a unity gain voltage follower. At low frequency, C2 is out of the picture, and... there is no DC feedback from the output, instead Q3's base receives a fixed DC bias, which means low frequency gain will be very high.

This is the gain of this discrete opamp:

The important thing here is that the phase lag returns to near zero near the unity gain frequency of LM2904, which preserves its phase margin.

Then the outer loop is closed through the opamp, which works at the desired gain of x16 at low frequency, and unity gain at high frequency.

Due to this, an important feature is that the opamp is not slew rate limited during settling, so the input stage doesn't get differential heating. So it should settle slowly (a couple hundred µs) but cleanly.

I have used Vbe multiplier Q4 for bias ; these are convenient but they need a trimmer which also acts as a self destruct device if you turn it towards too much bias. So maybe you'll want to keep the diodes, or use larger value emitter resistors.

With the values shown this should work with other opamps with gain bandwidth in the 1-2MHz region, for example a zero drift opamp. I used SMD SOT223 versions of 2N5401/5551, TO92 will work just as well.

Faster version

Replace the opamp with a faster one, for example LM833 (10MHz GBW) and adjust C2,C3 in proportion (4.7-10pF, adjust with square wave input to get nice settling without overshoot). This makes the whole circuit 10x faster both in terms of slew rate and settling time.

LM833 has low "typical" offset but the min/max and input offset current are a bit high, so in DIP you could use MCP6021, TLC070, etc, or a SO8 opamp. I don't think a SO-8 opamp (without powerpad) would be a problem for DIYers...

• This is certainly an attractive option as it avoids SMT (although I'll have a try at some DIY SMT) or more exotic components. I assume that R2/C1 is one of the compensation options - what other ones would work if that one isn't stable? Feb 9 at 12:42
• You'd have to pick an opamp first (considering offset, supply voltage, bandwidth, availability...) then... see how it works out lol. Another option is to keep your existing amp board (after all, you already have it) and put an opamp in front acting as DC servo to null the offset. Feb 9 at 14:38
• I think I'm resigned to another PCB - I'm planning to put the amps on a daughter board so I can try a few options without having to change the main PCB. I'm not trying to create an industrial solution but one that can be used by hobbyists, so that way I can provide options that match the soldering skills of the constructor. Inverting the design makes things a lot simpler given the design only requires a negative swing - I am working on that variant using SMT devices but will also try the circuit above (as it would also fit in the space I have on the PCB). Feb 9 at 17:16
• What max current do you need? I'll pick an opamp. What settling time do you want? A few µs like MCP4725 or non-critical? (this also influences the slew rate requirement of the amp) Feb 9 at 17:42
• There's nothing fast required - for testing the valves there's a PWM circuit that charges a capacitor bank for anode and screen which is then applied to the device under test. The grid is typically swept after anode and screen are swept so milliseconds would be fine! Feb 9 at 18:23

Usually the offset voltage is determined by mismatches in the input circuit. That means the transistors in the differential pair, load resistors, etc. On a chip these things are intrinsically matched because they are fabricated at the same time.

In a discrete circuit you might need to manually match these components. I think you can buy transistor pairs in a single package.

I remember seeing an (old) discrete op amp with input transistors wrapped with a piece of metal to keep the temperatures uniform.

• Many thanks, Fred - that's nailed it. I desoldered the 2N5401 devices and checked them on the DCA55 (an amazing piece of kit) and it turned out I couldn't have picked a worse match from the entire batch (Hfe of 130 and 50)! I've put in a pair with an Hfe of around 130 and a close Vbe and the offset is now down to a handful of millivolts. That should be close enough but I may fit a 100R preset across the bottom of the LTP so I can trim it a bit further. Feb 6 at 16:36
• @OliverGardiner The sensitivity of offset on hFe is exaccerbated because you have large input bias current and large feedback resistors. You could reduce your resistor values on the inputs or change the input config to a darlington/sziklai version to reduce input bias current. Feb 7 at 11:52

If you change the value of R102 (27 kOhm wired to ground), you can change the offset to "zero".
Change it to 10 kOhm would do it.

NB: all transistors are beta chosen to ~ 130.

Here are 3 simulations. Made with microcap v12.
I added a 100 Ohm potentiometer to change offset.

Here is a "clear" view of the offset change (4k < R5 < 16k).

Change of parameter "a" (potentiometer 100 Ohm).

• Many thanks - yes, have now matched that with the 10K on the inverting input Feb 6 at 17:17
• I clearly need to adjust my Spice sims and this is really helpful. I tried putting a 200R preset on the emitters of the LTP and that made no difference at all. It's possible that I need to use a new PCB having desoldered a few of the components so many times! Would it be better to go for JFETs on the LTP in order to raise the input impedance and mitigate the effect of base currents on the LTP? Feb 6 at 23:39

A discrete op-amp assembled without matched input pair(s) will have up to 50mV of input-referred DC offset, so up to 0.8V offset on output with gain 16.5. That's sort of what you see, although the input pair offset may well be lower, as there are other sources of imbalance.

1. Match the input devices for offset. There will be a couple mV left after that.

2. Equalize the input pair collector currents through bootstrap - added Q1 and Q2.

3. Add the bias current balancing potentiometer R1. Adjust to null the input offset.

4. Equalize the source impedances on both inputs. R102 should be 10k||(330k/2)≈9k4.

5. Add an equalizing resistor R2 in the current mirror Q18-Q19. It would be a small value and should be adjusted so that the Q18 collector current + Q18 base current is same as Q19 collector current. The effect of R2 vs R1 can be evaluated for thermal stability, there will be a combination of the two adjustments that provides the most stable output offset.

simulate this circuit – Schematic created using CircuitLab

Do not trim the offset by adding a voltage to the input or output, as this leaves the input pair unbalanced and less thermally stable in practice.

• Given my existing PCB, adding R1 will be the easiest mod. Am I right in thinking that Q1 and Q2 above function as a cascode with respect to the LTP? Feb 7 at 22:16
• @OliverGardiner Yes, they do. Given my existing PCB You'll be redoing that PCB to improve thermal coupling etc. anyway I imagine. Don't be married to that PCB because it's just about easiest to change. You'll spend more time prototyping the changes and characterizing them than laying the PCB from scratch. And if you don't measure the performance of this across temperature, likely in-the-field component spread, etc., you'll be up for nasty surprises. Feb 7 at 23:51
• +1 and the cascode means you can use cheap matched transistors like BCM857 Feb 8 at 0:09
• @bobflux Exactly - no high voltage parts needed on the input pair, and in principle a double cascode can be had so that the current mirror also uses low-voltage parts. Feb 8 at 0:21
• The current mirror already operates at very low Vce: one transistor is wired as a diode, the other's Vce is limited by Q10 Vbe. But there's a simpler, unconventional solution: since the positive power supply is only 5V, if the input stage is NPN instead of PNP there's no need for cascode ;) Feb 8 at 8:09

All the answers offered seem fine, and I'd probably go that route. That said, another completely different path to go down would be to essentially build a clocked sample and hold around what you already have to sample the offset and subtract it from your input.

Essentially, you'd be building a "chopper amp", which is the term you would search on for details.

The only reason why I would even bring this up is because you're working toward a simple valve tester, and I assume your requirements are largely low-frequency. Chopper amps have a way of going wrong; the switching involved can send high frequency noise through your system, they're a sampled system and you can alias if the switching frequency isn't fast enough, .... But, your needs seem modest enough to make this viable.

The advantages are that you would no longer care about temperature drift, and there are no manual steps once the circuit is built.

• It's an architecture I'm unfamiliar with but having done the search I can see that it might be a good solution (and it's fun to learn new stuff) - as you say, there's no need for speed as the grid sweep is relatively slow. For me, the design goal was to have a relatively cheap circuit that was not dependent on a single device (the OPA 445) for hobbyists without access to SMT assembly. That goal is undermined if you need test equipment to match the LTP transistors. Feb 7 at 22:08
• The use case doesn't really demand the perfect solution in terms of offset - a few millivolts should be immaterial but +0.7 V is clearly a problem for signal valves. Given my current PCB the first port of call will be a trim as it's easy to fit - while it would be preferable to avoid an AOT, it would at least meet the requirements of something you could sort with an average multimeter. I'll certainly experiment with the chopper, though. Feb 7 at 22:09