I have been experimenting with simulating current limiting circuits. I am trying to limit current to ~500mA given a fixed 4.8V source. I have started using a circuit like the one found on this wikipedia page ...

enter image description here

I have made a simulation of this circuit using CircuitLab. I show the results below. The circuit on the left uses a simple series resistor to do the current limiting while the circuit on the right is based on the Wikipedia circuit. I have tweaked the values of R_bias and R_load to common resistor values that prevent more than 480 mA being drawn from the source when the load is 0 Ohms. I also set hFE of the transistors to 65 to match some multimeter measurements I made of some power transistors that I have to hand. The values adjacent to the ammeters are the simulated values.

enter image description here

If I now make a 10-Ohm load, it becomes clear why a current limiting circuit is superior to a series resistor. The current limiting circuit drops its effective resistance, allowing more current through than when using a series resistor . .

enter image description here

However, the current limiting circuit is still providing some series resistance in this case. An ideal current limiter would have no resistance at all until the load attempts to draw more current than the limit. Is there a way to tune R_bias and R_load to better achieve this, and/or are there circuit tweaks that can help better achieve this?

  • \$\begingroup\$ It would help us to know what you are really trying to do? What is your real load? Do you want a current limit for a load on a fixed voltage source or do you want a constant current source? How much current and how accurately do you need to set it? \$\endgroup\$
    – The Photon
    Sep 3, 2012 at 19:16
  • \$\begingroup\$ I want a current limit of ~0.5A for a load on a fixed voltage source of 4.8V. However, it would be nice to optionally vary the current limit. The real load can vary between the extremes of off, and a short. I don't really know what I'm doing with the parameters of the above circuit. I just tweaked guessing that Rsens should be small. \$\endgroup\$
    – learnvst
    Sep 3, 2012 at 19:26
  • \$\begingroup\$ The circuit you added is not a current limiter, but a voltage regulator with current limiting. \$\endgroup\$
    – stevenvh
    Sep 3, 2012 at 19:40
  • 1
    \$\begingroup\$ @stevenvh, that seems to be what he wants: "a current limit of ~0.5A for a load on a fixed voltage source of 4.8 V". \$\endgroup\$
    – The Photon
    Sep 4, 2012 at 2:36
  • \$\begingroup\$ @ThePhoton I posted the other circuit in a separate question electronics.stackexchange.com/questions/39465/… \$\endgroup\$
    – learnvst
    Sep 4, 2012 at 10:28

3 Answers 3


The circuit shown will work, but the transistor and Rsense create a voltage drop that must be taken into account.
What you are seeing is the effect of this:

At 480mA the voltage drop across the 10Ω resistor would be 4.8V, which leaves no "room" for the transistor saturation voltage or the Rsense voltage drops.
So the current will be (Vsupply - Qsat - Vrsense) / Rload. To fix this, raise the supply by a couple of volts and try the 0Ω and 10Ω tests again. Also, lower Rdefend considerably (<10Ω)
You should hopefully see (almost) no difference.

For better results, the more gain you have the better. Another thing to note is (as Dave mentions in his answer) that Rbias needs to have a higher limiting point than the Rsense setting, otherwise it will dominate. If the transistor has a gain of 65, and you want Rsense set for 500mA, then Rbias must be set to allow more than 500mA. At 500Ω, it will set the absolute limit at 65 * ((5V - 1.4V) / 500Ω) = 468mA, so even if Rsense were set for 500mA you won't get it. To avoid this set Rbias for e.g. 250Ω, or as mentioned below use a MOSFET for Q1 and then the value isn't as important (10kΩ will do)

Another option is to use a common opamp constant current circuit:

Opamp Constant Current

Simulation with a supply of 4.8V, current limited to 500mA, Rload swept from 1mΩ to 50Ω and current through it plotted relative to this (note current stays flat at 500mA whilst limited):

Constant Current Sim

