My obsession of LEDs has led me to this. Aurora 9x18 is a thing of beauty (if I can say so myself) - has 162 RGB-LEDs in a circular configuration. The color of each circle is controlled by a microcontroller using a twisted form of PWM.
The microcontroller (PIC24F08KA101) only has one PWM module, yet Aurora is capable of 27 (9xR,G,B) independent brightness control. This Instructable reveals the inner-working of Aurora 9x18 through the building process.
Remove these ads by
Signing UpStep 1: Concept
A RGB LED is nothing more than a LED that actually encases 3 small LEDs of primary colors inside. RGB LEDs can create wide range of colors by combining 3 primary colors - Red, Green, and Blue. By changing the ratio between the 3 colors, you get many in-between colors. RGB LEDs are often called full-color LEDs.
Most of brightness controlling circuit utilizes the method called PWM. Many of microcontrollers today have a PWM controller or more built in, however there are usually less than 4 or 5 of them in a controller. So if I were to control 9 LEDs, I needed to use multiple controllers or external circuits. If those 9 LEDs were RGB LEDs, then there would be 27 PWM controllers needed.
I've gone through a few approaches - multiple microcontrollers working together in various configurations - some are complex and exotic. I was trying to solve more than just the number of LEDs that I can control - I wanted to make the fades in/out of brightness as smooth as possible. Turned out, 8 to 10 bit PWM resolution that most PIC microcontrollers provide was not good enough to create smooth transition in the darker/dimmer part of the brightness change. When the brightness is low, the transitions look more like steps than fading. Due to human eye's non-linear or exponential response to light intensity necessitates gamma correction of the brightness change curve, which requires at least 12 bits of PWM resolution to give smooth fades (in my conclusion).
If I simply design a circuit where each LED is controlled by it's own PWM controller having 12 bit or more resolution, I'd have to use a speciality LED controller IC. While this solves the problem, the added cost and size to the final product did not appeal to me. (Those LED controller IC are not very small or cheap.)
So I came up with an idea of combining PWM with multiplex drive. I further broke up each PWM cycle into multiple pulses, so that multiple LEDs were lit multiple times within one PWM cycle. (Kind of hybrid between PWM and PDM, I guess.) This way, the average output of LEDs are the sum of the many pulses within the short period. By combining more than one PWM pulses increases effective PWM resolution.
This technique also helpes reduce the perceived flicker of the light out of LEDs. Aurora 9x18's LED refresh rate is about 246 Hz, but LEDs blink a lot more often. This creates the illusion of much higher refresh rate.
Take a look at the timing chart. I picked 7 LEDs and R/G/B bus signals to present the concept.
As you can see, R/G/B buses go up momentarily, taking turns. These pulses control the actual duration that LEDs light up. Each common lead of the LEDs controls whether that LED will light during the period that R/G/B buses go high. The actual timing that LEDs light up are marked with the color on the chart.
The condition here is:
LED 1 is on level 1 red (the lowest brightness).
LED 2 is on level 2 green.
LED 3 is on level 3 blue.
LED 4 is on level 3 yellow (red + green).
LED 5 is on level 3 purple (red + blue).
LED 6 is on level 3 turquoise (green + blue).
LED 7 is on level 255 (maximum brightness) white.
* time scale is about 8.1 ms for the entire width of the chart.
Hope this explains the way Aurora controls the brightness/colors of LEDs.
References
- PWM on wiki
- PDM on wiki
Correction
LED refresh rate originally stated was wrong - it's 246 Hz not 123 Hz.




















































Visit Our Store »
Go Pro Today »




