J'ai expérimenté avec une matrice LED 8x8 contrôlée par un Arduino Uno. Comme je pense que c'est typique, la matrice utilise une anode commune pour chaque ligne et une cathode commune pour chaque colonne.
Pour le moment, j'ai toutes les broches de la matrice connectées directement aux broches IO de l'Uno, et je n'ai eu aucun problème pour allumer les LED une par une. En parcourant toute la matrice comme cela, les mises à jour sont un peu lentes, ce qui signifie que les LED ne sont pas aussi lumineuses que je le souhaiterais.
Pour autant que je sache, je ne peux pas allumer une rangée entière en toute sécurité à la fois, car une broche individuelle sur l'Uno n'est pas capable de fournir suffisamment de courant pour alimenter 8 LED distinctes en même temps (nécessitant au moins 10 mA chacune pour être assez brillant).
Il m'est venu à l'esprit que l'inverse pourrait être plus sûr. Si j'allume une colonne entière à la fois, chaque broche n'a qu'à fournir suffisamment de courant pour une LED, ce qui ne devrait pas poser de problème. Cependant, il s'appuie sur une broche potentiellement absorbant le courant des 8, totalisant au moins 80mA.
Est-ce possible ou vais-je faire frire ma planche?
la source
Réponses:
Résultat très probable. Voici pourquoi:
L'Arduino Uno utilise le microcontrôleur atMEGA328, qui a une valeur maximale absolue de source ou de puits de 40 mA par GPIO. En outre, le courant total à travers les rails d'alimentation ou de mise à la terre (c'est-à-dire que le total de tous les courants OP veut que les broches GPIO descendent ou se source) est évalué à un maximum de
150200 mA.De manière réaliste, les graphiques de courant dans la fiche technique atMEGA328 ne vont même pas jusqu'à 40 mA, il est donc plus sûr de limiter le courant à peut-être 20 mA au total par GPIO.
En d'autres termes, qu'un GPIO soit utilisé comme source ou récepteur, les limites restent assez basses et, dans la pratique, devraient être maintenues bien inférieures aux valeurs maximales absolues. Même en dessous du maximum absolu, le fonctionnement d'un microcontrôleur à une température trop élevée réduit sa durée de vie.
Solution :
Utilisez des BJT, des MOSFET ou des circuits intégrés de pilote tels que l' ULN2003 pour réellement conduire le courant à travers les LED.
la source
Je vais voler ma réponse lorsque j'ai répondu à cette question lors de la dernière tentative d'arduino SE.
C'est un peu complexe. Fondamentalement, il existe un certain nombre de facteurs limitatifs:
Les lignes d'E / S du microcontrôleur (c'est-à-dire les broches analogiques et numériques) ont à la fois une limite de courant agrégée (par exemple totale) et une limite par broche:
À partir de la fiche technique ATmega328P .
Cependant, selon la façon dont vous définissez les "Pins" Arduino, ce n'est pas toute l'histoire.
La broche 5 V de l'arduino n'est pas connectée via le microcontrôleur . En tant que tel, il peut générer beaucoup plus d'énergie. Lorsque vous alimentez votre Arduino depuis USB, l'interface USB limite votre consommation totale d'énergie à 500 mA. Ceci est partagé avec les appareils sur la carte Arduino, donc la puissance disponible sera un peu moins.
Lorsque vous utilisez une alimentation externe, via le connecteur d'alimentation du baril, vous êtes limité par le régulateur local 5V, qui est évalué pour un maximum de 1 Amp . Cependant, il est également limité thermiquement , ce qui signifie que lorsque vous consommez de l'énergie, le régulateur chauffera. Lorsqu'il surchauffe, il s'arrête temporairement.
La sortie régulée 3,3V est capable de fournir 150 mA max, ce qui est la limite du régulateur 3,3V.
En résumé
Remarque: cela ne s'applique pas à l'Arduino Due, et il existe probablement des différences pour l'Arduino Mega. C'est généralement vrai pour tout Arduino basé sur le microcontrôleur ATmega328.
la source