Skip to the content
PCBKitNew board
2 layers104.1 × 76.2 mmController, the printed circuit board in 3D

Controller

ntnunk/led_cube

8x8x8 LED Cube

Size
104.1 × 76.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
54
Nets
73
Pads
197
Tracks, vias
523, 37
Pours
1
Routed
Yes
KiCad
KiCad 4
Created
4 Sep 2017
Updated
14 Nov 2017

Overview

Controller is an open-source printed circuit board by ntnunk, from the ntnunk/led_cube repository on GitHub. It is a 2-layer board of 104.1 × 76.2 mm with 54 parts on 73 nets, routed with 523 tracks and 37 vias.

It is built around the ATMEGA328-PU, 74HC238D and LM317T. Its parts include 13 resistors, 11 capacitors, 8 transistors, 8 connectors and 4 ICs. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

3

README

README.md

8x8x8 LED Cube

My 8x8x8 LED Cube project. This repository will eventually contain both code and circuit schematics. Schematics and printed circuit boards designed in Kicad.

Concept

The cube is composed of eight layers of eight LEDs per side, or sixty-four LEDs per layer. The cube relies upon persistance of vision, much like a flourescent light, which means there is never actually more than one LED layer active at a time. Because the controller cycles through the layers so quickly it fools the human eye and appears as though the cube is lit continuously.

The LED cube itself is constructed of layers and columns of LEDs. The anodes every LED in a given column are connected together while the cathodes of every LED in a given layer are connected together. Individual LEDs can be turned on by having power applied to the vertical column the LED is part of and then having the layer it's part of switched to ground.

Functionality

Controller and Decoder

The controller for this project is essentially a simplified Arduino Duemilanove with an ATMEL ATMEGA328P processor. A 74HC238 3-to-8 decoder is used to select one of eight general purpose NPN transistors. The eight transistors have the base connected to an output pin of the decoder, the emitter to ground, and the collector to the cathodes of the LEDs in the transistor's associated layer. Since the cathodes of all LEDs on a given layer are connected together, turning on one of the layer enable transistors connects the cathodes of that layer's LEDs to ground, causing any LEDs in the layer with power applied to their anodes to turn on.

LED Driver

The second major section is the LED driver. Since the controller doesn't have enough GPIO pins to control the number of LEDs required, another 74HC238 3-to-8 decoder is used in conjunction with eight 74HC595N serial-in, parallel-out 8-bit shift registers to control the 64 LEDs on a layer. The shift registers could be connected in serial, removing the need for the extra decoder, but that would require 64 clock cycles per layer change to push all the LED enable bits into the 8 daisy-chained shift registers. Instead, the shift registers are connected in parallel with each shift register IC (integrated circuit) controlling an individual LED on each row of the layer. So, for example, the first 8-bit shift register controls the first LED in all eight of the rows on a layer.

Operation

The processor enables the three input lines on the decoder chip based on which LEDs on the first row are indicated by the control program. The decoder sets the 8 output lines based on the 3 input lines. The 8 output lines are sent to the serial in of each shift register, the processor toggles the serial clock to move the shift registers one position, then the process repeats until all 8 output lines of all 8 shift registers are set as desired for the layer.

The shift register output lines drive the anodes of all the LEDs on the layer. Once the processor switches the cathodes of the layer to ground via the layer enable transistors as described above, the enabled LEDs in the layer will light up and stay lit until the processor sets up and enables the next layer in the sequence.

Parts

