Simple Buck LED Driver with PWM Input

Picture of Simple Buck LED Driver with PWM Input
High-power LEDs over 1W are now quite inexpensive. I'm sure many of you are incorporating LEDs as light sources in your projects.
However I realize that the finding and configuring the power supply is still not as simple as it can be; commercially available LED drivers are convenient, but often overkill or not flexible. Even my own Universal LED Driver can be overkill at times. Some projects call for a bear minimum, simple driver.

Poorman's Buck - Simple, Constant Current LED Driver

So I created the "Poorman's Buck" - simple switch-mode (buck) constant current LED driver that's built without a microcontroller or a specialized IC. All of the parts are easy to obtain, "off-the-shelf", though-hole parts.

Even though this driver is minimalistic, I added a current adjust function that doubles as a dimmer, and an input to control the output with PWM. This makes the "Poorman's Buck" perfect building block for Arduino or other microcontroller based LED projects - you can control many high-power LEDs from a microcontroller simply by sending PWM signal. With Arduino you can simply use "AnalogWrite()" to control the brightness of high-power LEDs.

Remove these adsRemove these ads by Signing Up

Step 1: Features

Picture of Features
  • Inductor "switch mode" (buck) converter for high energy efficiency.
  • Wide supply voltage range of 5 to 20V. Great with batteries as well as AC adaptors.
  • Cycle-by-cycle, true constant current circuit
  • Configurable output current up to 1A
  • Up to 15W maximum output power. (at supply voltage 20V with five 3W LEDs connected)
  • Current control potentiometer (trims the output current down to about 9%)
  • Current control can be used as a built-in dimmer
  • Output short-circuit protection
  • PWM control input - controllable via external microcontroller including Arduino.
  • Compact design - only 1 x 1.5 x 0.5 inches (excluding the pot shaft)
hahihula15 days ago

Hi, I tried to simulate this circuit for better understanding. But it behaves really strange. Could someone please point out where I made mistake? Thanks

Lankaster5554 months ago
Hi, ledartist,

Have tried to build a prototype of your offered driver – it works fine from 18V, thank you.
But I need to run it from a 26– 27V SPSU, so I need to limit the Vgs voltage on the P-mosfet. I have tried different solution but had no luck.
1) Tried voltage divider of two 1KOhm resistors. I can not use smaller value resistors due to high voltage and power dissipation.
2) Tried connecting a 15V Zener diode between the GND and the Q2 collector.
3) Tried connecting a 15V Zener diode between the Gate and the Q2 & Q1 emitters

In all applications I had severe distortion in shape of Mosfet driver signal. As a result a got increased looses on Mosfet, it became very hot.
Is Zener diodes fast enough to switch at 285KHz frequency in my version of driver ??? Would you be so kind and post the right schematic of how to limit the Vgs voltage ???

Thanks for your help !!!

Try connecting the zenner in series with the Q2&Q1 emmites and R8.

ledartist (author)  sbogdan32 months ago

Great solution! Why didn't I think of that.

anio2 months ago


Thanks for the good instructable. I have a question:

I am working on PWM controlled led strip which will be mounted on motorcycle. The brightness will corresponds to an accelerometer value.

So from a static point of view a moving object with a PWM duty cycle for example 10% will flicker. Can i use your schematic to avoid this problem?


Ploopy2 months ago


ed-9993 months ago
I really like this project, and I think it will work for me with a few changes. My application requires 30W or 2.5A at 12V for 60 LEDs, 20 parallel strings of 3 LED each.

I believe that the 1A limit for this circuit is the wattage of R10, R11, D3, L1 and maybe a heat sink for the MOSFET. The MOSFET is rated at about 5A so it shouldn't be a problem. So that leaves the other parts in the power side to the circuit (R10, R11, L1, and D3).

By making the following changes, I think that the output current can be raised to about 3A.
change R10, R11 to about 3W each.
change the 1N5819 (1A) to 1N5820 (3A)
Change L1 47-100uH 1.2A  to a 100uH 3A

Has anyone tried to increase the output current? If so how did you do it?


Hi ed-999,

Did you tried out the circuit with specified changes ? I wanted to proceed with 48W at 12 or 4A. Please let me know at earliest.

Thank You

I'm also thinking of an application requiring about 2.5A @ 14ish volts... what kind of luck did you have? Did your modifications work?


