LED Cube 8x8x8
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)
- There is UDN2983 instead of ULN2803 in circuit diagram. If you want to use ULN2803, swap pins 9 and 10 (COM and GND).
- Do not leave ANY inputs floating. Connect MR input of 74164s to VCC, and MR and CP1 input of 4017 to GND with few kiloohms resistors
- Power on RESET circuitry for layer clock should be installed
- Add some capacitors near the shift registers.
- Do *NOT* use waterclear LEDs. I've used 120° (wide angle) ones and it just sucks. Howewer, they tend to be significantly cheaper, so buying waterclear LEDs and fixing them with "window frost in spray" works just fine ;-)
- Decadic counter: 4017, 1x
- NAND gates: 7400, 2x
- Layer switches: IRF7306 dual P-FETs, 4x
- Shift register: 74164, 8x
- Column switch: ULN2803, 8x
- 33R0 resistors, 0805 size, 64x
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 will be released under opensource license of course ;-) as soon as I'll consider it ready (in a week or so).
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)
Finished board (those wires were not supposed to be there, quick and dirty fix bugs from r1)