When I saw the Aurora LED 9x18 Instructable, I was inspired.  However, it's built on the PIC microcontroller while I am most familiar with the AVR microcontrollers.  Plus, I already have the development and programming environments for AVRs, so I set about a redesign as a personal challenge.  I wanted to make something (almost) just as nice, that did not require as many components, was less expensive, and could be soldered by hand (albeit maybe taking a lot of time).  The result is this Instructable, the ChromoDisk.

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

  • Hand-solderable

  • Multiple power supply options

  • Easily programmable
The design you see here has been through 4 generations.  You can make a lot of mistakes in PCB design and layout, and I did.  Little things like forgetting to mirror components (battery pack) to the back of the board, not accounting for total current loads on chips (overheated micro), and switching transients (turning all the LEDs on at once) wreck a design.  I ran into all of these and more.  I think this final version gets it about right though.

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

There are five phases to the build:

- 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.
Holly cow!!! I can't&nbsp;believe&nbsp;you made a copy! (is it ok to say that?)<br> <br> Kudos for doing it your way and doing it with a 8 bit controller. I decided at the early stage of the development that 8 bit PIC wasn't going to cut it, and&nbsp;learned the 16 bit assembler.<br> <br> I'm very curious to see the schematics, though...<br> <br> Aki
Hi Aki, <br>To be honest, I had mixed feelings about posting this Instructable, since it is a rework of your great idea. In the end I thought it would be useful to give an alternate design approach to help people understand some of the issues involved, and it makes the design accessible to those who use AVR rather than PIC. I'm always up for a personal challenge, and surprised myself that I pulled it off ... and in only 4 design cycles, LOL! So I take your comment as a compliment and hope your other designs are going well! <br>Sorry for not posting the design docs (yet). I had intended to attach them and just plain forgot. I'm moving to a new laptop and need to re-install some apps (like Eagle), so look for the Eagle and Gerber files in a few days. <br>Best regards, <br>Roger
Looking forward to it. <br>
Done! I've added another step at the end with a high-res schematic and the Gerber files for the board. Not sure the Eagle files would be of much use to most people because they are larger than the free version can manipulate. If there's anything else you'd like to see, please let me know.
Another member sent me an email and noted that the schematic didn't really come out &quot;high-res&quot;. Sorry about that. I've posted the schematic in Eagle format if anyone is interested. I think it's too big to manipulate in the &quot;free&quot; version of Eagle, but let me know if you have trouble viewing it.
Cool. I see that the circuit is essentially the same except the lack of current limiting resistors for the LEDs. Bold move, that one... (be careful doing this though, there are more reasons to use resistors than just limiting the curent - balancing the current between the LEDs connected in pararel is an important one. There are other issues such as stressing the MOSFET/transistor. It's working and all is good with this one I guess.)<br><br>If this AVR has 3 PWM generators, you could omit 3 transistors connected to the MOSFET - like Aurora 9x18 mk2 and 18x18's circuit. This also saves an IO pin.<br><br>Thanks,<br>Aki
I wanted to see if using PWM and pulsing them to max brightness would balance the output enough. It seems to work with diffused LEDs, but I found that the water clear ones sometimes had hot spots, especially in the green pixel. Usually only happened with 3 -4 of them though. With the water clear LEDs, the lensing effect where you see a slightly different color cast across the board was more prevalent and interesting. <br>The ATTiny only has two timers, so I was not able to eliminate your FET drivers. I did change the resistors on the driver circuits though to reduce the current draw on the AVR outputs. It was funny on version one of the board where I didn't have the resistors on the bases of the bipolar drivers of the LED cathodes: the ATTiny heated up pretty well! The bases essentially act as short circuits.
You sirs - Both Awesome!
Thanks for this. No harm done (the original instructable is referenced) and as a fellow AVR user i can only say that this is a great help. Plus porting from one AVR to another (e.g. attiny to atmega8) is fairly easy. <br> <br>Any reason you chose assembly over C? The code outputted by GCC is usually just as good as asm (and can sometimes be more efficient than writing it yourself, because GCC can optimise register usage, etc.) and often it's not worth the hassle. Still, thanks for putting the source out there, all too often it's missing from the projects!
Hello. <br>Can You share the schematics and/or pcb files ? <br>( Ithink, You use altium/protel ? ) <br>Or a better schematic (pdf or so ). <br>THX <br>Frank-de <br>
ela aaaaaaaaaaaaaa aaaaaaaaaa
Any issues with power dissipation? My back-of-napkin calculation for all emitters on 100% (162 LED's * 3 emitters/LED * 3V * 0.02A) is about 30 watts. I imagine, then, that it's extremely bright.
Remember that they are PWMed so they're not all on all the time. Figure a duty cycle of 50% maximum, and if you do animations and colors other than white it will be much less. So maybe 10-25%? That wpuld easily give you about 4 hours run time with good AA rechargeables and a 1A 5vdc wall wart drives it with no problem. Interestingly, the reason for the 220uF cap is because of the current spikes. I was getting processor resets without it.
Can you give a price breakdown for the board and components so we can have an idea of what you paid? <br>Very nice.
There are too many variables to give you one cost number for this. They include quantity of boards you want to build, quality of LEDs you choose, where you want to source them from, the PCB house you use, etc. I can tell you that the LEDs are likely going to account for the bulk of the cost, regardless of where you get them. In huge quantities, you could likely get the total parts cost down under $30. In single quantities, you're looking at something over $100. Remember also that there are several hours of build time involved. Check out the kits available for the Aurora 18x9 offered by LEDArtist for one example. The parts for this version are slightly less, if only because it eliminates the resistor-per-LED for current limiting. <br> <br>If you want to price out the pieces, the board fits in a 100mm x 100mm board size. It's two-sided, with solder mask and silkscreen both sides, so your preferred PCB house should have standard pricing. <br> <br>Does that help?
Could you code the fully-populated board to display the star shape? <br> <br>That way you could use the ChromoDisk all year round...
Therein lies one od the compromises in tbis design. The LEDs are not individually addressable. All of the LEDs in each ring must be the same color and brightness.
Ah, I see.

About This Instructable




More by Surferdude:Hermes' Caduceus The ChromoDisk Trash Landing 
Add instructable to: