13

I have a 5 meter strip of 12V digital RGB LEDs. The chip is WS2811 (see photo of IC). There are 50 addresses on the strip.

WS2811 IC

Using the FastLED library, I am able to run the "FirstLight" example that chases full white with a single address at a time, up and down the length. That works fine. So I know they individually perform properly.

However, if I set all LEDs to full white (255), the first few addresses look white but then the higher the address, the more red it is. See photo below. The strip starts in the center of the reel.

All white WS2811 issue

#include <FastLED.h>

// How many leds are in the strip?
#define NUM_LEDS 50

// Data pin that led data will be written out over
#define DATA_PIN 5

// This is an array of leds.  One item for each led in your strip.
CRGB leds[NUM_LEDS];

// This function sets up the ledsand tells the controller about them
void setup() {
    // sanity check delay - allows reprogramming if accidentally blowing power w/leds
    delay(2000);
    Serial.begin(115200);
    Serial.print("### SETUP ###");

      //Both strips are ordered BRG 
      FastLED.addLeds<WS2811, DATA_PIN, BRG>(leds, NUM_LEDS); 
      //FastLED.addLeds<UCS1903, DATA_PIN, BRG>(leds, NUM_LEDS); 

}

void loop() {

   for (int i = 30; i < NUM_LEDS; i++) {

       leds[i] = CRGB::White;

   }

   FastLED.show();
}

To debug, I tried turning on just the last half. The result was still problematic: WS2811 last half

for (int i = 30; i < NUM_LEDS; i++) {

    leds[i] = CRGB::White;

}

I then tried setting all LEDs to white at half brightness, and that looks much better, but the LEDs at the outside are still off-color compared the inside: WS2811 white half brightness


I've tried setting the whole strip to full blue, and that works fine.

I also have another nearly identical LED strip that instead uses the 1903 chip. The same code (initialized for 1903 instead of WS2811) works just fine on the 1903 strip!

Other things I've ruled out:

  • I'm using a bench power supply capable of 5A, this strip pulls less than 1.5A on full white.
  • I have verified the supply holds at 12V
  • I have not let the LEDs heat up while coiled in the reel. I make sure to unplug them after observing their color.

What could cause this on the WS2811 strip while the 1903 strip works perfectly?

0

6 Answers 6

40

I would suspect that it is a voltage drop in the power rails caused by the current draw. Probably cheap construction with copper tracks that are just too thin and so have too high a resistance.

To combat it you will need to inject power into the strip at various points along it. Initially to prove the theory you can try connecting the power to both ends of the strip and see if the "dull" spot is half way along the strip. If it is, then it's certainly a voltage drop. (incidentally, a voltage drop will cause the blue LEDs to fade out first making it go yellow-red. Then the green ones would probably be next, making it go red).

Then, once proved, you will need to add extra power connections into the strip at the middle of any dim sections and feed the voltage directly in at those points.

