The ChromoDisk is very similar to the Aurora LED. It has the same 9 rings of 18 LEDs and every ring has to be the same color and brightness due to the multiplexing approach. This device uses pulse-width modulation (PWM) instead of resistors to limit the power fed to the LEDs, so while it takes less assembly time and components, you need to be a little careful about how you write the software. This is a good illustration of the tradeoff you need to make when you design with microcontrollers. You need to strike a balance between what you do in hardware and what you do in software. I am NOT saying that LED Artist's approach with all the resistors is bad, it's just a design choice and this is one alternative. More about this later.
Let's start with the design parameters:
- Easily available, low cost components
- Low component count
- Fits within a low-cost tier for PCB manufacture
- Multiple power supply options
- Easily programmable
The components I've chosen barely fit into the tight space. I picked the largest SMT components that I could to facilitate manual handling and ease of soldering. In the end, because of the limited real estate, I was not able to allow both battery pack and DC power jack, so you need to choose which one you'll use. Also, everything fits within a 100 mm square, a 4 inch disk, which is one of the pricing tiers typical of most PCB manufacturers. Anything bigger bumps you to the next pricing tier. Since area and cost goes up as the square of the radius, it's a good idea to limit the size. Routing out the circular shape is normally included in the board price.
The AVR micros are fairly easy to program. The code I've provided is entirely interrupt-driven and written in assembly language. It might be a bit less readable than C or some other language, but it's about as efficient as you can get. I don't claim to be the best programmer, but it seems to work pretty well and I was able to derive some new modes using code from other modes. It's designed to be hacked!
Here is the list of parts for the ChromoDisk, with Mouser P/N, description, and quantity:
|667-ERJ-3EKF1201V||Thick Film Resistors-0603 1.2K ohms 1%||13|
|667-ERJ-3EKF6800V||Thick Film Resistor-0603 680 ohms 1%||3|
|667-ERJ-3EKF1002V||Thick Film Resistor-0603 10K ohms 1% Tol||1|
|81-GRM188R71H104KA93||Capacitor (MLCC)-0603 0.1uF 50volts X7R 10%||1|
|512-FDN338P||MOSFET Small Signal SSOT-3 P-CH -20V||3|
|771-PMST2369115||Bipolar Small Signal NPN 15v 200mA 500MHz||12|
|556-ATTINY4313-SU||Microcontroller AVR 4KB FL 256B SRAM 1.8-5.5V||1|
|612-TL3315NF250Q||Tactile Switch LOPRO 250GF SMD||1|
|611-KSC741GLFS||Tactile Switch 4.3mm IP67 3N Soft Actuator||1|
|798-DF1BZ-6DP-2.5DSA||2.5MM V DBL ROW HDR||1|
|Common cathode RGB LEDS||162|
|Custom PC Board||1|
|598-AVE227M16X16T-F||Al Electrolytic Cap - 220uF 16V 85C Case 6.3 x 7.7||1|
|163-5030-E||DC PWR JACK 2.0MM X 5.5MM SMT||0/1|
|12BH331P-GR||Battery Holder 3 AA PC LEADS||1/0|
|In-System Programmer for AVR microcontrollers||1|
A couple of comments here. First, you'll notice that you have to choose either the DC power jack or the solder-on battery pack (you can use one with wire leads if you like, but I designed it to use the version with pins). There's a mounting hole in the center for whatever you want, but the battery pack will obscure it. I used it to secure battery packs before I added the PC mount pack. Second, I don't have a spec for the RGB LEDs. It's entirely up to you which ones you choose. Since I eliminated the current-limiting resistors on the LEDs by using PWM in software, you can adjust the brightness of the LEDs over a wide range by adjusting a couple of simple parameters at the top of the code. This allows you to accommodate LEDs with various current specs as long as they can take the surge current of the PWM approach.
The pinout for the LEDs is red / cathode / green / blue. I have tried assembling boards with diffused and water-clear LEDs. Diffused give more uniform color and brightness; clear give brighter light that floods farther and they have interesting effects with angle of view, but non-uniformity in LEDs can result in color hot-spots. The PWM approach has some limitations there.
I've ordered the parts in large enough quantities that I can provide the kit of parts and the custom board (but not the ISP programmer). Let me know if you're interested. Given the time involved, I'm not going to make any money on it. That wasn't really the point. It was intended to be a challenge and something fun for people to experiment with.
Step 1: The Build - Layer 1
- Solder on the small passive SMT components and transistors
- Solder on the larger SMT components
- Program the microcontroller
- Solder on the LEDs
- Solder on the power source
The idea here is to put on components that don't interfere with each other in layers. The board is very crowded, so it's essential to do this to make the build as easy as possible. Here's a picture of the board you're starting with. Let's go!
Layer 1 - SMD Components ... Most of them
The passive components go on first because they are the smallest and easiest to lose if you tilt the board. You need as much clear area as possible when you're soldering these. You can use the “skillet” / oven method, or hand solder them. I did it all by hand. SparkFun has a good tutorial on hand-soldering SMT components, so I won't try to duplicate that here. Solder on all of the resistors and the bipolar transistors first. The MOSFETs are static-sensitive, so adding in the other components first will help protect them. Don't put on the microcontroller, the large electrolytic cap, the 6-pin connector, the LEDs, the power connector / battery pack, or the capacitor on the back yet. Solder on the MOSFETs last in this layer.