Our first year of pixel lighting in 2016 was an eye-opening experience into the world of power injection. We had read about power injection online before starting, but we did not appreciate just how much we would have to think about power as we built our Christmas light display. There is a lot of material out there on other websites (check out our Useful Links page and on various Christmas light forums. This is our attempt to break the problems down in a simple way and explain specifically how we dealt with them in our display.
As we installed some of our universes closest to the power supplies, everything worked as expected. Our lights responded to control signals consistently and we were very excited with our progress.
When we moved further away from the attic, we started to notice some color inconsistencies towards the ends of our light strings. For example, the lights at the beginning of the string would be bright white, but by the time you got to the end of the string, they would be a yellowish amber color.
As we got to the universes even further away from the control source, things got complicated. Sometimes, only a few pixels would even light up and respond to control signals. Sometimes, most or all of the pixels would light up, but then they would stop responding to control. Sometimes, none of the pixels would light up at all or only the very first pixel would but it would rapidly change between random colors.
All of these, we would learn, are signs of a power deficiency for the pixels. Almost every problem we encountered in our first year of pixel lighting can be traced back to just not having enough power at the pixels. When there was way too little power, we typically saw the unresponsiveness behavior. When there was almost but not quite enough power, we would see the white color mismatching or sometimes flickering when at full white brightness.
What’s Going On Here
The primary reason that power is such an issue is because LED pixels run at low DC voltages. Most of our display uses 12 volts, though 5V pixels are very common as well. One of the main reasons we picked 12 volts for our system was because you can run power over longer distances than at 5 volts.
So what’s really going on? The brief answer is that we don’t live in an ideal world and our electrical cables are not zero resistance. As a result, when we pull power across an electrical wire, we lose some portion of that power because it is converted to heat in the line. This happens everyday in our house wiring as well so why is it a big deal here? Well, because we are operating at low voltages. Here’s why…
One of the most basic equations in electronics is voltage = current * resistance (or V=IR). This equation applies to our situation here thusly. In this case, the voltage in question is the voltage drop that we will experience due to the resistance in the line. The value of “R” is an artifact of the wiring and, for our intents and purposes, is based on the length and gauge (thickness) of the copper wire. The thicker the wire and the shorter the length, the less resistance there will be.
Another important equation is power = current * voltage (or P=IV). Practically, this means that I can generate the same amount of power by having a high voltage with a little bit of current or by having a low voltage with a larger amount of current. To use an analogy, voltage can be thought of like the pressure in a water line and current is the rate at which it is flowing.
Here is where our low voltage system gets us in trouble. Because our pixels operate at 12V (or even 5V), it requires a fair bit of current to generate enough power to drive them. If they were operating at 120V like our house electrical systems, it would take significantly less current to achieve the same power output (our houses also run on alternating current instead of direct current though I’m ignoring that distinction for this analogy).
So, if we take our relatively high current value back to our first equation and multiply that by a relatively high resistance due to a long wire run, we end up with a voltage drop that is non-negligible. Given that we are already starting at a mere 12V, losing even a few volts by the time we reach the pixels can be enough to prevent the pixels from working correctly. 12V pixels have a larger margin than 5V pixels, which is why you can do longer wire runs at 12V than at 5V.
The Generic Solution
The solution to our problem is called power injection. Since we know that if we pull too much current through our wire it will cause the voltage to drop too low to be useful (and possibly melt if you pull way too much current…like a short circuit), we have to figure out how to draw less current through that wire.
We can do this by adding additional wire runs to deliver more power to the pixels and help distribute the overall current draw across several copper conductors instead of just the one. Each line will still suffer some amount of voltage drop, but since each is servicing less current, that voltage drop will be less significant. This also allows us to insert these new power lines in the middle or at the end of a string to help ensure all the pixels get equal access to the power.
It is only the data line for the pixels that must be run serially. All of the power and ground connections are in parallel so it does not matter where the power comes from. Technically, you could deliver only the data line to the front end of a pixel string and provide power from some other point further downstream and, as long as the first pixel got enough power to it, everything would work as expected.
The WS2811 protocol also helps us out here because each pixel will republish the data stream as it passes it downstream to the next pixel. Practically, this means that as long as the data signal is clean enough after the long run to be interpreted by the first pixel, it will get republished cleanly when it is passed down the line.
One note of caution: when doing power injection, make sure you are injecting power from the same power supply that is sourcing the initial power feed along with the data line. For reasons we don’t fully understand, it is considered a bad idea to tie the V+ output of two power supplies together (we think it’s because they end up competing and pushing power back and forth into each other). Since the power and ground lines for pixels are all attached together, you would be creating this situation if you fed power from more than one source for a given strand of pixels.
Our Specific Solution
So after about a week of frustrating troubleshooting, we finally got enough power delivered to most of our pixels. Check out the diagram of our house on the Preparing for the Adventure page where we have labeled incredible amounts of detail about our different pixel strings and the lengths of cable runs that feed them. We also have marked the points where we do power injection and the lengths of cable feeding there as well.
One exception is Universe 7. 2 years later we are still having some trouble with our our most distant universe. Despite a crazy amount of copper running to it, we still get flickering when all the pixels in that universe are on bright white. Fortunately, we don’t typically have all pixels on bright white so it isn’t very noticeable but is definitely something we hope to fix.
Other Power Options
Most of our control and power injection cabling is 18 gauge wire. For some of the longer power injection runs, we use 16 gauge or 14 gauge extension cords. We did try a 12 gauge extension cord to see if that would help but it didn’t seem to make any noticeable difference and was way more expensive so we returned it.
The best solution for a distant universe would be to power it locally with its own power supply and pixel controller. We might do this in future years but it would require putting a power supply and pixel controller in a waterproof enclosure on our roof and running it either on Wi-Fi or via an Ethernet cable. While that sounds like a hassle, so is stringing a bunch of extension cords across the roof so we might make the change going forward.
Miscellaneous Power Thoughts
Here is just a collection of thoughts about power stuff that don’t seem to fit anywhere else.
- We have noticed in extremely cold temperatures (single digits Fahrenheit) that our pixels will “chatter” and have very brief flashes of random colors at random times. This is most likely due to the contraction of the solder joints within the pixels themselves. It isn’t really a problem but is noticeable on those super cold nights.
- When none of the lights are on, the pixels on our house and associated controllers (Raspberry Pi, pixel controller, FM transmitter, etc.) consume about 80W of power. This is more than we would like considering everything is off, but we can live with it for a month since it’s essentially equivalent to leaving a light bulb on.
- When all of the lights are on bright white, the pixels and system on the house (doesn’t include elements in the yard) consume 1400W of power (measured using my Kill-a-Watt meter which registered 11.5 amps at 120V). This is about equivalent to a hair dryer but is still easily within the capabilities of a single 15 amp circuit. And remember, most of the lights are off most of the time so we are rarely pulling this much power.
- White is the most power expensive color because it utilizes all of the LEDs in each pixel. Of the individual colors, blue is the most power hungry. This is why one of the signs of a power deficiency is that your whites look yellow; the blue LED is underpowered and the red and green LEDs are dominating.