big multiplexing tri colour led cube - will it refresh fast enough ?

hi

I'm planning to build a really big tri colour led cube but I'm worried with so many LEDs the multiplexing will be too slow

if I use a TLC5951DAP as an led driver it will give me 24 outputs with 12 bit resolution for brightness control

I'm thinking of building a 24x24x24 cube (13,000 led's)

but I'm worried that if I control 1 led of the cube at a time the multiplexing won;t be fast enough and will flicker

so it would be better to control each level individually, that way I could have 1 led on each level on at a time, so only 576 leds on each level would be multiplexed ?

  • I'd run out of outputs on the arduous there (running 96 driver chips)

so I'd have to slit it up some more stacking some driver chips, but I could use 8 of the 8 output chips (which I just forgot the name of) - effectively meaning I could have 8 leds on at any one time

so in effect 1728 leds would be multiplexed

I know it's going to be massive... and take a long time to do... and cost quite a bit....

but does that sound ok to everyone ?

will the arduino be ok running all of that ? with so many led's to control I'll need to use equations to decide which led to power up to do anything really pretty/clever...the arduino will have to run through the maths pretty quick.. while keeping the multiplexing rate high enough...

thanks for reading... hope I described it all ok :slight_smile:

EDIT: when I say tri colour... I really mean bi colour... red/yellow/green

if I have a 24x24x24 cube

I could use 2 24pin chips for each layer (on the +ve side)

and then 1 for each row (on the - side)

so each layer could have an led on at the same time, increasing my resolution 24fold vs 1 led on at a time ?

I'm thinking of building a 24x24x24 cube (13,000 led's)

Have you any idea of the engineering challenge that represents?
Power supply current, decoupling and refresh rate!

but I'm worried that if I control 1 led of the cube at a time the multiplexing won't be fast enough and will flicker

Well I think flicker is the least of it, if you refresh at a ratio of 1 : 13000 then it will be so dim you will have a job seeing it.

so only 576 leds on each level would be multiplexed ?

So you think reducing it to a 1 : 576 ratio will be better?

I use a 1:4 ratio and find that is enough although you could probably push it to a 1:16 ratio.

Even if you go with a mega I think RAM will be a problem. 24x24x24 x 2 LEDs will need 27K of memory at 8 bit resolution; you'll need even more to go to 12 bit.

As Grumpy Mike says I also think you'll have to drive multiple planes at a time. 24 planes x 256 slots of PWM x 50 Hz (so the eye won't see the redraws) is about 300 000 updates per second. That only gives a 16 MHz processor about 52 clock cycles to get ready to update the next row, which I don't think is possible.

Good luck!

doh... typed out a reply.... had an idea... went to google it... lost my reply :frowning:

my old reply was longer/better.... but you know what it's like... once you loose a reply you don't want to type it all out again

I'm wondering how hard it would be to run 2 arduous, one controlling the top half of the cube the second controlling the bottom half

to keep the cpu overhead to a minimum I'd run them independently, but then have them check in with each other via a couple of digital input output pins - run X number of led refreshes and then put power to pin A and wait for power input on pin B before continuing etc... ( and then cross wire pins A and B between the 2 boards)

each board would still have to run all the maths and keep track of all led's in memory... but it would only have to do half as many IP/OP operations ?

