After being inspired from the Xmas tree blog post I started looking around at what other people were doing and I came across a simple single colour 8 x 8 x 8 LED Cube project on Instructables.
The post was great and looked simple enough so I thought I would have a go at it myself as well as making a Flowcode component to allow me to simulate and easily develop programs for any size of LED cube. I planned on a larger single colour version of the cube but then realised that to double the display meant potentially quadrupling the number of LEDs and connections required and so scaled down my thinking a bit and instead went for the RGB LED approach. This then went further and I thought up a way of making it a useful enough item that I could get away with installing into my living room. Being inspired from infinity mirrors made into tables on YouTube I thought what about we box up the LED cube with glass and mirrored car window tint and create an infinity cube. Installed onto the center of a nice largish second hand coffee table, I might just get away with that one
As I'm making a 8x8x8 LED cube we will need at least 512 LEDs to complete the project plus a few spares just in case we damage any of the LEDs or find some duds. I got the 5mm, common cathode, diffused RGB LEDs shown below for around £30 for 600 LEDs on eBay they say they are diffused but other reports lead me to believe that they are not as diffused as you might like. One method of add extra diffusion might be to sand the LEDs slightly using fine grade sand paper or roughly cut the top off the led using a saw. For 512 LEDs this might be a big task to get them all uniform so I will see what they look like when they arrive before deciding what to do with them.
To save on the number of signals we need to control the individual LEDs (512 x 3 = far too many to think about) we will use a multiplexing technique to only light a single row of 64 LEDs at any one time. If we can strobe each row fast enough then persistence of vision will allow the entire display to appear static to the eye. The instructables article linked above covers this technique very well so I recommend you look there if you want to know specifics.
Controlling 64 RGB LEDs is no easy task considering each LED requires 3 signals to drive each colour channel. This totals up to 192 control signals which is much higher then the I/O count on most microcontrollers. To allow us to do this I have created a custom PCB design using Proteus which can be used as a template for your own home made PCBs. Alternatively you could do the board using veroboard and roadrunner wire as shown in the Xmas tree post. The PCB design features 3 x 8-bit buffer ICs which can be used to store the state of 24 individual outputs or 8 complete RGB LED signals. The 8-bit data signals are passed from one buffer to the next by using a clock signal and the boards can be chained together using ribbon cable to create a display of any size. For my 8x8x8 display I need 8 boards connected together to drive the 8x8 lower row of the display. The modular driver board technique requires just 10 control signals from the microcontroller to function, 8 to form the data bus and an additional 2 signals for the Chip enable and clock signals. The remaining 6 wires on the ribbon cable are used to pass the 5V and Ground supply rails to the driver ICs. Details of the board can be found in the attachment at the end of the post. A further board could be used to drive the cathode FETs but for 8 rows we can probably get away with just using a spare microcontroller port.
I had my PCBs made professionally from Eurocircuits for about £120 for 20 of the boards. Its very nice to have professionally made PCBs as you know they will work correctly without a lot of effort but they could be made much cheaper by using home made PCB methods such as drawing with a permanent marker onto photo sensitive PCB boards before exposing in a UV box and then etching. CNC made PCBs are a good option too. It's been a while since I made my own PCBs but if you take your time they generally work a lot better then they look.
Here is a picture of my controller boards connected together using DIL headers, IDC connectors and ribbon cable. The top board has the 24-way IDC cable fitted but the other boards are currently missing this.
Hopefully the LEDs will arrive later on this week so I can get building over the holidays.
We are discussing this project as it goes along on the forums at the URL below so if you have any comments or questions on the project or simply want to find out more then we would greatly welcome you to visit, sign up and join the community.
Attached below is the current Flowcode RGB LED Cube component source in it's unfinished state along with the PCB design files and bill of materials for the project.