I need help making an efficient constant current driver.

I want to power my home with LED light strips for lighting and decorative purposes. I need to be able to turn each strip on and off individually.

I need 31 small strips in total. Each strip will have 8 LEDs in series. I want to run each strip at 21.04 volts, 55mA.

The best idea I have so far is a 24 V constant voltage power supply and having a simple constant current circuit before each light strip as follows:


Or a variation of the constant current circuit as follows:

How can I efficiently drive an LED?




I don't quite understand the advantage of adding a second transistor or using multiple Zener diodes and I need your help to decide on a circuit. I know it's got something to do with temperature stability and/or stabilising variation in current. I'll also need help picking out the transistors as I'm not quite sure how to pick the most efficient one.

Unless there is an alternative way that you guys recommend that would be cheaper or more efficient?

Should I try to arrange my LEDs differently?

I need the constant current circuit to be on the cheap side as I'll need 31 of them so buck converters/expensive ICs might be out of the question.

  • 1
    \$\begingroup\$ So how do you plan to route 24 volts to all your LEDs? And, if you want it to be efficient then buck converters are the clearer choice. Also your first link doesn't allow access. \$\endgroup\$
    – Andy aka
    Oct 28, 2018 at 9:41
  • 1
    \$\begingroup\$ Please include in your question all relevant pictures and diagrams. It's not pleasant to be thrown around other sites to gather information on your question. Also it's going to prevent future broken link issues. \$\endgroup\$
    – carloc
    Oct 28, 2018 at 9:44
  • 4
    \$\begingroup\$ @Andyaka - If he's going to drop 24 volts to 21, a linear regulator will do the job with 87% efficiency, and much less chance of significant EMI. It's not at all clear from where I sit that a switcher makes a whole lot of sense in this particular application. \$\endgroup\$ Oct 28, 2018 at 13:24

3 Answers 3


I suspect you're overthinking your problem. Maybe not, but probably.

There are two questions you need to ask:

1) How stable is your 24 volt supply?

2) How precisely do you need to control your LED current?

You specify 21.04 volts and 55 mA for your LED string. First off, using 4 significant figures for LED voltage shows that you don't really understand the variability of LEDs. Second, since you are looking at using these LEDs for "illumination and decorative purposes", I suggest that controlling current to more than 10% is a big waste of time. You simply won't be able to see smaller differences. For some reason you seem to have settled on a forward voltage of 2.63 volts for your LEDs. This will change with, among other things, LED temperature, and you are assuming a stability which simply won't occur.

So, what I'd do is the simplest possible circuit:


simulate this circuit – Schematic created using CircuitLab

The resistor should be a 1/4 watt unit, with some airflow to cool it. Don't pack all 31 units into a tiny sealed box. If you do, since they dissipate a total of about 5 watts, they'll get hot and either fail or burn something.

You will encounter statements about how switching regulators are preferred for LED control due to their better efficiency. That's true in general, but it's not much of an issue here. A simple resistor in this case will have an efficiency of about 87% (21/24) and that is right up there with switchers. Plus, this circuit is the ultimate in simplicity and low cost, both of which I suspect are good things for a first project. So don't sweat it.

Look - you plan on doing this, right? So you'll need to buy the LEDs no matter what controller you use. Buy the LEDs and a few resistors, then make a preliminary, simple version. Try it. If that is satisfactory, there is no need to get more complicated.


The simplest approach is to use a series resistor, of course, together with some fixed voltage supply. Without putting much thought into it, it seems a relatively good answer, too. However, there is a very serious flaw in it which I'll get to right away.

A resistor acts as a very, very rough current regulator. The higher the voltage is for the fixed supply and the lower the required voltage is for the LED strips, the better it will regulate. More overhead is better. But of course, wasteful in power. However, in your case there isn't much overhead. So let's look at how bad this is.

To compute the regulation using a resistor, we need to know the % variation of the current for a given % variation of the required LED voltage to operate (assuming that everything still operates okay, of course.) The way a % variation in current is computed is to use a calculus fraction that looks like this \$\text{d}\,\% I=\frac{\text{d}I}{I}\$.

The value for the current is pretty easy to calculate:


I'll leave out the details of performing the differentials (they are not hard.) But to compute the regulation, we need something like this:

$$\frac{\text{d}\:\% I}{\text{d}\:\% V}=\frac{\frac{\text{d}I}{I}}{\frac{\text{d}V}{V}}=-8\cdot\frac{V_\text{LED}}{V_\text{SUPPLY}-8*V_\text{LED}}$$

