Programmable led pixels – which model should I choose?

It is tempting to think dream led pixels strips as one-dimensional displays, but when the pixel count of the display is limited, and individual dots are far apart, and surrounding brightness can be anything between zero lux and full on daylight, number of factors come to play in design – even if the design is just a bit-more-advanced x-mas tree decoration. Here are some of my experiences when playing around with these.

I have been using TM1809 and APA 102c programmable “dream” LED strips and while they are easy to use in principle, there has been number of issues to troubleshoot. Below some findings:

APA 102C led strip

Led strip with questionable solder joint quality

  • 12Volt is bad. Programmable 12V led strips seem to drive individual pixels with current-limiting resistors, thus never getting good efficiency: 12 volt source voltage dropped to 3..4 volt for LED results roughly 60%..75% power dissipation into resistor. See, there goes that five start energy star rating.
  • 5 Volt led strips have issues too. On greater lengths (I have a four meter with 240 LED pixels) these seem to suffer from voltage drop when pushed to highest brightness levels. The drop is easy to detect with multimeter, my APA strip voltage got down to three volts on the far end, resulting nasty flickering for last meter or so. One can overcome this by installing extra cables to support 5V and ground from both ends of the strip.
  • Since I am cheap and I like to source the cheapest option from China, the quality is what it is; the picture above tells story shows mass-produced connector with, eh, less than stellar success in soldering work. (Yes, it still works, but how long? Reliably? Also, we run about 10 Amps over those connectors for brighter moments – any additional resistance adds to rather uncontrolled heat dissipation there)
  • APA102c != APA102c. Identical LED pixel type does not guarantee color channel order: I have a four meter and a one meter string, both with APA 102c pixels. Magically the red and the blue channels have been swapped between those strips. This presents some challenges if one were to design a controller that can drive number of different led strips. (No, this is not a wiring issue, it is in the chip itself.)
  • Five volt led strips hog quite nice amount of current – I drive 240 pixel strip with 50W/10A power supply – and it is barely enough for it. Now, take another look at those connectors in the pic above.
  • When thinking about brightness levels, eight bits per colour is ok, but since we are talking about led strips and not displays, their intended use environment may present additional challenges:
    • at the darkest levels human eye can easily detect the difference between lowest levels 0,1,2,3 – brightness change is visible as a jump
    • at these darkest levels, LED strip color reproduction becomes, quantized – again, human eye can see this as a color change. Note that in dark human eye will detect colors from these strips as they still are bright enough if they are the only light source.
    • currently common libraries (aka FastLED) that support these strips on Arduino or Raspberry PI do not support global brightness setting (on APA 102c it would add 5 bits to brightness control)
  • For smooth animation, the same applies as for screens: 24 Hz will do, 30 Hz is better, 70Hz is even better. Above that I cannot see any difference.
  • RGB led strips do not provide high CRI light. Yes, one can set the color freely, but it will not result in great quality light for color rendering. Not today at least. Maybe when RGBW strips become more common.

Continue reading