# How does this OP-AMP offset voltage measuring circuit work?

In the Operational Amplifiers part of Analog University from National Semiconductor, I saw an offset voltage measuring circuit for an OP-AMP. Here is the page. I've included some details and the schematic below:

It says that this is a very accurate way of measuring Vos. In LTspice, I've built this circuit with two LT1001 s and the output of the OP-AMP saturates to +5V. I used +5V and GND for the supplies.

In the page, it says that if +1V is applied to the "Servo Input", the output of the DUT will be +1V. I can understand that since the Servo OP-AMP will try to make its both inputs the same by changing its output voltage accordingly. Since there is almost no voltage drop across 10k in the non-inverting input of the Servo OP-AMP, output of the DUT will be +1V.

For example, say the DUT has an offset voltage of +500 μV and NO gain errors and the Servo Input is set to +2.5V. The DUT's output will now be set to 2.5V and VOS will be at +500 mV regardless of the Servo Input setting. Any gain error would be summed in along with the offset voltage, and the result is multiplied by the loop gain (1000). With the Servo Input grounded the circuit basically functions as a "gain of 1000" test circuit. The Servo amp contributes very little in the way of offset errors (the servo amp's offset is divided 'down' by the loop gain).

I couldn't understand why Vos (output of the Servo OP-AMP?) will be at +500mV (that is the gain multiplied by the offset voltage of the DUT)? Both OP-AMPs are in each others feedback loop, however, DUT is in the positive feedback loop of the Servo. Why is that? It would be great that you include Vos as a voltage source when you are explaining.

(I am so puzzled and thus maybe I was not clear. Please notify me and I will edit accordingly.)

First, the DUT is in the positive feedback because this way you have an inverting and a non-inverting gain in the loop, so that multiplying them you obtain an overall negative loop gain.

Second, the gain is 1000 because Vin of DUT is Vos*50/(50K+50), so if you consider that V+ of the DUT should be 0, there is only the offset applied, so the feedback forces the output to be 1k times the offset voltage.

I think that you can look at the output this way: suppose that the situation is the one described, and you have a 500uV DUT offset and so 500mV output voltage.

Now, if you try to perturb the Servo Input, the feedback forces the output of the DUT to be almost the same of Servo Input, restoring the same Output voltage.

Note: Voff is the conventional name for input offset voltage, while Vos is the output voltage with Voff applied at the input pins.

• Where exactly the Vos applied to in DUT? I mean if I want to model it, where do I put it? – abdullah kahraman Jan 15 '12 at 14:20
• If you consider that with infinite gain you have ideally 0V between V+ and V-, you put the offset voltage as a generator between the 2 pins inside the op-amp, as if you put V- to ground, you have Voff at the V+ pin. – clabacchio Jan 15 '12 at 14:27
• So, the OP-AMP equation becomes: Vout=((V+)-(V-)+Vos)*AOL. Right? – abdullah kahraman Jan 15 '12 at 14:33
• Exactly (read the end of my answer for notation). And take into account that Voff can be positive as negative. – clabacchio Jan 15 '12 at 14:41
• I'm here for any clarification :) – clabacchio Jan 15 '12 at 14:57

The circuit is puzzling at first: I can measure Vos of the DUT by just including the two 50 ohm resistors and connecting the 50K resistor from DUT input- to DUT output -- gain of 1000, where for Vos = 0, output = 0, but Vos = 100uV, output = 1V.

What the second ("servo") op-amp is doing is taking over the responsibility of producing the output voltage of the circuit, and decoupling the DUT's output so that the DUT output is trying to duplicate the voltage on the "Servo Input" node. Why would we do this? So that we can sweep the "Servo Input" node and see how Vos of the DUT varies with the DUT's output voltage.

I've solved my problem, thanks to @clabacchio.

$$V_{out}=(V^{+}-V^{-}+V_{os}) \cdot A_{OL}$$

We know that:

$$V^{-}_{Servo}=2.5$$

$$V^{+}_{DUT}=0$$

$$V^{-}_{DUT}=Vout_{Servo} \cdot \frac{50}{50k+50}$$

$$V^{-}_{DUT}=Vout_{Servo} \cdot \frac{1}{1001}$$

I am going to assume "1001" as "1000" here.

$$V_{out_{Servo}} = \left ( V_{out_{DUT}} - 2.5 + V_{OS_{Servo}} \right ) A _{OL}$$

$$V_{out_{DUT}}=\left (-V^{-}_{DUT}+V_{OS_{DUT}}\right ) \cdot A_{OL}$$

$$V_{out_{DUT}}=\left (-V_{out_{Servo}} \cdot \frac{1}{1001}+V_{OS_{DUT}}\right ) \cdot A_{OL}$$

$$V_{out_{DUT}} = \left ( - \left (V_{out_{DUT}}-2.5+V_{OS_{Servo}} \right ) A_{OL} \cdot \frac{1}{1000}+V_{OS_{DUT}} \right ) \cdot A_{OL}$$

$$V_{out_{DUT}}=-V_{out_{DUT}} \cdot \frac{A_{OL}^2}{1000}+2.5 \cdot \frac{A_{OL}^2}{1000}-V_{OS_{Servo}} \cdot \frac{A_{OL}^2}{1000}+V_{OS_{DUT}} \cdot A_{OL}$$

$$V_{out_{DUT}} \cdot \left ( 1+\frac{A_{OL}^2}{1000} \right )=\left ( 2.5-V_{OS_{Servo}} \right ) \cdot \frac{A_{OL}^2}{1000}+V_{OS_{DUT}} \cdot A_{OL}$$

Since 1 is so much smaller than $\frac{A_{OL}^2}{1000}$ , it can be omitted.

Simplifying above, we get:

$$V_{out_{DUT}}=2.5-V_{OS_{Servo}}+V_{OS_{DUT}} \cdot \frac{1000}{A_{OL}}$$

$$V_{out_{Servo}}=(2.5-V_{OS_{Servo}}+V_{OS_{DUT}} \cdot \frac{1000}{A_{OL}}-2.5+V_{OS_{Servo}}) \cdot A_{OL}$$

$$V_{out_{Servo}}=V_{OS_{DUT}} \cdot 1000$$

• Can someone help me with the latex here? – abdullah kahraman Jan 15 '12 at 15:43
• Well, the latex is a bit better now. There is something screwey with the \$escape detection. just replacing them with   fixed a lot of it. There is still something wrong with a few of the equations, and I can't figure it out, since they seem to be valid latex. For one, it looks like the markdown system is detecting some of the double-underscores as formatting instructions, rather then latex. – Connor Wolf Jan 15 '12 at 21:23 • And do you think that the V- of the Servo matters? I think that it also could be put to ground. – clabacchio Jan 15 '12 at 23:19 • It doesn't matter, however as @Jason S said, it lets us see if Vos of the DUT varies with the DUT's output voltage. – abdullah kahraman Jan 16 '12 at 6:26 • There is still some wierdness, but I'm pretty certain is a stack-exchange issue at this point. For example, $ V^{+}_{DUT}=0 $ renders correctly, but $ V^{-}_{DUT}=Vout_{Servo}*\frac{50}{50k+50} $ renders as plain-text. Replacing the $ with  makes both render correctly. There seems to be some oddness in the escape-detection mechanism. – Connor Wolf Jan 16 '12 at 9:28