Pages: 1 [2] 3   Go Down
Author Topic: Driving A 10x10x10 RGB Cube  (Read 3738 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Sr. Member
****
Karma: 7
Posts: 476
what?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Just thought i'd throw this in, im using a HEF4067BP to drive 8 x 7 seg displays, it's a 1 of 16 channel switch

http://www.nxp.com/documents/data_sheet/HEF4067B.pdf
Logged

Valencia, Spain
Online Online
Faraday Member
**
Karma: 150
Posts: 5666
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I would say that there is over six months of work here.

I don't know if it's that much ... maybe a month of snipping/soldering and another of programming.

What major problems do you see in the electronics? I don't really see any apart from switching 15A of power on/off quickly (Separate 5V PSU with lots of capacitors on the output? Thick wires for all GND connections?)
Logged

No, I don't answer questions sent in private messages (but I do accept thank-you notes...)

Left Coast, CA (USA)
Offline Offline
Brattain Member
*****
Karma: 361
Posts: 17303
Measurement changes behavior
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I would say that there is over six months of work here.

I don't know if it's that much ... maybe a month of snipping/soldering and another of programming.

What major problems do you see in the electronics? I don't really see any apart from switching 15A of power on/off quickly (Separate 5V PSU with lots of capacitors on the output? Thick wires for all GND connections?)


Having built a 5x5x5 cube, while finding designing, building, debugging the hardware challenging it was at least something I enjoyed and progress was mostly trouble free. The software was another kettle of fish however. The basic scanning of the cube was pretty simple but I found that the 'creative part' of coming up with interesting pattern shows was so very very tedious and very time consuming and I soon lost interest after defining about six basic patterns including a simple random pattern using a RNG. What I really longed for was a PC based GUI pattern editor that I could use to 'visually' build patterns, scan by scan, and then be able to upload the pattern into the arduino driven cube. But of course my PC software skills would never allow me to write such a application. So now when I watch cube being demonstrated on U-tube or wherever, I've really come to appreciate the artistic effort that some have mastered. So in effect the software is the biggest overall factor is the quality of the finished project.

Lefty
Logged

Manchester (England England)
Online Online
Brattain Member
*****
Karma: 636
Posts: 34576
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
What major problems do you see in the electronics?
As you said:-
Quote
from switching 15A of power on/off quickly

Quote
(Separate 5V PSU with lots of capacitors on the output? Thick wires for all GND connections?)
If it were only that simple.
Logged

Valencia, Spain
Online Online
Faraday Member
**
Karma: 150
Posts: 5666
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
(Separate 5V PSU with lots of capacitors on the output? Thick wires for all GND connections?)
If it were only that simple.

Four power wires to each layer (at the corners...)? Decoupling on each one?

Logged

No, I don't answer questions sent in private messages (but I do accept thank-you notes...)

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
it seems like he should probably make something smaller to get some practice with electronics, TLC5940s, Arduino programming, etc.
Let's face it. The OP is never going to make a 10 X 10 X 10 cube, it is one of those over ambitious things a newcomer wants to do. It is a lot more complex than just getting the right circuit and wiring it up. I wouldn't attempt this myself and I have got a bit of experience. I would say that there is over six months of work here.

Excuse me, but you don't know me well enough to make that judgement.  First of all, I have a degree in Electrical Engineering and I have a very good work ethic.  When I decide to do something, I do whatever it takes to accomplish my goals.  I've already made an 8x8x8 cube and fabricated my own PCB at home.  The kind of things we are discussing here are not the kind of things that one learns in college, they are specific to a platform I am currently unfamiliar with.  I am asking for advice from people who have more experience in areas I do not, that doesn't mean I'm stupid or unwilling to put the work in myself.  I've already bought most of the parts, fabricated a jig, and straightened most of the wires.  I expect this project to take a few months, and I'm ok with that.  I'm here to learn and I'm willing to listen to your advice, but please don't make such unfair assumptions.
Logged

Manchester (England England)
Online Online
Brattain Member
*****
Karma: 636
Posts: 34576
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Excuse me, but you don't know me well enough to make that judgement.
True I don't but I have answered enough questions to make a guess.

Quote
First of all, I have a degree in Electrical Engineering
Fine so do I.

Quote
that doesn't mean I'm stupid
I never said, nor implied you were. However some of your responses suggest that you have less experience than you are implying you have by your last post.

Quote
I've already bought most of the parts
That is what worries me. You need to make a realistic prototype of a tiny corner of what you plan, run it at the rate the real thing will run before you know if your design is feasible. 

Quote
I've already made an 8x8x8 cube
Good so you know what is involved with 500 LEDs, now you want to scale it up to 3000. Scaling up is not easy, you don't just make more. There are lots of things to consider with switching so much current so quickly. I would have thought the TLC5940 was not the best choice as you have to synchronise the multiplexing to the refresh rate.

Best of luck with your project. Please post in the exhibition section when you have it working.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
What major problems do you see in the electronics?
As you said:-
Quote
from switching 15A of power on/off quickly

Quote
(Separate 5V PSU with lots of capacitors on the output? Thick wires for all GND connections?)
If it were only that simple.

15A!?  Please double check your math.  Each layer is 10x10, with 3 pins per LED, for a total of 300 pins.  Each pin will drive a max of 20mA, 300x20mA = 6A.  I'm planning to use this power supply to drive the LED's: http://adafruit.com/products/658.  With large enough decoupling caps between Vcc and Gnd on each chip, this shouldn't be an issue.  Not really sure what your issue is here.  I also bought high power mosfets rated for 100V and 40A to handle the switching.  http://www.irf.com/product-info/datasheets/data/irf5210pbf.pdf  I probably won't be running the LED's at the full 20mA anyways, since it might be too bright to look at.

Quote
That is what worries me. You need to make a realistic prototype of a tiny corner of what you plan, run it at the rate the real thing will run before you know if your design is feasible.  

I plan on building a 4x4x4 with a scaled version of the circuit and to practice different techniques of assembling the cube.  However, it's hard to tell from a smaller version if something this large will work because I won't be hitting the same limitations.

Quote
Good so you know what is involved with 500 LEDs, now you want to scale it up to 3000. Scaling up is not easy, you don't just make more. There are lots of things to consider with switching so much current so quickly. I would have thought the TLC5940 was not the best choice as you have to synchronise the multiplexing to the refresh rate.

I thought they would be a better choice than shift registers because I have to chain together a large amount of IC's.  I used shift registers for my 8x8x8.  If I use shift registers I would need to drive a much faster clock through the board to manually handle the PWM.  What do you think is the best choice and why?

Quote
Best of luck with your project. Please post in the exhibition section when you have it working.

Will do, but getting there will not be trivial, and I appreciate the guidance from those who are more experienced in this area than I am.  I'm considering making a build thread to document my progress for those who are interested.


Quote

Having built a 5x5x5 cube, while finding designing, building, debugging the hardware challenging it was at least something I enjoyed and progress was mostly trouble free. The software was another kettle of fish however. The basic scanning of the cube was pretty simple but I found that the 'creative part' of coming up with interesting pattern shows was so very very tedious and very time consuming and I soon lost interest after defining about six basic patterns including a simple random pattern using a RNG. What I really longed for was a PC based GUI pattern editor that I could use to 'visually' build patterns, scan by scan, and then be able to upload the pattern into the arduino driven cube. But of course my PC software skills would never allow me to write such a application. So now when I watch cube being demonstrated on U-tube or wherever, I've really come to appreciate the artistic effort that some have mastered. So in effect the software is the biggest overall factor is the quality of the finished project.

Lefty

I'm a verification engineer, so my job involves both hardware and software, so I'm not really worried about the software side.  I will make a GUI for this, and I have a few other ideas planned as well.  That being said, what I am concerned about is the low-level code on the MCU to handle the multiplexing of all the layers.  There are libraries available that I can adapt to my needs, but I don't know if they will be fast enough to handle what is essentially a 300x10 matrix.
« Last Edit: November 16, 2012, 07:11:19 pm by mnpumar » Logged

Left Coast, CA (USA)
Offline Offline
Brattain Member
*****
Karma: 361
Posts: 17303
Measurement changes behavior
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
That being said, what I am concerned about is the low-level code on the MCU to handle the multiplexing of all the layers.  There are libraries available that I can adapt to my needs, but I don't know if they will be fast enough to handle what is essentially a 300x10 matrix.

I don't think you have anything to worry about on that issue. I can't prove it with math right now but you only have to be a little faster the human's eye perseverance which is pretty wimpy, and a 16 Mhz 328p can push a lot of bits in the time required, I would have little fear in that. As I said I used the Mstimer2 interrupt library to setup a basic 2 millisecond 'window' to shift out all 25 bits via the shift registers for each level. You will have to shift out 300 bits per heart beat and then switch to the next level, so maybe a 1 millisecond interrupt window to shift 300 bits. You may have to work with direct port manipulation commands for the output data shifting rather then using digitalWrite() commands, but I think you will be OK.

So look up POV timing and do some math on bit shifting. I too certainly would want to have a handle/confidence on that before applying solder to 1,000 RGB leds.  smiley-wink

Lefty
« Last Edit: November 16, 2012, 09:46:48 pm by retrolefty » Logged

Manchester (England England)
Online Online
Brattain Member
*****
Karma: 636
Posts: 34576
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Another thing that crossed my mind is where you are going to store the data for multiplexing the cube. With the equivalent of 3000 LEDs storing 12 bits per LED is going to take 4500 bytes. Cutting this down to 1 byte per pixel still gives 3K which means you will have to use a Mega.

Simulating it should be easy enough, you don't need to build a cube, just have one TLC5940, one power FET and then drive it as if there were 19 chained TLC5940s and 10 FETs, then you can see if you can get the data and spit it out fast enough. The eye is often more sensitive to point sources of illumination flickering than to diffused areas.

The 15A figure came from fungus. I think he was allowing more than 20mA per LED.

Quote
I probably won't be running the LED's at the full 20mA anyways, since it might be too bright to look at.
Are you sure with a 10 to 1 on / off ratio?

Quote
With large enough decoupling caps between Vcc and Gnd on each chip, this shouldn't be an issue.
Lets hope you have a good scope.
Quote
Not really sure what your issue is here.
Well it's your issue actually but switching that much current at that frequency on the end of long wires one of the issues will be radio frequency emission causing interference to the controller. There will also be problems caused by reflection of signals at impedance discontinuities ( the end of the line ) , and ground bounce, are just three that immediately spring to my mind.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Another thing that crossed my mind is where you are going to store the data for multiplexing the cube. With the equivalent of 3000 LEDs storing 12 bits per LED is going to take 4500 bytes. Cutting this down to 1 byte per pixel still gives 3K which means you will have to use a Mega.

Aware of this, using a teensy++2.0 right now, but will probably switch to an arduino duo if i can get my hands on one.  Also, I plan to send the data from my computer to the mcu in real time before i try hard-coding some into the chip.

Quote
Simulating it should be easy enough, you don't need to build a cube, just have one TLC5940, one power FET and then drive it as if there were 19 chained TLC5940s and 10 FETs, then you can see if you can get the data and spit it out fast enough. The eye is often more sensitive to point sources of illumination flickering than to diffused areas.

That's true, great idea!  I will give this a try as soon as I get my transistors in next week.

Quote
Quote
I probably won't be running the LED's at the full 20mA anyways, since it might be too bright to look at.
Are you sure with a 10 to 1 on / off ratio?

I plan on seeing how it looks and adjusting the current to my liking.  The experiment you suggested would be a great way to experiment with this.

Quote
Lets hope you have a good scope.

I do smiley

Quote
Quote
Not really sure what your issue is here.
Well it's your issue actually but switching that much current at that frequency on the end of long wires one of the issues will be radio frequency emission causing interference to the controller. There will also be problems caused by reflection of signals at impedance discontinuities ( the end of the line ) , and ground bounce, are just three that immediately spring to my mind.

I know its half the LED's, but I've seen functional RGB 8x8x8's that didn't have these issues.  I think you may be over thinking this a bit with the radio frequency emissions.  I'm planning to use push-pull's on the clock/data lines because of the large traces and fanout.  Ground bounce? Maybe...but if I use separate supplies for the LED's and the IC's, then I don't see too big of an issue here.
Logged

Valencia, Spain
Online Online
Faraday Member
**
Karma: 150
Posts: 5666
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I would have thought the TLC5940 was not the best choice as you have to synchronise the multiplexing to the refresh rate.

No, that's what makes the TLC5940 the perfect choice. You have complete manual control over the chip, the PWM clock, etc.

Logged

No, I don't answer questions sent in private messages (but I do accept thank-you notes...)

Valencia, Spain
Online Online
Faraday Member
**
Karma: 150
Posts: 5666
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

15A!?  Please double check your math.

I assumed you were going to drive the LEDs at more then 20mA

I probably won't be running the LED's at the full 20mA anyways, since it might be too bright to look at.

At 10:1 ratio, 20mA is like running them at 2mA. Not very bright.


I'm a verification engineer, so my job involves both hardware and software, so I'm not really worried about the software side.

It's statements like this and the previous one that makes me (and Mike) think you don't know what you're talking about. The initial code you posted, along with the 'problems' it had suggest you're a noob at programming. It doesn't add up with somebody who's built/programmed a working 8x8x8 cube.
« Last Edit: November 17, 2012, 03:15:06 pm by fungus » Logged

No, I don't answer questions sent in private messages (but I do accept thank-you notes...)

Valencia, Spain
Online Online
Faraday Member
**
Karma: 150
Posts: 5666
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Another thing that crossed my mind is where you are going to store the data for multiplexing the cube. With the equivalent of 3000 LEDs storing 12 bits per LED is going to take 4500 bytes. Cutting this down to 1 byte per pixel still gives 3K which means you will have to use a Mega.

I'm planning to use an external flash chip to store the sequences when I build mine. You can get 8-pin chips with megabytes of flash, enough for any sequence.

I'm also planning to add a Bluetooth module so I can edit the sequences on my PC and transmit them over. It should be much easier/faster to work that way.

And... a microphone + MSGEQ7 graphic equalizer chip for music display.
Logged

No, I don't answer questions sent in private messages (but I do accept thank-you notes...)

0
Offline Offline
Sr. Member
****
Karma: 7
Posts: 476
what?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
I'm planning to use an external flash chip
Isn't flash slow?

would a frame buffer work?
I was hacking away at a cheap photo frame when it occured to me that the data lines of the parallel flash chip were connected directly to the data lines of the lcd, meaning data is strobed directly
Logged

Pages: 1 [2] 3   Go Up
Jump to: