TLC5940 Dropped Output

For a while now I have been trying to create an LED light bar using the Arduino and a TLC5940. However, the TLC's keep going belly up. They work just fine for a few minutes and then the LEDs become very dim and (when a nightrider style light program is running) turn on and off at times when the shouldn't. After a few seconds of this, the LEDs fade completely to the point that I can't see them at all. I do not get what is happening. The chip isn't getting hot, I have deca-checked my design, and I am only running the LED clusters at 12V @ 20mA. Has anyone ever heard of this happening before? Does anyone know hot to correct this? And are my two 'dead' chips recoverable?

Ethan

Are you using decoupling caps?

I had a similar problem when I was driving a 8x8 RGB LED matrix all pixels at a range of PWM values from 0 to 100% (first tests - didn't know NOT do do this) via two TLC5940's (24 channels total) - the chips did get hot and then, the one that was driving 16 channels would die on me. The one that was driving 8 channels lived. Figured out that problem pretty quickly. For me, though, the chips got HOT and it was obvious. Not sure what went wrong on you. My dead chips never started working again. When I set the PWM to range from 0% to 50% it seems to run fine, even when driving all pixels. (this matrix: http://imall.iteadstudio.com/electronic-components/leds/led-matrix/im120601006.html)

Matchlighter:
I am only running the LED clusters at 12V @ 20mA.

How are you setting the current and what voltage are the LED clusters dropping, off that 12V?

It's a TLC5940, you set the current via a resistor on the TLC5940 itself and hook the cathodes of the displays to the TLC5940. If you are using a matrix you have to control the top side of the matrix as well using PNP/P-channel transistors or MIC5891 or whatever. If you are just controlling 16 individual LEDs you just connect the anode to +V.

"I am only running the LED clusters at 12V @ 20mA"

The resistor sets channel maximum current, not "cluster" current. There are 16 channels. 16 channels @ 20mA @ 100% PWM = 320mA. Free air maximum output current for the package is 130mA, supposedly. I am not good at reading these parts of the specs sheets, can someone take a second look at this?

But you say it is not getting hot. Mine were definitely getting hot while I abused them.

Hey, read this:

Read them all, but this is the most important since you are running at high voltage. What is the voltage drop across your LEDs?

  1. Heat dissipation

To drive a LED with a constant current chip, you hook the + side of the LED up to an input voltage, and the - side (cathode) to the chip, which is connected to ground. This means that the full input voltage must be dissipated in the LED + the chip, and since the LED basically dissipates a constant voltage, the TLC59xx chip dissipates the rest as heat. At 80mA (or even 20mA with the small packages provided), you can't just provide 12v for a single 3v LED. Do that and you'll let the smoke out :slight_smile: essentially instantly. Instead, you need to provide a voltage that is about 1.5v above what the LED uses.

This issue is true for all multi-channel constant current LED drivers but is amplified by the high current and small size of the TLC family.

The problem gets worse when you are using multicolored LEDs, since red LEDs drop less voltage then blue. To really drive your LEDs at the maximum current you may need to drop the voltages to all the red LEDs further then the green and blue channels. It would likely be the most efficient to use a separate switched power supply, but a quick and cheap way to do it is to make lower voltage power source by putting a couple of 3amp diodes (they .7 volts) in series/parallel to meet your desired voltage drop and current requirements.

Sorry I haven't followed my own thread here. I expect to get email updates... Anyway, each LED is 3.2-3.6v, so together that is 9.6-10.8v. Is that enough for the DIP version of the chip to be overheating? Also, if I remember correctly, I don't remember the chip being hot. Nor do I remember running more than one cluster at a time when the chips stopped working. However, I am probably wrong. I guess it's time to break out the transistors and external resistors again...

Ethan

P.S. Thanks for the link. I will have to look at it more in depth when I get some time.

Yes, quite enough. The absolute maximum settings is 6v. There is a table that says "Absolute Maximum Settings". Unless you want to blow you chip up, I would recommend staying below those maximum settings.

funkyguy4000:
Yes, quite enough. The absolute maximum settings is 6v. There is a table that says "Absolute Maximum Settings".

That's for VCC and not for the chip's outputs. The outputs are rated to 18V.

Again, sorry for the belated post. adds direct bookmark

JoeN:

[quote author=James C4S link=topic=115212.msg870019#msg870019 date=1343083519]

Matchlighter:
I am only running the LED clusters at 12V @ 20mA.

How are you setting the current and what voltage are the LED clusters dropping, off that 12V?

It's a TLC5940, you set the current via a resistor on the TLC5940 itself and hook the cathodes of the displays to the TLC5940. If you are using a matrix you have to control the top side of the matrix as well using PNP/P-channel transistors or MIC5891 or whatever. If you are just controlling 16 individual LEDs you just connect the anode to +V.

"I am only running the LED clusters at 12V @ 20mA"

The resistor sets channel maximum current, not "cluster" current. There are 16 channels. 16 channels @ 20mA @ 100% PWM = 320mA. Free air maximum output current for the package is 130mA, supposedly. I am not good at reading these parts of the specs sheets, can someone take a second look at this?

But you say it is not getting hot. Mine were definitely getting hot while I abused them.
[/quote]

By 'cluster' I mean 3 LEDs in sequence. So +12V -> LED -> LED -> LED -> TLC5940. This is essentially the same as one LED, right?

Ok, that's what I thought. This is strange. Is it possible I just got a bad sample?

Matchlighter:
Sorry I haven't followed my own thread here. I expect to get email updates... Anyway, each LED is 3.2-3.6v, so together that is 9.6-10.8v. Is that enough for the DIP version of the chip to be overheating? Also, if I remember correctly, I don't remember the chip being hot. Nor do I remember running more than one cluster at a time when the chips stopped working. However, I am probably wrong. I guess it's time to break out the transistors and external resistors again...

If the voltage drop in the chip is 10.1 volts on average, and you are using all 16 outputs, and each one is set for 20mA, then at full intensity the power dissipated in the chip is 10.1160.02 = 3.2W plus a bit more for the logic in the chip. That's well above the chip's rating of 2.45W at 25C and below. The chip will have been getting very hot indeed, until the point where it burned out.

You need to use a lower LED supply voltage. If your maximum LED voltage drop is 3.6V and maximum current is 20mA, then 4V to 5V would be about right. I suggest dropping the 12V to 5V with a switching regulator.

[EDIT: the above was incorrect, I misread the LED voltage drop as the chip voltage drop.]

To get email updates, follow the Profile link at the top of this page.

That doesn't mean you can run all 16 inputs at 18V continuously without the chip getting hot.

However, the TLC's keep going belly up.

I do not know what the problem is. But I know for sure it is neither your hardware nor software design. So look somewhere else.

If the chip is not getting hot then what about the power supply you are driving it from. It could be that this is shutting down. Make sure the ground of this supply is connected to th ground of the TLC chip and that that is connected to the arduino ground.

Just double/triple check your wiring, I've found that is usually my problem, especially with the 5940's

Grumpy_Mike:
If the chip is not getting hot then what about the power supply you are driving it from. It could be that this is shutting down. Make sure the ground of this supply is connected to th ground of the TLC chip and that that is connected to the arduino ground.

I think I can rule that out. I have taken the chips and put them back in a breadboard design (that worked before) and they exhibit the same behavior.

I am getting confusing reports here. Some say that I am within tolerance, and some say I am far out of it. What is the case here? Should I just invest in some PNP transistors and resistors to drive the LEDs?

You do not need to get the transistors, if you are driving the light bars at 12V at 20mA, you should be fine as long as the light bars are made up of 4 or 5 leds, your voltage drop should be enough for the tlc5940 to handle.

funkyguy4000:
You do not need to get the transistors, if you are driving the light bars at 12V at 20mA, you should be fine as long as the light bars are made up of 4 or 5 leds, your voltage drop should be enough for the tlc5940 to handle.

So basically you are saying that 2V per channel is too much? That is not enough to drive a 4th LED. Should I just use a 100R resistor between the TLC and the LEDs?

Matchlighter:
I am getting confusing reports here. Some say that I am within tolerance, and some say I am far out of it.

That is the nature of a free support forum. You sometimes get people answering questions with only bits of understanding. Most people do not understand how the TLC5940 works and give (sometimes very) bad advice.

Matchlighter:
Should I just use a 100R resistor between the TLC and the LEDs?

Absolutely not. That's what the Iref pin does, it sets the current limit.

The TLC5940 is a constant current source. It will act like a resistor to limit or allow current to flow, based on the Iref pin. There is a forumla that is used to determine the current based on an internal voltage reference and the resistor being used.

The 5940 does NOT provide a voltage on its output pins. So your voltage supply must be large enough to drop the forward voltage of all of the LEDs connected to a channel AND leave some small voltage drop for the output of the 5940. Otherwise, it will not be able to limit current correctly.

I am not sure I understand how you are wiring up your LEDs. Could you please provide a diagram of how your LEDs are connected to the TLC5940 and what resistor value you are using for Iref?

Here.