Simple Constant Current Driver for a High Power LED

** Schematic diagram corrected and updated **

Update: New post highlighting a ATtiny85 based PWM LED Driver!

In my previous post, I slapped together a quick LED lighting solution for my workbench… but it is truly a hack. What I really want to do is make a simple constant current driver, so the power LEDs can be used in other projects. One of those projects is an LED swimming pool light. It needs to be running at maximum brightness and low cost.

Updated Schematic, correcting op-amp connections

After much digging and testing, I found a simple circuit using a power FET, an OP Amp and 0.5 ohm resistor.

This simple circuit accepts a VCC up to 32v (limited by the Op-Amp). The 78L05 regulator provides a stable 5v reference and R1 is a potentiometer serving as a voltage divider, with the output on pin 2 serving as a reference voltage for the basic LM358 Op-Amp.

R2 is a 3W 0.5 ohm resistor (note the power rating is incorrect in the schematic!) serving as a current sense resistor. The higher the current flow through the resistor, the higher the voltage difference to ground. In this circuit, a 1A current will have a 0.5 volt differential across the resistor.

By adjusting R1, the LM358 will adjust its output and drive the FET gate. If the voltage at R2 is too low, it will increase output and allow more power to flow through the FET. If the voltage at R2 is too high against the reference voltage, the LM358 will decrease the output voltage and close the FET gate, limiting current.

I tried various circuits to set the reference voltage, including zeners, resistor networks, etc, but the only configuration I found to be stable independent of VCC was to use the 78L05 regulator as a reference. Once this circuit is calibrated for maximum current, it can be used at any voltage and current will be stable.

Below are a few photographs of the first prototype pool light using this current control circuit.

Constant current driver board

Constant current driver board

Light module with FET

Light module with FET

Pool light assembled with power source and protective enclosure for the light

Pool light assembled with power source and protective enclosure for the light and suction cup for attaching to pool wall.

Unfortunately, things don’t always work right on the first try. After 30 mins under water, there is a noticable amount of water inside the protective enclosure. Still more testing to do.

Water leaking into the light enclosure.

Water leaking into the light enclosure.

 

Advertisements

18 thoughts on “Simple Constant Current Driver for a High Power LED

  1. Elmars Post author

    It may be that I have miswired the schematic. I will check the prototype this evening and update the thread. The design proofreader is on permanent vacation…. 🙂

    Reply
    1. Jan

      It looks like you have swapped the inverting and non-inverting inputs in the schematics.

      Also, careful with the FET – you are running it in a linear mode and they have a fairly limited safe operating area. If you run it with the 32V Vcc, you could easily exceed it and blow the transistor.

      Reply
      1. Elmars Post author

        Aha. Learn something new, did not know about the linear mode issue. In this case, I don’t think it is a serious issue, as I don’t expect to run at higher than 18V… but there is good incentive to test. Will see what happens when I run 4x diodes at 16V through this circuit (will need a better resistor…). Cheaper to blow parts on the bench than when in service!

    1. Elmars Post author

      The LM317 circuit is good for low power applications. Although the LM317 can control up to 1.5A, if you look at the circuit, you will notice that you must drive all that current through the potentiometer. I don’t have any pots that can handle that kind of power. Instead, in this circuit I am using a fixed power resistor and cheap potentiometer. In order to scale the circuit, I only need to change the FET and the power rating on the 1/2 ohm resistor. The potentiometer and op-amp stay the same.

      Reply
  2. Pingback: Featured on dangerousprototypes.com | Elmars Tinkering Again

  3. Felix

    Have been using exactly this circuit for 5 years or so. Nothing new but probably the best way to generate a constant current for LEDs. A bonus: This can be made switchable by adding a N-FET between GND and R2.

    Reply
    1. Elmars Post author

      Will have to try that. I hav also found that adding a choke\inductor in series with the led also works I will check out your solution and post an update. Thanks.

      Reply
      1. Felix

        I am not sure if you got me right. With “switchable” I mean you can turn it on and of with e.g. PWM for dimming. I don’t see how an inductor is able to reproduce that function… In fact I don’t see any point in adding an inductor there, can you explain its purpose?

      2. Elmars Post author

        Oh! I definitely misunderstood. I have received many comments that this is a linear circuit, and to be careful of workload on the fet, that a switching regulator circuit woud be a more efficient solution. I have been working on such a modification to this circuit in the last few days with some success. So naturally thoght this is what you meant. I still like your proposal though for the pwm input.
        Placing an inductor in series with the LED induces a free running ocillation that feeds into the fet gate. The fet can theortically handle this better, so now looking into measuring the efficiency. I will post my findings once I have some hard data.

      3. Felix

        Ah, I see. The fact about the linear circuit is of course true however you can make sure there is as few voltage drop over the FET by either adjusting the input voltage or placing LEDs in series to approximate the input voltage (that’s what I did).
        But “forcing” current through a FET with an inductor is generally a very bad idea… This should be avoided by placing a reverse polarized diode accordingly.

      4. Elmars Post author

        Yep. Got the reverse diode in place. I have also replaced the 5v regulator current reference with a resistor/diode combo. This not only reduces the cost of the circuit, but also gives a broader control range on the potentiometer. I will be posting the changes soon – or at least shortly after I get a critical health issue in the family sorted out.

  4. Evad

    Ehhh. Do you want a cheap constant current regulator for LEDs with dimming?

    [1] Use PWM for dimming.
    [2] Use an NPN,
    -base to current limiter resistor-fet source net,
    -emitter to ground
    -collector to MOSFET gate,
    and resistor to limit the maximum current.

    Imax = Vbe/resistor.
    PWM the MOSFET gate to dim the LED, a PIC10F222 is pretty cheap for this to read a POT and output a Pulse train, might even be cheaper than a 555.

    The nice thing about the LM317 is that it’s thermally limited, it’s also really cheap. The thermal limit is why you would use it over a homemade design.

    Reply
    1. Elmars Post author

      Already looked at lm317. It is current limited to 1.5A. This can be extended with additional power transistors, but the circuit becomes complex. In this circuit I can replace the FET and sense resistor with higher power ratings and the circuit will work as designed.
      PWM is also easy, but I wanted a simple circuit that will work witout digital control. PWM can always be added. See comments from others on that.
      I will take a look at the transistor proposal. This circuit will be used on an unregulated power source, so one of the primary goals was to have the light output stable unless voltage drops below optimum.
      Thanks

      Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s