LED Matrix Message Board

muntron:
If you breadboard is still attached, you might try an experiment. Set up the display with one LET lit on the first row, two on the second, etc. with 8 on the bottom. Can you see any difference in the brightness of the rows?

I don’t notice any difference with any of the letters I’ve got, so I doubt any difference would be noticed in normal usage. I did try a similar setup a while ago and didn’t see any difference in brightness.

bigglez: In that case, do you suggest I keep on using the shift registers? I’d rather not have them suddenly die, but at the same time I don’t know that I can fit output drivers on?

Alternatively, would [these ([SparkFun] by any more suited? They are larger packages, which might be a pain, but they are also capable of 150mA/channel, 500mA max.

I don’t know if all that would physically fit on the board without going to an SMT version of the uC though…](Shift Register 8-Bit High-Power - TPIC6B595 - COM-00734 - SparkFun Electronics)

So I disagree with bigglez–

If you are using 330 ohm current limiting resistors, then you don’t need the 595s. The AVR is more than capable of driving the 9ma pin load you are using. SFE uses the 595 because they use 100 ohm current limiting resistors and thus need to drive 30ma, which I agree, is above what the AVR can source.

Neither the AVR nor the 595 are speced to deal with the combined current from 8 LEDs @ 9ma on one pin. Its working with the 595 now because of the 1/8th duty cycle (its not actually 1/16th because the same pin is used for two LED rows). It would probably work with the AVR (for a while) for the same reason. However, who knows what would happen over time and should the program crash and leave one row all on, the drivers in either the AVR or 595 would likely fry.

To handle 8 LEDs at once, you need something like the UNL2003 like SFE used to handle the combined current return (or source, depending on how you wire it). If 9ma per LED works for you, then the AVR 164P plus the URL2003 will drive the circuit-- no 595s required and all within spec.

Alternatively you could do it entirely with the AVR if you limit to driving one LED at a time, but not sure it would look very good.

If you want to drive 8 LEDs at 30ma, then something else like the 595 is required. Not sure I would push the AVR to its max at 20ma either (you would need to split pins between ports), but at 9ma I just don’t see an issue.

Vraz:
So I disagree with bigglez–

If you are using 330 ohm current limiting resistors, then you don’t need the 595s. The AVR is more than capable of driving the 9ma pin load you are using. SFE uses the 595 because they use 100 ohm current limiting resistors and thus need to drive 30ma, which I agree, is above what the AVR can source.

Neither the AVR nor the 595 are speced to deal with the combined current from 8 LEDs @ 9ma on one pin. Its working with the 595 now because of the 1/8th duty cycle (its not actually 1/16th because the same pin is used for two LED rows). It would probably work with the AVR (for a while) for the same reason. However, who knows what would happen over time and should the program crash and leave one row all on, the drivers in either the AVR or 595 would likely fry.

To handle 8 LEDs at once, you need something like the UNL2003 like SFE used to handle the combined current return (or source, depending on how you wire it). If 9ma per LED works for you, then the AVR 164P plus the URL2003 will drive the circuit-- no 595s required and all within spec.

Alternatively you could do it entirely with the AVR if you limit to driving one LED at a time, but not sure it would look very good.

If you want to drive 8 LEDs at 30ma, then something else like the 595 is required. Not sure I would push the AVR to its max at 20ma either (you would need to split pins between ports), but at 9ma I just don’t see an issue.

I think the main issue is the return cathode - the cathodes are also controlled, so using the shift registers means the cathode register is sinking at most 8*9 = 72mA current on one channel.

Random:
I don’t notice any difference with any of the letters I’ve got, so I doubt any difference would be noticed in normal usage. I did try a similar setup a while ago and didn’t see any difference in brightness.

Most letters do not light up more than half a row, so if you do not intend on doing graphics, you may be OK.

Alternatively, would [these ([SparkFun] by any more suited? They are larger packages, which might be a pain, but they are also capable of 150mA/channel, 500mA max.
[/quote]For the low side SR these are appropriate. Note that they are still not up to the requirement for the high side. You might be better off using AVR outputs for those.

I do have another question. Are you intending to have multiple 8x8 arrays make up the final display? If you do, you may be better off removing the USB from the backpack and having some master controller for the display. The controller would have the USB and communicate with the backpacks via something like I2C. If one array is you final goal, perhaps you should not limit yourself to the size of the LEDs.](Shift Register 8-Bit High-Power - TPIC6B595 - COM-00734 - SparkFun Electronics)

I am planning on having just the one LED matrix (for now at least - perhaps a future version will extend this!).

If the high power ones still won’t cut the high side, then I guess there’s not much point since the normal ones seem to be fine for the low side.

Greetings Adam, et al.,

muntron:

random:
Alternatively, would [these ([SparkFun] by any more suited? They are larger packages, which might be a pain, but they are also capable of 150mA/channel, 500mA max.[/quote]
For the low side SR these are appropriate. Note that they are still not up to the requirement for the high side. You might be better off using AVR outputs for those.[/quote]

The TPIC6C595 is a great chip and available in SOIC.

It does not have push-pull outputs so it can only sink current.

This would make it ideal for a low side driver in a CC

(Common Cathode) display, where it can easily sink

the rated current of eight LEDs at full brightness.

For the companion high side driver the [74HC595 is popular,

but the spec is only 6mA typical per output as a source.

This is a logic to logic interface spec, so a heavier

load can be driven with reduced output voltage at the

pin. The abs. max. spec is 25mA but that number should
never be used for a design typical spec.

Comments Welcome!](http://focus.ti.com/lit/ds/symlink/sn74hc595.pdf)](Shift Register 8-Bit High-Power - TPIC6B595 - COM-00734 - SparkFun Electronics)

The LEDs are indeed rated at 2V forward, and at 330ohm that’s 6mA - exactly on spec for the 74HC595? (Unless my maths is wrong here…)

As a side thought, though, if the abs. max spec on the shift register is 25mA per channel, and I’m currently driving mine at 8*6=48mA, almost twice the abs. max, where’s the magic smoke? I can’t believe it’d keep on running at twice its abs max for weeks.

Greetings Adam,

Random:
bigglez: In that case, do you suggest I keep on using the shift registers? I’d rather not have them suddenly die, but at the same time I don’t know that I can fit output drivers on?

The TPIC6C595 would be my choice for low side drivers

with a CC (Common Cathode) array.

I would strongly consider the 74HC595 for high side

drivers, knowing they are being driven beyond their

guarenteed source current of 6mA, but below their

abs max rating of 25mA.

There aren’t a lot of options for high side drivers, so

an alternative design would use 74HC595s or AVR

port pins driving PNP transistors for a CA (Common

Anode) array, with more 74HC595 low side drivers

or even TPIC6C595 which has much stronger outputs.

The key here is that you are satisfied with the current

brightness, as your scheme has no room to boost

the current down the road.

Comments Welcome!

I’m definitely happy with the current brightness - I don’t want the LEDs to light anything up, just show a message. I could potentially up the brightness later anyway – if I cut out one colour or the other, I can double the duty cycle of the anodes, although the cathodes would stay the same. I should still be well within spec of the 74HC595s.

Greetings Adam,

Random:
The LEDs are indeed rated at 2V forward, and at 330ohm that’s 6mA - exactly on spec for the 74HC595? (Unless my maths is wrong here…)

The key to understanding this problem is two

characteristics of the drivers in the 'HC595.

Firstly, it’s a logic device which was intended to

drive other logic devices, and as such is spec’d to

6mA. Drawing greater current will cause a larger

voltage droop at the output, compromising the

logic noise margin but not damaging the device.

This voltage drop will lower the current in the LED

as the equivalent output impedance of the driver

is now in series with the external resistor (330R).

Secondly, The device is rated for an abs max

per driver current of 25mA, but individual devices

or those from other vendors may do much better.

The greater concern would be that heavily loaded

outputs would increase the power dissipated, and

toast the device. You might not reach this critical

point with DIP packages (larger mass) or you

may have sufficient heatsinking through the

pins and protoboard not to have a failure.

Random:
As a side thought, though, if the abs. max spec on the shift register is 25mA per channel, and I’m currently driving mine at 8*6=48mA, almost twice the abs. max, where’s the magic smoke? I can’t believe it’d keep on running at twice its abs max for weeks.

Are you sure that's the actual current? I think you'll

find that loading the outputs has dropped the

voltage available to the resistor.

As an experiment measure the voltage across the

330R resistor(s). A dual channel scope would be best

but even a DC meter reading will reveal that the

voltage is not what you expect (5 - 3 = 2V, 2/330 = 6mA).

Comments Welcome!

I’m measuring 0.4V on the greens and 0.3V on the red resistors, but I imagine my multimeter is averaging out the duty cycle, so I don’t think the reading is very accurate :p.

The shift registers don’t warm up at all during operation, and usually I’ve found these chips get warm to the touch before dying?

Greetings Adam,

Random:
I’m measuring 0.4V on the greens and 0.3V on the red resistors, but I imagine my multimeter is averaging out the duty cycle, so I don’t think the reading is very accurate :p.

Nope it's real! The DC meter is measuring the average

current, which is 0.4/330 = 1.2mA over eight time slots.

The LED pulse current is therefore 9.6mA peak.

If you have a second LED matrix, power it from DC with

resistors to get 9.6mA and 1.2mA, and compare the

brightness to MUX’d design. I’m confident you will

get the same intensity at 1.2mA DC as the 9.6mA

pulsed, even though LEDs are said to be more efficient

under pulse conditions.

Random:
The shift registers don’t warm up at all during operation, and usually I’ve found these chips get warm to the touch before dying?

In general, or have you destroyed this particular device?

What is happening is that overheating is a long term

condition that allows heat to build up and the die

will fail at the hot spot. Before total failure the device

may continue to operate, but suffer other failure

(increased leakage current or skewed timing for

example).

Another type of failure is short term overstress where

the device fails but did not get warm to the outside.

The energy to fuse metallization or puncture an oxide

(insulator) layer may spread through the device and only

raise the average temp by a very small amount.

In short, IC failures are not always dramatic, involve

heat, or allow smoke to escape.

Comments Welcome!

bigglez:
Greetings Adam,

Nope it’s real! The DC meter is measuring the average

current, which is 0.4/330 = 1.2mA over eight time slots.

The LED pulse current is therefore 9.6mA peak.

If you have a second LED matrix, power it from DC with

resistors to get 9.6mA and 1.2mA, and compare the

brightness to MUX’d design. I’m confident you will

get the same intensity at 1.2mA DC as the 9.6mA

pulsed, even though LEDs are said to be more efficient

under pulse conditions.

Wow, didn't expect that. I don't have a second LED matrix handy unfortunately, but I'll take your word for it.

I would hope that 9.6mA isn’t too high above the 6mA typ values to damage the chip?

In general, or have you destroyed this particular device?

What is happening is that overheating is a long term

condition that allows heat to build up and the die

will fail at the hot spot. Before total failure the device

may continue to operate, but suffer other failure

(increased leakage current or skewed timing for

example).

Another type of failure is short term overstress where

the device fails but did not get warm to the outside.

The energy to fuse metallization or puncture an oxide

(insulator) layer may spread through the device and only

raise the average temp by a very small amount.

In short, IC failures are not always dramatic, involve

heat, or allow smoke to escape.

I did mean in general, and I take your point about failures without any heating.

Would the safest bet be to just go with two HC74959s for the anodes, and a single high powered shift register for the cathodes?

A few things I want to ask about the high powered SR:

  1. Can I run tracks over the NC pins for completely different signals? This would make routing easier, although admittedly probably isn’t best practise.

  2. It seems to have a lot more pins - however, I believe the extra pins are all GND pins. Must they all be connected?

Thanks!

I’ve run 595s at pretty high numbers - 10 mA per pin at about 50% duty cycle for extended periods of time with minimal heating. I did one run over a 12 hr period and only a few degree rise. If you look at the Fairchild datasheet for the 74HC595, it says 70 mA max on the ground pin, 35 mA per pin max, 20 mA clamp diode max. 500 mW package max for DIP, 400 for SOIC. It’s within his application’s parameters.

What you do see is some droop on the output voltage. I don’t recall the specifics but it was something like 15% or so. It does cause some variation in brightness but it’s not particularly noticeable.

Greetings Adam,

Random:
Wow, didn’t expect that. I don’t have a second LED matrix handy unfortunately, but I’ll take your word for it.

I would hope that 9.6mA isn’t too high above the 6mA typ values to damage the chip?

Probably not. What could happen is if all eight

outputs were logic 1, and loaded to 9.6mA peak,

the total current of 77mA is beyond the device

design spec for pulse current (the average current

remains at 9.6mA).

If you have a 'scope you can see the droop on the

outputs under load. If you only have a DMM you can

do a similar test with a load resistor and drive the output

to a static logic 1 and measure the output voltage with

respect to the chip’s supply. It’s the droop voltage

times the load current that heats the chip.

Random:
Would the safest bet be to just go with two HC74959s for the anodes, and a single high powered shift register for the cathodes?

Sure (assuming its a CC display, and heavy current

is in the low side drivers).

Random:

  1. Can I run tracks over the NC pins for completely different signals? This would make routing easier, although admittedly probably isn’t best practise.

I wouldn’t, just in case those pins are

live. Another brand device may interpret the NC differently… Where are these? (On the LED module?).

Random:
2) It seems to have a lot more pins - however, I believe the extra pins are all GND pins. Must they all be connected?

The TPIC6C595 is 16pins, no NCs. The ground is pin 1, beware! Are you referring to another device? (I’m lost).

Comments Welcome!

I’m referring to this datasheet, which SF provide for their SR:

http://www.sparkfun.com/datasheets/IC/TPIC6B595.pdf

That’s also where the NCs are.

Greetings Adam,

Random:
I’m referring to this datasheet, which SF provide for their SR:

http://www.sparkfun.com/datasheets/IC/TPIC6B595.pdf

That’s also where the NCs are.

We’ve been talking about two different (but similar) parts.

The ‘B’ has a lower RDS(on) which is good, but a larger

footprint. Hence the NC pins. The ‘C’ has a slightly

smaller package (16 instead of 20 pins).

Not that it matters, there is probably a different die

or even a different process in play.

Correction, I should have warned you that ground is
on pin 16 or pin 19 (not pin 1 in my earlier post).

Comments Welcome!

So, with regards to my previous questions, can I route tracks under the NC pins, and do all the grounds or just one need to be connected?

Thanks!

(P.S.: I’ve ordered one of the high powered shift registers, so I guess I’ll get to updating the PCB. Those extra four pins are going to be a pain! Maybe I will try to get my hands on a SMT ATmega…)

Quick update before I go to bed: I may just get all surface mounted parts from Farnell, but it looks like they only take credit cards. I’ll see…

If so, I’ve found the same chips in SOIP (and QFN for the ATmega), so I imagine the circuit should be identical.

Thanks again for all the help so far, you guys have been great!

Random:

NleahciM:
Those planes are completely broken up and thus pretty much useless.

Really? I'm not aware of any other way to make the planes, so I guess that just comes down to having a correct layout before putting them down?
Generally speaking, when routing two layer boards that have a ground layer, you try to route as many traces as possible on one layer so that you have a nearly solid plane on the other layer.

Random:

NleahciM:
The USB lines should be run as a differential pair.

How do you mean? I've never wired a USB connection, so I'm pretty clueless here.
Life lesson here: when you don't know what something means (ie "differential pair") google it. You'll get the information faster, learn more, and irritate fewer people.

Random:

NleahciM:
There are tons of right angles in your traces, as well as many completely unnecessary vias.

Heh, I guess I'll manually route it then.
Good call.

Random:

NleahciM:
The mounting pads for the USB connector should be grounded.

That's a good point, the part for that in Eagle doesn't have connections to ground so I guess I never noticed it.
Eagle footprints are, in general, terrible. Make your own. Always.

Heffo:
For the small amount of distance between the FTDI chip and the socket, I wouldn’t be too concerned with the differential pairing of the USB signal lines. I have hacked up worse with a PIC18F4550 on veroboard and had no issues at all.

Yes - the fact that it worked once guarantees that nobody will ever have any issues with going completely outside of spec. Great advice. It's not like there is [[tons of information](http://www.usb.org/developers/docs/hs_usb_pdg_r1_0.pdf) about proper USB trace routing available on the Internets.](http://www.usb.org/developers/docs/hs_usb_pdg_r1_0.pdf)