Controlling 750 WS2812B LEDs with Arduino Mega


I'm having an issue with WS2812B LEDs. In my project I control lots of LEDs in my living room, which can be controlled via a 7 inch touchscreen.

After the built everything works fine, except the LEDs are failing more often than not, needing them to be replaced.

The strip is powered at the ends and every 5m by two 5V 26A power supplies to get all LEDs to have about the same voltage when fully enlightend, so each LED shines in a nice white light.
The data pin is secured with a 350Ohm resistor, as recommended from Adafruit.

So the wiring should be fine.
Could there be another reason why the LEDs keep failing that often (maybe software-based)? (About every month one is defect)
Since I have that many LEDs, I bought them from aliexpress, so I guess the quality is not very good, but still they should work longer in my opinion.

Any ideas are appreciated!
Thanks, Max

I don't think the software can be to blame.

So I would say either power supply problems, poor quality leds or overheating. How are the leds mounted? Can they keep cool? Are they attached to something that can carry away the heat? Can convection airflow move hot air away from the strip? It would be good to get a 'scope on the power lines to check for stability or voltage spikes.

Have you got a good big capacitor across the LED's supply?


I think there is an issue with your grounding, leading to a potential difference on the ground line of your strips.

How do you have the power wired?

You have two power supplies, are there grounds tied together? Is the arduino's ground tied to those power supplies? You should power the arduino from those power supplies as well so that no voltage can be applied to the data line without power to the strips, as that can damage them.

You should try to keep all grounds running parallel with your data, and * based on what i've managed to gather from google, take this advice at your own risk * Where you inject power you could "cut" the pcb traces on the strips so that each "injection" of power is independent from the strip.

You should have a big cap, like Grumpy says, and also a 350ohm resistor between the arduino and the data-in of your strips.

I've bought about 50m of ws2801's from aliexpress and they are still shining bright; i doubt the quality is the issue.

I'd recommend getting on larger supply. It makes things simpler. You should fuse your power supply at each tap to the LED strip because 12v can be more likely that 120v to cause a fire in some situations.

That is the power supply i used for my lights, but mine are 12v. I'm pretty sure meanwell makes a similar 5v model as well. I put a 60 amp glass fuse right at the output and a 3amp glass fuse each location i injected power, approximately every 5m. With 5v strips, I might would inject power to them every 2.5m...

About every month one is defect

Are we talking about individual LEDs here that could be anywhere in the strip or are we talking about whole strips?

If it is a whole strip then maybe it is just the first one that is failing. Try cutting off the first LED and see if the strip springs to life again. That would indicate it is something wrong with your input signal.

If it is an LED mid strip or a strip that works up to one point, then it is more likely to be heat related. Again cut out the first LED where the strip stops working and see if the rest start working.

Thanks to you all for your responses!

