10W LED Driver and Dimmer




Introduction: 10W LED Driver and Dimmer

This project came about from my need for a light source for my Franken-ebay stereo microscope. I will have another instructable that will cover using this driver / dimmer card in a fiber optic setup. It is now available here:

Main design goals for this project were:
  1. Small size
  2. 10 dimming levels + off
  3. minimum 10W power handling 
  4. Fan control (on/off + PWM)
 Board files, logic, firmware, and source code can be found on my web page here

Here is a video of me taking the prototype card though it's paces:

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Some Math

Before starting the build there is a little bit of math required to select the LED, LED current limit resistor, and power supply. 

LED selection:
This circuit can drive either a single led or a string of leds as long as they fall under the following conditions:
  1. Max forward current of the string is 1A (1000mA) or less
  2. Max forward voltage of the string is 24.5V or less

LED current limit resistor:
The CAT4101 datasheet includes the following table for setting LED current. 
LED current in mA current limit resistor value in Ohms
100mA 4990 Ohms
200mA 2490 Ohms
300mA 1690 Ohms
400mA 1270 Ohms
500mA 1050 Ohms
600mA 866 Ohms
700mA 768 Ohms
800mA 680 Ohms
900mA 604 Ohms
1000mA 549 Ohms

Power supply selection:
There are 3 conditions the power supply must meet to be used with this driver.
  1. Unloaded voltage (floating / LEDs off) less than 25V
  2. 0.5V greater than max LED (or string) voltage
  3. Less than 6V over the LED (or string) voltage when LEDs are on) 
  4. Output current of the power supply is greater than the forward current of the LED (or string) + 100mA

In my case I am using a LED with a on voltage of 10V to 12V and a forward current of 1A (1000mA) (this is from the LED data sheet)
12V is less than 24.5V so ok there. 
1A (1000mA) looked up in the current limit resistor table results in a 549 Ohm resistor
12v (LEDVmax) + 0.5v = 12.5v is the minimum output voltage that the power supply can put out and be usable. 
10V (LEDVmin) + 6V = 16V is the maximum output voltage that the power supply can put out and be usable. 
1A + 100mA = 1.1A is the minimum output current that the power supply can put out and be usable. 
In my junk pile I happened to have a 16V @ 4.5A power supply from an old laptop. This meets all the requirements calculated above for the LED I picked. 

Step 2: Bill of Materials

To build the driver card you will need the following:
Qty Value Digikey PN ref des Description
1 PCB N/A N/A OSHpark 
2 0.1uF 50V 1276-1012-1-ND C2, C3 CAPACITOR
2 10k Ohm RMCF0603FT10K0CT-ND R3, R4 RESISTOR
2 1uF 35V 587-1437-1-ND C1, C4 CAPACITOR
2 2-1437565-9 450-1792-1-ND SW2, SW3 SWITCH TACTILE SPST-NO 0.05A 12V
1 See math See math for value R1 RESISTOR
1 PIC12F1501 PIC12F1501-I/SN-ND U1 pic12f1501 micro
1 CAT4101 CAT4101TV-T75CT-ND IC1 1A constant current LED driver (PWM)
I ordered my parts from Digikey (part number supplied) and the raw cards (PCBs) from OSHpark.com 

Beyond that you will need the following tools:
Rosin core solder
Soldering iron
optional solder paste
option reflow oven
PICkit + MPLAB software (to program the micro) 

Step 3: SMT Assembly

My preferred method for assembly is to use solder paste and my toaster reflow oven. You could also solder all the parts by hand with just a iron and rosin core solder just takes a little longer. 

The key for using solder paste is less is better. Use a toothpick or small syringe tip to dispense the paste. Make sure you get some on each pad. Next place the part on the pads in the paste. Make sure the paste has good contact on both the pad and part. If not move the part around to spread the paste a bit. You do not need neat looking paste or exact part alignment at this point. When the joints reflow the surface tension of the solder will pull the paste back into the joints and align the part slightly to the pad. Take a look at the first and last picture on this step. They are of the same 3 cards and should give you an idea on the amount of paste and the results.

Depending on the paste and your oven the reflow temp and times will vary greatly. If it's your first time some experimentation will be required but the curve supplied on the solder paste datasheet is a good starting point. 

Once reflow is done and the cards have cooled inspect all the joints for opens or solder shorts. In this build I did not have any shorts and a single open under one resistor. If you find any defects touch them up with a normal soldering iron and rosin core solder before proceeding. 

Step 4: Install the Driver IC

The final part to be attached is the CAT4104. Before soldering it on bend the legs of the part to match your thermal mounting. The CAT4101 REQUIRES a heatsink. In my application I am clamping it down on a heatsink. So I carefully flattened out the legs and soldered it directly on the raw card as shown.

Depending on your thermal solution you may or may not need to bend the legs of the CAT4101. One method for heat sinking the CAT4101 would be to just solder the body to a square of un-etched copper clad card. See the CAT4101 datasheet for the required dimensions of the copper pad required to properly heat sink the part.

If not soldering the  CAT4101 to a board make sure to coat the back side in thermal grease and physically clamp the device to a heat sink. Either mounting method make sure to ground the heat sink / copper clad board back to the power supply ground.

Step 5: Programming, Final Connections, and Debug.

Next attach a power supply of at least 7.5V to J1. Pin 3 is is + and pin 4 is ground. Once this is done plug in the PICkit2/3 into J2 (pin 1 to pin 1) and use the MPLAB software to program the firmware hex file into the micro controller. If programming is successful remove the PICKIT2/3 and power supply.

