Comment contrôler plusieurs centaines de LED individuelles avec Arduino (s)?

10

Je travaille sur un projet d'électronique impliquant des centaines de LED. (En parlant de plus de six à sept cents LED ... beaucoup, je sais.) Existe-t-il un moyen de contrôler autant de LED avec un ou deux Arduinos? Je voudrais pouvoir accéder à / contrôler chaque LED individuellement car ce que je veux faire, c'est tracer des LED sur une carte murale du monde. J'interfacerai ensuite Arduino avec Google Analytics et lorsque quelqu'un naviguera vers mon site à partir d'un certain endroit dans le monde, la LED la plus proche de sa région s'allumera en presque temps réel.

Toute aide serait appréciée. Merci! J'ai essayé de faire des recherches et de lire sur le multiplexage et le plexing Charlie, mais ceux-ci semblent atteindre 100 ou plus? Je suppose que j'aurais besoin de matériel / composants externes pour pouvoir contrôler autant de LED, mais de quoi aurais-je besoin exactement pour que cela se produise? Quelqu'un d'autre a-t-il déjà créé une matrice LED de cette taille?

kaffolder
la source

Réponses:

9

Lorsque vous multiplexez un grand nombre de LED individuellement, la méthode courante consiste à utiliser une matrice N x M. Le temps est divisé en N étapes, à chaque étape, vous activez l'une des N lignes de ligne et les lignes de colonne correspondant aux LED que vous souhaitez activer. Notez que les lignes de lignes peuvent chacune transporter M fois le courant LED, ce qui nécessite une mise en mémoire tampon. Chaque LED est allumée seulement 1 / N du temps, donc pour conserver la luminosité normale, vous devez augmenter le N fois actuel. La plupart des LEd n'aiment pas cela. Charlieplexing n'est pas pratique dans cette situation en raison des grands courants impliqués.

D'après votre question, je comprends que vous ne souhaitez activer qu'une seule LED à la fois? Dans ce cas, il n'y a rien de mal à Charlieplexing. Un uC avec 31 broches d'E / S peut alimenter 900 LED. On dirait que la consruction sera un cauchemar ...


Mise à jour 5 ans plus tard: le multiplexage normal ou le Charlieplexing est bien quand vous avez trop de temps sous la main, mais quand je devais contrôler des centaines de LED maintenant j'achèterais une longue bande de LED WS2801.

Wouter van Ooijen
la source
Je pense que j'ai quelque chose à ajouter. Eh bien, si un courant élevé est le problème, utilisez une tension élevée. comme 9v mais pour un temps très court de 10 ms et un rapport cyclique correctement calculé. Comme il utilise également l'augmentation de la durée de vie des lampes LED.
Standard Sandun
La tension perdue par une LED est fixe, tout comme la tension de sortie d'un Arduino (probablement 5V, pour certains types 3,3V). L'utilisation d'un courant plus élevé avec un rapport cyclique plus petit réduit généralement la durée de vie des LED.
Wouter van Ooijen
9

Vous pouvez utiliser un registre à décalage 74HC595 (ou similaire) bon marché et facilement trouvé pour contrôler facilement des centaines de LED en utilisant seulement quelques broches de l'arduino.

Il y a même un tutoriel à ce sujet sur le site Arduino!

Déplacement série vers parallèle avec un 74HC595

Shifting Out et la puce 595

À un moment ou à un autre, vous risquez de manquer de broches sur votre carte Arduino et de devoir l'étendre avec des registres à décalage. Cet exemple est basé sur le 74HC595. La fiche technique fait référence au 74HC595 comme un "registre à décalage 8 bits d'entrée série, série ou parallèle avec verrous de sortie; 3 états". En d'autres termes, vous pouvez l'utiliser pour contrôler 8 sorties à la fois tout en ne prenant que quelques broches sur votre microcontrôleur. Vous pouvez lier plusieurs registres ensemble pour étendre encore plus votre sortie.

