Ambitious project for a novice

Hi All

I was fooling around on you-tube when I came across LED cubes (most of which were powered by Arduino). I thought, I have got to make one of these! The problem, I tend to bite off more than I can chew and I know very little about electronics, programming or pcb design. I have built (really assembled :)) a Megasquirt II ECU for my car.

I have looked around at the overpriced kits available and thought, I can make one of these. I would like to build, from scratch, a 153 LED Cube, and at this stage using LEDs found here:

http://www.futurlec.com.au/LED/LED5PU.jsp

I will need 3,375 of the above LED's to make my 153 cube. I have commenced research on multiplexing and the concepts behind it and how it works and why it is used. The largest cube (with explanation) has been a 43 cube. Given my lack of knowledge and experience I need help and a lot of it just to get this thing built, let alone programmed.

So to begin with, I think the questions I need to resolve are:

  • How does one go about controlling 153 LEDs?

• individually is certainly not a option!
• is multiplexing the way to go?
• are there other options available?
• Is it possible to light all 153 at once?

  • What components are required to make that happen?
  • What are the power requirements of such a cube and how would I meet them?

Does the ability to light up all LEDs simultaneously require multiple multiplexes (such as 7 x 83), which would physically operate separately, but visually as one?

I am really going to need help/advice to realise this project. I hope a few of you take pity on this fool and help him on his way.

Cheers

Shaun

The problem, I tend to bite off more than I can chew and I know very little about electronics, programming or pcb design

Then I would really suggest you build something else first. How about a 3x3x3 cube, that way you will get a little acquainted with LED's, soldering/building, IC's that might be handy for multiplexing and programming the thing (even if a 15^3 is another beast than a 3^3).

Also, you would only need 27 LED's (or 30, a couple of extras is nice to have), and don't have to buy 3500-ish as the first thing you do. A mere 1% of cost and work for a test run. Even if including an Arduino, I think - 3500 LEDs isn't cheap?

One important thing, if you really go through with this I would suggest choosing diffused LEDs, not LEDs with clear lenses. Reason being the diffused ones are more visible from a broader viewing angle. I couldn't find any reference to whether or not the ones you found are diffuse or not. Would be a bummer buying all those LEDs and having to sandpaper 3375 LEDs by hand....

Btw, have you seen this 16^3 cube? Really awesome! But I don't know whats powering it (page wouldn't load atm):

Also I don't know how feasible a 15^3 cube is with an arduino.. maybe one of the bigger ones, like the Mega, or a Sanguino. Or use two or more arduinos maybe. Just some loose suggestions.

Also you'd need to decide if you want PWM ("grayscales") and/or RGB :stuck_out_tongue: But given the size I think not!

As for your questions:

• individually is certainly not a option!
• is multiplexing the way to go?

If not the one then the other, yes. And I'd agree that individually (as in all of them simultaneously) is not an option. Then you have to decide upon some multiplexing scheme.

• are there other options available?

Nothing that comes to mind now.

• Is it possible to light all 15^3 at once?

If you use some kind of multiplexing, then not really. But:

I have commenced research on multiplexing and the concepts behind it and how it works and why it is used

You should know about the effect of POV then? POV - persistence of vision. IE provided the framerate is high enough, you could make it seem like they are all on at once.

  • What components are required to make that happen?

Not really easy to answer..sorry. There are quite a lot of options. I'm sure you have seen lots of threads mentioning things like shiftregisters, to TLC5940s, ULN2803 etc... I don't really dare give advice on your mega cube! But at the very least some transistor arrays (like ULN2803 or similar) and / or transistors to drive the cube.

  • What are the power requirements of such a cube and how would I meet them?

...and a hefty power supply!

Power requirements for just the cube will depend on what multiplexing scheme you choose.
Lets say you manage to lit an entire layer (15x15) at once, then this is the power requirement (+ logic circuitry and the microcontroller etc). This multiplexing would then light each layer in the cube for 1/15th of a frame time. Since each LED is also lit like that, you could overdrive them somewhat to get it brighter.

Lets say one LED use 20 mA as standard, but you drive them with 50mA (this is for 1/15th of a time - btw I choose this as an arbitrary example). Then one layer (and also the hole cube sans logic circuitry) would require 225LEDs * 50mA = 11.25 Amperes, at whatever voltage you use for the LEDs.

