Go Down

Topic: building LED wall using 60 8*8 LED matrices (Read 4121 times) previous topic - next topic

everbright

Hi all, I am a new user of the Neopixel LED matrices. I would like to build a cylinder wall of 15*4 LED matrices, with Small 1.2" 8x8 LED Matrix w/I2C Backpack. The LEDs face inner side, 15 columns of 4 LED matrices.In total, there will be 60 matrices and 3840 single colour LEDs.

However, there are several problems that came to me when I was thinking about it.

1, The backpack is a bit longer than matrix itself. If I need to put them in array that tightly attached between columns, the backpack will block neighbour columns' backpacks. The possible solution is to solder backpacks a bit off the matrix to the tips of pins of matrix. It can buy some space but still not good enough.

2, Since the 1.2" matrix backpack only has 3 bit I2C addresses, I can only control 8 matrix independently at the same time. If I need to control all single LEDs of all matrices, how can I set the addresses? Should I use another layer of micro controllers as master device to control different groups of 8 matrices? Is it going to slower the speed of refreshing matrix? The ideal refresh rate for each matrix is at least 100 Hz.

If by chance anyone have the experience of doing similar projects, or have good knowledge of how to solve these problems with even completely different better solutions, I will more than happy to listen to you for advice.

My contact email is guangda0101@gmail.com. As I am new in electronics and hardware programming, I hope you won't get annoyed if I ask some stupid questions.

Thanks in advance.

PaulRB

Hi,

In the first sentance, you mentioned Neopixel. Was that a mistake? You did not mention it again.

SPI interface would be better for this number of matrices I think. Max7219 chips have this and are available  as "backpacks". I have seen some where the backpack is the same size as the matrix.

Paul

PaulRB

#2
Jul 17, 2014, 08:44 pm Last Edit: Jul 17, 2014, 09:06 pm by PaulRB Reason: 1
Here you go. You would have to solder a surface mount chip, I hope you have good eyesight and steady hands!

http://www.ebay.co.uk/itm/10Pcs-New-MAX7219-Dot-Matrix-Module-DIY-kit-Cascade-Control-Display-Module-/271546388515?pt=LH_DefaultDomain_0&hash=item3f396d1023

bperrybap

I've got a bunch of those 7219 matrix boards and it isn't that bad to solder.

Or you could use these if you prefer through hole parts:
http://www.electrodragon.com/product/dot-matrix-chain-display-kit-max7219-v2/
They are a little cheaper too.

--- bill

pcdangio

Has anybody here had success with daisy chaining that many MAX7219's using SPI?  I built a chain of 60 MAX7219's, and the SPI seems to be crapping out after going through only 8-12 MAX7219s.

bperrybap

I've only have 10 so that is as many as I've done.

pcdangio

Have you been using the arduino SPI.h library to control it?

bperrybap

I'm using the icstation modules with the latest MD_Parola library
and h/w SPI, but the MD_Parola library uses the MD_MAX72xx library
which directly controls the SPI hardware.

--- bill

Grumpy_Mike


Has anybody here had success with daisy chaining that many MAX7219's using SPI?  I built a chain of 60 MAX7219's, and the SPI seems to be crapping out after going through only 8-12 MAX7219s.

Yes it will, this is due to what is known as the fan out of the driving output. It means the number of inputs you can connect an output to. If you use a pair of inverting buffers like that found in the 74LS04 you can buffer batches of 8 chips at a time.

pcdangio


Yes it will, this is due to what is known as the fan out of the driving output. It means the number of inputs you can connect an output to. If you use a pair of inverting buffers like that found in the 74LS04 you can buffer batches of 8 chips at a time.


awesome, thanks for answering that question for me.  so you think the CLK and SS pins of the arduino are not able to source enough current into all of the connected MAX7219s?  that certainly makes sense since the arduino output pins have a low source current.  Can I connect them to a transistor (or relevant IC) that will be able to provide the necessary current to the MAX7219s?

i had asked in another post if I can use a logic level shifter from sparkfun to act as a logic booster.  since the shifter uses its own vcc/ground supply, i'm hoping it will be able to provide the necessary current.  does this sound like a viable option?

Grumpy_Mike

Quote
Can I connect them to a transistor (or relevant IC) that will be able to provide the necessary current to the MAX7219s?

Yes that is what I said use a 74LS04.

Quote
i had asked in another post if I can use a logic level shifter from sparkfun to act as a logic booster.  since the shifter uses its own vcc/ground supply, i'm hoping it will be able to provide the necessary current.  does this sound like a viable option?

No.

As well as current there is the problem of signal integrity, that is the shape of the signal. This is degraded by stray capacitance in the wiring which means that fast logic signals can not travel very far only a few meters at most.

CrossRoads

I think I'd make 6 strings of 10 MAX7219, give each string its own buffer chip so the 328P is only driving  6 loads. That also limits the delay in updating a string, only have 10 chips worth of data to send out vs 60.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

pcdangio


Yes that is what I said use a 74LS04.


If I hook CLK and SS up to the inverter, I'd have to change their polarity in my Arduino code, correct?

Also, what are these buffer chips that everybody keeps referring to?  I googled around but couldn't find a general definition that sounded like it applied to this problem.

While I know I have a problem now with fan-out of the CLK and SS lines, is it safe to assume that the DATA lines are not effected by fan-out due to the shift registers in each MAX7219?

PaulRB

Some 7400 & 4000 series logic chips have "Line Driver" or "Buffer" outputs, which have a larger "Fan-out" ie. they can drive more inputs in parallel. Some of them have "open collector" outputs which means you can use a pull-up resistor of your choice (as long as you don't exceed the chip's maximum sink current) to get faster switching when the line is long and has a lot of stray capacitance.

As for having to invert the Arduino outputs, you may be able to avoid this by using another inverter between the Arduino and the other inverters.

You are correct about the data lines.

PaulRB


I think I'd make 6 strings of 10 MAX7219, give each string its own buffer chip so the 328P is only driving  6 loads. That also limits the delay in updating a string, only have 10 chips worth of data to send out vs 60.


Can you explain further please Bob? Surely you still have to send data to all 60 chips? Unless the sketch is clever enough to work out that some groups of 10 matrices have not changed and you can skip updating them? If so, would you use a 3-8 line decoder to direct the MOSI clock signal to one of the 6 strings?

Go Up