J'aimerais pouvoir contrôler environ 100 LED indépendantes à l'aide d'un Arduino. Le problème est que l'Arduino n'a pas assez de broches pouvant être configurées pour cela. Quelle serait une façon de résoudre ce problème? Y a-t-il une puce qui peut démultiplexer un signal plus complexe de l'Arduino qui pourrait alors contrôler les LED? Ou existe-t-il une autre solution?
arduino
digital-logic
gpio
Alexis K
la source
la source
Réponses:
Tout d'abord, un Arduino ne peut pas piloter directement 100 LED, car le courant combiné que l'appareil doit fournir ou absorber dépassera de loin à la fois le microcontrôleur et le régulateur de tension sur la carte Arduino. Un bouclier Arduino personnalisé avec sa propre source d'alimentation et sa propre réglementation pourrait cependant convenir.
Il existe plusieurs approches faciles, l'approche la plus simple est détaillée ci-dessous:
Pilote de LED à courant constant TLC5940 en configuration en cascade:
Le TLC5940 pilote 16 LED par IC, contrôlées par une entrée série via une légère variante d'une interface SPI. Jusqu'à 40 appareils TLC5940 peuvent être montés en cascade, mais 7 d'entre eux seront suffisants pour piloter les 100 LED en question.
Il existe au moins quelques bibliothèques Arduino ( 1 , 2 ) pour le TLC5940.
Taux d'horloge suggérés à envoyer depuis l'Arduino et taux de rafraîchissement correspondant:
Ceci est basé sur les formules de la fiche technique:
Le TLC5940 est un puits de courant constant , de sorte que les anodes des LED seraient liées à une tension supérieure de quelques volts à la LED Vf, ou d'environ 7 volts, selon la valeur la plus basse, alimentée indépendamment des broches d'alimentation de l'Arduino. Cette source de tension doit être capable de fournir 100 * (quel que soit le courant sur lequel vous exécutez les LED), mais peut être une source non régulée.
Les cathodes LED vont aux lignes d'entraînement des circuits intégrés TLC5940 respectifs.
Le TLC5940 lui-même consomme jusqu'à Icc = 60 mA par appareil pendant l'écriture de données, donc l'alimentation de 7 d'entre eux à partir de l'Arduino ne fonctionnera pas, il faudra fournir un Vcc régulé indépendant de 3,3 à 5 volts, idéalement la même valeur que le Vcc de l'Arduino utilisé, et les traces de terre doivent se reconnecter à la terre de l'Arduino, bien sûr. Le fonctionnement des pièces TLC à une tension différente de celle de l'Arduino entraînerait un besoin de conversion de niveau du signal série, donc mieux évité.
Plusieurs vidéos YouTube montrent l'utilisation d'Arduino avec des circuits intégrés TLC5940 en cascade.
Pilotes d'affichage à DEL à 8 chiffres MAX7219 (série) / MAX7221 (SPI) :
Bien que ces circuits intégrés aient été conçus pour piloter des affichages LED numériques à 7 segments, ils offrent un contrôle individuel des LED, ils peuvent donc être utilisés pour un maximum de 64 LED par circuit intégré. Deux d'entre eux peuvent être montés en cascade pour piloter les 100 LED nécessaires. La page 13 de la fiche technique montre une configuration en cascade.
Les LED devraient être connectées électriquement en groupes de jusqu'à 8 LED partageant chacun une ligne de cathode (cathode commune), pour cette conception.
Les MAX7219 / 7221 sont des pilotes de LED de multiplexage, donc la luminosité maximale des LED sera inférieure à celle d'un pilote de LED statique comme la section précédente.
Voici une bibliothèque de matrice LED utile et un guide d'utilisation du MAX7219.
Certaines vidéos YouTube pertinentes ( 1 , 2 ) peuvent être intéressantes.
Charlieplexing: pilotes LED SPI, MAX6950 / MAX6951
Encore une fois, ces circuits intégrés ont été conçus pour piloter des affichages LED numériques à 7 segments, ils fournissent un contrôle LED individuel, ils peuvent donc être utilisés jusqu'à 40/64 LED par circuit intégré. Deux / trois d'entre eux peuvent être connectés sur un bus Arduino SPI pour piloter les 100 LED nécessaires.
Les notes de conception restent les mêmes que la section précédente. De plus, la luminosité maximale individuelle des LED serait inférieure à celle du multiplex droit du MAX7219.
Certaines vidéos YouTube pourraient vous intéresser.
Conception de composants discrets, registres à décalage, extenseurs IO, bandes LED coupables avec contrôleurs individuels, et bien d'autres ...
Ce sont toutes des approches qui ont été utilisées avec différents niveaux de simplicité et de succès. Ce sont des implémentations plus complexes que les 3 approches ci-dessus, donc pas plus détaillées. La recherche sur le Web fournirait des guides utiles pour ces approches, si nécessaire.
Un irritant clé avec de telles conceptions est le besoin de résistances de contrôle de courant sur chaque LED ou chaîne de LED. Les appareils spécialement conçus pour la conduite de LED n'en ont généralement pas besoin.
Je n'ai pas d'expérience personnelle avec ce dernier ensemble d'options, donc je ne peux pas aider beaucoup.
Footnote: Après avoir répondu à cette question, j'ai trouvé une question plus ancienne , qui a des réponses détaillant et discutant plusieurs des approches dans ma dernière section. Ce fil rend "la lecture approfondie comme devoirs" intéressante.
la source