Electronic – Driving a large array of LEDs (~600)

led

A colleague and I had the idea to build Conway's Game of Life in a large 8×8' form factor using a 50×50 grid of RGB LEDs (RGB so that the grid can be re-purposed in the future). The idea is to build this thing in 4×4' sub modules (25×25 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 25×3 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.

Best 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.