I also think that the software should not be the issue.
Honestly I'm not sure if I connected the grounds to each other, since it's been a while when I was last working on that project - but tomorrow I take a closer look at that and add the ground wires if needed. (I think that's the winning clue here :slight_smile: )

Concerning capacitors:
I only have a 1000µF on each end, but not more - should i add some in between?

Concerning heatflow:
The strip is mounted about 20cm under the ceiling facing up, but the surrounding air should be able to transfer the (already little) heat via convection. The individual LEDs don't heat up very much, even after hours on full load.

Concerning power supply:
Thanks for the link, I already use two Meanwell SNT RS 150W 5V 26A. I've trimmed them to a slightly higher voltage of 5.something to reduce their noise emission. But on load the voltage falls again a bit below 5V, so that should not be an issue either, I guess.

It only happened that one individual LED is defect, after replacing it the whole strip works peferctly fine. So there's a high chance that voltage spikes (coming from the lack of ground wires?) are to blame for destroying a (more or less random) LED in the whole strip.

I also noticed that if the strip is not refreshed after some time, the first 10 LEDs or so start to behave strangely, especially when the strip is turned off from the software, but still connected to the power supplies. Why is that?

I'll get back to you guys with any news and thanks again!
Greets, Max

I don't have any fuses but I installed the 350Ohm resistor.

The control panel and therefore the Arduino is placed about 3m away from the first LED, and I used pretty thin wires (0.14mm I think) to connect to them - they will be replaced with bigger ones, but the length cannot be reduced. But again, I will exchange all these wires and add the ground connections, I hope from then on it works longer than one month or two :wink:

Is it always the same LED? (eg, the first one?)

Is the Arduino powered from the same power supply as the strips (or have you ensured that the arduino will not come on if there is no power to the LED strips).

The fuses are not the issue, that is a safety thing. But, safety third.

If an LED fails then do all the LEDs after that fail or do the ones further down the strip keep on working. Each LED regenerates the data signal so of an LED is out but all the other LEDs keep on working, that device is only partially broken, the LED or LED driver part. This would suggest heat damage to me.

It isn't always the same led, and the strip after the broken led doesn't get any signal. The Arduino is powered via a separate supply.

you should power the leds and the arduino from the same supply so that the arduino power supply can't be on while the led power supply is off. That can damage the leds.

So if I want to turn the LEDs off, but the Arduino must be on power to deal with other things, I need to keep the LEDs on power as well?
The problem there is that at the beginning of the strip, as already mentioned, some LEDs are acting strangely and blinking randomly.

you should power the leds and the arduino from the same supply so that the arduino power supply can't be on while the led power supply is off. That can damage the leds.

It can only damage the first LED, once the signal passes that the it gets regenerated.

So if I want to turn the LEDs off, but the Arduino must be on power to deal with other things, I need to keep the LEDs on power as well?

Yes what is the problem with that if all the LEDs are re is only a few mA current drain. If you must disconnect the power then make the Arduino output driving the strip into an input first.

However it look to me like either a heat related problem or poor quality strips.

Ok so I now I got to the place of built and exchanged the damaged LEDs. Interessingly, the broken one was the last one which was lit, that means the data output of the last LED is defect.

I also added the cable to connect the grounds from the supplies.

Additionally, sometimes the signal won't pass a certain LED, but if the signal is sent again it passes. All in all it seems to me the LEDs have poor quality - at least I'm out of ideas of what else I can do.
In another project I use about 120 of these LEDs, and they never failed there. But they were manufactured by a different (but still chinese I think) company.

Which strips do you recommend? The cheap ones from Amazon (not Aliexpress, i was wrong there) won't do the job right...

Thanks again!

Just throwing this out there..

Data signal degradation over such a long length !

If the signal becomes corrupted it could leave one LED going full power RGB and burn it out.
I know this burnout was mentioned in another forum (not arduino) and it seemed to affect both good quality and cheaper Chinese ones.

I know somebody suggested moving the signal feed to centre but I don't think that would apply for an Arduino ?

Another random thought would be something like a terminator ? or a signal booster of some description ?

Haven't looked to see what people with larger installations do so cant be 100% sure.


I have a very large display of ws2801 strips of approximately 900 leds. They are all controlled from two esp8266 pins

Video of my setup

You cannot put the data line in the center, as these strips have a data in and a data out. The leds also regenerate the signal over each led, so there is little degredation of the signal. If you have a strip, then a long run of wires, then some more strip, you can get noise that can damage the leds, however.

Honestly, i don't think it is heat either. I have 60 leds/mm strip and i have no issues with heat despite being installed outside where it gets up to 100F air temp. I'm not sure about poor quality either just because i doubt there are a lot of manufactures of these strips. It's possible someone got a hold of the reject bin and pulled these out... but i've gotten plenty of different strips off aliexpress and have had zero issues.

I think we need a picture or video of the set up.

know somebody suggested moving the signal feed to centre but I don't think that would apply for an Arduino ?

What a silly idea, then the strip would consist of two mirror imaged halfs.

The data signal is regenerated at each LED so it does not degrade like a long signal line would.

@ Grumpy

Like I said Was something suggested elsewhere that's why I used the "but I don't think that would apply for an Arduino ? "

I consider changing the signalcable from the existing 1.00mm^2 to a shielded one. That should make a difference shouldn't it?
Since it's about 4-5m long...

It certainly would do no harm using a shorter cable with shielding.