PP logo


Constant current measurement load.



IL01 is a simple constant current load for testing small power supplies.
Another application is as a current limiter for testing small circuits (in case you do not have a current limited power-supply).
The circuit was originally built on strip-board. This wears out quite quickly, so I built this version on a PCB.
The strip-board circuit description is available in the download section.
The current range is 10 mA to 320 mA in 10 mA steps plus additional 50 mA, 100 mA and 200 mA settings.
The voltage range is 6 V to around 35 V within the power limitation of the circuit.


Basic circuit schematic.
Fig.1: Basic circuit.

The LM317 maintains a voltage of Vref across Rset so the value of Rset determines the output current Iset.
J13..J20 are jumpers or DIP switches. J13..J17 allows the output current to be set from 10 mA to 320 mA. J18..J20 are single-switch settings for 50, 100 and 200 mA.
The minimum current where the LM317 is guaranteed to maintain regulation is 10 mA so this is the minimum possible value for Iset.
The current Iadj is added to Iset. This is typically 50 µA ( max 100 µA ) giving an acceptable error of up to 1%.
The major error sources in the circuit are the value of Vref ( 1.2 V to 1.3 V ) and the fact that Rset comes in discrete values.
Table 1 shows the worst case error for Iset at 10, 20, 40, 80, 90, 160 and 190 mA.
The calculations can be found in IL01C_Calc.ods which is part of the design download.

Table 1: Iset error (ignoring Iadj).
Rset valueVref 1.2 V to 1.3 VVref adjusted to 1.3 V
Single 5% E24 series Rset15.3%9.0%
Single 1% E24 series Rset12.0%5.4%
Single 1% E96 series Rset6.0%2.0%
Two 1% E24 series Rset in parallel5.1%1.2%
Two 1% E96 series Rset in parallel5.1%1.2%
Exact value4.0%0

Reference adjustment circuit schematic.
Fig.2: Reference adjustment circuit.

