3D LED Cube

While many of my fellow students at Victoria University chose to do more meaningful Honours projects for their Engineering Bachelor like assisting stroke patients with an assistive device and demonstrating PLC capabilities by sorting M+M's. I chose something a little less serious. On blogs such as Hack A Day, I had seen many hobbyist implementations of the LED Cube, a small three-dimensional matrix of LEDs controlled by some digital controller (usually a microcontroller), and I decided to see how big I could scale such a project. The largest implementation I had seen at this point was an 8x8x8 cube, but most being 4x4x4 or smaller. I chose to implement a 16x16x16 cube with Tri-colour (Red-Orange-Green) LEDs. The result can be seen in the image on the left. During the time of my project, I came across a company that built and sold LED Cubes with RGB colour up to a size of 32x32x32 but being proprietary, no plans of the device were available.

16x16x16 may not seem large, but some quick math shows that equates to over 4000 LEDs, which is a lot. And on a undergraduate's project budget, not cheap either. Especially keeping in mind the other necessary expenses like other components, the digital controller and PCB manufacturing.

And before you say: "That doesn't look like a cube shape at all!", you'd be right. Although I designed a 16x16x16 cube and purchased enough components for a cube that size, assembly took a lot longer than planned and I only managed to succeed in finishing a 16x16x8 cuboid, with the other half easily attachable when completed.

How it works

Using the legs of the LEDs provided enough structure to the cube without needing any additional support materials which allowed for maximum transparency. I designed the layers to be completely separate so they could be slotted in and out with minimal hassle. Each layer was then constructed so the cathodes ran horizontally and the anodes vertically, allowing full control over multiple pixels. Then by multiplexing over the rows, I had full pixel control of each layer. See images below.

Unpowered LED arrayPowered LED array

As each layer still needed 48 logic inputs (32 columns, 16 rows), a 48-bit shift register was made by chaining 6 74HCT595 Shift register ICs. This then drove the FETs needed to provide the power for the LED's. As the LEDs were on for only 1/16 of a period, the power needed to be quite high, meaning the shift register alone would not be able to power the LEDs, requiring additional High Side FETs. The image below shows a simplified schematic.

Simplified Block Diagram

Breakdown of costs

The costs listed below are all in NZ$.

Component Supplier Qty Cost
Tri-colour LEDs Satistronics 4096 $260
8-bit Shift Register [74HC595] Farnell 96 $40
High Current Low Side MOSFET Farnell 256 $115
High Side MOSFET Farnell 512 $70
Resistors Farnell 512 $10
25-Way D Connector Female Sonar 48 $80
25-Way D Connector Male Sonar 48 $25
Laser Cutting Ponoko 2 $55
Total Cost $655

These costs don't include the PCB manufacturing, which was done in-house, or the cost of the logic controller, which was borrowed from the University for the length of the project.

Layer construction

Needing the LEDs to be evenly spaced in order to make any image generated even, I had a grid laser cut from Ply-wood with evenly spaced holes which would allow the LED's to be inserted and soldered. All the LEDs were soldered by hand, but if I were to do it again, I would try and think of another way to do this. Perhaps using solder paste and a reflow oven.

Laser Cut Grid SpacerLED Layer

PCB Design

Each layer of the cube was controlled by a single line digital input to the shift register, making each layer's circuit independent. This restricted each circuit to fit into a 20mm column (the distance between two layers). The components needed to fit into each column was: 6 8-bit shift registers, 48 transistors, 32 resistors, 3 25-pin D connectors and a scattering of decoupling caps. Considering most of the components I had were through-hole, this was not easy, but somehow I managed to fit everything in. The PCB Design and final assembled board is shown below.

PCB Design
PCB Top LayerPCB Bottom Layer

Logic Control

In order to control the LED board, I needed a controller with a minimum output pin count of 19 (16 lines + clk, latch, reset) and minimum speed of 40KHz (50Hz x 48 x 16). At the time, I had begun learning FPGA development in VHDL, so decided to implement the controller using a Xilinx Spartan-3 Starter Kit. This allowed precise control of all the internal digital logic, but was more limiting when it came to doing higher level applications like an complex animations. In future, I'd like to rethink this stage and probably connect the controller to a computer and have that control the animations while the controller just handles the image data, storing only the current frame.

Current Status

Although I designed a 16x16x16 cube, and purchased enough components for that size, only half the cube was assembled due to time constraints, resulting in a 16x16x8 cube. Having since graduated and moved cities, the cube hasn't survived well. The PCB has a few loose connections and damaged components, due to its fragile state. I am currently in the process of redesigning the PCB in order to make it more durable, which involves replacing all the through-hole components with surface mount, and perhaps switching to a 4-layer board to avoid track jumps. Once this is done, I will then work on assembling the other half as well as coming up with a better control setup, perhaps using the FPGA as an interface between the LED cube and a computer.

Finished CubeCube DemoCube DemoCube Demo

Brendan Vercoelen is an Electronic Engineer working in Auckland, New Zealand. He enjoys messing with hardware and software alike and is a big fan of open source projects such as Drupal.

Comments