Driving a large array of LEDs (~600)

A colleague and I had the idea to build Conway's Game of Life in a large 8x8' form factor using a 50x50 grid of RGB LEDs (RGB so that the grid can be re-purposed in the future). The idea is to build this thing in 4x4' sub modules (25x25 LED arrays) that can be driven separately and then arranged in whatever orientation. We were trying to come up with some details as to what we'd need to drive this kind of rig, and was hoping someone could offer some suggestions or steer us away from bad ideas.

Some of the big questions that we have right now for building one of these sub modules are:

1. Will some standard 5mm, 20mA RGB LEDs be bright enough to light up a 2"x2" cell with a thin diffusion layer on it?
2. If we connect the LEDs in a grid and drive them one row at a time we would need 25x3 control lines for the RGB anode, and 25 lines for the GNDs. In this case, if an entire row was on the theoretical max current draw would be 20mA x 3 diodes x 25 LEDs = 1.5A. Is this a valid assumption? Would it make sense to use shift register such as the MC74HC595 to drive the individual LEDs and then use another shift register to drive FETs or similar to drive the high current common ground? Or vise versa for common anode LEDs?
3. What kind of micro would we need to drive this? The plan is to do the processing on an laptop and then just send each frame we want to display serially to an arduino or similar to then drive the shift registers.