R11 is adjusted so the voltage Vset is 1.3 V.
The circuit introduces an offset error of around 2% at 10 mA Iset. This can be reduced to 0.5% by increasing Rset from 130 Ω to 132 Ω ( 133 Ω // 25.5 kΩ ).
You can of course adjust the output current to an exact value at one current-setting, but the overall best accuracy is obtained by setting Vset to 1.3 V.
Also bear in mind that the LM317 has a thermal error of around 0.7% over temperature that sets a limit for the accuracy you can expect.
See IL01C_Calc.ods for details.

Alternate reference adjustment circuit schematic.
Fig.3: Alternate reference adjustment circuit.

The primary reason for designing this circuit was to avoid the cost of the trimpot in Fig.2. A side-effect is that it gives a more accurate setting.
Close J13, leave other jumpers open ( ref. Fig.1 ).
Apply around 10 V to the input terminals.
Short R11 (jumper J12 on the PCB). Measure the voltage across R12 (TP10, TP11 on the PCB). This is Vref ( f.ex. 1.25 V ).
Remove short across R11. Measure the voltage across R12 (TP10, TP11 on the PCB). This is Vsetm ( f.ex. 1.38 V ).
Find the current through R10:
IR10 = Vref / R10 = 1.25 / 1.00E3 = 1.25E-3 ( 1.25 mA ).
Find the current through R11:
IR11 = ( Vsetm - Vref ) / R11 = ( 1.38 - 1.25 ) / 1.00E2 = 1.30E-3 ( 1.3 mA ).
Find the voltage across R11:
VR11 = Vset - Vref = 1.30 - 1.25 = 5.00E-2 ( 50 mV ).
Find the value for R11:
R11 = VR11 / IR11 = 5.00E-2 / 1.3E-3 = 3.85E1 ( 38.5 Ω ).
Find the value for R11B:
R11B = 1 / ( 1 / R11 - 1 / R11A ) = 1 / ( 1 / 3.85E1 - 1 / 1.00E2 ) = 6.25E2 ( 62.5 Ω ).
Pick nearest standard value ( 61.9 Ω ).
Find R11:
R11 = 1 / ( 1 / R11A + 1 / R11B ) = 1 / ( 1 / 1.00E2 + 1 / 6.19E2 ) = 3.82E1 ( 38.2 Ω ).
Find the current through R12A:
IR12A = Vset / R12A = 1.30 / 1.54E2 = 8.44E-3 ( 8.44 mA ).
Find the current through R12B:
IR12B = Iset - IR12A - IR11 = 1.00E-2 - 8.44E-3 - 1.30E-3 = 2.60E-4 ( 0.26 mA ).
Find R12B:
R12B = Vset / IR12B = 1.30 / 2.60E-4 = 4.99E3 ( 4.99 kΩ ).
Pick nearest standard value ( 4.99 kΩ ).
There is a sheet in IL01C_Calc.ods that does this calculation.

Fig.4: IL01 schematic, 1 of 2 identical circuits.

D10..D13 is a rectifier so I don't have to worry about input polarity when using the A1, A2 terminals. With this rectifier the circuit works down to 6 V input voltage.
The A+ and A- terminals bypass the rectifier allowing for a slightly lower operational voltage.
Jumper J10 disconnects the circuit from the input terminals.
The AI+ and AI- terminals are intended for a voltmeter for current measurement. This can be bypassed by jumper J11.
D14 is reverse-voltage protection when the A+ and A- terminals are used (it will short the power-supply).
If you want reverse-voltage protection without the risk of shorting the power-supply, omit D11, D12 and replace D13 with a piece of wire.
The original circuit did not have capacitor C10 and I have seen it oscillate under certain conditions. C10 prevents that.
The jumpers J13..J20 selects the current. These can be pin-rows with jumpers or 0.3" DIP-switches.
J13..J17 sets the current from 10 mA to 320 mA in 10 mA steps.
J18..J20 are single-switch selections for 50 mA, 100 mA and 200 mA.
The current setting is accurate within 1.2% for the prototype except for the 10 mA range which is 1.8% off.
The set current is accurate to within 0.6% for voltages from 5 V to 35 V across A+, A-.

Component Selection.


C10 is a ceramic 100 nF capacitor with a voltage rating of 50 V or more and 2.5 mm or 5 mm pin-spacing.


All diodes are 1 A rectifier diodes with at least 100 V rating. I specify 1N4007 as I use these everywhere (and they were cheaper than 1N4001 the last time I bought).


The resistors should be metal-film types with a power-rating of 0.25 W or more. If you use a value of less than 10 Ω for R12..R20, use resistors with 0.5 W power-rating.
R21 should have a power-rating of 0.5 W or more. If all switches (J13..J20) are accidentally closed, it will dissipate 0.4 W.


The footprints will accept pots with a 2.5x2.5 mm or a 2.5x5 mm pattern.
I recommend closed cermet trimpots, but cheaper types will work.

Voltage regulators

The 2 regulators can be mounted directly on the PCB with thermal compound. This will provide sufficient heatsink for most applications.
The thermal resistance of the PCB is around 9 C/W, so long term power dissipation should be limited to around 5 W ( 8 W for some minutes is OK ).
If you want to dissipate more than this, an additional heatsink is required.
If you experience frequent thermal shut-down you should add more heatsink.


J11, J13..J20 can be pin-rows with shorting-bars or DIP-switches. The current/voltage handling for these switches will not cause problems with most switches.
J10 must be a pin-row with shorting bar. This switch handles the full current/voltage during switching. When using a pin-row with shorting bar, expect to have to replace the shorting bar on regular intervals. If you want a permanent solution, use a switch with sufficient current/voltage rating.


Photo of mounted PCB.
Fig.5: Photo of mounted PCB.

Download IL01C design files.

I have boards available for this project. See the PCBs page.

Download IL01A files. These are the files for the old strip-board version. Unpack the zip-file into a separate directory (links will not work).

Known Issues / updates.

No known issues.

Poul Petersen, C/Faya 14, 35120 Arguineguín, Las Palmas, Spain.
Poul Petersen home, Poul Petersen DIY index, E-mail: diy@poulpetersen.dk
Copyright © Poul Petersen 1990 - 2017. Last update: 20170729. Valid HTML!