Eksperymentowałem z matrycą LED 8x8 kontrolowaną przez Arduino Uno. Jak myślę, co jest typowe, matryca używa wspólnej anody dla każdego rzędu i wspólnej katody dla każdej kolumny.
W tej chwili mam wszystkie styki matrycy podłączone bezpośrednio do styków IO na Uno i nie miałem żadnych problemów z zapalaniem diod LED jeden po drugim. Przejście przez całą taką matrycę powoduje, że aktualizacje są nieco powolne, co oznacza, że diody LED nie są tak jasne, jak bym chciał.
O ile mi wiadomo, nie mogę bezpiecznie zapalić całego rzędu na raz, ponieważ pojedynczy pin na Uno nie jest w stanie pozyskać wystarczającej ilości prądu, aby zasilić 8 oddzielnych diod LED jednocześnie (wymaga co najmniej 10 mA dla bądź wystarczająco jasny).
Przyszło mi do głowy, że sytuacja odwrotna może być bezpieczniejsza. Jeśli zaświecę jednocześnie całą kolumnę, wówczas każdy pin musi tylko uzyskać wystarczającą ilość prądu dla jednej diody LED, co nie powinno stanowić problemu. Opiera się jednak na jednym pinie, który potencjalnie może zatopić prąd ze wszystkich 8, w sumie co najmniej 80 mA.
Czy to możliwe, czy mam usmażyć swoją deskę?
źródło
Odpowiedzi:
Całkiem prawdopodobny wynik. Dlatego:
Arduino Uno korzysta z mikrokontrolera atMEGA328, który ma absolutną maksymalną wartość znamionową źródła lub ujścia 40 mA na GPIO. Ponadto całkowity prąd przesyłany przez szyny zasilające lub uziemiające (tj. Suma wszystkich prądowych OP chce, aby piny GPIO zatonęły lub źródło) zostały ocenione na maksymalnie
150200 mA.Realistycznie, obecne wykresy w arkuszu danych atMEGA328 nie sięgają nawet do 40 mA, dlatego najbezpieczniej jest ograniczyć prąd do około 20 mA łącznie na GPIO.
Innymi słowy, niezależnie od tego, czy GPIO jest używane jako źródło, czy do ujścia, limity pozostają dość niskie, aw praktyce powinny być utrzymywane znacznie niższe niż absolutne maksymalne oceny. Nawet poniżej absolutnego maksimum, uruchomienie mikrokontrolera w zbyt wysokiej temperaturze skraca jego żywotność.
Rozwiązanie :
Użyj BJT, MOSFET lub jakiegoś sterownika IC, takiego jak ULN2003, aby faktycznie poprowadzić prąd przez diody LED.
źródło
Mam zamiar ukraść moją odpowiedź, kiedy odpowiedziałem na to pytanie podczas ostatniej próby arduino SE.
To jest trochę skomplikowane. Zasadniczo istnieje wiele czynników ograniczających:
Linie IO z mikrokontrolera (tj. Pinów analogowych i cyfrowych) mają zarówno łączny (np. Całkowity) limit prądu, jak i limit na pin:
Z arkusza danych ATmega328P .
Jednak w zależności od tego, jak zdefiniujesz „szpilki” Arduino, nie jest to cała historia.
Pin 5 V arduino nie jest podłączony przez mikrokontroler . Jako taki może uzyskać znacznie większą moc. Kiedy zasilasz swój Arduino z USB, interfejs USB ogranicza całkowity pobór mocy do 500 mA. Jest to współdzielone z urządzeniami na płycie Arduino, więc dostępna moc będzie nieco mniejsza.
Kiedy korzystasz z zewnętrznego zasilacza, przez beczkowe złącze zasilania, jesteś ograniczony przez lokalny regulator 5V, który jest oceniany na maksymalnie 1 Amp . Jest to jednak również ograniczone termicznie , co oznacza, że gdy pobierasz energię, regulator nagrzewa się. Gdy się przegrzeje, tymczasowo się wyłączy.
Wyjście regulowane 3,3 V jest w stanie dostarczyć maks. 150 mA, co stanowi limit dla regulatora 3,3 V.
W podsumowaniu
Uwaga: Nie dotyczy to Arduino Due i prawdopodobnie istnieją pewne różnice w Arduino Mega. Jest to prawdopodobnie ogólnie prawdą dla każdego Arduino opartego na mikrokontrolerze ATmega328.
źródło