Diseño de LEDs de larga distancia

0

Necesito diseñar un LED chaser que se expanda a medida que agrega módulos, los módulos se encadenan entre sí a larga distancia.

Estaba pensando en usar un maestro y un número N de esclavos, mi primer paso es usar UART ya que puedo transmitir comandos de un módulo a otro. Pero, ¿cómo transmito la cantidad de módulos conectados en el sistema al maestro? El maestro será un MCU que controlará el patrón de activación y los tiempos. Los esclavos también pueden ser pequeños MCU baratos o algunos controladores LED o algo más.

Aquí hay una ilustración.

    
pregunta Seeker

4 respuestas

1

Puede implementar un GetSlaveCountCommand. Usted envía el comando al canal de salida. Ese esclavo en el canal OUT responderá con su cuenta de "niño". Cuando te preguntan, respondes al recuento de "niño" de tu esclavo +1. Solo necesitas implementar un RX en el master.

Si cambia su encadenamiento para crear un anillo, también puede implementar un comando de chirrido donde el Maestro envía 0 al esclavo 1. El esclavo 1 envía 1 al esclavo 2 y así sucesivamente. El último esclavo regresa al maestro. Obtendrá su cuenta. Esta técnica es interesante porque puede agregar otro byte para indicar si el chirrido se inició desde el maestro. Si no, su valor de contador real indica qué esclavo está huérfano.

Por ejemplo, si tiene 5 esclavos y el maestro espera recibir 5. Si se interrumpe la conexión entre el esclavo 3 y el 4, el esclavo 4 enviará 1 (con un indicador que indica que no es del maestro), 5 enviará (2 con no de la bandera maestra) y el maestro sabrá que el 2º esclavo en un modo de 0 indexado desde el final está desconectado de la cadena. Cuando todos los esclavos están conectados correctamente, el maestro recibe 5 y no desde el indicador maestro no se configurará, por lo que es el conteo real.

Si usa solo un solo puerto UART para este esclavo 1 tx al esclavo 2 rx; slave 2 tx a slave 3 rx y así sucesivamente, tomará exactamente la misma cantidad de cableado y obtendrás tus comentarios al maestro con la detección de fallos del dispositivo.

    
respondido por el Mishyoshi
0

Como @Mishyoshi sugiere que necesitas tener una forma de obtener la longitud de la cadena a medida que la extiendes dinámicamente.
Puede hacerlo enviando un comando que haga que el último módulo responda, sin embargo, eso implica que cada módulo sabe cuándo hay un socio conectado conectado.

En el RS232 convencional, haría esto con CTS / RTS para que sepa que hay un cliente conectado al puerto de salida. Dado que esto implica cables adicionales, estoy seguro de que desearía evitarlo como una solución.

Como un protocolo simple sin ninguna prueba de conexión entre módulos, puede enviar un comando al que cada módulo responde con su número de ID, por lo que para un solo comando de comando, recibirá una respuesta de un carácter de cada módulo ... para 4 módulos al sur del maestro, obtendrías cuatro caracteres en secuencia de regreso al maestro. Envíe el comando de forma regular y tendrá un esquema viable. Aquí tiene cada módulo identificado por separado (si tiene números de ID de módulo únicos, lo que es una buena idea de IMO) con el orden de caracteres que le indica su posición en la cadena.
La desventaja aquí es que cuando el comando de salida llega al final de la cadena del módulo, tiene que usar un valor de tiempo de espera para saber que se llegó al final de la cadena.

Si desea reducir la cantidad de respuestas de caracteres involucradas o no tiene números de ID para los módulos, una idea es usar un detector de corriente en la línea de alimentación Vin. Dibuje, diga un número fijo de mA (su MCU descendente puede ser suficiente) y suponga que si se extrae la corriente, hay un cliente conectado al sur. El último módulo ahora sabe si hay otro módulo conectado y, si no lo está, envía un carácter de respuesta. Así que el comando obtiene una respuesta de un solo carácter del comando de consulta.
Para obtener un conteo de cadenas, los módulos tendrían que incrementar el conteo para el carácter de retorno a medida que pasa a través de cada módulo en el camino de regreso al maestro. Cada módulo registra el valor de conteo como su propio número de posición en la cadena. Por lo tanto, los módulos tienen un valor de conteo desde el extremo sur que comienza en 1.

Mientras abordamos el tema de Vin, sugeriría que sería mejor utilizar una tensión de alimentación mucho mayor (por ejemplo, 48 V CC) para reducir la corriente que fluye por los cables. Tendrás una caída de voltaje para enfrentar tanto en Vin como en Gnd, de modo que al aumentar el voltaje se reduce este problema.

Si está utilizando RS232 Tx / RX, entonces su velocidad de transmisión debe reflejar la distancia entre los módulos, con 10 m No sugeriría más de 9600 baudios ... esto le da un espacio de caracteres de aproximadamente 1 ms y usted Necesito decidir si esto es lo suficientemente rápido para su aplicación.

    
respondido por el Jack Creasey
0

Si su micro de elección tiene un solo micro, puede encadenarlos de esta manera.

Eneseesquema,losmensajesnormalmenteseenvíancomounpaquetededatosqueincluyeunbyteobytesdedirección.Sielprimeresclavorecibióelpaqueteyvequenoestádirigidoaél,simplementeenvíalosdatosalsiguiente.

SielpaqueteESparaeseesclavo,elesclavohaceloqueseleordenayenvíaunpaquetederespuesta,estoloreenvíansimplementelossiguientesesclavos.

Cadaesclavotambiénpuedeenviaryrecibiruncomando"WhoIsThere" que hace que envíen un comando después de alterar primero el comando para aumentar la cuenta o, si los esclavos tienen funciones diferentes, agregue un byte en el comando. Fin del paquete para identificar lo que hace ese esclavo en particular. En el proceso de hacer eso, cada esclavo sabe entonces su dirección en la línea a partir de los datos ya agregados al comando recibido.

Debido a que el último esclavo tiene su TX y RX unidos, todo debe terminar en el maestro para tratar de manera apropiada.

Tenga en cuenta que los esclavos también deben amortiguar la línea de retorno para que la longitud de la línea se controle a los saltos entre esclavos.

También puede agregar lógica a las tarjetas para permitir que el micro omita la cadena de transferencia de paquetes una vez que se configuren las direcciones. Esto mejora significativamente el rendimiento, especialmente en cadenas largas.

simular este circuito : esquema creado usando CircuitLab

    
respondido por el Trevor_G
0

Es posible que Yiou desee considerar el uso de un controlador de LED de corriente constante TLC5973 TLC5973 de Texas Instruments de 3 canales, 12 bits, con interfaz de un solo cable.

En lugar de utilizar las salidas para controlar un LED RGB, use una salida con una resistencia como su controlador PWM Gate.

    
respondido por el Misunderstood

Lea otras preguntas en las etiquetas