WS2813 LED strip glitches after +- 1 hour

Hi,

For a home project I am doing, I planned on using 3 meter WS2813 LED strip with a motion sensor to automatically turn ambient lights on. However, I am having trouble getting the strip to work reliably.

The problems:

  1. The LED strip does not turn on at all when using a 220 or 470 ohm resistor on the data pin.
  2. The LED strip flashes random colors after being on for a while.

My setup is wired up as follows:


The PSU is this exact unit: https://www.conrad.nl/p/mean-well-lpv-100-5-led-transformator-constante-spanning-60-w-0-12-a-5-vdc-niet-dimbaar-pfc-schakeling-overbelasti-1293711
To upload sketches I remove the barrel jack power supply and power the Arduino using my (android) tablet.
The LED strip is mounted on an aluminium rail.

I followed the tutorial on Circuitgeeks the wiring. (I cannot put two links in apparently).

First script ran is the first script from Circuitgeeks.com, three LEDs in red, green and blue turn on only if I remove the 470 ohm resistor on the data pin. Although everywhere the resistor is recommended I cannot get the strip to do anything with the resistor attached. I left this running for around 1,5h to see if it would also glitch. Upon returning, LEDs were off. After resetting everything a couple of times, the three LEDs randomly turn on or off at each reset.

#include <FastLED.h>

#define DATA_PIN    3
#define NUM_LEDS    8
#define BRIGHTNESS  64
#define LED_TYPE    WS2812B
#define COLOR_ORDER GRB

// Define the array of leds
CRGB leds[NUM_LEDS];

#define UPDATES_PER_SECOND 100

void setup() {
  FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
  FastLED.setBrightness(BRIGHTNESS);
}

void loop() {
  // Turn the LED on
  leds[0] = CRGB::Red;
  leds[1] = CRGB::Green;
  leds[2] = CRGB::Blue;
  FastLED.show();
  delay(10);
}

Second script is where the real fun starts.
First attempt I defined NUM_LEDS 178 to turn all the LEDs on. The program ran fine for about an hour, after which the whole strip flashes random colors until I remove the data pin. After resetting everything, the problem persists. After retrying just now, the strip does not turn on at all.

include <FastLED.h>

#define DATA_PIN 3
#define NUM_LEDS 18
#define BRIGHTNESS 64
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB

CRGB leds[NUM_LEDS];

#define UPDATES_PER_SECOND 100


void setup() {
    FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
    FastLED.setBrightness(BRIGHTNESS);
}

void loop() {
        
    for (int i = 0; i < NUM_LEDS; i++) { 
        leds[i] = CRGB::Red; 
        delay(50); 
        FastLED.show(); 
        }
    for (int i = 0; i < NUM_LEDS; i++) { 
        leds[i] = CRGB::Blue; 
        delay(50); 
        FastLED.show(); 
        }
}

//https://www.circuitgeeks.com/ws2812b-addressable-rgb-led-strip-with-arduino/

What am I doing wrong here? Any help would be much appreciated!

I like your circuit diagram, much better than a frizzy picture. I do not follow your power connection to the Arduino. Using the Vin port by soldering wires is OK but you need about 7V and I believe the Androide will give you about 5V. I think getting the arduino upto 5V will solve your problem.

Lesson,
Never mess about with the wiring when a project is powered up. This sounds to me like you have blown up your strip or at best the first led in the strip.

In general if you get a problem after running any project for an hour then something is overheating somewhere. The obvious suspect is you putting 12V into the power jack. The onboard regulator has little in the way of heat sinking and is prone to overheating and shutting down.

Also the strip could be overheating or even the main strip power supply. I have read some bad reports about the reliability of the Meanwell power supplies.

What Arduino are you using? Is it a 5V one?
Are you sure you have a 470R resistor yellow, violet, brown and not any other value?

Partially agree. Since the regulator doesn't power anything but the Arduino, the requirements are little to begin with. If it is an original UNO the heatsink should easily suffice, but if it's a clone...
Regardless of that. There is 5v available, so you could use that.

Hey what kind of chip are you using ? WS2813's require a significantly longer 'break' >250us as stated in the datasheet
And if the break is not sent correctly the strip will not respond.

How far is the Arduino away from the strip, and what type of cable are you using for the data line.

Yes true, but we don’t know the environment he is working in and how the thermal path is between his regulator and ambient.

WS2813 LED strip glitches after +- 1 hour

So which LED do you have?

1 Like

Thanks for all the repies already!

The Arduino shares a ground with the LED strip, but is powered separately through a barrel jack 12V power supply.

