0
\$\begingroup\$

This is my first Arduino/electronics project and I am a little bit confused about the components I need to handle huge amount of currents and the circuit.

I want to have full control of 32 (maybe 40) 6-pin 3W RGB LEDs from an Arduino Uno. By saying full control I mean to be able to adjust the brightness of each led independently.

LED specs:
DC Forward Voltage (VF) : RED:2.3-2.6V,GREEN:3.4-3.8V,BLUE:3.4-3.8V
DC Forward Currect (IF) : 350mA per channel, ~1050mA total

If all LEDs are on we need 32 amps at least. Of course I'll need an external power supply. I was thinking of a common computer PSU but I'm not sure if that's enough. Any other suggestions?

Other power issues that I have to solve:

  • How can I provide the appropriate voltage to each LED color from a PSU? Is there any better way instead of buying a DC to DC converter for each LED x3 channels?

  • I'll use shift registers to control all led channels. How should I connect them and with what type of transistors and be sure that I won't burn anything?

I've searched around the internet about similar stuff but I got confused since there lots of electronic components around the circuit and so many ways to connect them.

Any schematic and details about the components I'll need will be appreciated.

\$\endgroup\$
  • 2
    \$\begingroup\$ Why not use dedicated LED driver chips? \$\endgroup\$ – Ignacio Vazquez-Abrams Jun 24 '14 at 0:11
  • \$\begingroup\$ 40 LEDs and 32 amps, what? If you have a power supply that can pass sufficient current without dropping voltage you won't need but maybe 1 amp (20mA*40 + margin) unless these are really current-hungry LEDs. Also, most projects I've seen like this multiplex the LEDs so no more than a single LED is on at any given time. If you want to also control the brightness of each LED you are going to have to use PWM, which is another added complexity. I would go with a dedicated driver as stated above. \$\endgroup\$ – sherrellbc Jun 24 '14 at 17:52
  • \$\begingroup\$ @ApollonDigital: Do you have a link to the LED data sheet? \$\endgroup\$ – EM Fields Jun 24 '14 at 18:24
  • \$\begingroup\$ @sherrellbc 3 Watt LEDs have actually become quite common-place especially with the LED house lighting market taking off. superbrightleds.com/moreinfo/component-leds/… \$\endgroup\$ – horta Jun 24 '14 at 20:53
  • \$\begingroup\$ Quick tip: (old) ATX power supplies (the ones used in computers) make for great, low cost, worry-free high current power supplies. \$\endgroup\$ – Tom Jun 25 '14 at 9:20
2
\$\begingroup\$

LED specs: DC Forward Voltage (VF) : RED:2.3-2.6V,GREEN:3.4-3.8V,BLUE:3.4-3.8V DC Forward Current (IF) : 350mA per channel, ~1050mA total

If all LEDs are on we need 32 amps at least.

.

.

.

How can I provide the appropriate voltage to each led color from a PSU?

You don't do it that way; you apply the current needed to supply the brightness you want, or you apply the maximum current and PWM - Pulse Width Modulate - each LED to get the apparent brightness you want.

I'll use shift registers to control all led channels. How should I connect them and with what type of transistors and be sure that I won't burn anything?

Like this:

enter image description here

The transistors are logic-level N channel MOSFETs and they should have a drain-to-source voltage rating > 5V. 12V would be nice.

The plan is for them to pass at least the LED If when they're on, and to keep the LEDS nice and bright I'd go for something with an Rds(on) of 100 milliohms or less. That way, the transistors will only be stealing about 12 milliwatts or less from the LEDs and they'll (the transistors) stay nice and cool.

You can use Digi-Key's filters to zero in on what you need and, if you actually want to build the thing, they've got the HC595s as well.

Here's how it works:

First, you send 96 bits of serial data into the shift register and then, after the 96th serial data clock, you assert the latch (frame) clock.

That'll broadside load all 96 of the data bits into their respective output latches, which will output the signals to the MOSFET gates, turning each of the 96 individual LEDs either on or off until the next frame clock comes along and updates the 96 LED array.

That way, as long as the frame rate is high enough there should be no perceptible flicker from the array.

So how to change colors?

