The TLC 5940 is an awesome stand-alone 16 channel PWM chip, which can control e.g. 16 LEDs and is programmable via the SPI Bus. There is plenty of good code for connecting this LED Driver chip to the arduino.
I had the problem that I wanted to connect a 3W white LED and thus needing a high-current output for the TLC 5940. The TLC can drive 130mA per channel. The 3W LED has 0.25A @ 12V. I blogged about this before and there are different approaches:
- Connecting more than one outputs in parallel to the high power LED as proposed by TI in this PDF. One output can drive 130mA and so you can add them up.
- Connecting a N-Channel Mosfet (BUZ 11 (old!), IRLZ34N, NDS355) directly and using a pull-up resistor. The TLC is a current sink, meaning that its driving the load (e.g. LED) always to ground. Its working, but you have to invert the PWM in software (Full PWM = No Mosfet Output und visa verse).
One Version which I want to present here is to add an additional transistor like the BC547 to invert the TLC PWM signal and make it useful for driving the MOSFET directly!.
In the circuit you see the TLC on the left side and some more low power LEDs. Then you have the MOSFET circuit on the right. The high Power LED (not in the diagram) is connected to VCC (+12V) and the MOSFET drives it to ground when switched on.
Lets go! When the TLC channel is off, the Transistor – a SMD variant of the famous BC547 – is switched through, pulling the Mosfet to ground: the LED is off.
If the TLC now starts working it pulls the Transistor to ground, leaving a positive potential at the ate of the Mosfet, which results in a lightening LED.