By carefully choosing components, you can create a cost-effective circuit for a current source with an output that's accurate to 1% (Fig. 1). Iout (the current flowing from the collector of Q1) is VCC –Vin (the voltage at the wiper of R3) divided by the value of R2.
In some instances, it's important to be able to turn off the current source (within the limits of ICEO for Q1). Unfortunately, in about half of these cases, the offset voltage (VOS) of the op amp will turn the current source on even when VCC = Vin. That's because the offset voltage (when the noninverting input needs to be at a higher potential than the inverting input to get an output of O V from the op amp) is impressed across R2. This offset voltage forces Q1 to turn on enough to yield a collector current of VOS divided by R2.
Figure 2 offers a fix for this predicament. The addition of R7 presents the emitter of Q2 with a Thevenin equivalent voltage and resistance represented by:
VTH = VCC \[1 - (R5/R6 + R7)\]
RTH = (R5 × R7)/(R5 + R7)
The difference between VCC and VTH is VCC (R5/R5 + R7). If VCC (R5/R5 + R7) is set equal to the maximum VOS spec for the op amp in question, the circuit is then guaranteed to turn off. This circuit has an output current of VTH - Vin divided by RTH.
The compromise of Figure 2 does present another error term in the circuit. The term (VTH - Vin) will have to be 2 × VOS to guarantee a current output for the whole population of the op amp chosen. This error can be made arbitrarily small (but not zero) by increasing the voltage of D2 and VCC while also raising the value of equivalent resistance RTH .