By changing the relative brightness of the three colors in an LED RGB triad/pixel.

To do that, assume first a frame rate of 100 Hz to - for sure - get rid of any flicker.

100 Hz means that frame clocks occur every 10 milliseconds and then, since 96 bits have to be pushed into the shift register in 10 milliseconds, that means that the bit clock has to be going 96 times faster than 10 milliseconds, or 9600 Hz/bps.

Since there are 100 frames per second, and 96 bits per frame, that means that any bit in the array can be turned on or off 100 times per second, and that means that the longer it's ON, the brighter it'll be.

So, if all 3 LEDs in a pixel are OFF for, say, one frame, that pixel will be black but if they're all ON the pixel will be white. Over a period of several frames, however, the 3 LEDs can be turned on for some of the time and off for some of the time, changing their apparent relative brightness, and that way change the perceived color from that pixel.

POWER SUPPLY CONSIDERATIONS

PSU1 and PSU2 are the high-current supplies for the LEDs, and should be connected to the two columns separately, and then their grounds should be connected together.

Likewise, the arduino should be connected to its own supply and then the pair's grounds connected to the common ground.

In order to keep the noise on the high current supplies from getting into the HC595s in the columns, a separate 5 volt supply should be used for that logic, and if it's available from the arduino, that can be used.

enter image description here

\$\endgroup\$
  • \$\begingroup\$ The leds OP is using are 3W RGBs, so 1W individual diodes. 350mA is the upper constant current limit of each diode in the RGB package. OP has updated their question to reflect that. \$\endgroup\$ – Passerby Jun 24 '14 at 23:21
  • \$\begingroup\$ I saw that, and it's reflected in the updated LED current-limiting resistors on my edited schematic. \$\endgroup\$ – EM Fields Jun 25 '14 at 0:01
  • \$\begingroup\$ Your answer still shows 96 amps as full power draw tho \$\endgroup\$ – Passerby Jun 25 '14 at 1:03
  • \$\begingroup\$ @EMFields many thanks for the circuit. I'm not sure if I understand the whole idea. I have some questions: - In some other similar circuits I've seen there is a resistor from Qx output to transistor's gate but you haven't draw any. Is that ok? - I've searched ebay for DMN2112SN-7 transistors. I didn't found many results. Can I replace it with something cheeper and more common? Any suggestions? \$\endgroup\$ – ApollonDigital Jun 25 '14 at 16:28
  • \$\begingroup\$ Also: - If I replace the 7.5 Ohm 2W resistor with 2x 15 Ohm 1W resistors in parallel or 4x 30 Ohm 1/2W resistors etc. This is to reduce the resistors cost. Is that ok? - Finally, if my calculations are correct the total power consuption will full brighness would be at least 168 watts with 33.6 Amps of currents. What should I use as a power supply for the lights and the arduino? Thanks \$\endgroup\$ – ApollonDigital Jun 25 '14 at 16:38
2
\$\begingroup\$

I want to have full control of 32 (maybe 40) 6-pin 3W RGB LEDs from an Arduino Uno. By saying full control I mean to be able to adjust the brightness of each led independently.

You can use the PCA9685 IC, it is a 16 channels (LED) controller that is controlled via a i2c bus. The http://www.adafruit.com/datasheets/PCA9685.pdf

A circuit description is:

From Arduino you have a i2c bus = 2 pins (sda, scl), thats sda = data and scl = clock signal.

On the i2c bus you can connect several PCA9685 IC's. To drive the LED's you need a MOSFET as LED driver.

A product that fit your need is maybee: http://ledsee.com/index.php/new-products/16-channel-i2c-fet-arduino-schield-pca9685-detail

\$\endgroup\$
  • \$\begingroup\$ Ohhh by the way there is arduino libraries availabe for PCA9685 \$\endgroup\$ – MatsK Jun 25 '14 at 11:09
  • \$\begingroup\$ Hi, thanks for the answer. For my 32 leds I'll have 96 channel inputs (32 x3 for RGB). If the board has 16 I'll need 6 boards. I don't think it worth. Nice solution through ;) \$\endgroup\$ – ApollonDigital Jun 25 '14 at 22:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.