8x8x8 LED Matrix
This project aimed to utilize Arduino Uno as a logic board to control 512 LEDs in a cube.
The first step in the creation of an LED matrix is to ensure that all of the LEDs are fully functional. All 600 of the LEDs were tested over the course of 48 minutes, as shown in the video.
Soldering begins by making rows of 8 LEDs with the cathodes soldered in series. Each horizontal layer of the final product includes 8 rows of 8 LEDs, each led being connected in series via soldering cathodes to wire as shown. The anodes remain individually disconnected for the time being.
It is important to check the LEDs after a large amount of soldering, both to check for dead LEDs and for bad soldering points. While the layer will still be functional with a dead LED, it will be much harder to troubleshoot the dead LEDs after this step.
64 wires are connected to the box vertically by hot glue underneath the top of the box. Each wire will be responsible for 8 anodes, connected in series for each vertical column of 8 LEDs.
Once the cathodes have been connected horizontally, the box that will house the electronics can be made. The rest of the soldering and construction will be done on this box. The box is 10" by 10" by 2.9" and is made from 1cm thick plywood. A 1/64" drill bit is used to drill the 64 holes to connect the anodes. Eventually, eight more holes will need to be drilled to connect the cathode layers to the circuit in the box. Wood glue is used to hold all of the plywood pieces together and it is then painted black.
Once the first vertical layer is in place and all of the anode wires are secure with hot glue, the process of building up the next seven layers begins. The hardest part of this process is keeping all of the wires straight enough that the next layer can be slid on top. One way to aid this is to make a set of cardboard pieces to hold the wires the right distance apart from one another, which is a technique that is used in this video. After the wires are moved around a bit in order to set the horizontal layer in correctly, two cardboard pieces hold the layer one inch above the lower layer until each of the anodes has been soldered to a vertical wire. After all soldering is complete, each connection is tested with a battery and power module.
Once all eight layers have been connected and tested, excess lengths of wires can be cut from the sides and the top. Then eight more holes should be drilled on the back side of the box. These holes will have wires to connect to the cathode layers. In the image on the left, the wires connecting cathode layers are listed as L1-L8 while the vertical anode rows are labeled R1-R8. Labeling these pieces now will make wiring easier in the future.
Depicted on the left is the first test circuit for the shift register setup that will be used to control the LED matrix.
Then, a piece of plywood was cut to fit inside the bottom of the box. This will hold the electronics. The power supply, arduino, and breadboard were hot glued onto the plywood first. Then the transistor layout was drawn out in pencil and the transistors were secured in place using hot glue. These will be used to turn the signal from the ninth transistor into a usable signal, as they will either allow for current to flow on a layer or cause the circuit to be open depending on whether or not the base pin is powered. An old extension cable is cut in order to take 120V AC power from the wall for the power supply.
With the test circuit almost complete, it is time to connect the ribbon cables to the bottom half of the electronics box. Each ribbon cable is twisted onto and then soldered for extra strength to a 430 ohm resistor. The cathode layers are connected to their respective emitter pins on the transistors. With all connections made and secured, they are tested using a simple LED testing circuit and the continuity function on a multimeter.
Two LEDs and a button are added onto the breadboard in temporary locations in order for testing. These are used to change light mode in the code.
The above design, after brief testing, was not functioning as expected. Certain problems with the libraries provided to run this specific array of shift registers made it not possible to power the matrix correctly. At this point I decided to redraft and redesign in a way that would allow me to write my own code and put my observations of the circuit above into a redesign.
Above on the left is the new schematic drawn out in EasyEDA, above on the right is that same circuit redrawn in Altium Designer Schematics. The main difference with this design compared to the previous design is the implementation of a ninth shift register to control the cathode layers.
Directly below is the first draft PCB design in Altium. This is an implementation of the schematic shown above.
First draft PCB in Altium Designer
Current draft in Altium as of
This draft includes the proper version of the SN74HC595 shift register used in this project
Above: The front of the PCB with all components soldered.
Below: The PCB once all wires have been connected.
Above: The back of the PCB with all soldering complete.
Below: The PCB and other internal components - including power supply - fully hooked up and connected inside the housing box.
This is an example of one of the three test programs I have written so far to test the LEDs. As you can see from this example, some of the connections are interfering with one another and my main goal at this point in time is to identify where those small issues are coming from.
(Progress as of 12/19/20)
Below are two iterations of the "Walls" program, one showing the holes that were drilled to accommodate the wall plug and the arduino USB connection.
(Progress as of 12/27/20)
This is another iteration of the walls program. This program will be expanded so that all walls can connect to one another, however for now I just wrote the code for two transitions to make the pattern that can be seen in the video on the left.