16x16 RGB LEDs with 96 register, good idea?

I don't see how that works unless you add a diode as well to prevent the drive line from just discharging the cap as soon as the the charge line turns off.
Might as well go with a bank of 12 7219/7221's to control 64 LEDs each.
8 SPI.transfer()s to each to update the display. Techone just bought 70 of them for 50 cents each.

CrossRoads:
I don't see how that works unless you add a diode as well to prevent the drive line from just discharging the cap as soon as the the charge line turns off.
Might as well go with a bank of 12 7219/7221's to control 64 LEDs each.
8 SPI.transfer()s to each to update the display. Techone just bought 70 of them for 50 cents each.

I am looking at this 5 X Max7219 MAX7219CNG LED Display Driver IC for sale online | eBay
The data sheet said that this is designed for common cathode design. I am right now will try to think of a way to link 3 of MAX7219CNG to synch because the RGB leds are common cathode by itself.

You are mixing up the use of the term common cathode to describe the way an RGB LED is wired with the term common cathode which describes the way a matrix is wired.
This page will explain the fundamentals of multiplexing:-
http://www.thebox.myzen.co.uk/Workshop/LED_Matrix.html

Yeah, I think I gave him a bum steer on the 7219, wasn't thinking in terms of the RGB LED being one device, but as 3 separate devices, which it is not.

Still, if you had 16 7219s , each driving 16 RGB LEDs, 2 across with a common cathode and 8 down with common anodes, that would help.
Need 16 7219's, as you can't share an RGB LED across 2 7219's.

A1 A2 A3 A4 A5 A6 A7 A8
R G B R G B NC NC cathode 1 Repeat 8 times across
R G B R G B NC NC cathode 2
R G B R G B NC NC cathode 3
R G B R G B NC NC cathode 4
R G B R G B NC NC cathode 5
R G B R G B NC NC cathode 6
R G B R G B NC NC cathode 7
R G B R G B NC NC cathode 8

Repeat 2 times down

for a 16 x 16 RGB array

Eventually you will also see noise on the LEDs when you have long wires supporting the shifting registers control lines.
You need damping resistors but I don't have concrete advice for your circuit, just an idea what is causing the "noise" if you encounter any.
These shifting registers typically can handle at least 20 Mhz however the higher the frequency, the more difficult is it to drive them especially having a long chain of registers.

30 Amps is really a lot to handle. However eventually it won't be as much as 30 Amps for 256 RGB LEDs, even non-multiplexed. You'd really have to measure for a smaller matrix, and scale up.

I suggest at first to build only a part of the matrix, and see how you get along with it.
If you fully developed it, build the rest of the matrix.

I also suggest to add a larger storage capacitor (100uF or the like) to each of the shifting registers, and use a "ring" circuit for the power supply (not only one long bus).

"Eventually you will also see noise on the LEDs when you have long wires supporting the shifting registers control lines."

If the 7219/7221s are wired up next to each other with the SPI lines wired nice & neat, I don't think that would be a problem.

Each 7219 only turns on up to 6 LEDs at a time in my configuration (2 RGB LEDs per cathode 'row'), it multiplexes them at 800 Hz, flicker free.
So 120mA x 16 '7221s = 1.92A. Not much at all really.

The code could then just update the data that changed, and not have to refresh the whole display every frame cycle.

I don't have this information maybe it was already agreed to use the 7219/7221s.

I see this phenomena when I have the controller on a different PCB than the LED matrix.
10cm to 15cm wire are enough at MHz frequencies to ecounter things like crosstalk, and noise pickup.
Eventually I use frequencies upto 8 Mhz not continuously but for some transitions.

Nothing has been agreed, its all design speculation so far.

I have not tried seperating the uC from a '7221 by more than an inch or two, and then updating registers once a second. The displays themselves are all broken out using 12" ribbon cable from the 7221 to the display. That info is switched at 800 Hz. And the 7221 uses edge control to reduce EMI.

I'll have to take your word on the longer separation of the SPI lines. If you didn't run the lines inside a shielded cable, I could see EMI being generated.

Well having MOSFETs gates, and the /OE input of the MOSFET driver IC at "1" is almost a guarantee for noise pickup. 2.4k resistors added but still some noise remained.

Added one 2.4k resistor to the /OE line as well and it disappeared. On another matrix where I used a longer cable (some parallel bell wires), I had noise problems on the DATA line.

