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:
https://www.instructables.com/id/10W-LED-fiber-light-source/

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
 http://www.wire2wire.org/10W_led_driver/10W_led_driver.html

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

 

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

Example: 
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 7805DT LM78M05CDT/NOPB-ND IC2 Positive VOLTAGE REGULATOR
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) 
tweezers
 

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.

Programming:
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.

Connections:
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)

Use:
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. 

Debug:
  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.