Electrical – multiplex numerous strips of WS2812

currentledled strippwm

From what I understand, a strip of WS2812 LEDs use PWM to adjust the brightness (and thus current draw) for a given LED. If I attach several strips in parallel, each with its own data pin from my uC, would it be possible to multiplex the strips so that each strip is only every on at a given moment? I'm hoping that by doing this, the current draw of the entire setup will be reduced.

From the following thread it seems like the answer is no:

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.

and

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.

Could someone please explain this in more detail?

As a thought experiment, if I had multiple strips of just a single LED, if a LED is only actually ever on a fraction of the time (PWM), and if you time things right so that each strip's "on time" is offset just a bit so that no two strips turn on at the same time, then current should be reduced. What am I missing?

Edit

Perhaps one of my assumptions is incorrect. When a LED is being PWM-ed, I'm guessing that the current draw over time looks identical to the PWM wave. Therefore, I'm wondering why you couldn't have the current draw for the other strips be timed to go on when the others are low.

Best Answer

You're missing the fact that WS2812 do their own PWM'ing. Once you have loaded data into the strips, each individual WS2812 LED driver drives its LED with PWM, asynchronously to the other LEDs in that strip, and to the other strips.

You could perhaps write 'on' data to one strip, then write 'off' data, and write 'on' to the next strip. But that seems like a hard way to get a flashing version of simply programming the LEDs to a lower brightness, which will also reduce the current draw of the entire setup.