Electronic – Powering large LED array

digital-logicledpowerpower supplyresistors

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

Best Answer

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.