Electronic – Random flashing on WS2812B LEDs

beaglebone blackledled striplevel-shifting

I'm trying to drive a strip of WS2812B LEDs with a Beaglebone Black(revC). Because the LEDs expect a data signal at 5V and the BBB outputs at 3.3V, some sort of level shifting is required.

However, when using either a 74LVC245 or a 74AC245 chip to adjust the voltage level, the strip begins flashing erratically, as if the signal were corrupt or not at the right level.

The strip works if I connect it directly to the 3.3V output because 3.3V is just high enough to register as a one, but the signal fades after about 160 LEDs and the random behavior resumes.

Things I've tried:

  • Connecting 3.3V and GND to the level shifters and confirmed that the output 5V and GND, respectively.
  • Adding a 100uF capacitor between the power and ground lines to smooth the power supply.
  • Touching the ground plane. I found this by accident, but it appears that I can actually fix the flashing issue by touching the ground plane of the circuit. I suspected that this was due to me introducing capacitance into the circuit, which is why I tried adding a smoothing capacitor.
  • Powering the LEDs both from the same 5V at 2A power supply, and from different power supplies.

Altogether, I'm stumped. I've already tried everything that comes to mind, but none of it has worked.

Best Answer

If you take a look at 74AC245 datasheet, guaranteed limits of V_iH, it specifies 3.15V fo 4.5V Vcc and 3.85V for 5.5V Vcc. You should use the 74ACT family with TTL input levels (0.8V V_iL, 2.0V V_iH regardless of Vcc).

In other words: reliable interfacing between 3.3V and 5V CMOS logic is not possible. But between 3.3V CMOS and TTL(which is always 5V) it is easy.

Or use a dual-supply translator.

Related Topic