54
QtyValueFootprintReferences
9330Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR5, R6, R7, R8, R9, R10, R11, R12, R13
82N3700TO_SOT_Packages_THT:TO-92_Molded_NarrowQ1, Q2, Q3, Q4, Q5, Q6, Q7, Q8
30.1uFCapacitors_THT:CP_Radial_Tantal_D5.0mm_P2.50mmC1, C9, C10
310uFCapacitors_THT:CP_Radial_D5.0mm_P2.00mmC3, C7, C11
210kResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR2, R3
21KResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R4
21N4001Diodes_THT:D_T-1_P5.08mm_HorizontalD2, D3
222pFCapacitors_THT:C_Disc_D4.7mm_W2.5mm_P5.00mmC5, C6
274HC238Housings_DIP:DIP-16_W7.62mm_SocketU3, U4
1+12V_INConnectors:PINHEAD1-2J1
1+5V_OUTConnectors:PINHEAD1-2J5
10.1uFCapacitors_THT:CP_Radial_D5.0mm_P2.00mmC8
10.1uFCapacitors_THT:C_Disc_D8.0mm_W2.5mm_P5.00mmC4
11000uFCapacitors_THT:CP_Radial_D8.0mm_P3.50mmC2
116MHzCrystals:Crystal_HC49-U_VerticalY1
1ATMEGA328-PUHousings_DIP:DIP-28_W7.62mm_SocketU1
1DBG_SWButtons_Switches_THT:SW_PUSH_6mmSW1
1DRV_SIG1Connectors:IDC_Header_Straight_8pinsJ6
1DRV_SIG2Connectors:IDC_Header_Straight_8pinsJ7
1LAYER_ENConnectors:IDC_Header_Straight_8pinsJ8
1LEDLEDs:LED_D5.0mmD1
1LM317TPower_Integrations:TO-220U2
1PROGConnectors:IDC_Header_Straight_6pinsJ4
1PWR_SWConnectors:PINHEAD1-2J2
1RESET_SWButtons_Switches_THT:SW_PUSH_6mmSW2
1SERIALConnectors:PINHEAD1-6J3

The 50 most common of 54 parts.

Questions

How big is the Controller PCB?

It measures 104.1 × 76.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Controller use?

54 parts, built around the ATMEGA328-PU, 74HC238D and LM317T. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Controller KiCad files?

From the ntnunk/led_cube repository on GitHub, at the commit this page was made from: the board is PCBs/controller/controller.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Controller design in my own project?

Its repository states no licence, so its author keeps all rights: ask ntnunk before reusing the design.

More from ntnunk/led_cube

1

Similar boards

  • 2 layers109.2 × 63.5 mmOfen, the printed circuit board in 3D

    Ofen

    Ulf-vom-Mond/ofen_v2

    I am building a high temperature oven which I want to go up to 1300 °C. It will be used for melting glass and metals and doing pottery.

    59 parts1
  • 2 layers100 × 80 mmRti, the printed circuit board in 3D

    Rti

    cceh/rti

    Reflectance Transformation Imaging

    58 parts15
  • 2 layers82 × 134 mmPcb badge, the printed circuit board in 3D

    Pcb badge

    john0312/hitcon-pcb-badge

    execute fw/merge.py to merge STM32CubeIDE generated main.c with user code in main.cc into main.cc.

    258 parts47BSD-3-Clause
  • 2 layers182.6 × 130.9 mmBlackmacro base, the printed circuit board in 3D

    Blackmacro base

    KipJM/blackmacro-hardware

    An open source, smaller, more configurable, and more capabable video editing keyboard based on the raspberry Pi Pico 2W.

    189 parts29CERN-OHL-W-2.0
  • 4 layers102 × 102 mm6502v2, the printed circuit board in 3D

    6502v2

    stuenkels/6502Rev2

    PCB for a 6502 Based Computer

    62 parts11
  • 4 layers189.4 × 59.1 mmFlippyDriver, the printed circuit board in 3D

    FlippyDriver

    NietoSkunk/FlippyDriver

    Driver board for Luminator MAX3000 Flip Dot Panels

    344 parts10MIT
  • 2 layers235 × 176.5 mmCpu, the printed circuit board in 3D

    Cpu

    Edgeworth/memepu

    cmake -DUSEAFL=yes -DCMAKEBUILDTYPE=Release $PFX/verymeme AFLSKIPCPUFREQ=yes AFLPRELOAD=/usr/local/lib/afl/libdislocator.so \ afl-fuzz -m 1024M -i $PFX/verymeme/testdata/memelang/parsing -o memelangfuzz \ -x…

    286 parts9GPL-3.0