How does this current source circuit work?

I am using an LTC3623 5A buck regulator as a programmable current source. In the application notes there is this circuit:

I'm trying to understand how Iout can be 0A with this setup. According to the graph it is when Vshunt is 0.5V.

So there would be 0.5V across the 10k to ground, therefore the fet is turned hard on trying to get all of the 50uA. But if Iout is connected to a 10 ohm load to ground, it would effectively make the two 10k resistors connected in parallel between Iset and ground, or a single 5k resistor to ground. Which would set Iset to 0.25V and therefore the output would be non-zero.

Would it work if the bottom 10k was removed and the non-inverting input of the op-amp was connected to the top of the fet instead of the bottom? That way when Vshunt is 0.5V it would short to ground and set Iset to 0V.

Edit: Meant inverting.

The schematic is incorrect, and you are absolutely correct the output current can never be zero with the schematic as shown.

Consider two cases:

1. The BSC... is off completely (this might be when Vshunt is 0 V but we can ignore this for the moment). Under these condition the 50 uA reference current flows through the 10k to the output pin (and we have to assume here the output is shorted to ground to make things easy). The voltage developed into the error amplifier is 0.5 V .....so the (PWM generated) current through the 0.1 Ohm resistor is 5 A (there will be ripple associated with this, but lets ignore for the moment). ....so far so good, we can get to 5 A.

2. The BSC... is saturated, and since there is (essentially) no current from the gate side of the device, the 10k Ohm resistors are effectively in parallel and the reference voltage developed is 0.25 V. ...so the (PWM generated) current through the 0.1 Ohm resistor is 2.5 A.

So the schematic as shown does not match the graph they produced.

Now under what condition could the reference voltage into the error amplifier produce zero current through the 0.1 Ohm resistor?
If the reference voltage was zero, then the PWM would never switch on, so the current would fall to zero (once the 47 uf capacitor discharges).

To achieve a 0 V reference voltage into the error amplifier you need to divert all the 50 uA reference current to ground.

Could the LTC2054 and BSC... shunt the current? Not as shown, but if the current source was powered from a negative supply it could. If Vshunt is 0.5 v, then the BSC... is a constant current generator of 50 uA ...so we have the right current, but the ground shown for the constant current generator would have to be at least -0.5 V to be able to pull the voltage reference at the error amp down to zero.

I'd suggest the current generator could include a negative power supply of at least 1 V to be viable. This makes it less easy to generate the Vshunt, but still quite possible.

So something like this would work:

Now last thing consider the impact of a load resistance (remember I considered the load as a short circuit in all the above).

As load (resistance or offset) goes up, there will be a voltage developed at the output, and this will raise one end of the 10 K resistor. Using the alterations I proposed above, it does not matter what the output voltage is, since we only offset the voltage created between the output end of the 0.1 Ohm sense resistor and the reference voltage into the error amp.

For example, consider you were using this current generator to characterize the forward voltage of a power diode. The voltage on the output would rise to quite high (0.7 to 1 V or more) depending on the current through the device. Providing the input voltage supply is high enough then there would be no problems with higher output voltages with the LTC2054 as a pure current source. You can also get to zero current (within practical limitations) using the Vshunt voltage 0 to 0.5 V.

PS: as a significant side note to make your head spin, the schematic as shown would work at very small output currents (but unlikely to go to zero) if the output voltage were higher than 0.5 V. So in the case of a diode or zener being tested where the output voltage is over 0.5 V the Vshunt generator would work as shown in the application note. It just won't work into a resistive load where the output voltage drops below 0.5 V.

Implementing a fix

The LT2054 is a very high quality op-amp, with very low offsets.
One possible fix to get you close to zero current would be to drop the 10k Ohm resistor to 100 Ohms. Now the voltage drop to sink the 50 uA is just 5 mV.

If you want to keep the 0 - 0.5 V as the Vshunt then a 100:1 resistive divider could work.

Something like this:

simulate this circuit – Schematic created using CircuitLab

• Great answer, this helps. Do you think my suggestion at the bottom would allow it to get closer to 0A with a small resistive load? Removing the 10k and connecting the inverting input to the top of the fet, which allows Iset to be near 0V. I don't have easy access to a negative rail.
– kpnz
Commented Feb 1, 2017 at 23:38
• How close to zero do you need to get? What loads are you connecting? Commented Feb 2, 2017 at 0:51
• It's a peltier cell. < 0.1V would be better.
– kpnz
Commented Feb 2, 2017 at 1:06
• Peltiers typically have a huge thermal mass. would it not be better to drive with a PWM/PID? Commented Feb 2, 2017 at 21:43
• Peltiers are more efficient to drive them with a constant current due to the I2R component.
– kpnz
Commented Feb 2, 2017 at 21:53

According to the graph it is when Vshunt is 0.5V.

when that happens, all the 50ua current goes to that mosfet (BSC....). and no current going through that 10k resistor from the error amplifier's input to the output. ie. the voltage differential between the 0.1ohm resistor is zero -> output current is zero.

you can think of this whole thing as a high side current sense amplifier. the error amplifier's two input terminals has a voltage differential of Iout * 0.1ohm - (50ua - Vshunt / 10k) * 10k.

with negative feedback, that voltage differential has to be zero.

thus you have the relationship you have.

• "all the 10ua current goes to that mosfet (BSC....). and no current going through that 10k resistor from the error amplifier's input to the output." You mean 50uA, right? But if the output has a low resistance to ground then wouldn't the current be split evenly through both 10k resistors?
– kpnz
Commented Feb 1, 2017 at 21:59
• the mosfet side is a CCS, whose current sink is controlled by Vshunt. Commented Feb 1, 2017 at 22:01
• But even if the mosfet was turned fully on (0 ohm) the total resistance of that branch would be 10k -- the same as the 10k to the low resistance load. So the current would split.
– kpnz
Commented Feb 1, 2017 at 22:14
• The current can be regulated down to 0A (but not 0) as dannyf has explained, but there is an additional condition, that is, the programmable current sink at the bottom left must be in the operating region, which translate to Vout cannot be less than 0.5V plus the drop across the FET. Commented Feb 1, 2017 at 23:27
• @dannyf. This is not correct, you cannot get the current through the 10k Ohm to output down to zero. The 10k in the CC generator would have to have 0.5 V across it when Vshunt is set to 0.5 V ...this also appears across the other 10k Ohm if the output is at zero volts. So you can never pull the error amplifier input to zero. Commented Feb 2, 2017 at 0:59