Once programmed the driver is ready for use. Connections to the driver are as follows:
J1 pin 1 to LED (or string) negative side 
J1 pin 2 to LED (or string) positive side
J1 pin 3 to power supply positive side
J1 pin 4 to power supply negative side
J2 pin 1 do not connect (not used)
J2 pin 2 +5V out (not used do NOT load more than 100mA normally not used)
J2 pin 3 ground (not required to be hooked up, normally not used)
J2 pin 4 fan PWM out (5V TTL out. LOW when LED is off, 25% PWM for brightness levels 1 - 5, and 44% PWM for brightness levels 6 - 10)
J2 pin 5 LED on output (5V TTL output low when LED is fully off and high for all other states)

Pressing SW3 will increase the brightness of the LED (or string) 
Pressing SW2 will decrease the brightness of the LED (or string) 
Pressing both SW2 and SW3 at the same time will turn the LED (or string) to full brightness if off or off if already on. 

  1. Verify your power supply input matches the value calculated in step 1. If there is not enough voltage the CAT4101 will lock out and not power up the LED.
  2. Verify the output of the 5V regulator across C1. If you do not read 5V check your card for shorts or opens. 
  3. Short out R2 (normally not populated) this should force the LED to full on. If the led turns on check the connections around the micro and that it is programmed correctly. If it does not light check the connections around the CAT4101 and the LED. 
Build My Lab Contest

Participated in the
Build My Lab Contest

Make It Glow Contest

Participated in the
Make It Glow Contest

Be the First to Share


    • Backyard Contest

      Backyard Contest
    • Silly Hats Speed Challenge

      Silly Hats Speed Challenge
    • Arduino Contest 2020

      Arduino Contest 2020

    21 Discussions


    4 years ago

    Great Instructable! I just want to know if I can use this

    10w LED http://www.ebay.com/itm/New-10W-20W-30W-50W-100W-L...

    with this

    Lipo Battery http://www.ebay.com/itm/RC-ZIPPY-Flightmax-8000mAh...

    and just put a switch on the - line from the battery to the LED? or do I need this driver?

    also would this charger work with the battery above?


    and I'm thinking of mounting the led on a stock intel socket 775 heatsink (without the fan) laying around. Can the heatsink dissipate the heat enough? or do I need to add a fan?


    5 years ago on Introduction

    Bro can i use this us i have a new xhp70

    Datasheet / vendor said

    • Maximum drive current: 4800mA (6V), 2400mA (12V)

    Can this board get this crazy power led working and if yes please can you please tell me the modification needed on the board.

    Thanks for reading.


    Reply 5 years ago on Introduction

    The XHP70 is a 2.4A max LED. Unfortunately the regulator used in this design can only supply up to 1A. This would work with the XHP70 but the LED would only be ~1/3 as bright as it could be. To get full brightness you would need to move to a regulator IC that can handle 2.4A or more.


    Reply 5 years ago on Introduction

    And which one you recommend i want to connect 1 maybe 2

    Thanks for Reading.


    5 years ago on Introduction


    The one i have is
    Input 12-24v
    Output 12v-24v


    Reply 5 years ago on Introduction

    That is more or less a PWM switch. You will need some sort of regulator (active or a passive resistor) between it and the LED. Otherwise the current rating and voltage should be sufficent to run the 10W RGB leds.


    5 years ago on Introduction

    is there a simpler way to drive a 10w led for in car use (12v)
    can i just use a 1.5 Ohm resistor?

    i wanna replace the headlight bulb with 10w led, if it works ok i might go for RGB 20/50w :)

    btw the car makers should reaaly really invest in leds and use 1/2 RGB leds for brake/turn/reverse lights


    Reply 5 years ago on Introduction

    Normal car voltage will vary between ~11.5V to ~15V depending on the state of charge on the battery. So if you wanted to go the resistor only route using the same LED as above you would need to go with a 5 Ohm 5 Watt resistor. This would cover the worst case condition of Vmin led (10V) and Vmax car (15V). Note that thing will get very hot. Recommend the metal encased type that can be screwed to a frame member to be used as a heatsink. Note the LEDs will dim / brighten based on the battery state of charge. Using a active regulator like I did will keep the brightness constant regardless of input voltage.

    Some car MFGs do use leds for tail lights. (in fact quite a few)


    Reply 5 years ago on Introduction

    not sure what remote your referring to.

    I'm working on a 5A laser diode driver using the PIC12F752. The requirements are a bit more stringent than driving an LED. I hope you don't mind if I examine your source code. :D


    Reply 6 years ago on Introduction

    Follow the link to my website all the source is in the zip with the board file. FYI the pic on mine just handles the PWM control for dimming. All the current control is handled by the CAT4101 so even if the PIC goes haywire the led will be fine.


    6 years ago on Step 3

    Where did you get that Kearsarge 522 Laboratory Timer?? I want one!! Nice article. Just what I needed!


    Reply 6 years ago on Step 3

    Actually found it in the trash back in school. Needed to be cleaned out but once that was done has worked since. If anyone ever sees a manual for it let me know. Looked on and off over the years but never found one online.


    Reply 6 years ago on Step 3

    WHAT!? In the thrash!? You are so lucky, man! If I ever come across a manual for it, I'll let you know.


    Reply 6 years ago on Step 3

    It was in really bad shape not sure what the stuff was they dumped on it but was sticky and really gummed all the buttons and switches up. Took me a few weeks to take everything apart and clean the goop out.


    6 years ago on Step 5

    You never show the LED you chose. Any details?


    Reply 6 years ago on Step 5

    If you follow the link to the fiber light post at https://www.instructables.com/id/10W-LED-fiber-light-source/step2/LED-and-heat-sink-selection/ step 2 had the information on the LED. I used a DC-LE14274 from sure electronics in that application. Wrote this instructable up to be more generic so folks could use this driver with any led or string of leds that fell under the 24.5V @ 1A maximum.