8x8 RGB LED Matrix - Taming the beast?
Ryan Smaglik
Posts: 19
I've taken on quite a project (for me at least )!
What I have is an 8x8 RGB (192 total LEDs) matrix that I would like to drive (somehow) and then control with a fresh BS24px (which has been ordered).
Problem is... I'm having trouble thinking up a way to control the state and brightness of 192 LEDs and maintain the speed that is necessary to have flicker-free viewing.
I know I could find a way to do it with 3 of the MAX7219, that is if I had the common cathode version of the matrix (which I unfortunately do not). These RGB modules cost around 98.00 each in low quantities so I'm kind of stuck with the one I have.
Any thoughts or suggestions as to how to tackle this beast would be greatly appreciated.
I've attached the datasheet for the RGB matrix. I have the common anode version.
Thanks in advance,
Ryan Smaglik
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--
Ryan Smaglik
Student, Milwaukee School of Engineering
Post Edited (Ryan Smaglik) : 6/13/2005 7:00:23 AM GMT
What I have is an 8x8 RGB (192 total LEDs) matrix that I would like to drive (somehow) and then control with a fresh BS24px (which has been ordered).
Problem is... I'm having trouble thinking up a way to control the state and brightness of 192 LEDs and maintain the speed that is necessary to have flicker-free viewing.
I know I could find a way to do it with 3 of the MAX7219, that is if I had the common cathode version of the matrix (which I unfortunately do not). These RGB modules cost around 98.00 each in low quantities so I'm kind of stuck with the one I have.
Any thoughts or suggestions as to how to tackle this beast would be greatly appreciated.
I've attached the datasheet for the RGB matrix. I have the common anode version.
Thanks in advance,
Ryan Smaglik
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--
Ryan Smaglik
Student, Milwaukee School of Engineering
Post Edited (Ryan Smaglik) : 6/13/2005 7:00:23 AM GMT
pdf
488K
Comments
For starters, take a look at the Maxim MAX7219 LED driver chip. That is probably the most widely used LED driver chip, although there are many others. You may also want to let us know what your eventual goal is.
Regards,
Bruce Bates
http://pdfserv.maxim-ic.com/en/ds/MAX7219-MAX7221.pdf
Now determining what each word should be....that's a different story [noparse];)[/noparse]
-dave
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
This is not a sig. This is a duck. Quack.
What I am trying to do is stream simple pictures/animations from my laptop to it. I'm writing a program that will take 8x8 pixel images and get the rgb values for each pixel and then I need to find a way to send that data to be displayed. This is the part I need help with. How would you recommend connecting the 32 pins to the 3 MAX7219s? Which pins on the matrix to which pins on the chip? How would I need to format the image data to be sent to the drivers?
For example, say I want the dot located 4 from the top and 5 from the left to show the RGB color (255, 50, 100)?
Does the MAX IC allow me to control the brightness of each individual LED? What I'm trying to achieve is basicly an 8x8 pixel full color display.
Thanks!
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--
Ryan Smaglik
Student, Milwaukee School of Engineering
Post Edited (Ryan Smaglik) : 6/13/2005 8:53:25 PM GMT
You might consider a custom solution using a multi-channel PWM chip; this would give you individual brightness control over each LED. That said, you'd also now need a current limter for each LED ... but 24 resistors is not a lot of cash. Here's a link to a 16-channel PWM controller using the SX chip and programmed with our SX/B compiler:
http://forums.parallax.com/showthread.php?p=536244
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon Williams
Applications Engineer, Parallax
Arent there any existing ICs made for lots of PWM outputs?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--
Ryan Smaglik
Student, Milwaukee School of Engineering
If you want to get started right away you could use the SX52 ConCarne ($59)
http://www.parallax.com/detail.asp?product_id=45207
Or you could wait until the SX52 proto boards are released (they are much less expensive).
Of course you will need the SX programming tools.
The SX28 PWM program could be modified to provide the outputs you need.
Let me know if you need assistance. Maybe we could colaborate on the project.
Bean.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
"SX-Video·Module" Now available from Parallax for only $28.95
http://www.parallax.com/detail.asp?product_id=30012
Product web site: www.sxvm.com
"If you keep doing what you always did, you'll keep getting what you always got."
Post Edited (Bean (Hitt Consulting)) : 6/14/2005 11:05:27 AM GMT
·· Don't despair about the MAX7219's...I have found them quite useful for several projects, including two clock projects I have going.· Each MAX7219 can drive up to eight 7-Segment Displays (CC).· They're very easy to interface and save you from having to install tons of resistors.· I'll be posting a project based on one soon!
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Chris Savage
Parallax Tech Support
csavage@parallax.com
Should I go with the con carne or are you expecting to release the proto boards pretty soon?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--
Ryan Smaglik
Student, Milwaukee School of Engineering
The technique used is called charlieplexing.
see
http://www.maxim-ic.com/appnotes.cfm/appnote_number/1880
I have no program for the bar graph, but maybe the technique is
applicable to your project.
regards peter
I found a chip made by TI, called the TLC5940NT. I've ordered 12 of them.
Now what I need assistance with is how to interface and control them with my BSpx.
I plan on using the cascading example circuit on page 16 of the data sheet (attached).
I'm hoping someone can look at the timing diagrams and explain what I need to do to send the 12-IC-cascade data (and also how this data needs to be formatted) to set the brightness of each led on my common anode matrix.
Each output on the 12 ICs will be connected to light a single led on the matrix when triggered.
The datasheet is kinda "over-my-head" so I'd really appreciate instruction from anyone with a technical background.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--
Ryan Smaglik
Student, Milwaukee School of Engineering
Post Edited (Ryan Smaglik) : 6/16/2005 11:12:24 PM GMT
The basic stamp 2SX can execute about 10,000 instructions a second clocked at 50MHz.· Now a SX clocked at 50MHz can execute about 50,000,000 instructions per second.· The limiting factor in the SX is memory.
Also looking at the datasheet of the LED display you want to control, it's not designed to allow control of LEDs one by one.· It's meant for use with a control method such as what the MAX7219 employs.· On page 8-4 of the datasheet there is the schematics of the display.· You'll notice that the LEDs are tide together in rows of 8.· So you have 8 rows by 24 columns (8 columns for each color).· Which is 32 connections, as Bean said.
To multiplex the display you turn on and off each row in sequence, turning on the associated column in that row that you want the LED to be lit.· But the key is you do this very rapidly to trick our rather slow eyes into believing the LEDs are always on.· I know my explanation was kind of short but maybe someone who is better at explaining could put up a much more detailed explanation of multiplexing.
Chris
Post Edited (CPUMAN) : 6/17/2005 1:19:04 AM GMT
I'm aware they need to be multiplexed, which is what I'm essentially doing.
Ryan
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--
Ryan Smaglik
Student, Milwaukee School of Engineering
Chris
Let me try to explain,
I can light up any individual one of the 192 LEDs by hand, having only 1 on at a time...
What the TI chip does is allow 16 individual LEDs to be controlled one at a time so fast that they could (if you wanted them to) all appear to be on at the same time.
Since I have 192 LEDs instead of just 16, I need 12 of the chips to control them all.
Basic stamp outputs a constant stream of serial data to the first chip, with instructions for all 12 chips (in order)
Chip one controls LEDs 1-16 (one at a time),
then the additional serial data cascades to the next chip...
Chip two controls LEDs 17-32 (one at a time),
then the additional serial data cascades to the next chip...
Chip three controls LEDs 33-48 (one at a time),
then the additional serial data cascades to the next chip...
Chip four controls LEDs 49-64 (one at a time),
then the additional serial data cascades to the next chip...
... and so on ...
So only one of the 192 LEDs is on at any given instant, but its going so fast that your mind blurs them together and they appear to all be on at the same time.
At least thats how I think the TI chips will work, maybe someone with more technical knowledge can confirm this?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--
Ryan Smaglik
Student, Milwaukee School of Engineering
Chris
Do you have any suggestions as to how I could drive this then?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--
Ryan Smaglik
Student, Milwaukee School of Engineering
http://web.mit.edu/storborg/ddf/
from the page:
CLIP
The First East Disco Dance Floor
During IAP 2005 First East created a disco dance floor for the concluding Disco
Ball of the East Campus Bad Ideas competition. The construction was a
week-long effort involving dozens of people.
We are working to make hardware and documentation available cheaply
for experimenters. If you are interested in staying informed about such
things, you can contact us or keep checking the website. Thanks!
* 1,536 LEDs
* 128 square feet
* 4,096 colors
* 30 frames/second
* 20,000 hand-soldered connections
* ...best parties ever!
/CLIP
Hope this helps [noparse]:)[/noparse]
Vern
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
So the short answer is off hand I'm not aware of a chip that'll do this, unless someone wants to code one in VHDL, would be an interesting challenge.· Best bet is to prototype with a stamp using shift registers or latches and then move the prototype onto a faster and higher memory MCU.
Chris
There are a lot of people doing what you want to do. I do this stuff for a living.
I'd recommend using TI tlc5941 it's a little cheaper than the 40 and you won't need the eeprom if you're scanning multiple rows - it's a waste of money. The '41·should be available in small quantities from Digikey. They also have some new parts you should look at before deciding.
Anyway, you need a multiplexer for each row. This will be a 74xxx138 (or 238) or equivalent for 8 rows you can also parallel them to drive more rows and use the selection bits to address them properly. The outputs of the 3-to-8 will drive a transistor/fet circuit that will provide power to the common anodes of each row in sequence. Then you can drive each led suedo individually - it will appear that way anyway. You just have to sequence and shift the data out with the proper timing. The '41 will also allow you do do dot correction to get better color balance/matching between the die that was used to create the module. This can be a task to accomplish but being an eng student (hope your an ee), you should be up for the task and would probably get ex credit if you can pull that off. You may contact me directly if desired - I won't hand this to you on a silver platter since it looks like a project.
You may contact me at· mpope· at· ipdisplays dot com should you want to discuss this further.
·
What is the 595 chip you are talking about. Is that a partial part number? Who's the mfg? I'm not familiar with that general reference.
As for a mfg, the 595 model number just specifies the chip, many mfg's make this chip so it's pretty easy to come by and I know parallax sells them as well, or at least the last time I checked anyway.
I've picked up one of these RGB 8x8 units but haven't had time to expirement with it yet due to I've just started a new job.
Post Edited (CPUMAN) : 6/22/2007 6:30:38 AM GMT
I was expecting a little more complicated part for driving LEDs, since I mainly deal with matrix style displays.
The part is a 74xxx595 and is a great part for connecting to I/O on a microcontroller. ST also has a driver part that ends in 595.
Most people prefer to use the same part with constant current source outputs for driving groups of LEDs to get better color and intensity matching. And there are quite a few companies that make those sytle of parts. TI, Silicon Touch, Toshiba, ST, Macroblock, Sanyo, Maxim and many more... They're just not as cost effective as a '595 if you don't care about the constant current.
Who is selling the Cotco/Lite Engine parts in the US? $95 for 1 seems a bit high. If it's Marktech, I didn't find it on their website. Of course I didn't look very hard to find it either so it wasn't an obvious catch/find on the site.
Post Edited (FriscoZR) : 6/22/2007 2:17:07 PM GMT
I looked at the datasheet you posted. Since your green is ~574nm instead of what's called a pure green ~525nm you will have an interesting task of getting a decent white. It will not be 255,255.255. This will give you a purple-pink color - refer to a CIE color chart. You will have to play with intensity of the LEDs and possibly the rgb value to get a good white. I'd eventually use a conversion table in sw to do this. Hopefully your processor has some good table lookup instructions. But your display is small so this may not matter.
Good luck on your project - let us know how it turns out.