Einschalten mehrerer LEDs mit Arduino mithilfe eines Transistors


8

Ich möchte in der Lage sein, 50 rote LEDs mit einem Pin eines Arduino einzuschalten. Ich möchte keine individuelle Steuerung, ich möchte nur in der Lage sein, sie alle ein- oder auszuschalten.

Ich habe dieses Beispiel gefunden . Es wird ein 2N3904-Transistor verwendet. Ist das der Ansatz, den ich verfolgen möchte? Ich nehme an, ich würde einen Transistor mit höherer Leistung benötigen?

Ich verwende ein externes Netzteil, das mit einem 5-V-Spannungsregler an eine benutzerdefinierte Platine angeschlossen ist, sodass ich die LEDs direkt von diesem Regler aus mit Strom versorge.

Die LEDs kommen in Form dieses LED-Lichtleisten-Arrays (oder zumindest sehr ähnlich) ...

Ich hatte in einem Kommentar in einer Antwort unten erwähnt, dass ich mit jeder LED einen 330-Ohm-Widerstand verwendete. In einem anderen Teil dieses Projekts verwende ich die Lichtbalken als Füllstandsmesser, und jede separate LED wird über ein Schieberegister gesteuert, also den separaten Widerstand. Nachdem ich darüber nachgedacht habe, wird mir klar, dass ich dafür jetzt keinen Widerstand in Reihe mit jeder LED haben muss, da sie entweder alle an oder alle aus sind (hmmm ... Entschuldigung für meine eher zufälligen Kommentare!).

Ich hatte den Gedanken, dass ich eine Art elektronischen Schalter haben könnte, der Masse oder 5V trennen kann. Ist das machbar?


Dies ist für einen Software-Controller, den ich mache. Die Lichter müssen relativ schnell reagieren können (dh alle 200 Millisekunden)
Adam

1
Die Software ist leicht herauszufinden. Ich denke, ein bisschen mehr Erklärung der Hardware würde helfen. Welche Art von LED-Leiste verwenden Sie? Sind die LEDs in Reihe, parallel, gemeinsame Kathode, gemeinsame Anode oder alle unabhängig? Bedeutet "Stromversorgung der LEDs direkt über das Stromnetz" vom 5-V-Regler? Weil das viele andere Dinge bedeuten könnte. Sie haben einen 330-Ohm-Widerstand pro LED erwähnt ... also hat jede LED (alle 50) einen Vorwiderstand? Ich versuche nur zu klären, damit wir Ihnen die bestmögliche Antwort geben können.
Kurt E. Clothier

Hallo Kurt, ich habe meinen ursprünglichen Beitrag mit den Infos bearbeitet. Prost
Adam

Antworten:


7

Ein Transistor ist im Grunde ein Schalter, der Masse oder 5V trennen kann. Es gibt Transistoren aller Art, und einige können wirklich große Lasten schalten. 50 LEDs sind keine große Sache.

Die Frage ist also: Kann ein einzelner 2N3904 50 LEDs schalten?

Um das zu beantworten, müssten wir zuerst wissen, welche Art von LEDs. Nehmen wir jedoch an, Sie verwenden die übliche Sorte, die nichts Besonderes ist. Eine vernünftige Schätzung des maximalen Strom von diesen ist . Wenn Sie 50 haben, dann ist der maximale Strom 20 m A 50 = 1000 m A . Blick in das Datenblatt ich die maximale Kollektorstrom für 2N3904 sehen ist 200 m A . Die Antwort lautet also nein: Sie können nicht 50 LEDs mit einem 2N3904 schalten.20mA20mA50=1000mA200mA

Ich nehme an, Sie haben mehrere Möglichkeiten:

  • Verwenden Sie mehrere 2N3904
  • Verwenden Sie weniger LEDs
  • Verwenden Sie dieselben LEDs, treiben Sie sie jedoch mit weniger Strom an
  • Verwenden Sie einen größeren Transistor ( TIP121 ist sehr leicht zu finden)
  • Verwenden Sie ein anderes Schaltgerät

Von diesen halte ich die Reduzierung des LED-Stroms oder die Verwendung eines größeren Transistors für die wahrscheinlichste Lösung. Andere Schaltgeräte (wie ein Relais) sind wahrscheinlich teurer und langsamer.


1
* Verwenden Sie einen IRLML2502-MOSFET, meine Lieblingskomponente des Tages. :-)
Anindo Ghosh

Ich verwende 5 rote LED-Lichtleisten (jeweils 10 LEDs). Ich verwende einen 330-Ohm-Widerstand in Reihe mit jeder LED, daher suche ich ungefähr 2 mA pro LED. Dies ist weniger als die Spezifikationen des Transistors (ich denke - ich bin immer ein bisschen verwirrt bei der Berechnung des Gesamtstromverbrauchs!)
Adam

Das scheint unwahrscheinlich. Ihr Widerstand würde einen Spannungsabfall von 330 Ω x 0,002 A = 0,66 V verursachen. Wenn Ihre LEDs also keine Vf von 4,34 V haben (was für rote LEDs ungewöhnlich hoch wäre), ist Ihr Strom wahrscheinlich erheblich höher.
microtherion

