LED Cube 8x8x8

Design overview

Because it is infeasible to control each one of 8x8x8=512 LEDs independently, we need to use some sort of multiplexing. Therefore, each layer will have common anode and each colum will have common cathode. That way, we will connect each layer to power supply positive rail using PNP transistor or P-MOSFET. Each column will be connected to ground using NPN transistor or N-MOSFET.

Unfortunately, even 64+8=72 outputs is too much for common hardware. Fortunately we need to toggle layers sequentialy. So I've decided to use a decadic counter to drive each layer switch. That leaves us with 1 input for layer selection "layer clock". Howewer, as I needed to invert output from decadic counter (for PNP/P-FET, 1 means off), but after some consideration I've added instead of NOT gates NAND gates, with second input common to be used as "enable". For columns I've decided to use a shift register. That means another two inputs for column selection: "data" - column on or off and "column clock".

Errata (read before proceeding)

Parts selection

I've chosen ULN2803 (8x NPN) because I couldn't find any 8-in-one-package N-FETs and using single or dual transistors (64 or 32 parts) would be a real PITA.

Circuit diagram + board layout

Latest revision is r2

 

Software

Software will be released under opensource license of course ;-) as soon as I'll consider it ready (in a week or so).

Progress

2012-07-01Demo video recorded

2012-06-22: Cables attached

2012-06-22: Cube soldered together

2012-06-21: First two layers soldered together

Using two blocks of LEGO as a spacers

2012-06-21: All 8 layers ready

2012-06-18: LEDs arrived

2012-06-16: Control board done, waiting for LEDs

Template, printed with laser printer on transparent foil

Developed board (using positive photoresistive resin)

Etched board

Finished board (those wires were not supposed to be there, quick and dirty fix bugs from r1)