Der ULN ist nur ein Transistor Array mit eingebautem Vorwiderstand und Open Collector Ausgängen (d.h. der Strom fließt in das IC). Da wird nichts programmiert. Einfach nur dazwischen schalten und schon hat man mehr Strom pro Ausgang:
Die Eingänge jeweils direkt mit dem Arduino verbinden
ich kenn' mich null mit elektronik aus, also versuche ich es zu erklären...
intern besteht ein uln2803 aus rauch. wenn der rauch rauskommt, isser kaputt. mehr braucht man nicht zu wissen.
wichtig für Dich: er hat 8 eingänge und 8 ausgänge. wenn Du an einen eingang plus legst macht gegenüber ein ausgang für minus auf.
also die led-minus-seite an den uln-ausgang. das ist alles. der uln wird an minus des netzteils angeschlossen und dort fließt der viele strom, den der arduino nicht vertragen würde, ab.
also:
netzteil plus > led > widerstand > uln-ausgang
aber wie gesagt, die 16 leds könntest Du auch rein mit dem arduino betreiben, je eine an einen pin. der arduino hat ja, ich weiß jetzt nicht 20 oder 21. dann könntest Du, mußt aber nicht, jede einzeln schalten
nur der vollständigkeit halber, und alles ohne viel aufwand oder große programmierkenntnisse, da helfen wir Dir schon durch:
mit den ULNs könntest Du auch jede reihe einzeln dimmen.
mit 74HC595-schieberegistern (2 stück, auch im centbereich) könntest Du jede der 16 leds einzeln dimmen, ohne uln2803.
Eisebaer:
aber wie gesagt, die 16 leds könntest Du auch rein mit dem arduino betreiben, je eine an einen pin. der arduino hat ja, ich weiß jetzt nicht 20 oder 21. dann könntest Du, mußt aber nicht, jede einzeln schalten
Da wäre ich vorsichtig: 16LED mit je 20mA macht 320mA Gesamtstrom. Das übersteigt den zulässigen Gesamtstrom der Versorgungspins des ATmega328 (200mA).
ich würde schon Transistoren oder den ULN2003 nehmen. Wenn du aber wirklich alle LEDs in den 4 Feldern zusammen schalten willst, reichen eigentlich Transistoren. (BC107, BC337, etc)
Den NPN braucht es wenn mehrere LED paralellgeschaltet werden und hell leuchten sollen ( Gesamtstrom über 40mA) oder wegen Reihenschaltung mit einer höheren Versorgungsspannung versorgt weden müssen.
Grüße Uwe
Die Angabe 200mA maximum Rating ist pro Versorgungspin.
wenn ich also 16 LEDs à 20mA über µC-Pins schalte, dann fliessen 320mA nach GND (oder VCC, je nach Schaltung)
Nun hat der ATMega328 2 GND-Pins, aber man weiss nicht, wie die intern verschalten sind, ich würde das Risiko nicht eingehen. Man könnte auch eine Trick versuchen und 8 LEDs nach Masse Schalten und 8 LEDs nach VCC.
Aber letztlich ist es ein Microcontroller und kein Leistungsbaustein.
Jedes mA muss über den Prozessorchip drüberfliesen und erzeugt dort Verlustwärme.
Man könnte auch eine Trick versuchen und 8 LEDs nach Masse Schalten und 8 LEDs nach VCC.
Darum geht es ja.
Es gibt aber noch diese Limits:
1] The sum of all IOL, for ports C0 - C5, ADC7, ADC6 should not exceed 100 mA.
2] The sum of all IOL, for ports B0 - B5, D5 - D7, XTAL1, XTAL2 should not exceed 100 mA.
3] The sum of all IOL, for ports D0 - D4, RESET should not exceed 100 mA
1] The sum of all IOH, for ports C0 - C5, D0- D4, ADC7, RESET should not exceed 150 mA.
2] The sum of all IOH, for ports B0 - B5, D5 - D7, ADC6, XTAL1, XTAL2 should not exceed 150 mA
danke für Eure zahlreichen Beiträge. Irgendwie komme ich nicht weiter. Das Problem wird also, wenn ich es richtig verstehe, der Stromfluss Richtung GND sein, oder?
Da mein Vorhaben für eine Maske ist, benötige ich die oben genannte Schaltung für die linke und rechte Seite der Maske. Sprich ich habe dann die doppelte Anzahl von LED's (32 Stück).
Ist das Arduino Board für mein Vorhaben überhaupt das richtige?
also 8 reihen, die Du einzeln schalten willst.
es bleibt dabei: ein uno und ein ULN2803. der kann ja 8 ausgänge schalten und die 640mA kann er auch grade noch ab...
guntherb:
Die Angabe 200mA maximum Rating ist pro Versorgungspin.
wenn ich also 16 LEDs à 20mA über µC-Pins schalte, dann fliessen 320mA nach GND (oder VCC, je nach Schaltung)
Nun hat der ATMega328 2 GND-Pins, aber man weiss nicht, wie die intern verschalten sind, ich würde das Risiko nicht eingehen. Man könnte auch eine Trick versuchen und 8 LEDs nach Masse Schalten und 8 LEDs nach VCC.
Obwohl der AVR ein µC ist, welcher "gewaltige" Ströme schalten kann, im Gegensatz zu vielen anderen µC, wirst du ihn mit deinem Berg LEDs überlasten.
Wollen wir das?
Eher Nicht!
Darum wurde dir mehrfach zu einem LED Treiber geraten.
Zu einem "Strom Verstärker".
Z.B. der uln2803
Leicht einsetzbar, bietet, was du brauchst, ist preiswert.
Es gibt viele weitere Möglichkeiten einen Treiber zu bauen....
Und diesen Treiber natürlich nicht über den Arduino versorgen, sondern über ein getrenntes Netzteil. Die GND verbinden.
Ich versteh nicht, was es da noch zu überlegen gibt.
Der mehrfach vorgeschlagene ULN2803 ist der Baustein für dich, mit dem du das problemlos erledigen kannst.
Und teuer ist er auch nicht: bei reichelt elektronik
Wichtig ist eben zu wissen, dass der Strom in den ULN hinein fließt und nicht heraus! Also Kathode an den ULN. Anfänger schließen LEDs ja gerne anders herum an. Bei dem µC und manchen anderen ICs geht das. Hier nicht.
Liegt daran dass der ULN innen vereinfacht so aussieht:
Also der Emitter ist fest mit GND verbunden und der offene Kollektor ist der Ausgangs-Pin. Damit kein kein Strom hinaus fließen. Hat den Vorteil, dass das IC an sich keine Versorgungsspannung braucht. Die hängt direkt an der Last und kann auch höher als 5V sein.