Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Need Help Controlling a Large LED Matrix

Status
Not open for further replies.

inertia

New Member
Hello all,

I have been working on trying to get this large led matrix that I have working which is 64x16.

The 16 rows are attached to the (-) of the leds in the row and the 64 columns attach to the (+) of each led in the column.

I have an arduino and a ton of shift registers already so I decided to try that out. I have ten 74hc595 shift registers controlling the 64 columns.

I also have two more 74hc595 to control the grounds. They are attached to 16 transistors.

I currently can easily control any given row and in any way but when i try and go through the rows to display one solid image over the entire matrix I get ridiculous flickering and ghosting.

Right now the 12 shift registers are all chained so the first 2 registers are the ones for the grounds and the rest are to drive the leds high.

I need to ensure a strong brightness and smooth animation since this display will be viewed heavily.

Am I moving in the right direction? Or is there a better way of accomplishing this.

Thank you in advance for any help.
 
Last edited:
With only a few mA available from the shift registers to source the LEDs and a 16:1 mux it's going to be dim. Maxim makes a nice LED matrix driver IC that would be much brighter.
 
Bill's got a good tip there with Maxim - however, if you can't stomach the cost or don't want to mess around with actually finding a reseller that stocks Maxim, Aavago and a few others make something similar to the 595 on steroids. The actual part number escapes me right now, but basically it is a 595 with the totem pole output stage driving current sinks. Each sink handles 100-500mA of current.

Also check the Philips / NXP catalog, they have some awesome LED drivers, if you don't mind semi-difficult smt packages.
 
64x16 is a small size.You are messing up with adding more shift registers to your design.You need only 8 registers to drive 64 columns & 2 registers to drive the rows.

For 64 columns even a column scan would fine.But a row scan more suitable.

Before stopping ghosting you need to stop the flicker.For that You need to drive your entire display at a rate of 60Hz.1/16th give you a decent brightness if you do a row scan.You need to show an entire row for 1mS time to make a 60Hz refresh rate.This will stop your flicker.
 
Last edited:
inertia,

There may be several problems with your current design. Here are a few suggestions;

(1) You should be scanning rows for a 1/16th LED duty cycle. It sounds like you're doing this.
(2) You should be using high current sinking row drivers instead of 74HC595 outputs on the rows.
(3) The "ghosting" you mention is usually caused by not blanking the display during the switchover to a new row. This may be difficult to do since you're using 74HC595's driving the rows. You might consider driving the OE (Output Enable) lines on the '595 row drivers so that you can turn off the display for a few instruction cycles during the switchover.
(4) Your driver software may be taking too long to update each row. Updating each of the 16 rows at 1-msec intervals would yield a 62.5-Hz refresh rate. Higher refresh rates are better if you're doing animation because you should synchronize display updates to the "frame rate" to avoid unwanted visual artifacts.

If I were designing a 16x64 display I would do it as shown in the attached drawing. This is a 1/8th duty cycle design so it 'paints' 128 LED columns during each of the eight row scans. This uses twice as many 74HC595 sourcing drivers but the 32-ma "peak" current available from each 74HC595 output would provide approximately 4-ma "average" current per LED which should be much brighter than the 2-ma "average" current per LED that you would get from a 1/16th duty cycle design. Unfortunately, this also means that the total current required if you were to light up all 128 LEDs in each row is a whopping 4-amps compared to 2-amps for a 1/16th duty cycle design.

While this example design uses my MacMux interface which retasks the row driver lines temporarliy to load the shift-registers in parallel during the display blanking interval, you could certainly daisy-chain the the shift registers and drive them with three seperate lines to send the 128 bit column data during each row scan interval.

Good luck with your project.

Kind regards, Mike, K8LH
 

Attachments

  • MacMux™ 8x128 Matrix.PNG
    MacMux™ 8x128 Matrix.PNG
    56.8 KB · Views: 17,671
Last edited:
Hello all,

I have been working on trying to get this large led matrix that I have working which is 64x16.

The 16 rows are attached to the (-) of the leds in the row and the 64 columns attach to the (+) of each led in the column.

I have an arduino and a ton of shift registers already so I decided to try that out. I have ten 74hc595 shift registers controlling the 64 columns.

I also have two more 74hc595 to control the grounds. They are attached to 16 transistors.

I currently can easily control any given row and in any way but when i try and go through the rows to display one solid image over the entire matrix I get ridiculous flickering and ghosting.

Right now the 12 shift registers are all chained so the first 2 registers are the ones for the grounds and the rest are to drive the leds high.

I need to ensure a strong brightness and smooth animation since this display will be viewed heavily.

Am I moving in the right direction? Or is there a better way of accomplishing this.

Thank you in advance for any help.

https://www.electro-tech-online.com/custompdfs/2010/07/sn74abt574a.pdf

your problem IS your shift register ... you can not get rid of the dim flicker if you can not get the frame rate above 60Hz and the duty cycle less than 10%. Use the above chip BYTE serial COMMON ANODE to get 60-100mA into your array direct drive (no buffers) to ground. The HC595 is bit serial and can only supply 10-20mA per pin and is rated at 50mA total.

I have easily driven a 16x80 array using these chips.

Dan
 
Last edited:
I know this is an old thread but for knowledge based it doesn't matter.

Hi mike

I do a row scan similar to your method but not a macmux concept.I see you are adding NFET cathode row drivers to the rows.I'm using a ULN2003 to the rows & never used FETs yet.

Do you highly recommend to use NFETs to the rows instead of poor BJTs?

Because I had some issues on using BJTs for row side.When you display a character the background LED's are lit, this is not ghosting or turning off issues on the previous row.This happens by the row side BJTs.

When you turn off the BJT (ULN2003) its output will be float so there is much a chance to turn ON the LED for a small amount (because from another rows pixel the positive will comes via 595).That seems the background bit lighting.
 
Last edited:
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top