Große Anzahl LEDs steuern

Hallo,

ich habe vor kurzem gelesen, dass der Arduino maximal 200mA bereitstellen kann (ca. 10 LEDs).

Jetzt zu meiner Frage :
Wenn ich mehr LEDs, z.B. 15 Stück, an einer 5V-Spannungsquelle betreibe (jede mit 220 Ohm Vorwiderstand) kann ich ja die Kathoden der LEDs mit z.B. 13 Digitalpins und 2 Analogpins des Arduinos verbinden, so dass man jede einzeln ansteuern kann.

Ist es möglich, mit dieser Konstellation alle 15 Pins auf LOW zu schalten (so dass alle LEDs leuchten), ohne dass der Arduino dabei Schäden nimmt, oder gilt auch hier die 200mA - Regel ?

(Mir geht es in diesem Beitrag mehr um das technische Verständnis. Ich weiß, dass ich 15 LEDs auch über Schieberegister steuern könnte).

Vielen Dank

Der Strom darf natürlich nicht direkt über den Prozessor fließen. Für sowas gibt es diverse LED Treiber. Die normalen Schiebregister sind da auch eher eine Notlösung, weil sie auch nicht viel Strom liefern können.

Wenn du alle LEDs auf einmal schalten willst reicht ein einzelner Transistor:

Und dann einfach mehrere LEDs und Vorwiderstände parallel. Bei roten LEDs kann man da auch zwei in Reihe schalten. Bei weißen oder blauen geht das aber mit nur 5V nicht

Hi,

leider hast Du nicht gesagt wo die 5 V herkommnen sollen, ich gehe jetzt aber mal davon aus die kämen von extern , also nicht von dem onboard 5V Regler. Dann würdest Du mit jedem Ausgang die 0V auf je eine LED legen wollen.

damit müsste der Prozessor dennoch etwa 15*15 mA an zus. Verlustleistung abkönnen. Ich weiss nicht wo der Gleichzeitigkeitsfaktor für die usgänge liegt. Für die SMD Version scheint mir das ehr nicht möglich, kann mich da aber irren.

UnoRookie:
.....
Ist es möglich, mit dieser Konstellation alle 15 Pins auf LOW zu schalten (so dass alle LEDs leuchten), ohne dass der Arduino dabei Schäden nimmt, oder gilt auch hier die 200mA - Regel ?
.....

Egal wieviel Leds du mit dem Atmega328 schaltest, ob gegen GND oder gegen VCC, es dürfen maximal 200mA durch alle Pins gemeinsam über den Atmega328 fließen.

Falls es sich um einen Arduino UNO handelt (ATmega328P) dann ist das so:

In der Grafik steht zwar Duemilanove, das ist aber in diesem Fall dasselbe.

Edit: Quelle
http://playground.arduino.cc/Main/ArduinoPinCurrentLimitations
bzw.
http://arduino-info.wikispaces.com/ArduinoPinCurrent

Schöne Grafik.
Eigentlich gilt die Grafik für den UNO besser als für den Duemilanove weil dieser eine LED direkt auf dem PIN 13 hat und darum eine kleine Grundbelastung hat. Beim Arduino UNO ist die LED mit einem Operationsverstärker entkoppelt.
Grüße Uwe

Vielen Dank für eure hilfreichen Antworten.
Eine Frage ist noch aufgetaucht :

Wenn du alle LEDs auf einmal schalten willst reicht ein einzelner Transistor:
http://lednique.com/wp/wp-content/uploads/2016/09/GPIO-driving-NPN-and-LED.png
Und dann einfach mehrere LEDs und Vorwiderstände parallel. Bei roten LEDs kann man da auch zwei in Reihe schalten. Bei weißen oder blauen geht das aber mit nur 5V nicht

Ja, die Idee mit dem Transistor ist mir auch gekommen. Allerdings kann ich die LEDs doch dann trotz Verkabelung mit den Pins des Arduino nicht einzeln schalten, denn sobald ich mit dem Transistor alle anschalte, auch ein Strom über die Pins des Arduino fließt oder ?

UnoRookie:
Allerdings kann ich die LEDs doch dann trotz Verkabelung mit den Pins des Arduino nicht einzeln schalten

Wenn du alle einzeln schalten musst, dann gibt es diverse Treiber ICs die das bequem erledigen.

Du sagst halt nicht klar was es sein soll. Einmal sollen alle einzelnen geschaltet werden. Dann alle auf einmal.

denn sobald ich mit dem Transistor alle anschalte, auch ein Strom über die Pins des Arduino fließt oder ?

Logisch besteht hier keinerlei Zusammenhang mit dem ersten Halbsatz. Der Sinn eines Transistors ist dass der Laststrom gerade nicht über den Prozessor läuft.

UnoRookie:
... 15 Stück ...

Fünfzehn Stück nennst Du eine große Anzahl?!

Ich bastle die Tage an einer Matrix von 7x7 LEDs (49 Stück). Die leuchten zwar nicht alle gleichzeitig, aber so schnell hintereinander, dass es wie gleichzeitig aussieht.

Dazu setze ich 7 Pins auf HIGH und lasse die daran hängenden LEDs über einen Transistor (an dem die 7 LEDs der Zeile hängen) leuchten. Wenn ich fertiggebastelt habe, zeige ich das mal hier.

Gruß

Gregor