Using 8X8 RGB LED Matrix - Occasionally a row burns out, is there something I'm missing?

Thread Starter

Mahonroy

Joined Oct 21, 2014
406
Hey guys,
I am using an 8X8 RGB LED Matrix as a single color panel. Occasionally when I first start up the device for the first time, blue row #3 burns out. I have a feeling it has to do with how I have the resistors set up. I'm almost wondering if there is a chance that not all LED's come on at the same time, thus more power goes into the LED's for a split second causing a failure? I don't know, I'm a bit lost.

Here is info on the 8x8 RGB LED matrix:


http://www.vetco.net/catalog/produc...1zyw6DL2MEXTZWIpFl3Q1Oaab-k1kAIEW1xoC7_bw_wcB
https://www.sparkfun.com/datasheets/Components/YSM-2388CRGBC.pdf

And here is a schematic showing how I have it wired up:
8x8_rgb_led_matrix_question.jpg

I am basically just sending PWM to the transistors to control the color/intensity of the light panel. I have to use the +12V rail as its the only rail available on the board that has enough available current. I was trying to minimize the amount of components needed, and currently I am using 24x 220 ohm resistors to limit current to the LED's. I was hoping I could get away with a resistor array chip or something to cut down on the amount of components but they don't seem to be rated for enough wattage?

What do you guys think? Any help or advice is greatly appreciated, thanks!
 

djsfantasi

Joined Apr 11, 2010
9,156
You're going to calculate different resistor values for each color. I noticed the datasheet recommended a 220Ω resistor for green and blue AT 5VDC. You're running at 12V. I can't do the calculations now, but recommend that you do.
 

dl324

Joined Mar 30, 2015
16,839
You are driving the LEDs improperly. With all of the common anodes tied to 12V, all of the LEDs in a column are connected in parallel. If the LEDs don't have identical forward voltages, which is unlikely, the one with the lowest forward voltage will draw more current. If it fails, you could have a cascading failure.

You should be driving the rows individually, not simultaneously.
 

Thread Starter

Mahonroy

Joined Oct 21, 2014
406
So it turns out I was under the wrong assumption... the problem ended up being a defect in the PCB! Sorry about that, it took me a while to find, this was the last thing I would of thought went wrong so was certain it was something else:
20160203_155919_resized.jpg

But to continue on the discussion on the resistors... I had thought I calculated the resistance properly using an online resistor LED in parallel calculator... may not be the case.

Do you think I should be using a single resistor per individual LED? Thats soo many components to put on the board... surely there has to be a better way?

Thanks again guys for the help!
 

dl324

Joined Mar 30, 2015
16,839
Even if you multiplexed the rows as intended for this display, you're driving the LEDs too hard. Max current for all three colors is is 20mA DC or 30mA at 10KHz, 10% duty cycle. You are driving the red at 45mA.

What you have now is sufficient; once you address peak current and only drive one row at a time.
 

Thread Starter

Mahonroy

Joined Oct 21, 2014
406
Can someone work out the math with me here to see what an appropriate resistor should be?
According to the schematic, there are 8x LED's in parallel with a single resistor. (this is for a column on the LED matrix).

12V source, 2.0 voltage drop for LED, only 5ma per LED.

I am using this (LEDs in parallel calculator):
http://www.hebeiltd.com.cn/?p=zz.led.resistor.calculator#parallel

Using the above calculator I am getting between 200 and 400 ohms for that single resistor.... which correlates with the resistors I chose.

It also mentions that I need a 1/2 watt resistor for this... but even experimenting and using a 1/4 watt resistor and the resistor does not even get warm?
 

dl324

Joined Mar 30, 2015
16,839
200 ohms is about right for 5mA; R = V/I = 10V/5mA = 200 ohms.
EDIT: Brain fade; obviously the correct answer is 2K...

But when you're multiplexing LEDs you need to drive them at a higher current so average luminous intensity will be high enough.

P = IV, so 5mA*10V = 50mW; you could use 1/8W resistors...

