0
\$\begingroup\$

At Maker Faire Berlin 2018, an electrical engineer looked at my project which was shown with NeoPixel LEDs (WS2811). He mentioned that the NeoPixels waste a lot of energy. It would be better to build my own circuit with RGB LEDs and use the Arduino’s (ATmega328P) PWM functionality for brightness control.

Is there any truth in this?

According to the WS2811 spec sheet: “Gray level 256 can be adjusted and scan frequency not less than 400Hz/s. [sic]” So the WS2811 driver chip is using PWM, of course. I don’t see how it wastes energy.

\$\endgroup\$
  • 1
    \$\begingroup\$ The reference is probably to power consumed by the WS2811 IC itself. However, the data sheet does not provide sufficient characterization information to determine what this would be. Do you have a larger number of pixels? Is your project battery powered? \$\endgroup\$ – Chris Stratton Jan 17 at 15:11
  • \$\begingroup\$ @ChrisStratton Two CR2032 coin cells for an Arduino Pro Mini and four NeoPixels. So, yes, power consumption is an issue. The color is set only once on startup. \$\endgroup\$ – feklee Jan 17 at 15:25
  • 3
    \$\begingroup\$ Things like this will vary, but Paul Stoffregen thinks WS2812Bs consume about a milliamp each sitting there dark: pjrc.com/how-much-current-do-ws2812-neopixel-leds-really-use For a coin cell project, LEDs seem an odd fit, but then so does an Arduino unless you remove most everything but the processor, use low power modes with care, and possible replace the regulator. \$\endgroup\$ – Chris Stratton Jan 17 at 15:28
1
\$\begingroup\$

There's certainly truth in the WS2811 having a non-negligible stand-by current. You could, however, rather easily remedy that with a high-side switch that only powers the IC when needed.

Then, while PWM certainly is cleverer in perceived brightness per Joule than adjusting the sunk current, you still mustn't ignore the fact that this is essentially a linear power supply for each LED - all the difference between LED forward voltage (at the 18.5 mA that the WS2811 tends to sink) and the supply voltage will be converted to heat. So, if your LED forward was e.g. 2V, and your battery is a 6V source (2× CE2032=3V+3V), you'll get an efficiency of only 33%, as two thirds of the voltage are dropped over the regulator.

In that case, using a switch-mode step-down (voltage) converter to get the supply voltage down to close to the minimum necessary voltage would work better here. One could then argue that if you can do that in the first place, simply having a switch-mode constant current supply that can be en- and disabled with a PWM would even safe the energy for the WS2811; but considering you're still driving a full set of LEDs at 18.5 mA, that 1 or 2 mA wasted is peanuts.

By the way, your CR2032 are definitely not meant to source currents up to ~60 mA; you'll probably see that during high-load times, the battery voltage drops below 4V.

And: an Arduino isn't the most power-saving choice, either, especially not with the 5V-based Atmega MCUs. I'd recommend going for one of the ARM-based arduinos. Especially the STM32Lxxx ("L" like low-power) series would be a good choice. Then again, the Arduino environment itself isn't meant for very low-power designs (making it hard to impossible to use lower-power modes) and energy-efficiently addressing the WS2811 (where you'd want a series of automated DMA transfers to happen while the CPU sleeps rather than using the CPU in idle loops to bitbang out the WS2811 "protocol").

Detailed information on how to save energy in your overall design, however, would require a different question with a different background – I think we'd all like to advise you if you can ask based on a project description including a schematic!

\$\endgroup\$
  • \$\begingroup\$ Thanks! From what I’ve been told in the Teensy forum, Neopixels should ideally be operated at 5V. Using a different MCU is something I consider, but at the moment it doesn’t have high priority. It would require me to adapt the MultiTrans library. Guess I should measure actual power consumption of the individual components. Note that I don’t run the LEDs at full brightness. The whole setup comprising one Arduino and four LEDs runs for about 4 hours on two CR2032 coin cells. Then LEDs fail or get noticeably more dim. \$\endgroup\$ – feklee Jan 18 at 14:17
  • \$\begingroup\$ oh, I see your project link now! Nice! This explains a lot! \$\endgroup\$ – Marcus Müller Jan 18 at 15:02
  • \$\begingroup\$ This is pretty neat. If I had the boldness to recommend something: You can use the same connections for data and for power transport! As long as your nodes don't need to know when they are not part of the network connected to USB, that would completely eradicate the need for the batteries, and the need to care overly much about power consumption. \$\endgroup\$ – Marcus Müller Jan 18 at 15:49
  • \$\begingroup\$ Indeed I was thinking to pipe bi-directional data plus power through just one pin (+ GND). As far as I can tell, this could be done using AM or FM modulation, or similar to how 1-Wire does it (switching between data and power to load capacitors). All of this looks nontrivial to me, however, and I do have limited resources. Other issues, such as reliable 3D reconstruction in the frontend have higher priority at the moment. Of course, I welcome collaboration! \$\endgroup\$ – feklee Jan 19 at 14:20
1
\$\begingroup\$

It's not so much the waste in using the WS2811. More important is to use high efficacy (lumens per watt) LEDs.

When you use high efficacy LEDs, they may cost a little more, but the increased battery life will more than make up the cost difference. 10X increased battery life is possible. If I knew what LEDs you are using I could recommend replacements. My choice for RGB projects are the Luxeon Color C line. You want to use LEDs that are sufficiently bright at 1 mA. Looking at the brightness of the LEDs in the picture of your project, I would estimate you can get that luminous intensity level at well below 1 mA.

When comparing LEDs the radiant distribution pattern (or view angle) makes a huge difference. For example a 1000 mcd LED @ 120° emits over 3 lumen. 1000 mcd @ 15° emits only 0.05 lm. If you don't need 120° you can put a 10° spot lens on the 3 lm 120° LED and get 100,000 mcd.

I much prefer the Texas Instruments TLC59731 run at 3V over the WS2811. A 3V supply for the LEDs is also ideal for the green and blue LEDs. At low current, not too bad for the red. Certainly much better than using a 5V supply for the LEDs. The problem is you will need to boost the CR2032 a tiny bit to maintain 3V to the TLC59731. IF the current draw is less than 10 mA (hopefully it is) it may be more efficient to continue using two batteries and step down the voltage to 3V.

You should be able to run some bright RGB LEDs with about 15 mW of power.
TLC59731 3 mA x 3V
LEDs 1 mA x 3V x 3
MP28200 buck regulator 90% efficient @ 5 mA

You certainly do not need an ATmega when an ATtiny will do fine.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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