Estoy tratando de conducir una tira de LED WS2812B con un Beaglebone Black (revC). Debido a que los LED esperan una señal de datos a 5 V y las salidas BBB a 3,3 V, se requiere algún tipo de cambio de nivel.
Sin embargo, cuando se usa un chip 74LVC245 o 74AC245 para ajustar el nivel de voltaje, la tira comienza a parpadear de manera errática, como si la señal estuviera corrupta o no estuviera en el nivel correcto.
La tira funciona si la conecto directamente a la salida de 3,3 V porque 3,3 V es lo suficientemente alta como para registrarse como uno, pero la señal se desvanece después de unos 160 LED y se reanuda el comportamiento aleatorio.
Cosas que he probado:
En total, estoy perplejo. Ya he probado todo lo que se me ocurre, pero nada ha funcionado.
Si echa un vistazo a la hoja de datos 74AC245, límites garantizados de V_iH, especifica 3,15 V para 4,5 V Vcc y 3,85 V para 5,5 V Vcc. Debe utilizar la familia 74ACT con niveles de entrada TTL (0,8 V V_iL, 2,0 V V_iH independientemente de Vcc).
En otras palabras: no es posible una interfaz fiable entre la lógica CMOS de 3,3 V y 5 V. Pero entre 3,3 V CMOS y TTL (que siempre es de 5 V) es fácil.
O utilice un traductor de suministro dual .
La línea de datos en una cadena de chips WS2812B no es un bus compartido como podría parecer. En su lugar, cada WS2812B retransmite cada bit que recibe por la línea con el voltaje Vcc completo, por lo que realmente no hay ningún "desvanecimiento" con respecto al voltaje a medida que avanza por una cadena. Si los primeros píxeles ven suficiente voltaje para ver el bit, todos los demás píxeles aguas abajo también deberían verlo.
Primero, me aseguraría de tener suficiente potencia inyectada a lo largo de la cadena. Puede probar esto moviendo la cuerda tenuemente con menos de, digamos, 20 de brillo para los tres colores. Si funciona bien con los colores tenues, es casi seguro que no tenga suficiente energía para llegar al final de la cadena debido a la caída de voltaje en las líneas eléctricas (no en las líneas de datos). Esas cadenas de PCB flexibles tienen una resistencia relativamente alta, y los chips WS2812B pueden usar hasta 0,25 vatios cada uno, por lo que la caída de voltaje a lo largo de una cadena de píxeles puede ser lo suficientemente alta como para que los píxeles al final no tengan suficiente energía cuando la corriente lo exige (y por lo tanto, la caída de voltaje en las líneas eléctricas) aumenta. La forma más fácil de solucionar esto es agregar cables que van desde la tira hasta la fuente de alimentación cada 2 metros más o menos.
Si todavía tiene descamación al final de la cuerda incluso usando colores tenues, entonces el siguiente lugar en el que miraría es en el momento de la señal que sale del Beagle-Bone. Es posible que no tenga suficiente espacio entre sus bits como se describe aquí...
http://wp.josh.com/2014/05/16/por-que-debe-dar-a-sus-bits-de-neopixel-espacio-para-respirar/
Una forma de probar esto es conectar la cadena a un Arduino y usar un código probado para intentar controlarlo. Si esto funciona, miraría la sincronización de la señal en el BeagleBone e intentaría agregar tal vez 100 ns de baja después de cada bit.
Informe de nuevo con lo que encuentre!
venny
smajli