I am using a original Arduino Uno Rev3e (sorry, I thought I mentioned it in the drawing, but I didn't). What would be the best way to power the Arduino for prolonged periods? 5V power block with USB cable?
The resistor is indeed yellow violet brown (gold). I also tried a 220 ohm resistor, but did not turn the strip on either.

I am curious what action could have caused me to burn the strip. When switching between with or without resistor I powered everything down of course. Is it running the data line without resistor? Everything (PSU, Arduino & LED strip) is still cool to the touch after running for an hour. It is however an explanation for why letting it rest solves the problem (temporarily)...

I am using a WS2813, but read online that using LED_TYPE WS2812B was sufficient, and in the beginning it was.
I am not sure what you mean by 'break'.
Do you mean that I set the refresh rate too high?
Arduino is about 30-40 cm from the strip and connected using wires from the Adafruit wire spool set with wires of 22AWG / 0.35mm2
The wires between the strip and the PSU are 14 AWG (came with the PSU).

You should study the data sheet for the product you are using. Neopixels need a low signal >= certain length which is indicated in the data sheet in order to stop shifting data and light up the LED

That is possible, i have not looked (and don't intent to anymore) that closely at FastLED library. What is meant by 'break' is the period of time that no signal is being sent. This indicates to the first LED to start receiving. If it worked before, it should still work.

Sounds OK, but is there any reason why you would not just power the Arduino from the same 5v PSU to it's 5v pin ? because i can't think of one and that would for sure be better.

The whole thing actually just sounds like a bad connection somewhere really. how are you plugging the data line into the Arduino ? You probably haven't broken anything and the strip should just skip to the next pixel if the first is broken anyway.
I suggest you disconnect everything and reconnect it all again, using just the 5v PSU and a 470R resistor. If that doesn't work, i have no idea.

Hi, @daantjuhh132
Please measure the voltage from the 12V supply with it unplugged from the UNO.
Then;
Please measure the voltage between the Vin pin and Gnd with the 12V supply plugged in.

What are the specs of your 12v supply?

If your 12V supply is rated at 630mA, and usually these supplies are not regulated, with the lighter load of the UNO, the output could be higher.

Thanks.. Tom... :grinning: :+1: :coffee: :australia:

I got nothing to add to the good advices, but I am compelled to say that your hand drawn schematic is exactly what we need and often ask for, very nice.

There's a lot to be said for pencil and paper. Or colored felt tip pens, whatever. :expressionless:

a7

If that is what you did then that is fine, swapping wires while it is all still running is what causes latch up and potential damage.

The fact that you don’t seem to be able to light the strip with a resistor present in the data line strongly suggests flakey wiring making intermittent connections. That can blow your strip as well.

Why not set your meanwell power supply to spot on 5V, use your volt meter to set it right not just the markings on any dial, and power both your Arduino ( through the 5V pin) and strip from the same power supply.

May be the Arduino's fuse blew?

I found somewhere that connecting a PSU to the 5V pins bypasses all Arduino's build-in protection circuits. The PSU measures 5 to 5.15V. Sadly it has no dial @Grumpy_Mike, would 5.15V exceed safe limits for the Arduino?

I will re-solder everything tomorrow and see if that solves anything. I had a hard time connecting everything, so that might as well be the problem.

No, but I think your better under voting it say 4.8V rather than 5.2V. That is because you are on the safe side and don’t lose anything.

But 5.15v is safely within the limit of the which is 5.5v as far as i know. Wouldn't worry about it.

A picture here might give us a view as well.

Only the one that protects against over voltage on VCC. But eh.. you were OK about removing the current limiting resistor on the data pin ? What about a short between the data pin and VCC.

The series resistor prevents ringing on the data line, The value is pretty irrelevant; anything from 220Ω to 2kΩ because the input to the WS28xx chip is high impedance.

That is the difference between you and me. I would. Why run close to the wind when there is absolutely no need to? It only takes a slight drift to kill things. Clearly you have not done any professional reliability work.

You keep worrying. I think to get it to work i wouldn't worry about it. And where do you get the drift from these days ? all those PSU's are switching capacitor, not double-coil.

Enough, but mind you rarely using 5v strip in combination with a 5v board. If 5.5v is the max 'guaranteed' i am confident it will take a bit more to kill it, but then again i doubt that will happen. Running it below 5v at 4.8v would work fine and of course going below 4.5v won't actually break anything (whereas going over 5.5v might)
When they design these PSU's it is nearly always like that, just a bit over the rated voltage when it is a significant size.

It is in a hard to reach place and the PSU wires are thick compared to the terminals, which made it hard to solder.
Green is data in, white connects Bi to ground.
The Arduino is at the other side of the hole and connects to the green data line and ground.