This meets your requirements of a solid 500mA limiting at 4.8V supply, and is easily adjustable by varying the opamp non-inverting via input voltage R2/R3 divider. The formula is V(opamp+) / Rsense = I(Rload) For example, the 1V reference is divided by 20 to provide 50mV at the opamp+ input, so 50mV / 100mΩ = 500mA.
A MOSFET is used to avoid base current errors complicating matters (a MOSFET with low Vth can also be used in the original transistor circuit to improve things)

  • \$\begingroup\$ Interesting. I bumped the supply up to 6.8V, tweaked R_bias to 780 Ohms to give a limit of ~0.5A at short, then tried the 10 Ohm load and saw a current dip of only ~20 mA rather than the >80 mA shown above \$\endgroup\$
    – learnvst
    Sep 3, 2012 at 20:54
  • \$\begingroup\$ Try it at e.g. 10V/500mA, you should see less than 1mA difference. \$\endgroup\$
    – Oli Glaser
    Sep 3, 2012 at 20:59
  • \$\begingroup\$ Still dropping about 20 mA in the simulator, but it is good to know. Sadly, I have no control over the voltage in the application I plan. But this is all good stuff! Thanks \$\endgroup\$
    – learnvst
    Sep 3, 2012 at 21:03
  • \$\begingroup\$ Interesting - what transistor are you using for the simulation? (I just did a check in my simulator and I get ~200uA change) \$\endgroup\$
    – Oli Glaser
    Sep 3, 2012 at 21:05
  • 1
    \$\begingroup\$ I just realised your Rdefend is 1 kOhm, not 1 Ohm as I originally thought. This will make a difference, try lowering it to 1 Ohm. \$\endgroup\$
    – Oli Glaser
    Sep 3, 2012 at 21:38

I think there's a fundamental misunderstanding here. It isn't Rbias that's supposed to set the limiting current value, it's the combination of Rsense and the Vbe drop of Q2.

Your first circuit has two different current-limiting effects: One is the current through Rbias multiplied by the gain (current transfer ratio) of Q1, and the other is Q2's Vbe divided by Rsense. The first gives the value of 470 mA that you see, but this is poorly controlled. What's happening in this mode is that the circuit is behaving like a resistor that has the value of Rbias/Hfe, or about 7.8Ω in this case. The current is still going to vary with the supply voltage.

The second mechanism would give you a value of about 600 mA (i.e., 0.6V / 1Ω), with a much more sharply-defined "knee" — the effective source resistance in this case is Rsense multiplied by the combined gains of Q2 and Q1, which is much closer to an ideal current source. However, you're not getting to the level of current where this mechanism would kick in.

  • \$\begingroup\$ Great answer. What would be the course of action to get the 2nd mechanism to dominate? \$\endgroup\$
    – learnvst
    Sep 3, 2012 at 22:34
  • \$\begingroup\$ As Oli says in his answer, you need to reduce Rbias so that the other mechanism kicks in first. But the maximum value of Rbias depends on both the worst-case gain of Q1 and the lowest expected supply voltage. An even better answer (especially if you're expecting a wide range of possible supply voltages) would be to replace Rbias with another current source. \$\endgroup\$
    – Dave Tweed
    Sep 4, 2012 at 0:23

You say

"An ideal current limiter would have no resistance at all until the load attempts to draw more current than the limit."

An ideal current sensor uses an infinite gain amplifier to measure the voltage rise in a zero Ohm resistor.
You approximate the zero ohm resistor by using one which is low enough to cause negligible voltage drop.
"The problem" is that you basic circuit is fundamentally flawed. It does not even TRY to implement a simi ideal circuit. Instead it uses a Vbe voltage drop as it's necessary sense voltage. This puts a lower and poor limit on Vsense.

As long as you use a Vbe drop in Q2 or equivalent as your sensing threshold you cannot approach an ideal solution. What is required is a "comparator" that detects voltage of close to zero Volts, where "close" depends on what you desire. An eg 0.1 volt drop with a 5V supply = 2% is liable to be adequate for most purposes but you can build circuits with Vsense = say 0.01 Volt if you wish.

The easy and obvious choice is to use an IC comparator or opamp BUT you can build a suitable comparator from transistors alone if desired. Use either a "long tailed pair" of PNPs with their common node referenced to V+ or use NPN transistors with the voltage inputs at ~= 0V acting as the bottom of divider strings which transfer the voltage changes to transistor bases operating at some higher voltage.

Circuit below is from here which provides a build up up from one transistor on through -

enter image description here

If that makes no sense then a look at
Wikipedia - differential amplifier

and this will provide many leads

Here's an IC with PNP and NPN longtailed pair inside. This is made for 100's of MHz operation (or more) but shows what can be bought.

Long ago they looked like this :-):

enter image description here


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.