Go Down

Topic: big multiplexing tri colour led cube - will it refresh fast enough ? (Read 3416 times) previous topic - next topic

knighty

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 :-)


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

knighty

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 ?

Grumpy_Mike

Quote
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!

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

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

magagna

#3
Jan 16, 2012, 05:30 pm Last Edit: Jan 16, 2012, 05:32 pm by Chris Magagna Reason: 1
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!
http://en.wiktionary.org/wiki/magagna <-- My last name.  Pretty apt.

knighty

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

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 :(
(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 !

knighty

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!)

magagna

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

http://ledz.com/?p=zz.led.resistor.calculator

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
http://en.wiktionary.org/wiki/magagna <-- My last name.  Pretty apt.

knighty

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


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 :-)

magagna

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

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!
http://en.wiktionary.org/wiki/magagna <-- My last name.  Pretty apt.

knighty

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 ;)

Grumpy_Mike

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.
http://en.wikipedia.org/wiki/Parallax_Propeller

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

magagna

Quote
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.
http://en.wiktionary.org/wiki/magagna <-- My last name.  Pretty apt.

knighty

Quote
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


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


thanks, I'll take a look at that :-)

knighty

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 :(


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)


Go Up