Je veux utiliser une carte Arduino ordinaire pour contrôler les LED - quel est le plus grand nombre de lumières que je peux contrôler individuellement à partir de la carte?
Existe-t-il un tutoriel sur la façon de le brancher?
Je veux utiliser une carte Arduino ordinaire pour contrôler les LED - quel est le plus grand nombre de lumières que je peux contrôler individuellement à partir de la carte?
Existe-t-il un tutoriel sur la façon de le brancher?
Réponses:
Je crois que l'utilisation de lignes N Charlie-plexe contrôle N * (N-1) LED. Il y a un bon article sur Wikipedia.
Un de mes amis, Jimmie P. Rodgers, a installé 126 LED sur un bouclier Arduino. Il utilise le charlex-plexing pour contrôler les LED. Quelques informations sur son forum se trouvent sur - jimmieprodgers.com/2009/12/my-development-process/ (copie archive.org)
Lors de la dernière réunion du Boston Arduino User Group, Jimmie P. Rodgers a dessiné un diagramme de plexing Charlie sous forme de matrice avec des filets étiquetés. Les schémas ainsi dessinés semblaient bien communiquer le concept. J'ai créé quelques schémas similaires - Voir http://wiblocks.luciani.org/FAQ/faq-charlie-plex.html
jimmieprodgers.com
lien dans cette réponse est chargé de virus.
Vous pouvez utiliser les registres à décalage ( http://en.wikipedia.org/wiki/Shift_register ) pour obtenir autant de sorties parallèles d'un même flux série que vous le souhaitez.
Vous devrez vous préoccuper de vos contraintes de puissance. En fait, je n'ai jamais utilisé un Arduino moi-même, mais je suppose qu'il a une limite de courant, tout comme les PIC. De plus, les registres à décalage auront eux-mêmes une limite de courant. Si vous rencontrez cela, vous devrez envisager d'utiliser quelque chose comme un MOSFET pour vous permettre de contrôler les LED sans avoir à tirer beaucoup de puissance directement de votre micro-contrôleur.
Toute broche de microcontrôleur AVR donnée est autorisée à générer jusqu'à 40 mA, et l'alimentation totale fournie ou coulée par la puce (c.-à-d. Au sol et broches Vcc) doit être inférieure à 200 mA.
Charlieplexing est une excellente solution pour les situations où vous avez besoin de beaucoup de LED, mais pouvez vous en tirer avec une seule LED allumée à la fois. Une carte Arduino standard (comme une Duemilanove) fournit 17 broches d'E / S "gratuites", sans compter TX, RX, Reset ou broche 13. Ainsi, vous pouvez brancher 17 * 16 = 272 LED. Cela peut bien fonctionner, surtout si vous gardez une LED allumée ou si vous numérisez rapidement entre quelques-unes. Mais si vous essayez d'éclairer toute la matrice avec un motif, vous constaterez que chacun est allumé (légèrement moins que) 1/272 du temps, donc si votre courant de commande était de 30 mA à un moment donné, chaque LED le courant moyen serait d'environ 0,1 mA - assez faible.
Si vous n'avez pas besoin d'autant de LED mais avez plutôt besoin de plus de luminosité, le multiplexage traditionnel peut être une meilleure option. Dans ce cas, vous utilisez certaines de vos lignes comme lignes et d'autres comme colonnes dans une matrice. Si vous utilisez un courant LED de 10 mA, vous pouvez définir une matrice de 4 colonnes et 13 lignes, où les 4 LED d'une même ligne peuvent être allumées à la fois, et vous parcourez les lignes. Ensuite, chaque ligne est sur 1/13 du temps à un courant de 10 mA, donc le courant moyen des LED peut atteindre 0,76 mA, MAIS vous n'obtenez que 4 * 13 = 104 LED. (Certainement plus lumineux par LED qu'avec charlieplexing.)
Dans le dernier exemple, la limite est de 40 mA par broche sur l'AVR, car chaque rangée de broches de pilotage génère 4x10 = 40 mA. Si vous autorisez l'ajout de transistors externes (qui peuvent être bon marché et petits) aux sorties de ligne, vous pouvez éviter cette limite particulière et devenir plus lumineux. Par exemple, vous pouvez créer un réseau 8x9, avec 8 lignes et 9 colonnes, 72 LED au total. L'une des 8 lignes est activée à la fois, sélectionnée via le transistor. Jusqu'à 9 LED dans une rangée donnée peuvent être allumées à la fois, pilotées à 20 mA, donc 180 mA proviennent du transistor, et vous restez sous les limites de courant de l'AVR. Le courant moyen par LED est maintenant de 20 mA / 8 = 2,5 mA - généralement assez lumineux.
Il y a un tutoriel très agréable et détaillé ici qui comprend une section sur l'utilisation d'un Arduino pour exécuter un cube LED 8x8x8. (Ne manquez pas le film YouTube qu'ils ont en place)
Il existe de nombreux modules d'extension d'E / S qui utilisent des bus SPI ou I2C. Avec un seul module MSSP, vous pouvez contrôler presque une quantité infinie de sorties numériques comme les LED.
Voir les fiches techniques Microchip ou les notes d'application pour les parties suivantes:
SPI - MCP23S08
I2C - MCP23008
Avec 17 broches d'E / S, dix-sept transistors NPN (émetteurs suiveurs pour augmenter le courant), il ne devrait pas y avoir de problème particulier montrant 272 LED dans des combinaisons arbitraires à un rapport cyclique de 1/17, avec un courant moyen ou 0,7 mA (200 mA / 272), limité par la capacité de la puce à abaisser 200mA à la fois. L'ajout d'une diode pour obtenir une baisse de 0,7 volt permettra l'ajout de 17 autres LED (réduisant le rapport cyclique à 1/18), bien que la luminosité ne corresponde pas tout à fait aux autres.
Alors que Windell Oskay fait valoir que 104 LED est le maximum sans ajouter plus de transistors, Tom Igoe a publié des photos d'une matrice de 128 LED directement contrôlées par un seul Arduino Mega - pas de transistors supplémentaires, discrets ou intégrés.
Tom Igoe "triche-t-il" en dépassant brièvement le "courant maximum absolu par broche" répertorié dans la fiche technique?