Expand PWMs output with HIGH CURRENT (alternatives to TLC5940)

Hi all guys :slight_smile:
I'm developing a project with RGB leds. The number of RGB led is not fixed for now, but surely can be more than simple arduino board pwm can handle.
So i need a big help facing this problem: how to control each pwm channel? I need a pwm expander, obviously, but i cannot find anything's right for my project.
The RGB leds are the high power type, with currents for each color approximately 300-350mA, so for the TLC5940 (alone without other components) is too much.

The firs idea i made was: use the output of the pwm expander to drive high power mosfets.
Yeah, sounds great and should be the right way, but....the TLC5940 doesn't have a push-pull output (high when duty, low otherwise).
So i search for other chips. I've found the PCA9685 which sounds great: push-pull output, internal clock, i2c interface...
But it's really diffucult to find, and there're very poor libraries for Arduino.

So, in a few word:

  • arbitrary number of RGB leds
  • 300-350mA for each color
  • needs a power output stages to handle the high power.
    How can i solve my problem?

In alot of the earlier projects people used tip120 darlington transistors.
According to ebay there rated at 5A.

I understand that loads of them are not as nice as a single package chip, but there cheep and easy to get hold off.

Dani88:
The firs idea i made was: use the output of the pwm expander to drive high power mosfets.
Yeah, sounds great and should be the right way, but....the TLC5940 doesn't have a push-pull output (high when duty, low otherwise).

That's what pullup resistors are for...to give you the highs.

Dani88:
So, in a few word:

  • arbitrary number of RGB leds
  • 300-350mA for each color
  • needs a power output stages to handle the high power.
    How can i solve my problem?

350mA is nothing. A normal transistor can easily handle that (2N2222, BC337, whatever...), no MOSFET needed.

That's not your problem, your problem is that the output gets inverted when you drive a transistor with a TLC5940. You need to either use two transistors on each LED to un-invert it or use PNP transistors (BC327) with common cathode LEDs.

But it's really diffucult to find, and there're very poor libraries for Arduino.

Most major stockest have them.
They are so easy to use that you do not need a libary.