Does the ability to light up all LEDs simultaneously require multiple multiplexes (such as 7 x 83), which would physically operate separately, but visually as one?

Not necessarily, but maybe in your case because of the size. If you do, take care that they are syncronized and have the same frequency, or else you might see flicker. Shouldn't be a problem if you control it all from the same microcontroller.

Btw with multiplexing not all of the LEDs light up simultaneously, but if done fast enought, the eyes wont notice (POV again).

I am really going to need help/advice to realise this project. I hope a few of you take pity on this fool and help him on his way.

There are some really nice and talented people here, which usually answer specific questions, but nobody will write the program for you (for free, anyway. Unless you are really lucky :stuck_out_tongue: But whats the fun in that?)

Hi raron

Then I would really suggest you build something else first. How about a 3 x 3 x 3 cube, that way you will get a little acquainted with LED's, soldering/building, IC's that might be handy for multiplexing and programming the thing (even if a 15^3 is another beast than a 3^3).

You are probably right! I will listen to your advice and make a 3**3** cube as a warm up.

Also, you would only need 27 LED's (or 30, a couple of extras is nice to have), and don't have to buy 3500-ish as the first thing you do. A mere 1% of cost and work for a test run. Even if including an Arduino, I think - 3500 LEDs isn't cheap?

You are right, it is not cheap, ~AU$595 for 3,500.

One important thing, if you really go through with this I would suggest choosing diffused LEDs, not LEDs with clear lenses. Reason being the diffused ones are more visible from a broader viewing angle. I couldn't find any reference to whether or not the ones you found are diffuse or not. Would be a bummer buying all those LEDs and having to sandpaper 3375 LEDs by hand....

You are absolutely right. I have since read somewhere the reasoning behind the use of diffused LEDs.

Btw, have you seen this 16^3 cube? Really awesome! But I don't know whats powering it (page wouldn't load atm):
3D LED Cube (三维显示器) - YouTube

This is indeed the very cube that tickled my fancy. This is my end game, so in fact the 15**3** cube was going to be the first step. I had figured that this was 1/3 of the work required to get up an running!!!

Also I don't know how feasible a 15^3 cube is with an arduino.. maybe one of the bigger ones, like the Mega, or a Sanguino. Or use two or more arduinos maybe. Just some loose suggestions.

I will check these out. I have been pursuing the Arduino avenue as I had seen other projects using it, but I unsure of the capabilities.

Also you'd need to decide if you want PWM ("grayscales") and/or RGB :stuck_out_tongue: But given the size I think not!

As RGB is final step I would like to achieve perhaps PWM is something I would like to pursue.

Power requirements for just the cube will depend on what multiplexing scheme you choose.
Lets say you manage to lit an entire layer (15x15) at once, then this is the power requirement (+ logic circuitry and the microcontroller etc). This multiplexing would then light each layer in the cube for 1/15th of a frame time. Since each LED is also lit like that, you could overdrive them somewhat to get it brighter.

Lets say one LED use 20 mA as standard, but you drive them with 50mA (this is for 1/15th of a time - btw I choose this as an arbitrary example). Then one layer (and also the hole cube sans logic circuitry) would require 225LEDs * 50mA = 11.25 Amperes, at whatever voltage you use for the LEDs.

Not necessarily, but maybe in your case because of the size. If you do, take care that they are syncronized and have the same frequency, or else you might see flicker. Shouldn't be a problem if you control it all from the same microcontroller.

Btw with multiplexing not all of the LEDs light up simultaneously, but if done fast enought, the eyes wont notice (POV again).

I do understand the concept of POV and its interaction with multiplexing. So what you are saying is that as only some of the LEDs will be lit only some of the time, the power supply does not necessarily need to possess the ability to power all LEDs. If I were to build a 15**3** cube I would really only require enough power to light the LEDs used in one cycle.

There are some really nice and talented people here, which usually answer specific questions, but nobody will write the program for you (for free, anyway. Unless you are really lucky :stuck_out_tongue: But whats the fun in that?)

Please do not misunderstand me. I do not want other people to do it for me at all! Simply a few nudges in the right direction and advice, as you rightly point out, where's the fun in that!!! This is an opportunity for me to learn about something I have never really understood.

Thank you for your reply.

Cheers

Shaun

Hi there!

