How common is it for addressable LED strips to distort the color with distance?

Hey folks, sorry if this is the wrong place to ask, or if this is a super obvious question. I'm relatively new to this.

I recently bought a WS2812B LED strip with around 300 LEDs, and when I set its color to plain white, it got white at the start of it but as it goes on it became more and more orange ish.

#include <FastLED.h>

#define NUM_LEDS 300
#define LED_PIN 4

void updateLed() {
  FastLED.showColor(CRGB(255,255,255));
}

void setup() {
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
  FastLED.addLeds<WS2812B, LED_PIN, GRB>(nullptr, NUM_LEDS).setCorrection(TypicalLEDStrip);
}

void loop() {
  updateLed();
  delay(10000);
}

I connected the strip and the arduino to a 5v 10a power supply, and i put a 450 ohm resistor between the D4 pin and the strip's data pin. I never connected the arduino to my laptop and the power supply at the same time, or powered the led from my laptop's usb cable.

Also, what's weird is that when i measured the voltage at the start, it was 5.03v and it gets down to 2.51v at the end, without any modification that I did to it. I think it drops because it runs on max load, but I'm not sure because I don't know that much about math in electricity. I'm puzzled why does its still operative, though. The datasheet says the lowest operating voltage is 4.5v or something and if I power it with only 4v it wouldn't work.

I also tried setting different correction levels with FastLED, but I dont think it has anything to do with this issue? I glanced through the documentation and it doesn't mention about the issue I'm having. I was still able to guesstimate that it gets the most white if i set it to 0x6035ff, but it distorts it like crazy if i want to display any other color than white.

Did anyone else have this issue when using a WS2812B or other kind of RGBA led? Or knows something about why this is happening here.

Welcome to the forum

There is nothing weird about that. A voltage drop is normal over a distance because of the resistance of the wire.

Have you heard of Ohms Law ?

Try feeding power to both ends of the strip but don't use thin wire. Injecting voltage at intermediate points along the strip is also necessary with very long strips

I think the part that weirded me out was that it was still operational even with such low voltage, not the drop itself.

I did, but I didn't think that the wire's resistance would make such a difference

You also have 300 leds open at safe max, and the WS chip per led drinking from the stream.

Try running them half-bright just to see while you’re wired up?

Adding power and ground points from thick wires or metal frame ground and a power bus bar as @UKHeliBob wrote about.

The issue you're seeing is called red-shift.
Blue LEDs need a higher voltage than red LEDs, so the blue ones are the first ones to go dimmer when the voltage decreases along the strip. Powering the strip at both ends with two supplies (of half the size) is one way to counteract this. Running a thick pair of wires along the strip and connecting it to the strip every couple of metres is another option, but maybe more expensive.
Leo..

1 Like

This topic has a lot of good information on using the WS2812 strips

some good infos as well in adafruit neopixel uberguide

How long is the strip?

It's like the radial circuit commonly used for lighting in domestic situations.
Typically it will be run in 1.0 to 1.5-mm2 solid copper, whereas power, sockets, are run in 2.5-mm2 arranged as a loop, the ring circuit. There's never any harm in oversizing cables other than cost and handling.

Clever things, ring circuits.

Yeah, it does seem to not be an issue when running on 20/255 brightness. I think that @Wawa is right, it is distorted because of the voltage drop.

I'm going to try to inject power on multiple points along the strip tomorrow and see if that would help, I don't have the cables right now to try this.

Its 5 meters with 60 LEDs per meter

Here is an explanation:

This will let you calculate the voltage drop yourself.