The information from that site for driving LEDs in parallel is bogus. You should never use them like that because the one with the highest forward voltage will hog current.
Never do this... upload_2016-2-8_14-7-18.png
 
Last edited:

Thread Starter

Mahonroy

Joined Oct 21, 2014
406
200 ohms is about right for 5mA; R = V/I = 10V/5mA = 200 ohms.

But when you're multiplexing LEDs you need to drive them at a higher current so average luminous intensity will be high enough.

P = IV, so 5mA*10V = 50mW; you could use 1/8W resistors...

The information from that site for driving LEDs in parallel is bogus. You should never use them like that because the one with the highest forward voltage will hog current.
Never do this... View attachment 100292
The lights seem to be fairly consistent though? Even if they are slightly different... would it matter much? Considering the typical current per LED is 20ma and I'm only running them at 5ma, wouldn't that be a safe enough margin?

Thanks again for the help!
 

dl324

Joined Mar 30, 2015
16,839
For your display, you need to multiplex rows. Since there are 8 rows, the maximum duty factor is 1/8; meaning an LED will be off 7X longer than it's on. To increase average current, which corresponds to luminous intensity, you'd have to increase current to 8X the current you would have used for continuous drive. Since peak current for your display is 30mA with a duty factor of 1/10, you'd need to back off from that value.

To avoid flickering, you need to refresh each LED at a 100Hz rate or higher. That means your minimum multiplex frequency is 800Hz.
 

WBahn

Joined Mar 31, 2012
29,976
The lights seem to be fairly consistent though? Even if they are slightly different... would it matter much? Considering the typical current per LED is 20ma and I'm only running them at 5ma, wouldn't that be a safe enough margin?

Thanks again for the help!
Never run LEDs in parallel. Let me put that a bit differently -- NEVER run LEDs in parallel!

The human eye is pretty insensitive to fairly small differences in light intensity, so you could have significant variation in current from one LED to another and not see much of a difference. But the LEDs DO see a difference. Pick eight LEDs out of a batch and they will have different forward voltages at the same forward current. For any given LED, the more voltage it has across it the more current will flow in it (and vice versa). An increase of something like 20 mV to 50 mV will result in a doubling of the current in the device. So the voltage will be about the same but the power dissipated will double. So when you apply a fixed voltage across the LED's some of them will have more current than the others and the ones that "hog" the current will dissipate more power and heat up. This is where the real problem comes in. For a given LED at a given voltage, as it heats up the current through it will increase. Since the one hogging the current increases the quickest, even more current will flow through it. Since the total current is limited by the single current-limiting resistor that they share, as one LED hogs more current the current in the other LEDs drop and they cool down (or heat at an even slower rate). This can continue until one LED is carrying all the current. This is known as thermal runaway. If it can't handle that current, it fails. But now another LED takes its place as the hog and it fails. Thus proceeds a cascading failure of all the LEDs in that group.

So if you are nominally running 8 LEDs at 5 mA apiece and one of them hogs all the current, it will have 40 mA. So, no, that is not a safe enough margin.
 

WBahn

Joined Mar 31, 2012
29,976
You are driving the LEDs improperly. With all of the common anodes tied to 12V, all of the LEDs in a column are connected in parallel. If the LEDs don't have identical forward voltages, which is unlikely, the one with the lowest forward voltage will draw more current. If it fails, you could have a cascading failure.

You should be driving the rows individually, not simultaneously.
Another option MIGHT be to put in an additional set of resistors in the eight row pins. I think that would mitigate the thermal runaway to some degree, but am not sure that it would completely solve it.
 

Thread Starter

Mahonroy

Joined Oct 21, 2014
406
For your display, you need to multiplex rows. Since there are 8 rows, the maximum duty factor is 1/8; meaning an LED will be off 7X longer than it's on. To increase average current, which corresponds to luminous intensity, you'd have to increase current to 8X the current you would have used for continuous drive. Since peak current for your display is 30mA with a duty factor of 1/10, you'd need to back off from that value.

To avoid flickering, you need to refresh each LED at a 100Hz rate or higher. That means your minimum multiplex frequency is 800Hz.
I am not not running rows with duty factors... the entire panel is displaying the same color the entire time. Sure, the RGB colors are running a duty cycle for intensity purpose, bot rows are not being multiplexed here. It does not mention in the data sheet that its 30mA with a duty factor of 1/10 I think this is incorrect. The data sheet mentions that the LEDs are 20mA normal, 30mA max at 100% duty cycle.
 

Thread Starter

Mahonroy

Joined Oct 21, 2014
406
Never run LEDs in parallel. Let me put that a bit differently -- NEVER run LEDs in parallel!

The human eye is pretty insensitive to fairly small differences in light intensity, so you could have significant variation in current from one LED to another and not see much of a difference. But the LEDs DO see a difference. Pick eight LEDs out of a batch and they will have different forward voltages at the same forward current. For any given LED, the more voltage it has across it the more current will flow in it (and vice versa). An increase of something like 20 mV to 50 mV will result in a doubling of the current in the device. So the voltage will be about the same but the power dissipated will double. So when you apply a fixed voltage across the LED's some of them will have more current than the others and the ones that "hog" the current will dissipate more power and heat up. This is where the real problem comes in. For a given LED at a given voltage, as it heats up the current through it will increase. Since the one hogging the current increases the quickest, even more current will flow through it. Since the total current is limited by the single current-limiting resistor that they share, as one LED hogs more current the current in the other LEDs drop and they cool down (or heat at an even slower rate). This can continue until one LED is carrying all the current. This is known as thermal runaway. If it can't handle that current, it fails. But now another LED takes its place as the hog and it fails. Thus proceeds a cascading failure of all the LEDs in that group.

So if you are nominally running 8 LEDs at 5 mA apiece and one of them hogs all the current, it will have 40 mA. So, no, that is not a safe enough margin.
Since I cannot insert a resistor for each individual LED, are you saying that the only way to accomplish this is by multiplexing the rows/columns at a frequency so they don't run in parallel together?

Another option MIGHT be to put in an additional set of resistors in the eight row pins. I think that would mitigate the thermal runaway to some degree, but am not sure that it would completely solve it.
That makes sense. What is a good way to decide what that resistor value should be, and to adjust the 220s accordingly?

Thanks again!
 

dl324

Joined Mar 30, 2015
16,839
I am not not running rows with duty factors... the entire panel is displaying the same color the entire time.
You can't operate the display at DC. You need to multiplex the rows or you'll be connecting LEDs in parallel with no individual current limiting resistors which is an unwise practice as you've been told several times.
It does not mention in the data sheet that its 30mA with a duty factor of 1/10 I think this is incorrect. The data sheet mentions that the LEDs are 20mA normal, 30mA max at 100% duty cycle.
You are not reading/interpreting the datasheet correctly. Excerpt from the datasheet clearly shows that the 30mA peak forward current is for a duty factor (they say cycle; same thing) of 10%.
upload_2016-2-9_9-16-3.png
 

Thread Starter

Mahonroy

Joined Oct 21, 2014
406
You can't operate the display at DC. You need to multiplex the rows or you'll be connecting LEDs in parallel with no individual current limiting resistors which is an unwise practice as you've been told several times.
You are not reading/interpreting the datasheet correctly. Excerpt from the datasheet clearly shows that the 30mA peak forward current is for a duty factor (they say cycle; same thing) of 10%.
View attachment 100328
Thanks for the response. Yeah I see that now... some of the datasheets show that, and others do not. Wouldn't that imply that the LED would be capable of 300mA under 100% duty cycle though? It just doesn't seem to add up is all.

So the thing is... I am unable to multiplex the rows because I have a single red signal, blue signal, green signal present. (these signals are pulsing grounds to generate colors). I am running them through inverters, then into transistors, then into the LED panel to generate the color panel. There is no microcontroller here to multiplex the rows at different frequencies.