The budget we have in mind is ~$400/ sub unit. Let me know what you guys think about feasibility. • Since I don't remember the link to a project a bit like what you propose with the shift registers I find I'm not in an answering position (and I'm too lazy to squeeze my brain for search terms), but in basics you could do it as you say, but since that plan uses 5V all-round, I'd go for P-FETs on the high-side shift reg too, just to be sure the full 20mA can be driven without issues. Other than that, I would also suggest you Google for WS2011 or WS2012 (WS2012 is an SMT RGB LED with a WS2011 driver inside). Lots of 'duino projects with WS2011. To "1.": Unless in (direct) sunlight: surely yes. – Asmyldof Jun 16 '15 at 15:16 • 2"x2" might be a stretch with a 5mm LED. It will certainly be visible, but it probably won't fill the square. – Ignacio Vazquez-Abrams Jun 16 '15 at 15:20 • It would be easier to buy a large monitor and run it on that, you could place a mask/bezel/diffuser over it to make it appear like some lower-res display technology. Just squirt VGA/DVI/HDMI straight out of the laptop. Or check out Hackaday.com for some big many-LED display builds. – John U Jun 16 '15 at 15:37 • I would start looking into some integrated LED/driver thingis like the WS2812S or WS2812B for something like this. – og1L Jun 16 '15 at 15:39 • To get a 96x48 RGB matrix to run at video speeds, this person needed a STM32 processor and DMA. – rdtsc Jun 16 '15 at 16:39 1 Answer I think this is a really great project, but I also think you need to check your arithmetic. A 50 x 50 grid is 2500 LEDs. You need very high brightness to do what you want. An example of what you might use is https://www.superbrightleds.com/moreinfo/through-hole/rl5-rgb-clear-tricolor-led/298/1225/. The problem is that these will run you (with quantity discounts) in the range of$1 apiece.

I think you'd be much better off using separate LEDs. In part this is because standard Life displays only use red and green (red for birth, green for survival), so the blue goes unused. It's perfectly possible (and pretty) to use blue to indicate a cell which has just died, but it's unusual.

Given your quantities, you should be able to get 2,000 - 10,000 mcd red and green 5 mm LEDs for around $.10 ea, although this will eat up$500. It's still better than $2500, and the LEDs will be brighter. If you mount the LEDs in a piece of 1/4" plywood, you can drill your mounting holes in pairs with a pair-spacing of about 1/4 inch, so I don't think a viewer will notice the offset with a cell spacing of 2". And two sheets of 1/4" plywood and 2 sheets of diffuser plexiglass is going to cost some, too. Plus, I hope you have access to a surplus source of cheap wire - you won't believe how much you'll need. Most of it will be small-gauge wire, so it won't be terribly expensive on a per-foot basis, but it adds up. Also, just as a construction tip, make sure you tie your wire harness to mounting plate with screws at regular intervals. If you don't, when you mount the display vertically, you risk the harness shifting and either shorting out exposed LED pins or even ripping wires loose. You'll want to pick your diffuser characteristics carefully, keeping the density as low as you can while getting an acceptable diffusion. Diffusers come in various degrees diffusivity, so check out the available choices. I'd recommend not trying to fill the cell spaces completely with LED illumination. For a 2 x 2 spacing, I'd go for a nominal 1" diameter spot. For a 30 degree LED, that would mean a 2" spacing between the mounting board and the diffuser. Smaller spacing will, of course, produce smaller, brighter spots. Multiplexing at this scale gets a bit iffy. On a 4' x 4' subpanel, if you multiplex between rows you will cut the brightness of each LED by a factor of 25. And, just as a practical matter, I'd recommend sizing your display to 48 x 48 cells. This will allow an even 1" spacing AND the efficient use of octal driver ICs like the 595. On this scale, anything which makes construction easier is a good idea. You have the right idea about doing the multiplexing, but be aware that 74HC595s are only rated for an output current of about 6 mA. The absolute max is 35 mA, and most Arduino projects routinely ignore the data sheet. You can probably get away with it, but if you want to be safe, buffer the column outputs with a transistor per channel. EDIT - Ignacio Vazquez-Abrams has kindly suggest the use of the TIP6C595 in place of the 74HC595, and I'd recommend it. However, it does have its own tradeoffs, particularly price. The TIP6C595 in DIP package is available from Digikey for about$1 ea. The 74HC595 in DIP from Jameco will run about $.40. If you go the risky route you can save about$35 for a complete display using 8x8 subregions. Whether or not this is worth it to you is a classic engineering tradeoff. Just thought I'd mention it. END EDIT

I'd recommend that you subdivide your 4' x 4' panels into (9) 8x8 regions. This will keep your multiplexing losses down to 1 in 8.

Your current calculation is correct, although with only 2 colors it drops to 1 amp. On the other hand, if you go to 8 x 8 subregions, each 4' x 4' panel will need a maximum of 3 amps for the LEDs. This reflects a basic, inescapable truth: if you want more light, you need more power.

Also note that you may need to worry about cooling. If you use a 5-volt supply and 8 x 8 subregions, each panel will dissipate about 15 watts, including the current-limiting resistors which have simply been assumed and not discussed. While this may not seem like much, if each panel is enclosed, and then stood on end, 15 watts worth of warm air will collect at the top, and it may get pretty toasty for the upper LEDs.

Overall, I think you can do what you want, and within budget. As long as your time is free, of course. Even assuming minimum wage for your time, this is going to go waaay over.

FURTHER EDIT - If you need even more brightness, there is no need to multiplex. Simply use an 8-bit shift register for each 8 LEDs, connect them in series, then use each output to drive one LED to 10 mA. With a 1 MHz clock, updating the entire 2500 cells will only take 2.5 msec. At 1 update every second, the apparent brightness of a dark cell will only be increased by about 1/400 of full scale. A 74HC164 only costs about $.25 in hundreds, and the system would need 625, so total cost would be about$175. This would compare very favorably with the cost of a multiplexed system due to the lack of row drivers. Of course, worst-case current draw is now 25 amps, but as I've commented before, if you want more light you need more power. One further complication of this scheme is the need to provide either repeaters at regular intervals to regenerate the clock, since it cannot propagate accurately over the long signal path which this would produce, or a central driver to send clocks out over a twisted pair to each shift register. But such a system should be fairly cheap. It would also require 8 to 25 more current limit resistors than a multiplexed system.

• Switching to a TPIC6C595 will boost the available current per LED. – Ignacio Vazquez-Abrams Jun 16 '15 at 17:28
• Wow, this is so much more than I expected! Thank you very much for the info. A big concern is the cost of the LEDs- the ones you linked seem comparable at least on paper to these ones goo.gl/kbbjHM. Any thoughts on this? I only saw the max 35mA spec on the 74HC595 and not the 6mA nominal value so that's useful info- I will definitely need to add some transistors. With regards to your suggestion for 8x8 subregions. Would you have 2x 8-bit shift registers for each subsection then? This would really drive up the number of SRs and the associated number of I/Os a micro would require. – spizzak Jun 16 '15 at 20:27
• @spizzak please see my last update. Also, for multiplexing, you have to constantly be uploading new data. For a 48 x 48 array, you have to shift out 48 x 6 (or 384) bits, drive one row in each 8 x 8, then load another 384 and drive the next row, etc. Assuming a flicker frequency of 50 Hz, you need to do one shift per 2.5 msec (400 Hz), since each row will only be on once per 20 msec. And yes, you'd need 36 IO lines for data. If you drive each panel in parallel you need 4 IO lines, with a shift time of 72 usec every 2.5 msec.You'd need blanking and effective brightness suffers a bit. – WhatRoughBeast Jun 16 '15 at 20:51
• @spizzak - The LEDs you link look OK. Be careful - they have very high brightness but a fairly narrow beam. But like I say, separate LEDs for each color are a lot cheaper, and your packing density is so loose I don't see any advantage to going to RGBs. Plus, of course, you don't need the blue. – WhatRoughBeast Jun 16 '15 at 20:56
• How about using something like this onsemi.com/pub_link/Collateral/ENA1943-D.PDF or onsemi.com/pub_link/Collateral/CAT4016-D.PDF – spizzak Jun 16 '15 at 21:50