7
\$\begingroup\$

I have a large LED array (huge, actually). It's 38 rows x 76 columns (2888) LEDs in total. The LEDs are 3mm, rated at 2.0 forward voltage and 20mA. The 38 rows (positive) are multiplexed using TPIC6B595N shift registers. However, the rows are divided into sections of 8 for a total of 5 sections with the last section containing only 6 rows. Each section has its own ground lines. Then, these sections are multiplexed in parallel - this is done so that the LEDs have a reasonable duty cycle of 1/8 instead of 1/38 to avoid losing too much brightness.

Since the TPIC6B595N registers can only sink current, they are connected to PNP transistors on the positive side to source the current. My problem is I'm not sure how to distribute the power properly. By my calculations, 7.6A (76*5*0.02) are needed to power the LEDs since a maximum of 76*5 LEDs could be on at any given time. Furthermore, a total of 55 (ceil(76/8)*5) shift registers need to be powered, and I think the datasheet suggests 150 uA for each register so the current needed for the ICs may be insignificant. Each sink needs to have a resistor (that's 5 * 76 = 380 resistors), and I need some guidance in selecting an appropriate resistance based on the power conditions. Last but not least, the array is driven by a Raspberry Pi which will need 800mA itself.

I am thinking of using a standard supply like 5V 10A to power the LED array, but I don't know how to go about distributing it appropriately - I don't want the LEDs to burn if only a few of them are on so how do I prevent them from drawing more than 20mA of current? How would I go about distributing the power over various components if they have different voltage and current ratings?

Note: My background is first-year computer engineering, so please bear with me and guide me if you think there is a flaw in my design.

Here is my best attempt at a diagram: enter image description here

\$\endgroup\$
  • \$\begingroup\$ @JYelton my apologies, I just split it up into paragraphs for easier reading. \$\endgroup\$ – hesson Jul 31 '13 at 2:13
  • \$\begingroup\$ Thanks. Do you have a block diagram or something to make it easier to assimilate quickly? \$\endgroup\$ – JYelton Jul 31 '13 at 2:13
  • \$\begingroup\$ I'll try to draw one and attach it. \$\endgroup\$ – hesson Jul 31 '13 at 2:18
  • \$\begingroup\$ ATX power supplies (e.g. the one in your typical desktop PC) can source like 30A at 5V I believe. \$\endgroup\$ – vicatcu Jul 31 '13 at 2:23
  • \$\begingroup\$ @vicatu finding a power supply is not the issue, it's the distribution of power that I'm having trouble with. \$\endgroup\$ – hesson Jul 31 '13 at 2:37
8
\$\begingroup\$

Since the TPIC6B595N registers can only sink current, they are connected to PNP transistors on the positive side to source the current.

That's fine, but it's a bit of a waste. TPIC6B595N is notable in that it's a power shift register. A quick read of the datasheet suggests that each output can sink 150mA continuously. This is way more than the ubiquitous 74HC595, which is way cheaper. I'd go ahead and use TPIC6B595N on the bottom, and use the much cheaper 74HC595 driving some power MOSFETs on the top.

This setup is explained in more detail: Explain the use of NPN and pMOSFET in this 8x8x8 LED cube. You will need to select a P-channel MOSFET that can handle at least all the current required when all the LEDs in that section are on. Your conclusion of this being \$7.6A\$ appears sound.

the datasheet suggests 150 uA for each register so the current needed for the ICs may be insignificant.

That's correct.

I don't want the LEDs to burn if only a few of them are on so how do I prevent them from drawing more than 20mA of current?

You need a current-limiting resistor in series with each LED, or some other current-limiting component. Keep in mind you can't share resistors between parallel LEDs.

How would I go about distributing the power over various components if they have different voltage and current ratings?

Your power supply will pump whatever current is required to maintain 5V, so your life is simplest if everything can operate with 5V. Shift registers for 5V operation are probably the most common kind. Select your LED resistors for a 5V supply and you are all set. I don't think you have any other devices which do not operate from 5V.

One final consideration: parts of this circuit will be carrying some significant currents. Be sure to check out a trace width of wire gauge calculator (Google has hundreds) against the high-current traces. If your traces or wire aren't fat enough for the high-current paths, you will lose a significant fraction of the supply voltage and energy in the wire, and in the worst case, start a fire.

\$\endgroup\$
  • \$\begingroup\$ Thank you for your suggestions. I believe I can get away with using less than 2888 resistors though since I am multiplexing. Only one LED in my ground columns of 8 will ever be turned on at any given time so I can put a resistor to ground on each column to limit the voltage of the LED that is turned on - would that work? Then if I am using a 5V 10A supply and I am limiting the voltage to 2.0V for each LED, can I assume it will not draw more than 20mA? \$\endgroup\$ – hesson Jul 31 '13 at 3:21
  • \$\begingroup\$ @hesson yes, you are right about the resistors. I'll edit. You just can't share a resistor between parallel LEDs. The current through the LED will be determined almost entirely by the resistor you put in series with it. You aren't really limiting the LED voltage; the LED will drop an approximately fixed voltage, the rest of the supply voltage will be dropped by the resistor, and the resistance of that resistor will determine the current. \$\endgroup\$ – Phil Frost Jul 31 '13 at 3:25
  • \$\begingroup\$ Ah that makes sense, I suppose the ICs will not draw more current than what they need at 5V as well. I hadn't considered the wire traces - thanks again for the suggestions. \$\endgroup\$ – hesson Jul 31 '13 at 3:37

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.