Now that I think of it... I wonder if there is a circuit that could be made that would just cycle through all 8 rows by itself (without the use of a micro controller). It just seems a bit over kill if I can get away with placing more resistors on the rows - if I can get away with it without anything cooking. I've had about 10 of these running for several months constantly so far, and nothing has gone haywire yet (with the exception of the one I mentioned above because it turned out there was a short under the soldermask on the PCB).
 

WBahn

Joined Mar 31, 2012
29,976
Thanks for the response. Yeah I see that now... some of the datasheets show that, and others do not. Wouldn't that imply that the LED would be capable of 300mA under 100% duty cycle though? It just doesn't seem to add up is all.
Huh? How are you getting that? At 100% duty cycle the limit is LESS than the 30 mA. Imagine putting your hand on something that is hot enough so that you can only keep your hand there for one second before having to take your hand off and let it cool down for four seconds before repeating. So your hand has a 20% duty cycle at whatever thermal power the object has. What you are saying about the LED would imply that if you increase the temperature of the object that you will somehow be able to hold your hand on it longer. Does that make any sense at all?

So the thing is... I am unable to multiplex the rows because I have a single red signal, blue signal, green signal present. (these signals are pulsing grounds to generate colors). I am running them through inverters, then into transistors, then into the LED panel to generate the color panel. There is no microcontroller here to multiplex the rows at different frequencies.

Now that I think of it... I wonder if there is a circuit that could be made that would just cycle through all 8 rows by itself (without the use of a micro controller). It just seems a bit over kill if I can get away with placing more resistors on the rows - if I can get away with it without anything cooking. I've had about 10 of these running for several months constantly so far, and nothing has gone haywire yet (with the exception of the one I mentioned above because it turned out there was a short under the soldermask on the PCB).
Sometimes it comes down to "you gotta do whatcha gotta do." If the behavior of the panels is acceptable to you when running them in a manner that you shouldn't and you are comfortable with the risk and consequences if and when they fail as a result, then go for it. You might at least put resistors in each of the row pins. It should at least help.
 

dl324

Joined Mar 30, 2015
16,839
Yeah I see that now... some of the datasheets show that, and others do not.
All datasheets should provide conditions at which peak current won't damage the device. Here's the information from a datasheet I opened at random (OSRAM white surface mount):
upload_2016-2-9_9-51-7.png
This datasheet specifies maximum pulse duration (10uS or less) and the repetition rate.

Wouldn't that imply that the LED would be capable of 300mA under 100% duty cycle though? It just doesn't seem to add up is all.
That makes no sense. The datasheet clearly indicates the conditions when 30mA is allowed. Continuous forward current is 20mA, not 300mA.
So the thing is... I am unable to multiplex the rows because I have a single red signal, blue signal, green signal present. (these signals are pulsing grounds to generate colors). I am running them through inverters, then into transistors, then into the LED panel to generate the color panel. There is no microcontroller here to multiplex the rows at different frequencies.
You have to multiplex the rows or risk burning out LEDs.
Now that I think of it... I wonder if there is a circuit that could be made that would just cycle through all 8 rows by itself (without the use of a micro controller). It just seems a bit over kill if I can get away with placing more resistors on the rows - if I can get away with it without anything cooking. I've had about 10 of these running for several months constantly so far, and nothing has gone haywire yet (with the exception of the one I mentioned above because it turned out there was a short under the soldermask on the PCB).
If this is a hobby circuit and you're not selling them, you can just about do whatever you want.

If you were selling this and offering a warranty, you should reconsider using components in a manner that would likely cause premature failure.

Lifetimes for LEDs operated within specs are measured in 10's to 100's of thousands of hours; and failure mode is usually decreased light output. If you run LEDs in parallel without proper current limiting for each LED, the failure mode will be no light.
 
Last edited:

Thread Starter

Mahonroy

Joined Oct 21, 2014
406
So take a look at these 2x datasheets:
http://www.betlux.com/product/led_dot_matrix/BL-M23A881XXX.PDF
http://www.seeedstudio.com/depot/datasheet/2088RGBMatrix.pdf

