Electronic – Multiplexing large LED matrix

digital-logicledmultiplexerpower supplyraspberry pi

I have a project which involves building a 64 x 48 (3072) LED matrix driven by a Raspberry PI computer. I am a first-year computer engineering student so I am still inexperienced with shift registers and multiplexers. I'm wondering what would be the most efficient way to go about multiplexing these LEDs. Some of my options include the MAX7219 multiplexers, or 74HC595 shift registers. In particular, I'm interested in knowing how much of each chip would be required to multiplex this matrix, and which would be the better way to go?

Also, in terms of power, I was thinking of using a power supply like this one to power all of these LEDs. Would that work or would I be faced with brightness issues and power draining driving all of these LEDs at once?

I'm also interested in hearing any tips or thoughts from someone with experience in a similar project in terms of things that could go wrong in a project this big with so many LEDs, and how I can prevent them.

The LEDs are 3mm super-bright red (5 Candela) rated at 1.9-2.1 DC Voltage and 20mA forward current.

Best Answer

Hmm, let's start w/ power first: 3072 * 20mA * 2.1 = 130 W!

Your power supply can only give you about 5W. You're very much short there.

If you can, greatly reduce the size of your matrix.

One solution would be to use a desktop ATX power supply. Those have 5V lines through their hard drive connector and can give you lots of power. If you take the 5V you'll either need to design an LED drivers or you'll be burning (5V - 2.1V) * 20mA * 3072 = 180W. That's 180 watts of heat son! That's not gonna be good, or comfortable or usable. So you really need to design an efficient LED driver.

The main issue with driving LEDs is that their voltage drop is not consistent for the same current between different batches, meaning one LED will drop 2.0 and another 2.1. If you just line them up an give them 5V you'll get noticeable variations.

You can buy efficient LED drivers and google is your friend but not your best friend. Because it will find you drivers to drive a string of LEDs, not a single one. You want the LEDs to be individually controllable so you'll need to put a regulator on every single one of these -- that's 3072 individual copies of the same circuit -- and then enable/disable those. That is a lot of work.

Yes you can use shift registers to control each regulator. How you wire up the shift registers very much depends on the 'frame rate' that you want to get out of controlling these LEDs. I'm not gonna go there right now because as you can see the power/design to drive each individual LED is quite high and complex.