Intermitente aleatorio en los LED WS2812B

3

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 forma errática, como si la señal estuviera dañada o no al nivel correcto.

La tira funciona si la conecto directamente a la salida de 3.3V porque 3.3V es lo suficientemente alta para registrarme como una, pero la señal se desvanece después de unos 160 LED y se reanuda el comportamiento aleatorio.

Cosas que he probado:

  • Conectando 3.3V y GND a los desplazadores de nivel y confirmó que la salida 5V y GND, respectivamente.
  • Agregar un capacitor de 100uF entre las líneas de alimentación y tierra para suavizar la fuente de alimentación.
  • Tocando el plano de tierra. Encontré esto por accidente, pero parece que puedo solucionar el problema del parpadeo al tocar el plano de tierra del circuito. Sospeché que esto se debía a que introduje capacitancia en el circuito, por lo que intenté agregar un condensador de suavizado.
  • Alimentar los LED tanto desde la misma fuente de alimentación de 5V a 2A como desde diferentes fuentes de alimentación.

En conjunto, estoy perplejo. Ya he intentado todo lo que me viene a la mente, pero nada de eso ha funcionado.

    
pregunta GGreenwood

2 respuestas

0

Si echa un vistazo a la hoja de datos de 74AC245, límites garantizados de V_iH, se especifican 3.15V para 4.5V Vcc y 3.85V para 5.5V Vcc. Debe usar la familia 74ACT con niveles de entrada TTL (0.8V V_iL, 2.0V V_iH independientemente de Vcc).

En otras palabras: no es posible establecer una interfaz confiable entre la lógica CMOS de 3.3V y 5V. Pero entre 3.3V CMOS y TTL (que siempre es 5V) es fácil.

O utilice un traductor de doble fuente .

    
respondido por el venny
3

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 en la línea a un voltaje Vcc total, por lo que realmente no hay ningún "fundido" con respecto al voltaje a medida que desciende por una cadena. Si los primeros píxeles están viendo suficiente voltaje para ver el bit, entonces todos los demás píxeles corriente abajo también deberían verlo.

Primero, me aseguraré de que tengas suficiente poder inyectado a lo largo de la cuerda. Puede probar esto manejando la cuerda débilmente con menos de, por ejemplo, 20 brillos 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 potencia cuando la demanda actual por lo tanto, la caída de tensión en las líneas de alimentación) sube. La forma más fácil de solucionar este problema es agregar cables desde la regleta a la fuente de alimentación cada 2 metros aproximadamente.

Si todavía tienes flakeyness al final de la cadena, incluso con colores tenues, entonces el siguiente lugar en el que buscaría es en el momento de la señal que sale del Beagle-Bone. Posiblemente no tengas suficiente espacio entre tus bits como se describe aquí ...

enlace

Una forma de probar esto es conectar la cadena a un Arduino y usar un código comprobado por el tiempo para intentar conducirlo. Si esto funciona, entonces vería el tiempo de su señal en el BeagleBone e intentaría agregar quizás 100 ns de baja después de cada bit.

Informe con lo que encuentre!

    
respondido por el bigjosh

Lea otras preguntas en las etiquetas