I could add more memory to the boards (that's what I was just googling) - pre-process what the board needs to do, and then have it output everything from memory.... there'd be a short pause every time what was being displayed changed... but it shouldn't be too long... but I'm assuming any add-on ram would be too slow to access via the normal ip/op pins :frowning:
(I couldn't find anything with a quick google, but I'm assuming reading over lan would be too slow too)

but... I guess it wouldn't have to update/download the next led with each flash of an led...

it might be better to load the status of each led into memory, run through flashing those and then just update 1 of them with each refresh ? (or each 2nd refresh if it needs to run slower etc. etc.)

if something more complicated was slowing it down, the led's would still multiplex just as quick, the only difference being the image wouldn't update/change as often ?

that's all dependant on getting the multiplexing running fast enough of course....

anymore input/ideas are more than welcome.... much easier to do this right first time than try to change it later on !

p.s. any ideas of what value resistor I should be using ?

going to mock up an 8x8x8 rbg first and then go for 24x24x24

(I might do a 12x12x12 in the middle)

(and of course, still open for ideas on improving refresh rate of a big cube!)

Resistor value depends on the LED, voltage, and current. You can use this page to calculate:

One thing to note is that if you're absolutely certain your pulses will be fast enough (typically 0.1 MS or faster) you can overdrive many LEDs. For example a bunch of SMD LEDs I used in a recent project normally run at 20 mA but for short pulses can be driven up to 120 mA. The upshot is they're almost (but not quite) as bright when being strobed in a matrix as they would be when run standalone.

Chris

thanks for the calculator link - I've ordered some :slight_smile:

I thought about running the led's at a higher voltage, but I was worried about overloading the chips I was looking at using - there data sheet has them down as 40mA per channel

I only picked these chips so far because they've got more output pins than any other I could find - I might find something better before the final build

I really need to find a better way to drive the leds.... it's a bit late now but I'll have a look at some other technology tomorrow and see if I get any ideas - something like led/tft screens etc...

only problem using something smaller/faster is the thousands of transistors which would be needed to run the leds

thanks again for all the help guys, I'll keep you updated on the progress :slight_smile:

I looked at the spec sheet for the TLC5951 and it's a pretty cool chip. I think you did the math right and you can drive each output at a maximum of 40 mA, but only if you use the HTSSOP-38 package soldered on to a 2 oz copper pad (or use a heat sink).

Of course, if you know that you'll never be driving 100% of the LEDs 100% of the time at 100% brightness you can play a little looser with the thermal maximums... :slight_smile:

Another option would be something like the TLC5916. You'll only get 8 outputs per chip and you'll have to roll your own PWM, but banks of them would be able to dissipate more heat because you'd be spreading it out over a larger surface area, you can drive each output at up to 120 mA, and you'll still be able to avoid infinite transistor soldering.

I think no matter how you slice this, it's going to be a massive undertaking. I like the idea of making an 8x8x8 first; please do let us know how it goes and as always, good luck!

thanks for the input

I was worried that there would be more overhead on the arduino if I ran with more chips ? (if I'm going to struggle with refresh rate)

I'm wondering how hard it would be to use one of those Parallax chips to run the led's and then use an ardunio to update that ? apparently a Parallax chip could run that many easy because of the extra cpu cores and some shared ram ?
(I don;t really know anything about those chips yet tbh)

thanks again for all the help, I just realise I should have said in my first post I'm dyslexic - sometimes my posts either make me sound like a moron or make me sound arrogant, or a bit of both... when I don't mean too... I have a habit of annoying people without even realising it... so in-case I do offend anyone, give me a second chance :wink:

The propeller is a much more powerful chip than the arduino, for a start the clock speed can be 80MHz compared to the arduino's 16MHz and it has 8 processors inside it as opposed to one. It also has lots more memory.
However it is only 3V3 so not as handy at powering things.

I just realise I should have said in my first post I'm dyslexic

Me too but when I was at school they hadn't invented dyslexia so I was just thick.

I was worried that there would be more overhead on the arduino if I ran with more chips ? (if I'm going to struggle with refresh rate)

The fastest way to get bits out of the arduino is the SPI interface; it can pump data out up to 1/2 the system clock. Many of these LED driver chips are basically shift registers so you daisy chain the output from the first to the input of the second -- for example if you have three 8 port chips you just send 24 bits all at once; you don't need to do anything special between chips.

Have you seen the ShiftPWM and ShiftMatrixPWM libraries? They may give you more insight in controlling LED arrays.

I just realise I should have said in my first post I'm dyslexic

Me too but when I was at school they hadn't invented dyslexia so I was just thick.
[/quote]

same here !

then I went to uni where they tested me and gave me a certificate to say I can't spell

then I got bored and never went back :S

thanks, I'll take a look at that :slight_smile:

I've hit a slight snag... getting ready to do the 8x8x8 cube and thought I'd use the same TLC5947DAP I'm planning for the 24x24x24
(to iron out any problems now)

only problem is... they've just arrived... and I wasn't expecting them to be so tiny... and can't find an ic mount thingie for them anywhere... I think I must be looking for the wrong thing...

any ideas anyone ?

I'm kinda stuck here because out of all the people I know... I'm the one who knows about computers electrics... so if I get stuck and can't google / don't know what to google for I'm lost :frowning:

to put it in context here's a photo.....

it's about half as long as my little finger is wide

I guess I'll have to add heat sinks to them too, they're so tiny they won't dissipate heat well,
(I originally thought I'd solder them right into the board which would aid cooling)

You want something like this

doh! I was hoping for something I could clip the chip into, which would then happily solder into a perf board....

guess I might have to look at using different chips then :o

knighty:
doh... typed out a reply.... had an idea... went to google it... lost my reply :frowning:

Way off topic, but if you use firefox for your browser, stop what you're doing and go grab a plugin/addon called "Lazarus: Form Recovery". I cannot tell you how many times I've been writing an email, filling out a form, posting a VERY LONG forum reply, just to have the site act up, my internet go out, get logged out.. whatever...just to find that when I can get back to the page, all my typing is gone.

Lazarus saves what you're typing, and it could be anything, a form or just a box, it's smart enough to auto save everything you type on a page. All you have to do is right click, select Recover, and all your typing comes right back. I highly recommend getting it to prevent loosing your replies again.

From their homepage:

Ever had one of those “oh $*#@” moments when you've finally finished filling out a long form, and hit submit only to see an error message? And when you hit the back button, the form was blank... If so, you know you need Lazarus. And if not, you have a chance to install Lazarus before disaster strikes!

@knighty.. you were right at saying bi-color if yer only using 2 colors..

and i thought my 400 tri color led multiplexing was a huge project..

i can't seem to the exact answers to multiplex 100 tri color leds at a time that i seek.. and you want to do 13k of them?

knighty, good luck with it.. would like to see how it comes out when yer done with it!

Well, knighty hasn't posted to the forum since
February 04, 2012, 03:54:59 PM
would not hold my breath waiting for a reply!

Its certainly possible to do more complex things, but likely more processing power is needed:

knighty:
I'm planning to build a really big tri colour led cube but I'm worried with so many LEDs the multiplexing will be too slow

if I use a TLC5951DAP as an led driver it will give me 24 outputs with 12 bit resolution for brightness control

I'm thinking of building a 24x24x24 cube (13,000 led's)

24x24x24 RGB LEDs is actually 41472 LEDs (24x24x24x3)

Whichever way you slice it, that's a lot of LEDs ... and a lot of input data.

It's definitely not going to work by updating LEDs individually.

Even if you only update one row of LEDs at a time you need to update it a 50kHz to get a usable frame rate (24x24x100) - simply not going to happen with an Arduino Uno at 16MHz.

The only way I can see it working is to divide it up into planes and have each plane controlled by a separate processor. That divides all your numbers by 24 and makes them sensible.

Each plane could be multiplexed in rows so your multiplexing ratio is 24:1. Each row has 72 LEDs so it could be driven with 5xTLC5940 (or whatever...), perfectly possible to do with an Arduino-class chip.

Physically supporting the LEDs as separate planes would be tricky. I suppose that's why most big cubes I've seen seem to be hung on wires - make gravity work for you, not against you.