Obtención de una señal más estable en tiras muy largas de LED RGB direccionables

3

Necesito conducir una tira de 12m de APA102 LED RGB (144 por metro). Yo uso una Raspberry Pi para este trabajo.

Este controlador de LED IC (APA102) toma una señal SPI y la pasa al siguiente LED de la serie y así sucesivamente. Puede encontrar la hoja de datos aquí con el circuito utilizado en las tiras que uso que se muestra en la última página: enlace

Necesito conducir esta tira de LED en un reloj bastante alto de 8MHz + para obtener la velocidad de cuadros deseada. Esto está funcionando bien hasta que llegué a unos 10 m. Luego, los LED comienzan a mostrar colores incorrectos, comienzan a parpadear o simplemente no hacen nada. La configuración comienza a funcionar nuevamente si reduzco el reloj a 4 Mhz pero esto es demasiado lento para mi aplicación.

Necesito usar fuentes de alimentación de 5 V con una cantidad insana de corriente (30A para esta tira, una configuración más grande con tiras en paralelo utilizará múltiples unidades de alimentación de 120 A) y muestran un ruido horrible (200-300 mV) en la salida de 5 V.

¿Entonces me preguntaba si hay algo que pueda hacer para mejorar la integridad de mi señal?

Supongo que el ruido de la fuente de alimentación degrada lentamente la señal a medida que se "actualiza" cada vez que pasa por un LED. Al menos eso es lo que recojo del esquema en la hoja de datos. La colocación de una tapa de 220uF a la entrada de alimentación en la tira de LED mejora el ruido, pero no parece tener ningún efecto en la degradación de la señal.

Comprendo que esta configuración es un poco ridícula, pero lamentablemente no tengo otra opción que usar este tipo de LED.

Editar: Suministro energía a la tira cada medidor, conectándome directamente a la fuente de alimentación con un cable de 14 AWG. Así que probablemente no sea un problema de poder.

Así es como se ven el reloj (azul) y los datos (amarillo) en el alcance después de solo ~ 60 LEDs.

Estoesdespuésde~1500LEDs.Púrpuraeslalínea5V.

    
pregunta PTS

4 respuestas

5

En lugar de necesitar búferes de línea, sospecho que su cadena es demasiado larga desde el punto de vista de poder. La potencia de la banda y los rastros de tierra son simplemente demasiado delgados para transportar 30 amperios con éxito.

Le sugiero que encuentre una manera de acceder a los trazados de potencia y tierra (especialmente el terreno) a intervalos de 3 metros, y suelde un cable de 16 ga en cada punto de acceso. Ejecutar los cables de nuevo a la fuente de alimentación. Asegúrese de aislar las juntas de soldadura. Como mínimo, debería poder acceder a las líneas en cada extremo de la franja, lo que sería mejor que nada.

EDITAR: con la inclusión de los trazados de tu alcance, es bastante claro que estás fuera de suerte. La traza inferior indica que el chip tiene un tiempo de propagación de bajo a alto ligeramente más lento que de alto a bajo. Esto significa que, a lo largo de muchas transmisiones sucesivas, un pulso positivo (o la parte positiva de su reloj) se volverá gradualmente más y más estrecho. Como te ha pasado.

Pero no es culpa del fabricante. Mira tus números. Con un reloj de 8 MHz, es alto para aproximadamente 60 nseg. Su trazo inferior muestra que los impulsos de su reloj se han reducido a casi nada; llámelo 10 nseg. Esto significa que tiene un desequilibrio de retraso de propagación de 50 nseg / 1500, o 33 psec. Confíe en mí, no hay un proceso (único) que pueda garantizar un mejor rendimiento.

Para lo que vale, una cámara satelital de reconocimiento tuvo problemas similares que se rastrearon a los FPGA de Altera que tenían desequilibrios de varios nseg, y el desequilibrio se indicó en la hoja de datos. La cura era invertir el reloj entre cada etapa para que los desequilibrios se cancelaran mutuamente. Obviamente, esta no es una opción para ti.

Como dije, me temo que estás fuera de suerte. Aparentemente, los fabricantes nunca renuncian a alguien que intenta extender sus tiras en la medida en que usted lo está haciendo.

    
respondido por el WhatRoughBeast
2

Usando "controladores de línea" (búferes).

A lo largo de una larga distancia, la constante de tiempo RC de las trazas será grande, lo que a su vez actúa como un filtro de paso bajo que matará su señal a frecuencias más altas. Puede resolver el problema reduciendo la resistencia o la capacitancia (o ambas) de la línea.

La primera opción (que funciona hasta cierto punto) es usar un controlador de línea más fuerte. En el pasado, tuve que manejar 32 entradas CMOS sobre un PCB de 1 metro: la carga terminó siendo del orden de 1nF, que es altamente capacitiva. Una salida CMOS estándar no podrá manejar eso a una velocidad mucho mayor que un par de MHz si tiene suerte.

En cambio, pude modificar el diseño para incluir un controlador de puerta MOSFET para dirigir la línea. Estos tienen transistores de impulsión muy fuertes que aumentan la resistencia del impulsor (a.k.a reduce la resistencia) y, por lo tanto, pueden generar una señal de reloj a una frecuencia mucho más alta y mantener es lo suficientemente cuadrado para funcionar. La compensación es que la corriente de conmutación máxima de ese controlador es 1A!

La segunda opción (que es mucho más ampliable) es dividir la línea en partes. Si hace que la línea sea más pequeña, reducirá tanto la resistencia como la capacidad de la misma. Entonces, utilizando ese principio, si dividimos la línea en trozos más pequeños y agregamos buffers entre cada trozo, entonces cada buffer puede extender el rango de la señal mientras mantiene una frecuencia de reloj más alta.

    
respondido por el Tom Carpenter
1

Es MUY irrealista esperar conducir 12M de tira de LED (1728 RGB LED ICs) desde un solo punto. O PODER O DATOS.

Debes romper tus 12M de tira en pedazos más pequeños. No necesariamente FÍSICAMENTE, sino ELÉCTRICAMENTE. Mi instinto sería que necesitas dividirlo en al menos 4 secciones y alimentar cada sección por separado. Y maneja los datos por separado también.

    
respondido por el Richard Crowley
0

parece que solo podría alimentar sus datos y el reloj desde la mitad de la tira y hacia afuera hacia los dos extremos opuestos. Esperemos que su controlador tenga dos salidas. esto debería ser alcanzable con un solo pixelpusher si no.

    
respondido por el chucked

Lea otras preguntas en las etiquetas