Electrical – Controlling individual LED strips of different kinds and lengths with a single microcontroller

arduinoled stripmicrocontroller

I am designing a little bit of a lighting show composed of a few individual led strips which will be controlled by a microcontroller, Arduino UNO in particular. I want to control 7 individual led strips:

  1. 5x RGB 5050, 60 LEDs per meter.
  2. 2x UV 5050, 60 LEDS per meter.

Taking in consideration that the RGB LED strips need 3x PWM pins each, and I want to have a full control over the brightness of the UV strips too, we come up with a
5×3 + 2×1 = 17 PWM pins in total. Obviously, neither the Arduino UNO, nor even the Mega have that many PWM pins so I decided to go after a LED driver – TLC5940. It can control up to 16 channels so I'll need 2 of it(+ the option to add more strips later). Can you guide me if I have any flows in the design and maybe if there's a better solution for my situation. The current setup is something like this:

The LED strips will be of varying lengths but I'll keep them 4 meters of length maximum. So:

  1. 4x RGB LED 5050, 3 meters each:

    • Amperage: (1.2A/m * 3m) * 4strips = 3.6A/strip * 4strips = 14.4A
    • Power: (14.4W/m * 3m) * 4strips = 43.2W/strip * 4 strips = 172.8W
  2. 1x RGB LED 5050, 4 meter:

    • Amperage: 1.2A/m * 4m = 4.8A
    • Power: 14.4W/m * 4m = 57.6W
  3. 1x UV LED 5050, 3 meter:

    • Amperage: 1.2A/m * 3m = 3.6A
    • Power: 14.4W/m * 3m = 43.2W
  4. 1x UV LED 5050, 2 meter:

    • Amperage: 1.2A/m * 2m = 2.4A
    • Power: 14.4W/m * 2m = 28.8W

Totals:

  • Amperage: 25.2A
  • Power: 302.4W

I'm planning on powering all the strips with a single 12V power supply allowing:

  • Amperage: 30A
  • Power: 360W

Each pin of the LED driver will lead to a TIP120(or maybe TIP31C) transistor to control each color channel of the strips(3 transistors for each RGB strip, 1 for each UV).

I'll also need to use some additional wiring for the strips in other to get them all to the controller(1-3m) because they'll be quite spread so should I be concerned about reduced brightness?

Also, never worked with a LED driver before, can it handle the job I'm assigning it for?

Do I have to add any resistors to the transistors?

Any help and positive criticism will be appreciated.

EDIT: The question is also posted on the Arduino forum. You can find a reference to the thread HERE if you're interested.

Best Answer

I'm almost completely sure they're common anode(12V+ pin + 3 for each color channel to GND).

OK. So we need to switch the GND pins (low-side switch).

TP120 VCE(sat) = 2.0 Vdc (Max) @ IC = 3.0 Adc
               = 4.0 Vdc (Max) @ IC = 5.0 Adc

Well your LEDs aren't gonna light very well if the transistor eats 2-4V from their 12V supply. So we use a MOSFET.

Max current per strip is about 5A. We dont want heatsinks, so this means 0.5W max dissipated in the switch. So we should select a MOSFET with 20mOhm RdsON. If driven from 5V these should be a logic level FET.

Example. Just use DigiKey/Mouser search engine with criteria: RdsON<20mOhm, Vds 20-40V, Id>10A, Thru-Hole, Sort by price. If driven from 5V, add RdsON<20mOhm for Vgs=4.5V, otherwise it will be at 10V Vgs.

Place them in the power supply air flow for cooling.

Now, the driver... your TLC5940 outputs are current sinks, meant to drive LEDs directly. It can't drive a FET without some help.

You could connect the outputs to the FET gates and add pullups, but signals will be inverted (LEDs will light fully when PWM is at 0%).

Or you could use an extra transistor as an inverter like this guy. Seems pretty easy.

In this case since the FET is driven from +12V you don't even need a logic level FET.