If I touch any of the wires (DAT, CLK, ST_CLK, /OE) which run on the bottom of the matrix, again I get noise pickup to a point where all LEDs light at maybe 1/4 brightness. Otherwise there is no noise that would result in visible effects.

I am sorry that I am getting lost regarding the noise part. I do understand the EMF effect, but I just never encountered one before since I rarely operate circuits above 100hz.

According to what I can understand, running long data wire is bad, and I need to get minimal distance between the data source and the MAX7219s. Or since potentially there will be some room to spare in term of refresh rate, can it be solved by running on lower baud rate/ clock rate?

Sure, keep the 7219/7221s near the uC, you will be fine.
Make a board like this with double row of connectors near each 7219/7221 to drive the LEDs.
This board drives 12 20 pin TPIC6B595 shift registers via SPI daisy chained part to part.
Maybe something like this when all done.

If i use 7219s (probably not 7221 because of the price tag), is it a good idea for all ICs to share the same dataline or I should daisy chained all of them?

Depends how you want to address them.
If shared, you need separate CS line to each device, then you can address each chip individually. That would be fastest.
If daisy chained, you're more or less forced to send out all (16 x 6) byte every time.

Maybe some compromise - daisy chain, but in groups of 4? Works good for a '328.

Well if you don't encounter noise, then you don't need to worry about it :cold_sweat:

The data is daisy chained, but the clocking lines are connected in parallel as far as I understand it.

It depends on the layout. PCB is of course better than wire prototype.
However, I place the shifting registers as close to the LEDs as possible otherwise I'd need to use larger amount of wire. So the shared clock lines (I use SH_CLK/shifting clock, ST_CLK/storage clock as well /OE - output enable) stretch all over the matrix board. It's not as bad because I use 4 controllers for refresh, each for 1/4 of the matrix.

Refresh frequency is some 100Hz, but bit clock is much higher obviously.
I could get rid of the noise problem maybe using slower bit clock, but I do it as fast as possible, so there is some CPU time left for other tasks.

I looked up this IC: Mixed-signal and digital signal processing ICs | Analog Devices

However $4/one IC seems to be a bit overdoing it, where I can get 74HC for 25 cents.
For $4 you can get a PIC32 these days or Atmel ATMEGA328, these are 80pins or 44pins ICs with high density of funtionality.

Maybe it makes sense for a industrial application, where I don't charge "hobby" prices, or "consumer" prices, even smaller installations cost $300. Simply- disruption of production lines can be very costly, so they invest 10x or 20x the money essentially needed, just to ensure all possible precaution is taken.

20 ICs x $4 (if I can get them at this price) makes $80. Controllers another $10. PCB let say $30 for factory PCB. Power supply $20. LEDs $30. Labour $50 to $100. Altogether $250.

Well my actual cost is less than $40 for a 768 LEDs matrix.

These 74HC parts benefit from the fact they have been mass produced for quite a long while, so they are now available at very low prices. You don't get the same noise rejection tough until you use lower voltage, and take some precaution.

How about 16 ICs for $0.50? Techone just purchased a bunch of 7219's for that price. Thats $8 vs $80 right there, so your cost estimate can be adjusted quite a bit.
5V, 4A power supply $7 from mpja.com.
256 RGB LEDs - price can be all over the place.
$38 for up to 100 x 160mm PCB ( I estimate ~100 x 140 for the layout I showed)
http://iteadstudio.com/store/index.php?main_page=product_info&cPath=19_20&products_id=518
$25 for 100x100mm PCB for the LED module : 16 LED x 5 mm = 80mm, plus some room for connectors to mount ribbon cables.
http://iteadstudio.com/store/index.php?main_page=product_info&cPath=19_20&products_id=175
qty 16 2x8 connectors
etc.
$40 seems unreasonably low.

@cvl4317, how will the RGB LEDs be layed out?

Correct this chip is around on eBay for lower prices than on the Maxim website.
I browsed the datasheet. These are primarily 7seg decoders/drivers, also it's possible
to use without decoding. Brightness can not be controlled for individual LEDs.

Actually I can not completely get rid off the ghosting using digital MOSFETs/serial shifters.
Reasons could be crosstalk via the LEDs internal capacitance (I use max. refresh currently might be 1 Khz or so), and the digital MOSFETs eventually don't completely turn off, or don't turn off fast enough.

