The dark season is the time of light decoration. As in previous years, we come up with an original Christmas project.
An exclusive piece of electronic jewelry you won't find on any Christmas market!
This is a cone shaped Christmas Tree formed by stacked concentric circular PCB’s with decreasing diameter.
35 connections between layers are made by thin wires which also act as stand-offs.
36 white leds in a 6x6 matrix are randomly lit by an ATmega328P-AU controller. A trimmer sets timings.
PCB with 36 SMD LEDs and all other SMD components + programmed controller ATmega328P-AU mounted.
Distance holders need to be cut and soldered between the rings (wire included).
R1-R6 = 47 Ω, thick film, 5%, 0.1W, SMD 0805
R7 = 10 kΩ, 5%, 0.1W, SMD 0805
P1 = 5 kΩ, 20 %, trimmer, 4.5 mm, 250 mW, SMD
C1,C2 = 22 pF, 50 V, C0G/NP0, SMD 0805
C3,C4 = 100 nF, 50 V, X7R, SMD 0805
C5 = 10 µF, 6.3 V, X5R, SMD 0805
LED1-LED36 = White led, OVS-0801, SMD 0805
IC1 = ATmega328P-AU, SMD TQFP-32
K1 = Micro USB type B, receptacle, bottom, SMD
K2 = Pin header, 2 rows, 2x3, vertical, through hole, pitch 2.54 mm
X1 = Crystal 16 MHz, 18 pF, SMD 5x3.2 mm
1.5 m wire for 35 connections between levels, diam. 0.7 mm
PCB 150453-1 v1.1
The circuit diagram shows how the microcontroller controls 36 LEDs directly via its PB and PD ports set up in a matrix. Resistors limit the current through the LEDs. Although there is always only one LED lit in the matrix (about 20 mA), multiplexing ensures that it seems as if several LEDs light up at the same time. To achieve a nice, flicker-free display the refresh rate should be at least 100 Hz which when having 36 LEDs corresponds to 3600 Hz. We used 5 kHz, resulting in a refresh rate of almost 140 Hz. Timer 0 is used for this task, we called it the systick timer (system tick).
To learn more about brightness control, multitasking and animations in this brilliant project, please read the document included with the software.
The project is an Atmel Studio 6.2 GCC project without fancy ASF (Atmel Software Foundation) stuff. The functions are spread out over several files with meaningful names and commented where needed so that it should not be too difficult for the interested user to modify the animation.