LED Cube: The heart and concept of the driver circuitry
It is pretty clear that it's very hard to control 512 LEDs without some tricks. Most already built LED Cubes rely on two realization concepts to bring the cube to life:
- some sort of integrated LED driver circuit (read: using chips)
- use multiplexing / POV to lower the number of LEDs to be controlled individually
Using an LED driver IC to controll the large number of LEDs is almost a no-brainer. Although there are solutions possible to control that many LEDs without resorting to integrated circuits (e.g. Charlieplexing logic) they all come with one or more drawbacks like complicated wiring schematics, lots of additional required components or being only able to light a single LED at any time. Using a LED driver IC avoids all those problems and makes it possible to control many LEDs even for non-professionals.
Multiplexing takes advantage of the human eyes incapability to detect light pulses or variations in brightness if they happen just fast enough. It's the same principle which is used in TV sets and in the cinema. In a LED cube this principle is realized by only lighting up one layer of LEDs at any time and switching between the layers fast enough so that the human eye gets the impression that the whole cube is active. For an 8x8x8 cube this means that at most 8x8=64 LEDs (within one layer) are active at any given moment and the currently active 64 LEDs are switched within the 8 layers several times per second. This reduces the required logic to drive 64 LEDs and a simple selection logic to choose one of eight layers resulting in 72 wires leading to the cube.
- serial input possible using 2 pins (+1 for latch)
- serial input accepts 3.3v, perfectly fitting for the Raspberry Pi GPIO
- high maximum frequency of 30MHz, great for fast multiplexing (and probably software-driven PWM)
- 16 output pins
- simple integration and control (just clock in active/open LEDs and signal latch)
- chainable (like done in HTNE's cube), but in my circuit this won't be required
One drawback of this IC is that it is not offered in a DIP-package which could be immediately used on a breadboard. Therefore I will have to solder the ICs onto adapters to use them on my breadboards and such adapters themselves are not that easy to come by.
Some friends suggested alternate ICs, eg. TLC5940, MM5450 or the MAX6962ATH but either are those much more difficult to interface with, have a smaller range of applicable voltages or I would have to use them in the same way as the STP16CPS05 without the ability to take advantage of their additional functionality. So I settled with the, in my opinion, simplest solution.
Update 2013-05-11 Found another possible alternative, the TI [TLC5925]. This looks like a possible replacement if I have problems with the STP15CPS05.
: http://www.ti.com/product/tlc5925 "TLC5925 16bit LED Sink Driver]