19
  • 4
    You were right! I connected both ends and the middle was only slightly off-color. I thought that such a simple product couldn't possibly have this issue, and yet here it is. I've never seen such a dramatic drop on such a short strip before.
    – Bort
    Commented Oct 28, 2019 at 0:54
  • 1
    @Bort It certainly looks worse than on my 5V, 5 metre strip with the same number of LEDs. Maybe they skimped on the track size (which is silly because PCB makers don't charge based on the amount of copper)
    – user20574
    Commented Oct 28, 2019 at 8:48
  • 2
    @Matt - Wouldn't the baseline amount of copper change the cost though? Example: Starting with a PCB 1 unit thick of copper and then subtracting, vs starting 3 units thick and then subtracting. While the subtraction doesn't save the buyer money, the initial choice of thickness would, right? Or am I missing something?
    – Bort
    Commented Oct 28, 2019 at 13:41
  • 3
    @Bort Yes, you are correct, thickness changes the cost. I assumed we were just talking about copper trace widths.
    – Matt
    Commented Oct 28, 2019 at 13:43
  • 5
    It's not necessarily cheap construction.. but the ws2811 strips where 3 RGB LEDs are controlled by 1 chip need quite a lot of traces routing on just 1cm of strip width. This in turn limits the width that the two power traces can have, which results in a rather high voltage drop over distance. For this reason, vendors of those strips usually advise to put secondary power injection points after each 1 or 2 meters of strip. This problem is less noticeable with ws2812 LEDs with their integrated controllers, as they can have two rather broad power traces runnng straight along the whole strip.
    – WooShell
    Commented Oct 28, 2019 at 14:55
5

Majenko's answer is correct, and you could also verify it with the test performed.

Since it is an issue I encountered myself in the past in a similar case, I want to share some measurements I took on the LED strip I have, in case it can be useful for you or other people.

Premise: the tests were done with a 5m 60 leds/m RGBW strip (SK6812, natural white).

The first test was done to measure the current from each LED. These are the results:

  • All LEDs off: 230 mA (0.77 mA/led)
  • 10 LEDs to max RED, GREEN or BLUE (one color): 320 mA
  • 10 LEDs to max WHITE: 410 mA

This means that each R, G or B led absorbs at max 9 mA, while the W ones have a 18 mA current. Each LED, whether on or off, has a 0.77 mA current flowing through it.

In order to evaluate the voltage drop, I then turned on to full white the first 100 leds, then measured the current, the input voltage and output voltages of the strip. I got a voltage drop from 4.8 V to 4.16 V with a current of 2.11 A (which is almost equal to 230mA + 18mA/led * 100led).

I then modeled the strip as a sequence of ideal current generators joined by resistors:

schematic

simulate this circuit – Schematic created using CircuitLab

Calling R the resistance introduced by the strip, I_Led the current flowing into one LED and N the number of LEDs turned on (and ignoring the effects of the standby current), the voltage drop on the first resistor is dV1 = RNI_Led, the one on the second is dV2 = R*(N-1)I_Led and so on, up to dVN = RI_Led. The total voltage drop is dV = RN(N+1)*I_Led/2.

Using the measured data, we can calculate the resistance between two consecutive LEDs:

R = (2*dV)/(N*(N+1)*I_Led) = (2*0.64V) / (100*101*0.018A) = 7mOhm

NOTE: this is neglecting the effects of the standby current. However in my calculations I was searching for a worst case, and by excluding these effects I was in fact making worst assumptions, so I did not care about them

So, with this resistance I was able to calculate the voltage drop for arbitrary strips and consequently plan where to put the power supply joints. In my case I planned to have at max stubs 1.2m long (80 LEDs), so that the voltage at the end, in the very worst case (all LEDs on in RGBW, at max brightness), I had a voltage drop of slightly more than 1V.

Note that in my setup the voltage drop on the first element (the one with the largest drop) is (80*0.045A*0.007mOhm) = 25mV, with a power dissipation of 90mW.

2
  • This strip was sold as IP67 and sealed in a single continuous rubber tube. I would have to break that seal to get those measurements, though I guess there's not much to lose at this point.
    – Bort
    Commented Oct 28, 2019 at 12:20
  • @majenko, this answer is about Electronics Theory, it is definitely not about Arduino so it is off-topic. Can we close it, please? Commented Jun 6, 2020 at 15:52
2

For completeness, I want to include an RGB circuit simulation I made a while ago, along with some data. It's for analog RGB strips, but the concept regarding voltage drop is the same. I've since added a few more LEDs to show the effect of voltage drop across the length, and added the ability to switch the power connection as well.

The simulation shows the current through each 3-LED segment. 12V strips typically have 3 LEDs in series, and repeat that along the strip.

When I created this simulation, I chose exaggerated resistance values, however, this WS2811 strip may be rather close. I haven't modeled it with particular measurements though.

There are switches in simulation circuit that you can click on to switch the connection to 12V and ground at either end of the strip.

[Link to simulation] 12V LED strip simulation


Results:

With 12V and ground on the same end:  28.389mA - 27.892mA = 2.123mA difference

With 12V and ground on both ends:        28.389mA - 27.892mA = 0.497mA difference

With 12V and ground on opposite ends: 27.310mA - 26.834mA = 0.476mA difference

While both power and ground can be connected at both ends of the strip, this simulation actually shows a better balance by simply moving the ground to the opposite end of the strip that receives 12V.

The only way for each LED segment to be truly balanced would be for each to have it's own connection to power and ground.

1
  • @majenko Another Electronics Theory answer, we are getting very of topic again. Can you please moderate appropriately. Commented Jun 6, 2020 at 15:54
1

Those types of strip are simply not sized for full-on on all LEDs. It's expected that if you wanted that, you'd be running a parallel LED strip for lighting that is not addressible and that uses a much higher voltage such as 12 or 24V, where voltage drop is less critical.

Generally addressible LEDs aren't meant to be used in long strips, but are expected to be fit into an array of some kind with numerous short strips, where each can be fed individually.

Running a long stretch isn't a problem, but you will need to feed power at many locations if you want this level of illumination. And you will get murdered on either wire size or voltage drop because voltage drop is so critical when your voltage is only 5 volts. Crunch the numbers but you can find yourself buying big 1/0 feeder wire in a hurry. I recommend instead carrying power at 24V or mains and converting to 5V in many locations.

I would suggest rethinking the design intent and if illumination is also desired, run a separate strip just for that. Those are dirt cheap.

1
  • Actually, it is a 12V strip, I'm not sure where you got "5V" from. As the question also states, I have another 12V strip that is nearly identical except that it uses the 1903 IC, and that strip works fine with all white.
    – Bort
    Commented Oct 28, 2019 at 20:19
1

The LEDs require 12v but the chips require lower voltage. The WS chip requires 3.3v to 5v unlike the 6-7v that the IC require, the added resistance along with the fact that the last led has to run 10 metres on a return trip (5m on positive, 5m on negative = 10m total) could mean the drop is to much.

Easier way to find out is to connect in the middle, if it the problem persists (both ends are bad) it's the power supply

1
  • When you say the WS chip requires 3.3v to 5v [and the IC requires 6-7V], which IC are you referring to? IC and chip are pretty much the same to me.
    – Bort
    Commented Oct 29, 2019 at 2:04
1

As others have answered, it is because of voltage drop.

If you feed positive to the connector at one end, and negative to the other end, all leds will see the same voltage drop, as all leds have 5m connection to the power supply.

If we call the ends L and R with L+ and L- and R+ and R-:

Connect + to L+ and - to R-

If you want to be advanced, get a power supply with separate output and sense connections.

Then connect sense+ to R+ and sense- to L-

This will ensure that the voltage across the LEDs are 12V, by raising the voltage to compensate for the voltage drop.

I started a drawing in CircuitLab, but they want money now?! How rude...

1
  • Note that if power and ground are connected at opposite ends, there will still not be a perfectly even voltage for each LED segment. I have added an answer of my own with a simulation to address this
    – Bort
    Commented Oct 29, 2019 at 17:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.