Semáforo en miniatura con Raspberry Pi: cableado de muchos LED

8

Antecedentes:

Soy un ingeniero civil especializado en dispositivos de control de tráfico y tengo un pequeño proyecto de pasatiempo para construir un modelo de sistema de semáforo a escala. Puedo administrar y controlar la programación del patrón de semáforo por mi cuenta usando una Raspberry Pi (además, esto me da la capacidad de implementar control dinámico y programado, e interactuar con un esquema de control de tráfico serio y posiblemente datos de tráfico reales). Solo necesito ayuda con el cableado de muchos LED en el lado del hardware :)

Seguí este tutorial http://www.raspberrypi-spy.co.uk/2012/06/control-led-using-gpio-output-pin/ muy bien (incluido el uso de una fuente de alimentación externa en lugar del Pin 2), pero Es probable que me encuentre con el problema de muy pocas conexiones GPIO para todos los semáforos.

Luego probé la multiplexación con una matriz de LED http://www.appelsiini.net/2011/how-does-led-matrix-work . Sin embargo, la multiplexación funciona, por lo general, las luces son más tenues, dudo que esto se adapte bien y tiende a aumentar la complejidad del control.

Pregunta central:

A menos que obtenga alguna tarjeta de expansión en la Raspberry Pi, ¿hay algún otro truco que pueda usar para controlar múltiples LED con menos señales 0/1?

Una cosa sobre los semáforos es que generalmente vienen en bloques de tres, solo uno de los cuales está activo a la vez. ¿Existe algún circuito relativamente simple que me permita 'alternar' un bloque de LED usando una sola señal 0/1?

SkyNT
fuente
1
b = techo (ln (N) / ln (2)) donde N es el número de LED para controlar, y b es el número de bits necesarios para implementar el control. Por lo tanto, una unidad de semáforo, donde solo 1 de cada 3 LED está activo a la vez, requeriría 2 bits de E / S para el control. Con E / S de 8 bits, puede controlar 32 unidades de semáforo: 2 bits para datos (a cuál 1 de cada 3 luces encender), 5 bits para dirección (a qué unidad de 1 en 32 o 2 ^ 5 se refiere), y 1 bit para enganchar. Espero que alguien pueda ampliar esto a una respuesta completa.
shimofuri
La respuesta a continuación es buena y lo que iba a sugerir, pero como algo simple, no pude encontrar un buen circuito de referencia. También podría usar un pequeño microcontrolador de $ 8 pines y rodar su propio bus serie para dispositivos prácticamente ilimitados, aunque eso es un poco en un proyecto en sí mismo si no los ha usado antes.
PeterJ
Al buscar "[multiplexación] [led]" encontrará preguntas con ambas etiquetas. Puede encontrar información útil allí.
Phil Frost
OP puede disfrutar de este semáforo de Velleman
Chetan Bhargava

Respuestas:

11

¿Está familiarizado con los registros de desplazamiento como 74HC595? Requiere 3 pines de su RPI y puede controlar 8 líneas de salida. Puede conectarlos en cascada fácilmente controlando n × 8 líneas de salida.

Los datos se registran en serie en el registro de desplazamiento y una vez que se transfieren los 8 bits de salida, se bloquean los bits en las salidas.

Estaba a punto de agregar la hoja de datos aquí, pero https://www.sparkfun.com/products/733 muestra un buen video y también tiene un enlace a la hoja de datos.

jippie
fuente
4

Los registros de desplazamiento como jippie sugieren que funcionan bien. Pero, la multiplexación también se puede hacer funcionar para más LED de lo que cabría esperar. La solución al brillo reducido es aumentar la corriente máxima para que la corriente promedio permanezca igual. Puede hacer esto aumentando el voltaje o reduciendo la resistencia limitadora de corriente.

La razón por la que una corriente excesiva daña un LED es que la unión se sobrecalienta. Si se le da tiempo para enfriarse entre pulsos, los pulsos pueden ser más fuertes. La hoja de datos de su LED debe especificar una corriente promedio máxima y una corriente máxima máxima que no se debe exceder. Si no le preocupa demasiado la alta confiabilidad (un proyecto de pasatiempo, no una nave espacial) y no le importa fumar unos pocos LED o cambiar un poco las reglas, siempre puede probar los límites usted mismo.

Además, busque en charlieplexing una forma de multiplexar más LED de un número menor de pines. El límite superior de cuántos LED se pueden conectar con este método suele ser el brillo que se puede lograr con la corriente disponible de los pines GPIO, no el número de pines.

Lectura adicional: ¿Pulsando un LED a una corriente más alta produce mayor brillo aparente?

Phil Frost
fuente
1
Tiendo a evitar empujar las corrientes máximas demasiado altas en ausencia de circuito, lo que puede evitar que una fila permanezca encendida durante demasiado tiempo. Es casi seguro que cualquier unidad de fila basada en software fallará ocasionalmente, y un circuito bien diseñado debería ser inmune al daño de tal ocurrencia.
supercat
-1

Use USB o Ethernet para controlar las luces a través de una placa de relé de enganche como esta

http://www.robot-electronics.co.uk/acatalog/Relay_Modules.html

He usado estas placas para otras aplicaciones y son excelentes.

Gareth
fuente
2
Esperamos que las respuestas aquí se mantengan en gran medida por sí mismas. Los enlaces se pudren con el tiempo y no se debe confiar en ellos para obtener la información principal. Indique su respuesta en un párrafo o dos y use enlaces para referirse a información de fondo adicional.
Olin Lathrop
¡Lo suficientemente justo! La placa en cuestión a la que me referí de Robot Electronics es un controlador de relé controlado por USB o Ethernet. Viene con un comando simple configurado para activar o desactivar cada uno de los 8 o 16 relés en el tablero. Estos relés se pueden usar fácilmente para cambiar la pila de LED de sus semáforos y permitir el control a través del puerto USB o Ethernet del Raspberry PI
Gareth
@Gareth Entonces ponga esta información en la respuesta, no aquí.
Butzke