Aurora 9x18 RGB LED art by ledartist
Contest WinnerFeatured
opening.jpg
*** Check out my blog for updated version of this project and more! ***

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 adsRemove these ads by Signing Up

Step 1: Concept

Aurora_PWM-timing.gif

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.

1-40 of 180Next »
smileyam says: Mar 17, 2013. 10:34 PM
hi, LED artist,

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!
ledartist (author) says: Mar 18, 2013. 7:59 AM
I shot the video with Canon HF S200 camcorder. Stills are shot with Nikon D700, but many of the stills are from the video.
smileyam says: Mar 14, 2013. 11:40 PM
hi, led artist,

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.
ledartist (author) says: Mar 18, 2013. 7:56 AM
LEDs get about 11 to 18 mA each. The formula is: (supply voltage - LED forward voltage - transistor C-E saturation voltage) / 150 ohm
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.
smileyam says: Mar 14, 2013. 10:42 PM
Hi,Ledartist,

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.

kbeharee says: Mar 3, 2013. 12:21 AM
Fantastic work! In your schematic for aurora R-DRV G-DRV B_DRV are all in parallel on the same PWM output so this means RGB lines receive same PWM pattern ..

My question is that why in the aurora conceptial timing diagram the PWM patterns are not in sync ??
ledartist (author) says: Mar 5, 2013. 8:05 AM
The 3 transistors Q2R/G/B effectively work like an AND gate.
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.
danm_daniel says: Feb 19, 2013. 2:31 PM
legit, awesome work. could be cool to see LEDs move in circular pattern too
ledartist (author) says: Feb 19, 2013. 8:07 PM
Thanks! I know it would be cool if the colors moved in other directions too...
theargha says: Feb 12, 2013. 4:47 AM
Can I program it using an Arduino ?
ledartist (author) says: Feb 12, 2013. 12:41 PM
Not sure... Some people are programming 8 bit PICs using Arduino:(http://arduino.cc/forum/index.php/topic,92929.0.html)

However I can't find any information on programming 16 bit PICs.

Aki
happyfrank says: Jan 11, 2012. 8:50 AM
I mean the PCB design that your showed in this page. Could you please share me that, because i am not professional.
ledartist (author) says: Jan 12, 2012. 9:24 AM
Sorry, but I'm not sharing the PCB files. However, you can create the PCB with the information published here.
mortso says: Sep 30, 2012. 12:55 PM
I think you should sell the PCB as many of us cannot create PCB's in our kitchen... the MixMaster just ruins them. ;)
ledartist (author) says: Sep 30, 2012. 7:53 PM
You can buy PCBs at my website - http://www.theledart.com/ .

mortso says: Sep 30, 2012. 8:19 PM
Cool! Thanks! BTW the PCB is a pretty cool work of art itself! ... Looks decidedly Mayan in concept. Thanks!
happyfrank says: Jan 12, 2012. 6:08 PM
......Thanks.
#iluvleds says: May 11, 2012. 4:15 AM
Hi. This project is sick as. I am working on my own version using an AVR uC. I was just wondering what the diameter of the PCB is. Also, how do you line the LEDs up on a circle? Thanks in advance
ledartist (author) says: May 11, 2012. 10:03 AM
PCB diameter is 4.3 inches. Not sure that you mean by "how do you line the LEDs up on a circle"...
jackalinson says: Mar 7, 2012. 7:06 PM
I'm really impressed by the project, but I must admit I didn't quite understand the part about the colors shifting.

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.
ledartist (author) says: Mar 29, 2012. 2:57 PM
You can read the text in the instructable, but the LEDs will light:

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...

jmcculley says: Jan 22, 2012. 7:45 AM
I love this innovative art did you intentionally use a Fibocci Sequence ? in the pattern?

http://youtu.be/-Ibc8sD5sgw
ledartist (author) says: Jan 22, 2012. 8:13 AM
Yes, Fibonacci number was one of the influences in the design. I looked into the nature for timeless beauty.

happyfrank says: Jan 12, 2012. 8:19 AM
ANY BODY....
happyfrank says: Jan 10, 2012. 7:29 PM
COuld you please share me your PCB.
alan5252 says: Nov 24, 2011. 12:24 PM
Absolute Genius!!!!! Thanks for everything.
artisticled says: Oct 15, 2011. 12:37 PM
1 x PIC24F08KA101
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
2.jpg1.jpg3.jpg
PCB.zip325 KB
version6 says: Oct 22, 2011. 5:59 AM
Excellent excellent

Thank you for sharing!  I ordered the components for this awesome project. Hope it will arive soon.

Thanks!!
ledartist (author) says: Oct 15, 2011. 12:57 PM
Wow!!! A successful replica of Aurora 9x18 with TH parts!
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
rhaber says: Oct 17, 2011. 11:57 AM
Hi 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
aurora-mod.JPG
ledartist (author) says: Oct 17, 2011. 7:16 PM
Thanks for uploading the schematics. I see you added a voltage based brightness control... IR remote is something that can be added to Aurora via a simple firmware upgrade - so long as you can let go of one of the switches to open an I/O pin. (I have working IR remote receiver code for 16Fxxx. My earlier work almost always had the IR receiver, but I started preferring mechanical switches somehow.)
This gives me an idea for the next round of enhancements. Great work. Yoku dekimashita.

Aki
rhaber says: Oct 16, 2011. 11:08 AM
Hi 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
ledartist (author) says: Oct 16, 2011. 11:36 AM
Just realized that there is a shot of the controller in the video...
ledartist (author) says: Oct 16, 2011. 11:31 AM
Wow! Congrats! Great looking finish. I wish I was that handy...

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
rmashmoul says: Oct 10, 2011. 11:25 PM
Can you send me a better picture of the PCB or maybe a CAD (if you have it) please? Thanks! --- rmashmoul@yahoo.com
asimo says: Oct 3, 2011. 7:53 AM
I bought the kit and put it together without any problems. This project and instructable are very well done. I high recommend this project to anyone considering purchasing the kit (if there are any left).
chetan dobariya says: Aug 20, 2011. 12:34 AM
Thank you for sharing a PCB. I think a lot of people have mixed results with soldering SMD components like me. When the size of the print exceeds the 5x5 cm I already know it will fail because of temperature differences between inner and outer regions of the board. If it succeeds the components are not positioned straight.
artisticled says: Aug 3, 2011. 4:04 PM
Hi,

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
version6 says: Aug 4, 2011. 9:36 PM
Thank you for sharing a PCB. I think a lot of people have mixed results with soldering SMD components like me. When the size of the print exceeds the 5x5 cm I already know it will fail because of temperature differences between inner and outer regions of the board. If it succeeds the components are not positioned straight.

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.
ledartist (author) says: Aug 4, 2011. 11:26 PM

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
1-40 of 180Next »
Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!