It's really barely noticeable, not disturbing, and these are high efficiency LEDs which will light from some 10s uA.

Using the Maxim ICs, there should be no ghosting at all. And you should get a guarantee for good welcome, if it is used for a shop sign. This is an art on it's own, and if it works out, good.

$40 is possible using bulk parts (but these aren't RGB LEDs).
Adding the labour costs it would be about $1000 or more.

To the OP really at first only populate 1/4 or so on the PCB, and see how it works out.
You can see if your power supply is appreciate already maybe.

There are factories actually which manufacture large scale LED displays (full color), really some square metres, and they would know much more about them. I am not sure if they are ready to talk to someone who only wants to build one single circuit for personal use. There are some videos on youtube.

Most 8bit MCUs are not powerful enough at all to handle such a large matrix.
It's possible maybe to do a simple scroller, but not reasonable framerate for graphics.
You need more powerful MCU, 32bits, for memory reasons, and performance.
8K RAM could be enough for some animation/graphics.

Other than the fact that it will get expensive, I still want to know if I can obtain "higher" framerate for smoother animation if I do it this way.

(OP)

This rather would be done using a more powerful controller, instead of direct drive, because of the high power consumption. Your memory image is 768 bytes, if you use 8bit/color. I don't know if 8bit PWM is possible for the Arduino you use. Maybe you'd have to use 4bits only.

What I really suggest is to use seperate controllers (as many as needed) for the display refresh/color control/brightness control. Then you only really send the updated memory image to these controllers.
(after reading the thread again)

Actually I saw the information on a professional website (don't have the URL):
There are multiplexed displays, which are used indoors (mainly),
and there are also non-multiplexed displays, for high brightness requirements (outdoors).

So if you don't need highest possible brightness, using 96 chips is kind of a "waste".
It's no harm or technically wrong, but more labour, more cost, and more PCB space.

LEDs these days still have high brightness (indoors) using upto 8x multiplexing.
It could even be, in the end you get more brightness than you want, for indoors.

I participate here with replies, because my latest matrix technically is very similar, 768 individual LEDs are not much different than 256 RGB LEDs. The controllers I use are for refresh/brightness control only, not to build up the matrix graphics. The smallest unit I use are 6 LEDs sharing cathodes, and this equals 2x RGB LEDs.

Many of my earlier designs in the end were using too much components, and did not fully work as I wanted. Luckily, most of them were really very small LED matrix circuits.

How much experience does the OP have with RGB LEDs, power supplies, and any kind of LED matrix?

"8K RAM could be enough for some animation/graphics."

'328 only has 2K of SRAM,
'2560 has 8K,
'1284 has 16K.

I was thinking if one had 2 arrays, one holding the current picture being displayed, and one holding the next picture being created to display, that would use a lot of data.
However, why bother? The 7219 holds the current picture being displayed - so create it one array, then send it on a regularly scheduled basis, unless one wanted to do some fancy easing from one picture to the next, and also work on the next picture while that was happening. Blink without delay is your friend!

takao21106:
There are multiplexed displays, which are used indoors (mainly),
and there are also non-multiplexed displays, for high brightness requirements (outdoors).[/b]

So if you don't need highest possible brightness, using 96 chips is kind of a "waste".
It's no harm or technically wrong, but more labour, more cost, and more PCB space.

LEDs these days still have high brightness (indoors) using upto 8x multiplexing.
It could even be, in the end you get more brightness than you want, for indoors.

I participate here with replies, because my latest matrix technically is very similar, 768 individual LEDs are not much different than 256 RGB LEDs. The controllers I use are for refresh/brightness control only, not to build up the matrix graphics. The smallest unit I use are 6 LEDs sharing cathodes, and this equals 2x RGB LEDs.

Many of my earlier designs in the end were using too much components, and did not fully work as I wanted. Luckily, most of them were really very small LED matrix circuits.

How much experience does the OP have with RGB LEDs, power supplies, and any kind of LED matrix?

Am I understanding this correctly? You're saying that when using multiplexing, even having a 5mm LED on for 1/8th of the "on" period still gives out brightness comparable to if it was on the entire length of the "on" period (not multiplexed)?

Am I understanding this correctly?

Well no because it is not true. An LED subjected to a 8 to 1 multiplex is only putting out one eighth the power. Due to the non linear response of the eye this does not look an eighth less bright but it is very much dimmer.