0
\$\begingroup\$

I'm currently working on a project where I want to control an 8x8 WS2812B LEDs matrix. My goal is to reduce the current consumption as I want to power it using USB port of my pc. The datasheet of WS2812B says that it consumes about 60mA for each led for full intensity. So 64 x 60mA = 3.84 A which is > USB port power

My idea is : To group my leds into gorups of 8 and multiplexing between the groups (turn on one groups while all the other groups are off) fast enough so I can create a POV. As I assume that the consumption will be only about 60mA x 8 = 480mA

enter image description here

Do you think this is possible? Otherwise do you suggest any other solution to reduce power

Appreciate your help

\$\endgroup\$
3
  • \$\begingroup\$ 60ma can be painfully bright. Depending on your application, you could get away with a 1/10 of that :) \$\endgroup\$
    – bitsmack
    Commented Jun 10 at 22:48
  • \$\begingroup\$ Were these pinned out to use separate supplies for each color, you could reduce power that way, as well -- by supplying individual switcher-based supply rails for each of R, G, and B. Dissipation can be significantly reduced by customizing their rails. But that's not an option with this device. The 1/8 muxing means that, broadly speaking, the apparent brightness will max out at the equivalent of 7.5 mA. Probably a factor of 2 or more, visually. You have to decide if that's okay. No one else can make that decision for you. These are the kinds of tradeoffs engineers make all day long. \$\endgroup\$ Commented Jun 10 at 23:25
  • \$\begingroup\$ Why not use the USB for data only, and power the matrix with an external supply? This way, you won't have to compromise brightness or deal with mux flickering artifacts. \$\endgroup\$
    – MOSFET
    Commented Jun 11 at 3:52

3 Answers 3

1
\$\begingroup\$

The WS28XX LEDs control brightness by rapidly turning the diodes on and off. Higher brightness is more time on, lower brightness is less time on. Your plan is to take LEDs that turn themselves on and off quickly to control brightness and instead turn them on and off slowly to control brightness. This is not a good idea.

Instead, if you want 1/8th the current, set them to 1/8th brightness and let the hardware handle this automatically. This will be much easier and look a lot better. There are even options in most libraries to accomplish this automatically:

void CFastLED::setMaxPowerInVoltsAndMilliamps   (   
  uint8_t   volts,
  uint32_t  milliamps 
)   

https://fastled.io/docs/class_c_fast_l_e_d.html#a996375a3f4a7b8c096f87d8a93c2b196

Or you can implement the same thing just by limiting brightness manually.

\$\endgroup\$
0
\$\begingroup\$

Multiplexing at 1/8 duty cycle is probably going to look pretty bad and of course the brightest you'd be able to achieve is 1/8 maximum. This is probably where software could shine (no pun intended) by dynamically adjusting the intensity of the entire array to keep total consumption below 500 mA while preserving the relative hue and intensities of the individual elements. Or just re-scale the commands to map 100% brightness to 12.5%.

\$\endgroup\$
0
\$\begingroup\$

Add up all the pixels values to see how much current the display will need and then scale the pixel values down as needed to keep below the limit.

\$\endgroup\$

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