# Accurate Variable Current Source

Discussion in 'General Electronics' started by Tom, Jul 24, 2004.

1. ### TomGuest

Hi all,

Ive been trying to design an accurate variable current source for some
time now and I am struggling with certain aspects.

I have developed a current source using two op amps, a number of
transistors which forms a variable current source.

I am looking for the following spec:

current from 0-3amps over a load range 0.1R - 10R

I have a supply voltage of 40v so achieving this spec is possible but
I am faced with a big problem with my current design, keeping the
current source accurate to within 20ma.

I will explain my circuit...

I have a current sence resistor on the ground supply rail, at 0.1R.
The voltage drop over this resistor is multiplied by the first op amp
to a useable level.

The output from this opamp goes to the negative input of the second
opamp, the positive input is sourced from a voltage reference
(variable resistor voltage divider) to set the required output
current.

This opamp output is then sent to the base of a transistor, which
drains the base of the main drive transistor (when the current load
gets too high).

Esentially the design does work, it does limit the current output but
at lower load levels the current increases.

I think the problem is due to the gain of the op amps, and transistors
but Im not sure how I can drive the op-amp in a manner that will cause
accurate current limiting.

This is of course a PSpice simulated circuit, as I dont want to try
anything for real until I can get a decent simulation.

Cheers,
Tom

2. ### Robert BaerGuest

Be advised, that whatever design methodology is used, that the *output
pass transistor(s)* MUST be able to handle (1) the maximum current (with
some "headroom"), and (2) the *power* as determined by the voltage drop
and the current.
Three amps times 40 volts is 120 watts, way beyond the practical
capabilities of any ONE pass transistor, even with an "infinite"
heatsink (do *not* believe spec sheets in this area!!!).

That said, i have found that FETs make for extremely good current
sources; they have an almost perfect immunity to S-D voltage changes,
from "pinchoff" to breakdown.
Now, the thing to either compensate for, or make small relative to a
reference, is the change of Vgs with temperature and current (since you
did say "variable").
Using an ordinary MOSFET, the Vgs at room temp is roughly 3.5V at
100mA, so if a 30V reference from gate to ground is used, a 100mV change
in Vgs due to temperature or current changes is less than 1%.
The problems with this is that the source to ground resistor at 3 amps
An alternate way is to use the FET as a series controller, and a
current monitoring resistor (i make one end of the resistor to ground;
reasons later).
The voltage developed across the monitor resistor goes to one input of
an op-amp, and an adjustable reference (from ground) goes to the other
input. Alternately, a switchable monitoring resistor and a fixed
reference could be used.
At high currents, it is a good idea to use Kelvin connections.
The output of the op-amp drives the FET gate (use a 100K series
resistor to the gate and a double-backed zener for Vgs over voltage
protection).
As long as you do not push more than 500mA thru a given FET, it
appears that one can reliably create currents from microamps to that
limit (per FET).

3. ### AntonGuest

Hi!

Why not use a LM 338? which as far as I can see can do what you want.

/ Anton

4. ### SolarWindGuest

Hi Tom,

Your ckt didn't conside the high-low limit conditions, my suggestion
is:

1. At low load condition, the sensing resistor 0.1 ohm is too low to
pick up voltage=IL(load current)x0.1 ohm. Increase 0.1ohm to 10 at low

2. From your design, at low load level, the transistor that was
range, that means, the transistor(TR1) that connected to the 2nd
Op-Amp output can't control another transistor(TR2)(this transistor
come from the TR1 in full ON condition didn't drain all base current
of TR2.
The solution is, modify your TR2 Base circuitry, connect R1(1 KOhm) in
serial to R2(1 KOhm) and connect R2 to TR2 Base, connect R1 to +5V
source, the join point of R1 and R2 connected to your TR1 Collect.
This change will cut off whole base current of TR2 at low load
condition.

Trim R1,R2 value, check the TR1 collect voltage at low load condition
if some thing goes wrong.

Good Luck!