1
Diese Antwort berücksichtigt nur die parallel verdrahteten LEDs. Die LEDs könnten zwei in Reihe sein. Der Strom wäre also 20mA * 25 Ketten. Aber @Adam 2mA ist niedrig für eine LED, leuchten sie überhaupt bei dieser aktuellen Auslosung?
Passant

1
@ Passant, verständlich. Ich bin mir sicher, dass einige der leistungsstarken Geräte etwas mehr benötigen, um eingeschaltet zu werden. Aber die üblichen LEDs, mit denen ich gearbeitet habe, sind mit kleinen Strömen (sogar viel weniger als 1 mA) sehr zufrieden, obwohl sie nicht sehr hell leuchten. Tatsächlich verbrauchen die LEDs in meinem Projekt jeweils nur 1,8 mA. Und da sie gemultiplext werden und nur zu 1/3 der Zeit, beträgt der effektive Strom eher 0,6 mA. Trotzdem ist das Display bei hellem Licht aus angemessener Entfernung gut sichtbar. projektebykec.com/projects/miscellaneous/…
Kurt E. Clothier

3

In Anbetracht der gegebenen Informationen (50 rote LEDs bei 1,95 V, 5 V Quelle, 2 mA Strom, 330 Ω Widerstände) würde das Folgende funktionieren.

Unter Berücksichtigung der Berechnung des gemeinsamen LED-Widerstands:
(Vcc -
Durchlassspannung ) / Strom Wenn Vcc 5 V beträgt, beträgt die Durchlassspannung 1,95 V pro LED, da zwei in Reihe geschaltet sind, 1,95 V * 2, und der gewünschte Strom 2 mA beträgt.
(5 - (1,95 * 2)) / 0,002 oder (5 - 3,9) / 0,002 oder 1,1 / 0,002 = 550.
Da Sie 330 Ω-Widerstände haben, ergibt eine Anpassung 3 mA pro Serie. Nicht pro LED, sondern pro Serie, da der Strom in einem Serienpfad gleich ist. Jede Reihe von Widerständen, in diesem Fall zwei, würde die gleichen 3 mA Strom verbrauchen. Dies vereinfacht die Gleichung auf Ketten mit 3 mA * 25 Reihen, von denen nur 75 mA geschaltet werden müssen.

Jeder gängige Kleinsignaltransistor wie der 2n3904 kann problemlos 75 mA verarbeiten. Ein 1 kΩ-Basiswiderstand wird zwischen der Transistorbasis und dem MCU-Pin verwendet.

Beachten Sie, dass das folgende Schema nur eine LED-Leiste zeigt. Sie würden den Rest auf die gleiche Weise hinzufügen. Verdrahten Sie die Kathode der ersten LED mit der Anode der nächsten LED und einen Widerstand pro Paar.

schematisch

simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab


-3

Sie sollten den Pin am Arduino verwenden, um einen Transistor zu steuern, der ein Relais einschaltet, und die Relaiskontakte schalten alle LEDs ein, indem Sie Masse anlegen. Wenn Sie einen Transistor verwenden müssen, müssen Sie einen finden, der den gesamten Strom verarbeiten kann. Überprüfen Sie auch bei einem Relais unbedingt die Kontaktstromwerte. Siehe Beispielschaltung unten. Abhängig von der Nennstromstärke und dem Spulenwiderstand des von Ihnen ausgewählten Relais benötigen Sie möglicherweise R2 oder nicht.

Geben Sie hier die Bildbeschreibung ein


Ein Relais hat eine relativ hohe Schaltzeit und eine begrenzte mechanische Lebensdauer. Es kann sinnvoll sein, OP zu bitten, zu bestätigen, dass die LEDs nicht sehr schnell oder zu oft gewechselt werden sollen.
Anindo Ghosh

Vielen Dank. Ich denke, ein Relais wäre zu langsam für meine Anwendung. Ich habe meinem ursprünglichen Beitrag einen Kommentar hinzugefügt.
Adam

Es macht absolut keinen Sinn, ein Relais zu verwenden, wenn so viele Transistoren verfügbar sind, die sehr große Ströme schalten können! Abgesehen von der langsamen Geschwindigkeit und der enormen Größe der Relais überleben elektrische Lösungen fast immer und übertreffen mechanische.
Kurt E. Clothier

Obwohl Relais möglicherweise nicht die beste Option sind, sind sie eine praktikable Option (Geschwindigkeit nicht standzuhalten). +1, um denjenigen auszugleichen, der herabgestimmt hat.
Passant

Das habe ich gemeint: Es ist nicht die beste Option, aber ich würde es nicht ablehnen ... Wenn irgendeine Art von gepulster Steuerung verwendet wird, hat ein Relais eine sehr kurze Lebensdauer, wenn es überhaupt mit der Pulsgeschwindigkeit umgehen kann.
Kurt E. Clothier
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.