It mentions that 30mA under continuous operation, and 150mA under 1/10 duty cycle. This is where my confusion came into play. There is just a lot of inconsistency between these datasheets it seems. I have several versions from different vendors and they are all identical, but they each have their own version of the datasheet it seems.

So the two best solutions seem to be this:

1. Multiplexing without using a microcontroller:
Is this possible? I've been googling different terms to see if I can find a circuit that makes sense, but I'm not sure I'm looking in the right direction. Is it feasible to use something like a 555 timer and a shift register to accomplish this? What else should I be searching for?

Basically I am picturing a chip that has 11 useable pins: VCC, GND, CLK, SELECT1, SELECT2, SELECT3, SELECT4, SELECT5, SELECT6, SELECT7, SELECT8. Connecting a 555 timer up to the CLK, and the select will cycle from 1 through 8. I don't know what this chip might be called, but this would accomplish this if it exists wouldn't it?

2. Placing 8x extra resistors on the row pins:
This should increase the safety margin and I understand this is not the best method. How can I determine what resistors to use in this case?

Thanks again guys for all the help!
 

dl324

Joined Mar 30, 2015
16,839
So take a look at these 2x datasheets:
http://www.betlux.com/product/led_dot_matrix/BL-M23A881XXX.PDF
http://www.seeedstudio.com/depot/datasheet/2088RGBMatrix.pdf

It mentions that 30mA under continuous operation, and 150mA under 1/10 duty cycle. This is where my confusion came into play. There is just a lot of inconsistency between these datasheets it seems. I have several versions from different vendors and they are all identical, but they each have their own version of the datasheet it seems.
Are those datasheets for the same display? If not, you can't use them for comparison. Manufacturers specify parameters for their products, not the products of others.
1. Multiplexing without using a microcontroller:
Is this possible? I've been googling different terms to see if I can find a circuit that makes sense, but I'm not sure I'm looking in the right direction. Is it feasible to use something like a 555 timer and a shift register to accomplish this? What else should I be searching for?
If you just want a circuit that will multiplex 8 rows, you just need an oscillator, octal counter, and a decoder.

Using a shift register is more complicated than you think. You need to have a way to initialize the register so that one, and only one, row will be turned on at the same time. A shift register alone can't do that.
 

WBahn

Joined Mar 31, 2012
29,976
So take a look at these 2x datasheets:
http://www.betlux.com/product/led_dot_matrix/BL-M23A881XXX.PDF
http://www.seeedstudio.com/depot/datasheet/2088RGBMatrix.pdf

It mentions that 30mA under continuous operation, and 150mA under 1/10 duty cycle. This is where my confusion came into play. There is just a lot of inconsistency between these datasheets it seems. I have several versions from different vendors and they are all identical, but they each have their own version of the datasheet it seems.
What is your basis for saying that they are all identical? Are they from the same manufacturer with the same part number? If not, then they just happen to have the same pinout and functionality. You need to use the datasheet for the specific part that you are actually using.

1. Multiplexing without using a microcontroller:
Is this possible? I've been googling different terms to see if I can find a circuit that makes sense, but I'm not sure I'm looking in the right direction. Is it feasible to use something like a 555 timer and a shift register to accomplish this? What else should I be searching for?

Basically I am picturing a chip that has 11 useable pins: VCC, GND, CLK, SELECT1, SELECT2, SELECT3, SELECT4, SELECT5, SELECT6, SELECT7, SELECT8. Connecting a 555 timer up to the CLK, and the select will cycle from 1 through 8. I don't know what this chip might be called, but this would accomplish this if it exists wouldn't it?
The circuit you are looking for involves a counter and a decoder. If you have one more available pin on the MCU you can make it synchronous and do away with the 555 (or whatever other clock circuit you might otherwise need).

2. Placing 8x extra resistors on the row pins:
This should increase the safety margin and I understand this is not the best method. How can I determine what resistors to use in this case?
Just figure out how much current you want in each color LED and then map out how much current each resistor will carry and then determine how much voltage you want to drop across each resistor. Then it's a simple matter of applying Ohm's Law.
 
Top