Dies ähnelt dem Verfahren zum Ansteuern einer 20-mA-LED von einem max. 4-mA-GPIO-Pin, außer dass ich etwas mehr Handhaltung benötige, um zu verstehen, was passiert.
Zum Hintergrund: Ich bin Softwareentwickler und weiß derzeit nur genug über Elektronik, um eine 9-V-Batterie mit meiner Zunge erfolgreich zu testen.
Ich habe ein Arduino Uno-Board, das ich so manipuliert habe, dass es 3 LEDs, die in einer Konfiguration vom Typ "Verfolgungslichter" blinken, separat steuern kann. Ich habe jeden GPIO-Pin direkt mit einer LED, einem Widerstand und zurück mit dem +3V-Masse-Pin der Platine verbunden. Die Software tastet die GPIO-Pins in Intervallen ab, um den gewünschten Effekt zu erzielen.
Mit einer verkabelten LED sieht alles toll aus. Beim Hinzufügen einer zweiten LED zu jedem der 3 kleinen Schaltkreise (um meine Kette von Verfolgungslichtern zu "verlängern") dimmen die LEDs erheblich. Mein Plan war, schließlich eine Kette von 10 LEDs für jeden Stromkreis für insgesamt 30 LEDs zu verdrahten. Offensichtlich, wenn ich nicht 2 LEDs leuchten kann, kommt 10 nicht in Frage.
Also dachte ich daran, einen Transistor für jede Schaltung zu verwenden, wobei der GPIO lediglich den "Trigger" zum Aufleuchten des Strangs von 10 LEDs bereitstellt. Ich habe ein paar LEDs, einen Widerstand und den Transistor verdrahtet und alles an eine 9-V-Batterie angeschlossen. Es ist dunkel, wie erwartet. Es gibt nur einen Basisstift am Transistor, also sollte der GPIO-Stift offensichtlich damit verbunden sein , aber wie soll ich die Schaltung zurück zum Arduino-Board korrekt vervollständigen?
Ich experimentierte, indem ich eine 3-V-Batterie nahm und den Minuspol mit dem Emitterstift des Transistors verband und dann den Basisstift als Auslöser berührte, und es schien zu funktionieren, dachte, die LEDs flackerten ein wenig. Das könnte daran liegen, dass meine Hände nicht besonders ruhig waren. Ist dies der richtige Ansatz für die Arbeit mit den GPIO-Pins des Arduino?
Hier sind alle elektrischen Daten für die Komponenten, die ich vor mir habe, weil die Mathematik natürlich zählt.
Arduino GPIO: 5 V LEDs: NTE30143 5 V 25 mA (Dauerdurchlassstrom) Transistor: 2N4401 600 mA
Was ist der "richtige" Weg, um die GPIO-Pins des Arduino zu verwenden, um eine Reihe von 10 LEDs zu beleuchten? Kann es mit den oben genannten Komponenten gemacht werden, oder sollte es wirklich mit einer komplexeren Schaltung gemacht werden?
Ich baue dies als Prototyp für einige Grundschüler zum Selbstbau, und ich möchte die Schaltung lieber so einfach wie möglich machen.
(Bonuspunkte für die Erklärung, wohin die Widerstände gehen müssen, welche Werte sie haben müssen und warum sie überhaupt dort sein müssen :)
AKTUALISIEREN
Ich habe vergessen zu erwähnen, dass ich jede Kette von 10 LEDs in Reihe schalten möchte, nicht parallel. Ich möchte die erforderliche Drahtmenge minimieren. Diese LEDs werden am Ende vielleicht 4-5 Zoll voneinander entfernt sein und die gesamte Kette von 30 LEDs wird eine große Schleife machen, also möchte ich nicht jede LED einzeln anreihen. Ich hätte gerne 3 große Schleifen mit jeweils 10 LEDs mit allen Bedienelementen an einem einzigen Ort.
AKTUALISIEREN
Eine letzte Anforderung (glaube ich): Das muss batteriebetrieben sein. Kein Netzstrom. :)
Sie haben schwaches GPIO. Sie möchten 250 mA und Sie möchten (vertrauen Sie mir darauf) Ihren Ausgangstransistor sättigen. Ein 2N4401 benötigt ein Verhältnis von Basisstrom zu Kollektorstrom von 1:10 in der Sättigung. Sie benötigen also 25 mA an der Basis Ihres Ausgangstransistors. Das ist mehr als Ihre schlappen GPIO-Vorräte. Sie brauchen also einen anderen Transistor.
Q1 ist ein Emitterfolger. Die Emitterspannung beträgt 0 V, wenn der GPIO-Pin niedrig ist, und 0,7 V unter der GPIO-Pin-Spannung, wenn der Pin hoch ist. Unter der Annahme , dass die Versorgungsspannung für den Mikroprozessor 5 V beträgt, beträgt die Basis von Q1 4,3 V, wenn der GPIO-Pin hoch ist. Die Basis von Q2 liegt bei etwa 0,7 V, wenn Q2 eingeschaltet ist. Dies lässt 3,6 V übrig, um Strom über R1 zu erzeugen.
Sie benötigen 30 mA an R1 (das sind 25 mA aufgerundet). (3,6 V)/(30 mA) = 120 (Beachten Sie, dass die Einheiten funktionieren - es ist schön, wenn das passiert). Solange Ihr Arduino ein 5-V-Gerät ist, geht es Ihnen gut. Ändere R1 auf 47 wenn es ein 3,3V ist.
LEDs werden nicht gerne von einer Spannungsquelle angesteuert - Sie müssen mit der Spannung beginnen, die Sie liefern, und herausfinden, wie Sie ihnen den angegebenen Strom geben. Ihre LEDs fallen um 3,5 V ab (überprüfen Sie, dass ich aus dem Gedächtnis gehe und faul bin). Angenommen, Sie treiben diese Saite von einer 9-V-Quelle an, können Sie Paare mit einem Strombegrenzungswiderstand in Reihe schalten - das ist der R2, den ich im Diagramm zeige.
Wenn Sie haben LEDs in einer Kette (zwei bei 9 V, eine bei 5 V), dann
Beachten Sie, dass Sie Ihre 9V wahrscheinlich nicht von einer "9V" -Batterie erhalten möchten. Eine "9V"-Batterie hat 9 V, ist bei leichter Last voll aufgeladen, und Sie möchten nicht mehr als etwa 50 mA daraus ziehen. Wenn Sie 250 mA (oder sogar 125 mA) ziehen, sollten Sie Ihre Schaltung so gestalten, dass sie bei etwa 6 V noch funktioniert - was bedeutet, dass nur eine LED pro Abschnitt, was doppelt so viel Strom bedeutet, Sie nicht gewinnen können, wenn Sie verlieren usw .
Also - verwenden Sie eine 9-V-Wandwarze und seien Sie glücklich.
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Die Widerstände R1 bis R10 sind Strombegrenzungswiderstände, für jede LED aus dem Datenblatt beträgt der Durchlassstrom 20 mA bei 3,1 V Durchlassspannung. aus dieser Formel
wobei Vs die Quellenspannung ist, Vf die Durchlassspannung ist und i der Strom ist. wir erhalten R fast gleich 100 (nächster Standardwert). In parallelen LED-Schaltungen müssen Sie für jeden LED-Zweig einen separaten Widerstand hinzufügen, da sie zwar dieselben Spezifikationen aufweisen, ihre Durchlassspannungen jedoch geringfügig voneinander abweichen und dazu führen, dass einige LEDs hell und andere stumpf leuchten. Manchmal brennen sie sogar durch . Daher ist es am besten, in jedem Zweig einen einzelnen Widerstand hinzuzufügen (für einzelne LEDs).
bezüglich Transistorbasisberechnungen
Gesamtzahl der LEDs: 10 je LED-Verbrauch: 20mA
Der Gesamtstrom beträgt also: 20 * 10 = 200 mA ist der Kollektorstrom.
Der aktuelle Verstärkungsfaktor von 2N4401 beträgt 40 bei 500 mA (da er zwar 100 bei 150 mA beträgt, aber wir die Grenze überschritten haben, betrachten wir ihn als 40).
Ic = hfe * Ib (Kollektorstrom = Verstärkung * Basisstrom)
also Ib = 200/40 = 5 mA (dies ist der minimal erforderliche Basisstrom, um 200 mA Kollektorstrom zu erhalten).
HINWEIS: Arduino GPIO kann bis zu 40 mA liefern. Sie können sich also dafür entscheiden. Wenn Sie dies auch mit weniger Basisstrom steuern möchten (basierend auf Ihrer Frage mit 4 mA benötigen Sie einen zusätzlichen Transistor in Darlington-Paar-Konfiguration).
Jetzt wird die Basis über Arduino GPIO (5 V) angesteuert. Die effektive Spannung am Widerstand beträgt = 5 V - Vbe (Basis-Emitter-Spannung) = 5 V - 0,7 V = 4,25 V
Also Ib = V Basiswiderstand / Widerstand => Widerstand = V Basiswiderstand / Ib => 4,25/0,005 => 850 Ohm, sodass der nächste Wert mit einem gewissen Randfaktor 750 Ohm / 820 Ohm beträgt
Dies ist die einfache Johnson-Zählermethode mit 10 Cd ~ 20 Cd 5 mm 5000 k LEDs mit nur 5 mA pro LED, was bei diesen wirklich hell ist.
Mit 30 weiteren Widerständen können Sie die führende LED auf die halbe Intensität blenden
Ein glatterer Effekt verwendet solche Widerstände und Transistoren .
Der 50-Ohm-Widerstand steuert die Helligkeit und den durchschnittlichen Strom und kann mit 25 Ohm gekoppelt werden.
Transistor-Emitterfolger-Ansatz
Angenommen 5V GPIO
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Wenn ich falsch angenommen habe und es sich um ein 3.3GPIO handelt, ist ein anderes Design erforderlich. UPDATE aha 3V argh..
Also brauchen wir jetzt einen invertierenden Open-Drain-HEX-Schalter mit niedriger Spannung im DIP-Chip. http://www.ti.com/lit/ds/symlink/cd74ac05.pdf
Bei Vcc=3V bis 5V ist der Schaltwiderstand < 20 Ohm. Dadurch werden alle Eingänge und die LEDs auf eine gemeinsame ANODE von 5,0 V ohne gemeinsamen 50-Ohm-Widerstand invertiert, der jetzt den Open-Drain-Widerstand verwendet.
weitere Berechnungen erforderlich.
David Tweed
KH
Christoph Schulz
KH
KH
Tony Stewart EE75