gialla874 months ago

maybe someone will pass by here...

what parts of the schematic could i avoid repeating if trying to make a 3 channels version of this?

siddhanth4 months ago
Hi ledartist,
I have a small noobish question since I am new to the world of power leds(forgive me). Before this I could get away with series resistances :-P

Anyhow my doubt is.
Since this is a constant current source,my diodes forward voltage is 6.5-7volts max.@700ma If I supply the driver with like say 14volts, will the leds get burnt even when I configure the driver to only 700ma?
The problem is the source of the power is an ac(my motorbike) and the voltages fluctuate with the increase and decrease in rpm. I believe at idle,it generates 11vac and 14vac at peak rpm.

Is there a way out to this without introducing a linear regulator?
kalmara4 months ago
Hello, ledartist.
I have some questions about modifying the buck driver for my own needs.
I have access to a bunch of SMD LM393's, a bunch of FZT951 PNP BJT transistors (rated at 150MHz, 5amps continius, I think 350mA or 700mA would be very low-weight lifting for them), and a bunch of 0.3ohms 1watt SMD resistors, SR24 2amp schottky diodes and etc. I'm thinking of making my own design for the PCB with all SMD devices, except for the inductor. So the question is - by altering the voltage reference for the first comparator can I use 0.3ohm sensing resistors, or maybe 2x0.3ohm in parallel (as in your design example). The other thing is - I plan on removing the mosfet and the totem-pole driver and use the FZT951 as a power deivce. Will the transistor be *beef* enough to handle the switching, or should I add another small signal SMD to form a darlington array in front of the power switcher?
ledartist (author)  kalmara4 months ago
You can use BJT as the switch for sure, but you do need some kind of driver to drive the power transistor, not for the reason you might be thinking, but for the speed.
For switching converter, the switching speed, especially turn-off speed is important. During switching, the transistor is partially conducting, which means that the voltage is burned in the device. Without a totem-pole driver for example, you will see the transistor getting very hot, because of the slow switching speed.
Darlington is particularly not suited because of its slow speed.

kalmara ledartist4 months ago
Hello, Aki, thanks for the quick reply.
LM2596 simple switcher dc-dc converter uses darlington output transistors, and it has a fixed frequency oscillator at 150kHz.
Anyway - I had a lightbulb, I'm going to scavenge a SOIC-8 mosfet from a dead laptop motherboard, and totem-pole will be a small SMD device called MMDT2227, which incorporates two transistors in one package : 2222A-NPN/2907A-PNP they are rated at 600mA, I think the surges of the mosfet gate will not max them out.
Another question : does the optional C5-22pF capacitor err..."slow down" the feedback ? What was it's purpose in the first place?
Doktor Jones5 months ago
How would this be modified to drive 100mA LEDs? Can you post the formulas you used to determine the values of the various components (and any other values that need to be taken into consideration such as current rating of the inductor, etc)? Thanks!
ledartist (author)  Doktor Jones5 months ago
Sorry for my late reply. The formula for the combined value of R10 & R11 would roughly be: 0.35 / I. Where I is the desired output current in Ampere.
So for 100 mA (0.1 A), R would be 3.5 ohm, however I'd use standard value of 3.6 ohm.
make the circuit and then bog down the circuit with given potentiometer(adjust it) and multimeter set in ammeter mode connected on the output.
adjust it till its 100ma and enjoy?
Unfortunately I don't have a multimeter with an ammeter mode. Also, I was hoping to learn the formulas so I could modify the parts list to fit my needs in the future, such as if I want to use it to drive something else with different current requirements.

Wonderful design. Just wonder if this could be use to drive a laser diode?

Sorry I don't know much about laser diode. But I thought you need to monitor the temperature?

can this be use to drive laser. diode?
pravardhan7 months ago

Can we modify the circuit and work as a "Boost LED Driver" upto 25V to 40V & 350mA output?

Bryan_L9 months ago
What is the formula for determining the maximum current capability. Is it the voltage drop of the diode/divided by the current to determine the sense resistor R10 and R11.

For example for 750 ma (.7/.75) = 1 ohm? which matches the specs in the article.So if I wanted 2 amp current capacity total then it would require a sense resistor of (0.7/2) = 0.35 ohm resistor