what's the camera with you to get to beautiful Pictures and videos of "aurora"? not only the art itself ,but also the pictures and videos are art!
according to the Current limits of DMP3098,3A. a RBG bus line can hold 600LED? because one LED current= 5V/(1k+150ohm)=5mA. 3A/5mA=600.
so if the PCB is larger, it will be even much beautiful.
So you can only connect about 166 LEDs. In practice you can push more - in fact I doubled that with no problems. So about 350 might be the limit.
i was quite empressed by the beauty of your LED art. and made a 18mini (easiest one). thanks for your study and share on the net!
when i passed by supermarket , a question rised. can a full color screen do the same? what's the cost of a full color screen the same area of an 9*18 art?
as long as you limit your work in toy, that's ok ,but when i was used in industry, there should be an answer.
My question is that why in the aurora conceptial timing diagram the PWM patterns are not in sync ??
So R-BUS only gets high when PWM = high and R-DRV = low, G-BUS gets high when PWM = high and G-DRV = low, and so on.
The microcontroller uses R/G/B-DRV pins to select which R/G/B channel PWM pulse goes to.
However I can't find any information on programming 16 bit PICs.
Aki
Could you show the *.c program? If not, could you elaborate about how do you do to keep the colors going through the lines?
On the chart it seems like the LED 7 turns white in the end, and all the others fade out.
LED 1 is on level 1 red (the lowest brightness).
LED 2 is on level 2 green.
LED 3 is on level 3 blue.
LED 4 is on level 3 yellow (red + green).
LED 5 is on level 3 purple (red + blue).
LED 6 is on level 3 turquoise (green + blue).
LED 7 is on level 255 (maximum brightness) white.
I wrote the program in assembler, so there's no .c file...
http://youtu.be/-Ibc8sD5sgw
3 x VP3203N3-G
12 x PN2222ATA
1 x MCP1702-3302E
162 x rgb leds common cathode
13 x 1000 ohm
162 x 150 ohm (1/8 watt)
9 x 220 ohm
1 x 10k ohm
1 x 7805
2 x 100 nf
2 x 10 uf
Thank you for sharing! I ordered the components for this awesome project. Hope it will arive soon.
Thanks!!
Congrats!!!
The picture looks as though the green LEDs are not lighting... or it's just that picture?
Looking at the parts, VP3203N3 seems a bit weak for the job - 0.6 ohm RDS seems high. How does it perform?
I'd love to hear more about it.
Aki
Thanks for your comments but it was you who really did the hard work, I can't even write programs for micro-controllers, so I didn't modify your firmware at all. I have uploaded a hand drawn circuit diagram of my modification at:
http://www.mediafire.com/?juaveff334ntzo3
Basically, to add remote control (as well as keeping the original manual pushbutton switches) I added a pic16f628 together with tsop2236 receiver and slightly altered an RC5 example program for the Proton Basic Compiler to toggle outputs on the PIC in response to button presses of the remote. The outputs of the PIC feed an 'or gate' so that a logic high is produced when either a button on the remote is pressed or a manual push-button switch is pressed for each of the 'up', 'down', 'left', 'right', 'centre' cases. This logic high then feeds a cd4066 switch chip which then feeds the PIC24F08ka101.
To add auto-dimming I simply fed the DMP3098L mosfets with a varying voltage of about 2.9V in dark conditions to about 5V in bright conditions (as opposed to a fixed 5V). As you can see in the circuit this is simply achieved using an mic2941 regulator and an LDR together with appropriate resistors. Oh, and to make sure the colour balance remains relatively unaffected at lower mosfet supply voltages I added a 1N4001 diode at the output of the R-bus to lower the red LED current (due to the lower voltage drop of the red LED).
I'll have a look at your analogue input mode next.....hope it's as good as the rest. Amazing work (subarashi dekibae de odoroki mashita) Aki.
Hibs
This gives me an idea for the next round of enhancements. Great work. Yoku dekimashita.
Aki
I've finally finished making your Aurora 9x18 display, and have added a temperature/clock display in the centre of it. I also added a remote control and auto-dimming functionality to it. Feel free to ask any questions.
Again, many thanks for developing Aurora 9x18 - it really is hypnotic to look at. You'll find a couple of videos at:
http://www.youtube.com/watch?v=7ArCmOtHIsc
http://www.youtube.com/watch?v=ZQ9bqS7RbhA
Hibs
I'd love to see the controller part of Aurora as well.
How did you add the auto-dimming and remote control? Did you add code to the Aurora chip?
I have IR remote receive firmware written for PIC16F, but haven't ported to PIC24F yet...
Thanks for shearing.
Aki
My name is Ika and i want to share a non smd components pcb with you. I have many reasons for it. I have spend more than a million of dollars trying to solder smd components without success. Also a project on instructables must be reachable for everybody so all people can learn from it. The pcb contains the leds and resistors only. The rest can easily be added by yourself (you have to find the non smd equivalent for the components). Attached the source files which can be imported in eagle. Also a self made library is attached which can also be imported in eagle.
Greetings from Tokio,
Ika
I'm not familiar with the Eagle PCB design software but if you succeeded to not use SMD components for this awesome project it is worth trying.
Can you also make a PCB with all components included? You are only a few components away from having it fully available. I don't mind having a second board which can be put below the LED board like it is done in the LED Cube 8x8x8 project which is also an instructable winner on this website.
If someone decides to make a through-hole only version of Aurora 9x18, I will help with the circuit design, etc.
I just don't have the desire to design the through-hole version of PCB...
Aki