Michael Choi
la source
Ce serait beaucoup de registres à décalage, mais cela fonctionnerait :) Vous auriez besoin d'environ 88 registres à décalage (700 leds / 8 leds par puce) et seulement 1 mcu.
Johan
1
N'oubliez pas les pilotes logiques supplémentaires, car 88 entrées sont beaucoup à gérer.
Ignacio Vazquez-Abrams
2

Je construirais cela de manière modulaire. Le 6960 de Maxim pilotera 64 LED pour vous, bien que ce soit un peu cher. Ils sont pilotés avec une interface série et vous pouvez en connecter jusqu'à 256 ensemble.

Le 7218/7221 fonctionnerait également.

Eric Gunnerson
la source
2

Une réponse tardive à cette question, mais voici 528 LED Charlieplexed sur un seul PICAXE 40X2. Il irait jusqu'à 930 LED si toutes les broches étaient dédiées à la tâche.

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

Une vidéo: http://www.youtube.com/watch?v=82LvqiaH-iA

L'architecture PICAXE est assez lente, de sorte que le nombre maximal de LED pouvant être allumées simultanément est limité à environ 15 avant que le scintillement ne devienne un problème. Un processeur plus rapide et une programmation plus intelligente augmenteraient considérablement ce nombre.

Buzby
la source
1

Je ne sais pas si ma réponse est bonne ou non ... mais pourquoi ne pas parler des bandes de leds adressables WS2811 ??

Nous voulons faire une matrice LED pour afficher le texte. Il y a un projet ici ( https://www.pjrc.com/teensy/td_libs_OctoWS2811.html ), réalisé sur un Teensy, qui est presque la même chose qu'un Arduino.

Je pense qu'il utilise le concept de PWM (Pulse Width Modulation), et permet ainsi d'envoyer des données complexes aux bandes de leds avec un seul fil.

Mais encore une fois, je ne sais pas si ma réponse est bonne ...

Simon
la source
Le problème est que le timing requis limite le nombre de LED que vous pouvez enchaîner, et les répartir sur plusieurs chaînes augmente le temps de traitement global.
Ignacio Vazquez-Abrams
0

Nous avons eu une bonne discussion sur la conduite de nombreuses LED dans une question récente ici. Ma réponse semble être directement applicable à votre problème ici. Voir la réponse ici:

Conduire des LED à longue distance

Michael Karas
la source
4
Pouvez-vous apporter les informations applicables et les adapter à cette question, si votre réponse fonctionne parfaitement pour les deux, c'est le signe d'un double exact.
Kortuk
0

Sur la base des informations sur http://bildr.org/?s=shift+register sur le registre à décalage 74H595 avec un Arduino Uno, qui disait `` si vous en avez 1000 chaînés ensemble '', un projet a été lancé sur un écran LED avec 320 LEDS. Lorsque j'ai dépassé 100 LED, le scintillement est mauvais et j'ai fini par frire l'Arduino.

J'ai donc parlé au support technique de Sparkfun qui m'a vendu les cartes de dérivation pour le 74H595. Il a dit que vous ne pouvez allumer que cinq ou six LED à la fois. Je suis donc retourné et relu l'article au BLDR et j'ai réalisé que vous pouvez contrôler des milliers de LED en utilisant 74H595 / Arduino mais vous ne pouvez en avoir qu'une douzaine à la fois. (Cela a du sens parce que l'Arduino permettra 200mA à travers la sortie de 5 volts et chaque LED consomme 20mA donc environ dix est tout ce qu'il alimentera en toute sécurité)

On a vu des transistors qui peuvent être activés avec 1 mA de courant. Si cela est vrai, si l'on pouvait concevoir un circuit qui contrôle des transistors qui ont un collecteur de tension / courant beaucoup plus élevé pour émettre le flux. Ensuite, on pourrait utiliser la combinaison Arduino / 74H595 pour contrôler les transistors que dans un circuit avec un courant plus élevé.

Allen à Dallas

Allen Pitts
la source