o what you are saying is that as only some of the LEDs will be lit only some of the time, the power supply does not necessarily need to possess the ability to power all LEDs.

Exactly!

I will listen to your advice and make a 3^3 cube as a warm up.

I think maybe the size of the original project will be more clear then. Not to put you off or anything. I really wish you luck (or skills :P) with it!

Those gigantic rgb led cube is supposedly driven by an Intel Atom core..

Look this 8x8x8 RGB led cube:

Lots of info there, started to use an atmega but he them moved to PIC32..
An Arduino is underpowered to drive an 15x15x15 led cube.

Hi raron

If I was to continue down the path of a 153 cube and 1 cycle consisted of 1000 milli seconds, the number of LEDs to be lit in one second would be 1000 (i.e. one LED for each milli second in a cycle), is that correct? If that is true, is it possible to manipulate the timing in a cycle, for example 2000 milli seconds?

There is a nice little project here which I will have a go at. At will at least give me a good understanding at a basic level.

Thank you for your input, it is greatly appreciated.

Hi Senso

Really, an Intel Atom, then at this stage I really am a fish out of water. But how cool would it be to make one.

That 83 cube is pretty cool, thanks for the link.

Cheers

Shaun

If I was to continue down the path of a 15^3 cube and 1 cycle consisted of 1000 milli seconds, the number of LEDs to be lit in one second would be 1000 (i.e. one LED for each milli second in a cycle), is that correct? If that is true, is it possible to manipulate the timing in a cycle, for example 2000 milli seconds?

Hm, I'm not sure I follow what you mean. 1 cycle = 1 frame? One LED pr millisecond? If you mean to light up 1 LED at a time, it would be a very, very dim LED at 1/1000 duty cycle (or 1/3375).

You can manipulate anything in principle, but there's always a tradeoff between something. Somewhere between one LED at a time and horrible framerate (or, if you somehow manage a decent framerate, at least a very dim cube), and all LED's simultaneously but very bright and with a LOT of wiring, components and the current/power requirements with that (except all that wiring would likely obstruct the view to the middle LEDs...) :stuck_out_tongue:

Sorry if this sounded silly or something.. just about to go to sleep now.

(Btw, better not adress it to just me, I'm sure other can answer much better than I can, though I hope I have given some insight into the thing.. + I'm a pretty periodic/un-steady poster :P)

Also as Senso mentions, maybe you must consider a more powerful microcontroller than an Arduino for a 15³ cube. Me, I don't know, I haven't calculated anything regarding that, I have a feeling it might be feasible for a non-PWM one-colored 15ish³ cube, but not more.

To try and put some numbers down: Let say you aim for 50 Hz framerate (as a ballpark). To continue my former example of lighting up an entire layer at once (pretty demanding that also, with regards to current, nr of external driving circuits and transistor arrays etc):

1/50th second * 1/15 layer time = 1/750 s, or 1.33 milliseconds pr layer.

In that time 225 LEDs should be lit somehow...

There is not enough pins on any Arduino's, so some sort of trick has to be used. The Mega does have 54 pins though, + 16 analog pins, I assume these can also be used as digital outputs just like the regular Arduino, which I'm used to. So 70 pins total(?).

If you further multiplex those 225 LEDs 1/4, (56+56+56+57 LEDs) + some control outputs for this multiplexing, maybe serial I/O for debugging, and some buttons, then 70 digital I/O's should be about just enough. I assume here that each (multiplexed) LED is controlled directly by the Arduino Mega. The issue/questoin is speed. Pretty sure you would have to use direct port manipulation for speed.

So, 1.3333 ms / 4 = 333 us (microseconds) pr. multiplexed LED "block" (of 56 or 57 LEDs). Also note with this scheme any LED is on for 1/(15*4) seconds = 1/60. IE not too bright...