For \$V_\text{SUPPLY}=24\:\text{V}\$ and \$V_\text{LED}=2.63\:\text{V}\$, this works out to about -7.11% per %.

Suppose you use a \$R=56\:\Omega\$. Nominally, you'd compute \$I=\frac{24\:\text{V}-8*2.63\:\text{V}}{56\:\Omega}\approx 52.9\:\text{mA}\$. But with a 1% variation in the average voltage drop, I calculate \$49.1\:\text{mA}\le I\le 56.6\:\text{mA}\$. This is over 7% variation.

Now, that would be just fine. That is, if you could promise me that the LED voltage variations will be no more than 1%. However, that's not even close to realistic. Specifications usually provide 10% variation and without binning, I've seen worse. Perhaps 15% or more at the same LED current. So now we are talking about absolutely horrible current regulation -- perhaps worse than 70%! (Obviously, we are projecting a straight line interpolation here, and that has problems of its own, but it still provides a 1st order estimate that is very much worth listening to.)

One possible solution would be to greatly increase \$V_\text{SUPPLY}\$. This would certainly reduce the current regulation variations. Another would be to simply accept that since humans see brightness on a logarithmic scale, that you can accept dramatic variations in the current from one string of LEDs to another. Another would be to adjust the resistor value to fit each LED string better. That would also work. It would require a variety of resistors available and some testing and adjustment, but it's not hard work.

If you are looking for better uniformity in the current for each LED string and if you can afford to guarantee about \$1.5\:\text{V}\$ of overhead being available (a resistor can limit current with less overhead), then a two-BJT limiting circuit is probably a better approach. Your initial accuracies will be good enough that you'd never have to be worried about tinkering with resistor values. It's just a plug and play solution that will just work right. Also, given your currents, dissipation is small enough that you can probably use small signal BJTs (cheap and small devices) for the circuit.


simulate this circuit – Schematic created using CircuitLab

\$R_2=12\:\Omega\$ may not be the right brightness for you. You can lower it a little or raise it a little. But that's in the area you were looking for, I think. For the \$R_2\$ I selected, \$10\:\text{k}\Omega\le R_1\le 15\:\text{k}\Omega\$ will probably work. (Though it does depend a little on what you finally decide for \$R_2\$, of course.)

Note also that there is still a possible problem. If your LED strings really do average about \$2.63\:\text{V}\$ per LED, but they may vary by +10% let's say, then the result is over \$23\:\text{V}\$. That is enough to probably push the above circuit out of "management" and you'll see more substantial LED current variations, again. This would suggest that you'd want perhaps \$25\:\text{V}\$ for your voltage supply, just in case. Or perhaps even a little more. But they aren't as common as \$24\:\text{V}\$ supplies.

So again, you probably have a little bit low of voltage headroom. But at least with an active current limiter I think regulation should be better than with a single resistor. The above approach uses two resistors and two cheap BJTs. You'll have to decide if that's bad or good, of course.

  • 1
    \$\begingroup\$ @ Jonk Of course there is some 2milliVolt/degree Centigrade change in Vbe, causing more LED current as temperature rises. Would you consider using those 2 bipolars in a current mirror approach, using 12 ohm resistors in both emitters to ballast the Vbe mismatch with 0.50 or 0.6 drop across the resistors. Then the Early voltage causes errors (well, hardly any). \$\endgroup\$ Oct 28, 2018 at 21:59
  • 1
    \$\begingroup\$ @analogsystemsrf A current mirror could have lower overhead. In fact, in one circumstance where low overhead was everything to me, I did use a current mirror for an LED drive circumstance. But for this kind of thing? It just isn't that important. Besides, while Q1 will float around with ambient, it doesn't self-heat at all and it's what is measuring the current. I think the human eye's log response and the non-critical nature here pretty much means "I'm not worried about it." (And Q2's Early Effect isn't a problem here, anyway, even if I did care.) \$\endgroup\$
    – jonk
    Oct 28, 2018 at 22:15

The required voltage will change with temperature in your home. If you perform a temperature-compensation of the 24-volt global supply, you might simply have a 10 ohm resistor (0.55 volt drop) atop each LED strip, and provide 24.55 volts globally. Given you only have 1.6 amps total current, if you use standard 12-gauge? copper wiring, the voltage drop around the house may be low enough at 1.6 amps, that you avoid any active current regulation. Use large MOSFET switches at bottom on each LED strip.


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.