I was interested in the question of resistor influence on the LM399 circuit presented in the LM399 thread.
I wrote a little python script to figure this out:
https://github.com/pepaslabs/small-lm399/blob/master/scripts/lm399.pyThe script's "solver" is based on the idea that Vz changes by 1uV for every deviation of 1uA of zener current from the nominal 1mA.
(Caveat: I have no idea what I'm doing and have not verified any of this in spice!)
Here's an example of running the script. Let's use Rf=36k, Rg=82k, Rz=3k, and assume an LM399 with Vz=6.95V@1mA.
$ ./lm399.py rf=36000 rg=82000 rz=3000 vz=6.95 vos=0
using rg: 82000.0
using rf: 36000.0
using rz: 3000.0
using vz_nom: 6.95
using vos: 0.0
solving...
delta_vz: 0.0000170731707314
delta_vz: 0.0000000024985134
delta_vz: 0.0000000000003650
delta_vz: 0.0000000000000000
irf: 0.084,756 mA
vopout: 10.001,244,085 V
iz: 1.017,076 mA
vz: 6.950,017,076 V
Here's what I was able to surmise. (I'm relatively new to ppm calculations, please check my math!)
- Changing Rf from 36k to 36.036k changes Vz from 6.950,017,076V to 6.950,018,093V.
- I.e. increasing Rf by 0.1% (1,000ppm) increases Vz by 1.017uV (0.146ppm)
- Changing Rg from 82k to 82.082k changes Vz from 6.950,017,076V to 6.950,016,059V.
- I.e. increasing Rg by 0.1% (1,000ppm) decreases Vz by 1.017uV (0.146ppm)
- Changing Rz from 3k to 3.003k changes Vz from 6.950,017,076V to 6.950,016,059V.
- I.e. increasing Rz by 0.1% (1,000ppm) decreases Vz by 1.017uV (0.146ppm)
So, all three resistors have the same influence on Vz.
If you were using 1% metal film resistors with 100ppm/C, as long as your lab stayed within +/- 5C they'd only cause 1uV of Vz drift.
(Of course, if Rf and Rg drift in the same direction, there is no change to Vz!)
- Changing Vos from 0 to 1mV changes Vz from 6.950,017,076V to 6.950,016,929V.
- I.e. increasing Vos by 1mV decreases Vz by 147nV (0.0212ppm)
For reference, an LM358 sees a Vos drift of 7uV per C, so 1mV of Vos drift would require a 143C swing. To get this drift to show up on a 6.5-digit meter (10uV resolution), you'd need to swing 9,724C
Now, the above is just the impact on Vz. "Vopout" (the 10V output of the opamp) is considerably more sensitive.
- Changing Rf from 36k to 36.036k changes Vopout from 10.001,244,085V to 10.004,296,776V.
- I.e. increasing Rf by 0.1% (1,000ppm) increases Vopout by 3.053mV (305.2ppm)
- Changing Rg from 82k to 82.082k changes Vopout from 10.001,244,085V to 9.998,194,444 V.
- I.e. increasing Rg by 0.1% (1,000ppm) decreases Vopout by 3.0496mV (304.9ppm)
- Changing Rz from 3k to 3.003k changes Vopout from 10.001,244,085V to 10.001,242,622V.
- I.e. increasing Rz by 0.1% (1,000ppm) decreases Vopout by 1.463uV (0.146ppm)
So Rf and Rg are very influential on Vopout, but Rz is not (thus NANDblog's comment about needing a pair of unobtainium resistors?).
If you were using Vishay metal foil resistors, the same +/-5C swing would be a 20ppm swing, which means Vopout would swing by ~6ppm (60uV, or 6 counts on a 6.5-digit meter).
- Changing Vos from 0 to 1mV changes Vopout from 10.001,244,085V to 9.999,804,849V.
- I.e. increasing Vos by 1mV decreases Vopout by 1.439mV (143.8ppm)
Let's examine a more realistic Vos drift of 10uV:
- Changing Vos from 0 to 10uV changes Vopout from 10.001,244,085V to 10.001,229,692V.
- I.e. increasing Vos by 10uV decreases Vopout by 14.393uV (1.438ppm)
So, creating a 10V reference is much harder than creating a 7V reference!