One Arduino instruction takes 62.5 ns (except jumps that takes 2, probably some other exceptions also I'm not a expert on that), or simply 16 instructions pr. us. 16*333us = 5328 instructions within one multiplexed set of LEDs. In that time you must find and prepare data for the next set of LEDs, process any button clicks etc.. (and allow for other interrupts that might be going on - in fact you should put the display/multiplexing routine as an interrupt). Unless I overlooked something, I think this looks promising.

With the possible exception of rather / very dim LEDs that is. So maybe not quite like this. Or maybe only visible indoor and in the dark. Of course this is not the only scheme possible, and dont take my word for it... I haven't actually built one of these myself yet (well at least not this type of cube, and not this size!). I do have a few dual color RG LEDS I was am planning to make a 5³ cube out of some time though :slight_smile:

Speaking of cubes, here is a couple of others (you might have seen them though but I post them anyway, they are just too cool!)
An 8^3 with drawing software on the computer:

And an unbelievable 664824. Now that's not cheap...

Come to think about it, they ought to make stackable 3D LED blocks in one piece :slight_smile: That way they could design the light to fill out one pixel better (I would think, or maybe that would be obstructing the mid-LEDs?), or make them with higher resolution. Would probably be pricey though.

This was a lot more than I originally thought writing. Hope some of it made sense.
Going to sleep now :slight_smile:

Hi All

Despite the advice (that I really should have listened to :blush:) I have proceeded with some research in to building an 8³ (it is smaller ;)) RGB Cube.

I have since acquired an Arduino Mega 2560, some TLC5947's and a copy of Eagle. 1,000 lots of 5mm RGB LEDs are fairly cheap and readily available on Ebay.

I have given some thought to the physical layout of the LEDs. The TLC5947 has 24 channels, i.e. R0 to R7, B0 to B7 and G0 to G7. I am considering constructing in columns and rows rather than in layers, i.e. R0, B0 and G0 will control a column of 8 LEDs and so on. Each layer will share a common cathode/anode connecting directly the Arduino. I will only need to use 16 outputs on the Arduino, none of which (I think) require PWM as the the TLC5947 has that feature built in.

So, at this stage I am trying to work out:

  • whether I need common cathode or common anode LEDs, or if in fact it matters at all
  • What Constant Current Sink Output actually means
  • whether I need something (not sure what) between the Arduino and the TLC5947's to supply power to the LEDs
  • whether I need something (not sure what) between the TLC5947's and the LEDs to power the LEDs

Progress is slow and will be even slower shortly as my first child :grin: is due to arrive in 12 days. If all the horror stories I have been told about lack of sleep are true, perhaps the project may progress more quickly.

Cheers

Shaun

This may be a little off topic, but I wonder if submerging the LEDs in oil would cut down on the refractive index and so make the off LEDs refract less of the light of the on leds... maybe one of you guys who has built a cube could try it! :slight_smile:

Andrew
www.toastedcircuits.com: Lightuino 5 LED driver

The problem, I tend to bite off more than I can chew and I know very little about electronics, programming or pcb design.

Hey Shaun,

Way to go for the baptism by fire - I hope you enjoy it :astonished:

Let me list the things - I kinda like lists. Are you gonna a) learn how to use and program an arduino, b) design multiplexing circuits, c) learn EAGLE PCB and PCB schematic capture and PCB layout design (which can be a right PITA to new users), d) make PCBs at home (maybe?), d) learn to handsolder SMD components (I hope you got the HTSSOP-32 version, it's only got a 0.6mm lead pitch!), e) hand solder 2048 LED joints, f) have a baby and g) save the known universe from oppressing tyrany ?

Jimny Gillikers, Radio-active man! That's training for a whole new career direction at once.

My advice? Check out youtube for tutorials. rpcelectronics - YouTube for Eagle PCB tutorials, but not so good for a) and b).

Enjoy!

Pol.

whether I need common cathode or common anode LEDs, or if in fact it matters at all

Common anode, it matters, it will not work with common cathode.

What Constant Current Sink Output actually means

The output is a constant current irrespective of the load. This means you don't have to have current limiting resistors in line with the LEDs

whether I need something (not sure what) between the Arduino and the TLC5947's to supply power to the LEDs

You will need to feed the TLC5947 with a separate regulated 5V as the regulator on the arduino will only supply about half an amp.

whether I need something (not sure what) between the TLC5947's and the LEDs to power the LEDs

No

My advice:-
If you are having to ask such fundamental questions you are not yet up for tackling such a large project. Do some smaller stuff first.

My advice:-
If you are having to ask such fundamental questions you are not yet up for tackling such a large project. Do some smaller stuff first.

I will take you advice. Perhaps a 33 or 43 mono cube would be a good place to start. There are a few websites around detailing these.

Cheers

Shaun