Bryan_L9 months ago
On the schematic the PWM input is identified. It is one of the pins of the IC, below D2 on the schematic
Bryan_L10 months ago
Any chance the circuit could handle a output of 34 volts at 3.5 amps to drive a 100 watt LED. I know the inductor, schottky, mosfet and various resistors would need to be changed, but what about the LM339. I see it is only rated for 36v max. Could I add a simple 24 regulator to drop the voltage to the circuit except at the Mosfet junction at C3 where it would receive 38v or so. I am worried that there may be greater than 24v at R9 and C5
pravardhan10 months ago
Hi ledartist,

I tried your circuit and it works fine, except for some heating issue with the Current Sense resistors. I tried to drive 5 High Power LED's at 800mA and initially, the current was 800mA and after 45 minutes, the current came down to 775mA. When i blow air to these 2 resistors, the current increased! I used 2 Carbon Film 1ohm/1W resistor.

I also feel that the Inductor is very close to these 2 resistors.

Anyway, can you upload the full gerber files (including Solder mask and Silk screen) of Poorman's Buck so that i can give it for PCB fabrication for more numbers?

ledartist (author)  pravardhan10 months ago
The current sense resistors can get hot, and it's normal to see the current change, because of the resistance change.
Using metal resistor instead of carbon type is recommended.

Sorry but I'm not ready to release the gerber files...


Bryan_L10 months ago
My mistake, was not inputting a proper PWM signal, I am doing so now and it works fine. Just a note what is the point of the 22p cap, I did not have one handy and just used a 33pf. I assume it's for noise
ledartist (author)  Bryan_L10 months ago
It's for noise and also to compensate for timing. 33pF should be fine, I think. 

Bryan_L10 months ago
I have the current limited on 3 1 watt LEDS to 100ma using VR1. If I now add PWM to the PWM input it seems to override the current settings?. Is this correct, should the PWM not control the led brightness in the range from 0-100ma. It does not appear to do so and the brightness increases significantly and the current goes well into the 300-400ma area.
ledartist (author)  Bryan_L10 months ago
PWM should work within the current limit. So if you set the LED current at 100 mA, applying PWM signal should not change the peak current.
What's the PWM frequency? It should not be higher than 1 kHz, ideally a bit lower.

If you are getting higher output current, there might be some ringing going on at the FET and inductor.

krecik10 months ago
Very good driver! Cheap and easy to build. I'm using five 3W LED and notebook power supply (19V 3,42A) and it works like a charm! Only the efficiency is not good - 77% (not measured by me).

Nice work! :)
ledartist (author)  krecik10 months ago
Thanks! I know a simple circuit like this can't compete with pre-made buck converter ICs. However I wanted to share how easy to build one with ordinary parts.


murak11 months ago
Hi. If I am only interested in running a single CRee LED, could this be powered via a joule thief circuit , similar to those used in your other (i.e. night light) projects?
ledartist (author)  murak11 months ago
You can hook up Cree LED (you mean high power LED, right?), and it'll light up, but not at its full brightness. Joule Thief circuits such as mine can only give 15 mA current through the LED at most.

LazyCat11 months ago
at the request of greendq:
(smd variant)
SauliusPak1 year ago
I am not sure, but I think that C3 and C4 in schematic should be connected after the inductor, in parallel with LEDs. When I tried original schematic, I could not get higher current in the output than 0.44 A. When I moved C4 in paralel with LEDs, i.e. current output, driver started to behave as expected. However, current is somewhat lower with 5 V, than in the range 6 to 19 V.

Another question: is it possible to trim current even lower by reducing R3 or increasing pot value?
When you cap the output, a smaller inductor can be used.
ledartist (author)  SauliusPak1 year ago
C3 and C4 are there to bypass the power supply and keep the noise from going out.
Connecting capacitors in parallel with the LEDs won't hurt, but that should not change the output current either. But when you mesure the current using a multimeter, you may not get the correct reading because the current has ripples. I suspect that that's what's happening in your experiment. The best way to see what's going on is to connect an oscilloscope to read the voltage on R10/11. You should see a nice triangular wave there.
edgypyro1 year ago
where can i find the parts
GPN (5551, 2222, 3904, etc.) - Q1
GPP (5401, 2907, 3906, etc.) - Q2

Get More Out of Instructables

Already have an Account?


PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!