Reducing WS2812B power consumption

Hello,

I found WS2812B amazing, i use 72 of them in my project. But they consume lots of current.

60mA * 72 = 4320 mA @ Max bright

Currently i only use pure green, pure blue and pure red to lower the power consumption to 20ma each led

20mA * 72 = 1440 mA @ Max bright (A lot better!)

I'm using a photocell to adjust the brightness so they never work at max power, and at full dark/night they consume about 144mA.

Still i want to reduce it more... There are any tricks or ways to improve the power consumption on this LEDs? Like multiplexing with the software?

NOTE: I'm Using FastLED

Thanks

Why doesn't pure white draw 60mA? That typically requires all 3 LEDs to be on. You have the PWM level for each color set lower when all 3 are on?

CrossRoads: Why doesn't pure white draw 60mA? That typically requires all 3 LEDs to be on. You have the PWM level for each color set lower when all 3 are on?

You right, that was my bad. I have fixed the main post. White i mean Green, Sorry :)

sn4k3:
There are any tricks or ways to improve the power consumption on this LEDs? Like multiplexing with the software?

Easy. Just use 127 instead of 255 as the maximum pwm value for red, green & blue. That will halve the current to 30mA. Or max of 63 for max 15mA per led. The downside is you can mix fewer colours.

Doing any “multiplexing” in software would reduce the current by reducing the % of time that the leds are on. This is the same effect as using lower pwm values as I just suggested,

Paul

PaulRB: Easy. Just use 127 instead of 255 as the maximum pwm value for red, green & blue. That will halve the current to 30mA. Or max of 63 for max 15mA per led. The downside is you can mix fewer colours.

Doing any "multiplexing" in software would reduce the current by reducing the % of time that the leds are on. This is the same effect as using lower pwm values as I just suggested,

Paul

I already do that, but not with PWM, i set LED brightness to half, i suppose it do same effect cutting power to half?

sn4k3: I already do that, but not with PWM, i set LED brightness to half, i suppose it do same effect cutting power to half?

Yes you were using pwm. That is how ws2812 leds work. Their built-in chips are doing the pwm, not the Arduino. The Arduino is just sending the instruction/data.

PWM of 50% or 127/255 means the full 20mA flows to the led (the red, green or blue one) for half the time, so the average is 10mA.

You can’t “cut the power in half” , the WS2812s need 5V, you can’t reduce that. If you try externally limit the current on the 5V supply line, the voltage will drop, and the parts will reset or who knows what.
The best you can do is send a lower PWM value to each LED as has been suggested.

Read the datasheet - all operations are characterized from 4.5V to 5.5V.
You can try dropping VCC down, to as low as 3.5V, but the input signals should not be allowed to exceed Vcc + 0.5V, same as for the Arduino uCs.

WS2812B_preliminary.pdf (347 KB)

You can also use fastled's power management code - some notes on it here http://fastled.io/docs/3.1/power__mgt_8h_source.html - then you can set the maximum current that you want used and the library will dynamically adjust the brightness to keep you below that power maximum.

Dear all.
I have to say that the way you suggest to reduce current is not the best one.

The main issue is the same I have in my project. It is not important to redce brightness or some max brightness on each leds, but to reduce mian power source.

If you reduce max brightness to 127(or any lower value) you still have to count numbr of leds * LED current as theoretical maximum of power consumption. What Sn4k3 wants(or I want) is to run it with 500mA power source 1000 of them. Means some has to be surrelly OFF and only some ON.

Therefor we are talking about multiplexing. This you can not do with simply reducing brightness…

I did some projects with MAX7219 and this device is ding exactly what we wants, only not with WS2812b …

Any ideas now?
Thanks Pavel

Pajik: Any ideas now?

Hi Pavel. You must understand that multiplexing and PWM both have the same effect, from the point of view of a single led. They both reduce the % of time that the current flows. Therefore the average current falls and the led is less bright. There is no magic that can keep an led as bright while the average current is less.

The PWM of many leds in a strip is not synchronised. They do not switch on and off together, so the power supply does not have to supply the full current at any point. Also you should always add a large value capacitor to a strip. The power supply will also have large capacitors. These caps can smooth the demand on the power supply itself by fulfilling any short term peaks in demand for current.

Therefor we are talking about multiplexing.

Do you mean having separate strips and show the pattern on only one strip at a time, but change what strip is showing quickly so as though it appears that all the strips are on? There are two things wrong with this:- 1) The PWM rate in the strips are slow so you can not turn them on an off that quickly. So you will see flicker on the strips.

2) The strips still end up being dimmer and use exactly the same amount of current on average as if you just reduced the brightness.

The drivers on these addressable LEDs are drawing current even when the LEDs are off. It's not so much compared to the current when they're active but certainly a major concern for a battery powered device that will sleep. You need to consider a way to cut power to the LEDs when not in use.

hi,
regarding ws2812b power consumption, i see on datasheed should be ~20mA/chan (R, G, B).
But measuring with my multimeter, i see 1 led full brightness (R or G or B) is ~90/100mA.
10 leds full brightness (single color) are just little more than 105mA.
10 leds full white is less than 200mA.

i’m confused, can someone explain that?

What voltage are you running at? If there is any PWM going on then your simple meter will not give you an accurate reading. It is possible that even at "full" brightness the LEDs are not on continuously.

There is no multiplexing in the conversation when talking about WS2812B addressable LEDs in a strip.

i'm using 5V Vcc and Adafruit_NeoPixel library, with simple example provided. Arduino Uno, separate 2A supply to drive LEDs.

There could be - you could send data so that only every third WS2812B was for example. So for a string of 12 for example: 127,127,0 - this has 2 LEDs 1/2 on, say Red & Blue, so looks like dimmer purple 0,0,0 0,0,0 127,127,0 - this has 2 LEDs 1/2 on, say Red & Blue, so looks like dimmer purple 0,0,0 0,0,0 127,127,0 - this has 2 LEDs 1/2 on, say Red & Blue, so looks like dimmer purple 0,0,0 0,0,0 127,127,0 - this has 2 LEDs 1/2 on, say Red & Blue, so looks like dimmer purple 0,0,0 0,0,0

Leave them on for a couple milliseconds, then do the same for the 2nd set, then the 3rd set. That'd cut the power by a bunch, and also the brightness.

There is no multiplexing in the conversation

I don't think anyone said there was.

Very first post, he asked if multiplexing was an option. I am answering part of his inquiry with an answer.

INTP: Very first post, he asked if multiplexing was an option. I am answering part of his inquiry with an answer.

The very first post was made on 04-07-2015, - the thread has currently been hijacked by vinaruino today.