¿Cómo controlo varios cientos de leds individuales con Arduino (s)?

10

Estoy trabajando en un proyecto de electrónica que involucra cientos de LED. (Hablando de más de seiscientos a setecientos LED ... mucho, lo sé.) ¿Hay alguna forma de controlar tantos LED con uno o un par de Arduinos? Me gustaría poder acceder / controlar cada LED individualmente, ya que lo que quiero hacer es trazar los LED en un mapa de pared del mundo. Luego conectaré Arduino con Google Analytics y cuando alguien navegue a mi sitio desde un determinado lugar del mundo, el LED más cercano a su región se encenderá casi en tiempo real.

Cualquier ayuda sería apreciada. ¡Gracias! He intentado investigar un poco y leer sobre multiplexación y charlie-plexing, pero ¿parecen llegar a un máximo de 100? Supongo que necesitaría hardware / componentes externos para poder controlar tantos LED, pero ¿qué necesitaría exactamente para que esto suceda? ¿Alguien más ha creado una matriz de LED tan grande?

kaffolder
fuente

Respuestas:

9

Cuando multiplexa una gran cantidad de LED individualmente, la forma común es usar una matriz N x M. El tiempo se divide en N pasos, en cada paso activa una de las N líneas de fila y las líneas de columna que corresponden a los LED que desea habilitar. Tenga en cuenta que las líneas de fila pueden transportar M veces la corriente del LED, lo que solicita un poco de almacenamiento en búfer. Cada LED está encendido solo 1 / N del tiempo, por lo que para mantener el brillo normal debe aumentar el pliegue en N actual. A la mayoría de los leds no les gusta esto. Charlieplexing no es práctico en esta situación debido a las grandes corrientes involucradas.

Según su pregunta, entiendo que desea habilitar solo 1 LED a la vez. En ese caso, Charlieplexing no tiene nada de malo. Un uC con 31 pines de E / S puede controlar 900 LED. Parece que la construcción será una pesadilla ...


Actualización 5 años después: la multiplexación normal o Charlieplexing es agradable cuando tienes demasiado tiempo a mano, pero cuando tenía que controlar 100 de LED ahora compraría una larga tira de LED WS2801.

Wouter van Ooijen
fuente
Creo que tengo algo que agregar. Bueno, si la alta corriente es el problema, entonces use alto voltaje. como 9v pero por muy poco tiempo 10mS y ciclo de trabajo calculado correctamente. Como también utiliza el aumento de la vida útil de las lámparas LED.
Sandun estándar
El voltaje que cae un LED es fijo, y también lo es el voltaje de salida de un Arduino (probablemente 5V, para algunos tipos 3.3V). El uso de una corriente más alta con un ciclo de trabajo más pequeño generalmente disminuye la vida útil del LED.
Wouter van Ooijen
9

Puede usar un registro de desplazamiento 74HC595 (o similar) barato y fácil de encontrar para controlar fácilmente cientos de LED con solo unos pines del arduino.

¡Incluso hay un tutorial sobre esto en el sitio de Arduino!

Desplazamiento de serie a paralelo con un 74HC595

Desplazamiento y el chip 595

En algún momento u otro, puede quedarse sin pines en su placa Arduino y necesitar extenderla con registros de desplazamiento. Este ejemplo se basa en el 74HC595. La hoja de datos se refiere al 74HC595 como un "registro de desplazamiento de 8 bits en serie, en serie o en paralelo con pestillos de salida; 3 estados". En otras palabras, puede usarlo para controlar 8 salidas a la vez mientras solo toma algunos pines en su microcontrolador. Puede vincular varios registros para ampliar su salida aún más.

Michael Choi
fuente
Serían muchos registros de desplazamiento, pero funcionaría :) Necesitaría aproximadamente 88 (700 leds / 8 leds por chip) registros de desplazamiento y solo 1 mcu.
Johan
1
No olvide los controladores lógicos adicionales, ya que 88 entradas son bastante manejables.
Ignacio Vazquez-Abrams
2

Construiría esto de manera modular. El 6960 de Maxim conducirá 64 LED para usted, aunque es un poco caro. Se manejan con una interfaz en serie, y puede conectar hasta 256 de ellos juntos.

El 7218/7221 también funcionaría.

Eric Gunnerson
fuente
2

Una respuesta un poco tardía a esta pregunta, pero aquí hay 528 LED Charlieplexed de un solo PICAXE 40X2. Subiría a 930 LED si todos los pines estuvieran dedicados al trabajo.

La compilación: http://www.picaxeforum.co.uk/entry.php?25-The-PICaxe-orrery

Un video: http://www.youtube.com/watch?v=82LvqiaH-iA

La arquitectura PICAXE es bastante lenta, por lo que la cantidad máxima de LED que se pueden encender simultáneamente se limita a aproximadamente 15 antes de que el parpadeo se convierta en un problema. Un procesador más rápido y una programación más inteligente aumentarían significativamente este número.

Buzby
fuente
1

No estoy seguro de si mi respuesta es buena o no ... pero ¿por qué no hablar de las franjas de leds direccionables WS2811?

Queremos hacer una matriz LED para mostrar texto. Aquí hay un proyecto ( https://www.pjrc.com/teensy/td_libs_OctoWS2811.html ), realizado en un Teensy, que es casi lo mismo que un Arduino.

Creo que utiliza el concepto de PWM (modulación de ancho de pulso) y, por lo tanto, permite enviar datos complejos a las bandas de leds con un solo cable.

Pero de nuevo, no estoy seguro de si mi respuesta es buena ...

Simón
fuente
El problema es que el tiempo requerido restringe la cantidad de LED que puede encadenar juntos, y su distribución a través de múltiples cadenas aumenta el tiempo de procesamiento general.
Ignacio Vazquez-Abrams
0

Tuvimos una buena discusión sobre la conducción de muchos LED en una pregunta reciente aquí. Mi respuesta allí parece ser directamente aplicable a su problema aquí. Vea la respuesta aquí:

Conducción de LED a larga distancia

Michael Karas
fuente
44
¿Puede traer la información aplicable y adaptarla a esta pregunta? Si su respuesta funciona perfectamente para ambos, es un signo de un duplicado exacto.
Kortuk
0

Basado en información en http://bildr.org/?s=shift+register en el registro de desplazamiento 74H595 con un Arduino Uno, que decía 'si tienes 1000 de estos encadenados', se inició un proyecto en una pantalla LED con 320 LEDS. Cuando llegué a más de 100 LED, parpadeé mal y eventualmente frió el Arduino.

Así que hablé con el soporte técnico de Sparkfun, quien me vendió los paneles de conexión para el 74H595. Dijo que solo puede tener cinco o seis LED encendidos a la vez. Así que volví a leer el artículo en BLDR y me di cuenta de que puedes controlar miles de LED con 74H595 / Arduino, pero solo puedes tener una docena más o menos a la vez. (Esto tiene sentido porque el Arduino permitirá 200 mA a través de la salida de 5 voltios y cada LED consume 20 mA, por lo que aproximadamente diez es todo lo que alimentará de forma segura)

Se han visto transistores que se pueden encender con 1 mA de corriente. Si eso es cierto, se podría diseñar un circuito que controle los transistores que tienen un colector de voltaje / corriente mucho mayor para emitir flujo. Entonces uno podría usar la combinación Arduino / 74H595 para controlar los transistores que se encuentran en un circuito con mayor corriente.

Allen en Dallas

Allen Pitts
fuente