Ansteuern einer LED von einem uC-Pin mit der Anode über der Vcc-Schiene von uC

Ich verwende einen 3,3-V-uC (ATMega 328p in Arduino Pro Mini), der mit 3 Alkalis (nominal 4,5 V) betrieben wird. Also Vin = 4,5 V, Vcc = 3,3 V

Ich möchte LEDs von einigen Pins ansteuern, sagen wir jeweils 20 mA. Und ich dachte daran, die LED-Anoden an Vin (4,5 V) anzuschließen, wobei die Kathode an den uC-Pin geht, anstatt alle LED-Ströme durch den 3,3-V-Onboard-Regler zu leiten. (Obwohl ich in dem Beispiel hier rote LEDs verwende, möchte ich vielleicht auch blaue verwenden, was mit etwas mehr Ansteuerspannung bequemer wäre).

Ich schätze eine rote LED bei etwa 2 V Vfwd, also müsste der Widerstand 2,5 V bei 20 mA abfallen, sagen wir 1K2 Ohm.

Das Problem: Dadurch wird ein uC-Pin über seine Vcc-Schiene (über eine LED) mit einer 1,2-V-Quelle verbunden.

Ich denke, wir sind in Ordnung, wenn die LED eingeschaltet ist (Pin niedrig). Aber was ist mit dem Ausschalten der LED?

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Ansatz 1: Ziehen Sie den uC-Pin hoch (3,3 V), um die LED auszuschalten. Die LED liegt zwischen 4,5 V und 3,3 V, und die Differenz von 1,2 V reicht nicht aus, um sie zu beleuchten - und ich denke, sie bringt den Stift auch nicht zu hoch über seine Schiene. Aber LEDs sind keine idealen Geräte, daher diese Frage.

Ansatz 2: Tristate-uC-Pin (machen Sie es zu einem Eingang), um die LED auszuschalten. Die LED liegt zwischen 4,5 V und dem hochohmigen Eingang (zusammen mit ihrer statischen Schutzdiode an Vcc). Auch hier hoffe ich, dass der Vfwd der LED ausreichend Schutz für den uC-Pin bietet.

Ist einer oder beide dieser Ansätze praktikabel und sicher für die uC?

BEARBEITEN: Ersetzen Sie den 120-Ohm-Widerstand oben, oops.

Ich denke, dass es sicher genug sein sollte, hochohmig oder aktiv niedrig zu gehen. Aber bei diesen Strompegeln, warum nicht einfach Strom aus der VCC-Schiene des Mikrocontrollers als Ausgang beziehen und nicht als Stromsenke / aktives Low, wie es jetzt ist?
Denken Sie daran, dass jeder Pin / Port des ATMEGA Klemmdioden im CMOS-Stil an VCC und GND hat, um Probleme mit SEHR geringer Überspannung / negativer Spannung zu lösen, aber wenn Sie einen konstanten Überspannungszustand mit nur einem 1,2-k-Widerstand haben, denke ich Es wird die CMOS-Diodenklemmen im Laufe der Zeit sprengen und Ihren gesamten Anschluss beschädigen
@KyranF - Wenn der Pin "tristated" ist, dh ein Eingang, sollte die LED unter ihrer Schwelle liegen und einen sehr großen Widerstand haben; Es handelt sich um eine "SEHR geringe Überspannung", also nicht um einen "konstanten Überspannungszustand mit nur einem 1,2-kΩ-Widerstand". Allerdings würde ich dies nicht tun, es sei denn, ich müsste etwas bereits kaputtes reparieren, und dies war meine „beste Option“.
Einverstanden. es sei denn, der Regler ist eine seltsam schwache Sache, das einzige, was Sie tun, ist, den Leistungs- / Wärmeverlust vom Regler auf die LED-Widerstände zu verschieben. Während immer noch die Stromgrenzen von 40/100/240 Pin/Port/Gesamt-mA vorliegen. Das Sinken von Strom zu einem niedrigen Pin hat die gleichen Probleme wie das Quellen von Strom aus dem Pin. In diesem Fall positiver Spannungsabfall. (ähm, heben?)
@Kyranf Ich habe als Beispiel eine rote LED verwendet, aber eine blaue oder grüne LED mit Vfwd näher an 3 V wird in Bezug auf die Margen etwas enger, wenn sie mit 3,3 V aus den Arduino Pro Minis versorgt wird (nur etwa 0,3 V für die Strombegrenzung Widerstand). Das ist ein Grund, warum ich die Stromversorgung der LEDs direkt aus dem 4,5-V-Vin untersuchen möchte.
@KyranF Der Zweck des 1K2-Widerstands besteht darin, den Strom zu begrenzen, wenn die LED eingeschaltet ist. Wenn die LED ausgeschaltet ist (Pin hohe Impedanz), würde der Strompfad durch den Pin die Vfwd der LED (2-3 V), den Widerstand und die Klemmdiode umfassen. Der Effekt des Widerstands ist vernachlässigbar, der größte Teil des effektiven Widerstands kommt daher, dass er weniger als Vfwd zwischen 4,5 V Vin und der 3,3 V Vcc-Schiene beträgt.
Die Antworten sind interessant - an dieser Stelle gibt es eine gute Antwort, die erklärt, warum der Ansatz mit hoher Impedanz sicherer wäre, und eine weitere gute Antwort, die erklärt, warum das aktive High sicherer wäre. Ich glaube, ich verstehe beide Argumentationslinien, bin mir aber nicht sicher, welche zutreffender ist. Die in jeder Antwort untersuchten Feinheiten sind genau das, wonach ich gesucht habe, weil sie am Rande meines Verständnisses liegen. Jetzt hoffe ich, dass diejenigen mit mehr Erfahrung in der Lage sein werden, einen einzigen besten Ansatz zu finden.

Antworten (4)

Worüber Sie sprechen, ist kein großes Risiko für ein Hobbyprojekt. Ein paar Dinge, an die Sie denken sollten.

Es ist nicht wirklich die v F Auf den Betriebsstrom kommt es an v F bei maximal akzeptabler "Aus"-Helligkeit. Diese Spannung kann für eine rote LED mit niedrigem Strom nur 1,4-1,5 V Volt betragen - in einem dunklen Raum können sie mit Mikroampere Strom gut sichtbar sein. Wenn Sie den Ausgang auf 3,3 V (Nennpegel) treiben, erhalten Sie 3,3 V am Ausgang. Eine frische alkalische Zelle mit minimaler Belastung könnte bei Raumtemperatur 1,63 V / Zelle betragen (gerade gemessen), also wären 3 4,89 V. Das lässt Sie mit 1,59 V über der LED + Widerstand (nominal, nicht zulassen, dass die 3,3 V ein paar Prozent niedrig sein könnten).

Das ist viel zu viel, um sicherzustellen, dass es nicht einen ganzen Haufen Licht ausstrahlt.

Wir stellen es also in drei Zuständen dar, wodurch der Ausgang vielleicht etwas über Vcc gehen kann, ohne dass viel Strom fließt. 300 mV sind sicher, das Datenblatt sagt 500 mV absolutes Maximum. Bei 500 mV hätten wir 1,09 V über der LED, wahrscheinlich genug, um sicherzustellen, dass sie zumindest unter Nennbedingungen ausgeschaltet ist. Der Wert des „absoluten Maximums“ ist nie gut zu entwerfen, aber normalerweise gibt es einen Vorbehalt bei diesem bestimmten Wert, der diese Spannung oder etwas mehr zulässt, wenn der Strom begrenzt ist.

Ich denke also, dass dies funktionieren wird (mit Tri-State, nicht Push-Pull), und ich denke auch, dass es für ein Hobbyprojekt akzeptabel genug ist, vorausgesetzt, niemand wird in Zukunft einen Batterie-Eliminator auf der Schaltung verwenden *. Denken Sie daran, dass der Spielraum bei den roten LEDs minimal ist, und erwägen Sie, Rot zugunsten von Gelb oder Orange zu vermeiden. Oder fügen Sie einfach eine Siliziumdiode in Reihe mit den roten LEDs hinzu (eine Diode kann für mehrere LEDs verwendet werden).

  • Wenn das ESD-Schutznetzwerk im ATMEGA328P zu leiten beginnt, neigt es dazu, die 3,3-V-Versorgung außerhalb der Kontrolle des Reglers anzuheben. Dies ist nicht gut für die Stabilität und könnte möglicherweise etwas beschädigen, obwohl der ATMEGA328P-M selbst für den 5-V-Betrieb ausgelegt ist.

Ich habe so etwas einmal in einem kommerziellen Produkt gemacht (um eine Reihe von LEDs mit hoher Vf unter Verwendung eines 5-V-Konstantstromausgangs anzusteuern), aber ich habe ein Netzteil mit genau der richtigen seltsamen Spannung und dem geeigneten Temperaturkoeffizienten entwickelt, um den LEDs zu entsprechen und damit die Situation optimieren. Ich denke, die Versorgung war etwa 8-9V. Hat super funktioniert, problemlos von -20°C bis 80°C (Spezifikation war 0-50°C).

Ihre Argumentation ist gut und ich wäre überzeugt, aber @Olin Lathrop kommt zu dem gegenteiligen Schluss und leider klingt seine Argumentation auch für mich gut. Könnten Sie sich seine Antwort ansehen und seine Punkte berücksichtigen? Danke
Ich stimme Olins Argumentation zu, er hat nur berechtigte Bedenken hinsichtlich verschiedener Dinge, die passieren (die beispielsweise einen analogen Eingang betreffen könnten). Wenn Sie wirklich sicher sein wollen, können Sie eine Reihendiode verwenden, wie ich oben vorgeschlagen habe, mit einem Bleeder-Widerstand, um nur die roten LEDs zu erden, und die Ausgänge im Gegentakt treiben, wie Olin vorschlägt. So etwas wie ein 1N4148 mit 10K an Masse könnte viele rote LEDs liefern.

Es ist keine gute Idee, einen I/O-Pin Spannungen auszusetzen, die über dem Leistungspegel des Prozessors liegen.

Verwenden Sie einen Transistor:

Hinzugefügt:

Die richtige Lösung, die keine Parameter im Datenblatt verletzt, ist oben. Wenn Sie jedoch versuchen, damit durchzukommen, wird es höchstwahrscheinlich funktionieren, wenn Sie sicherstellen, dass der Ausgangsstift immer angesteuert wird.

Wir gehen von einem modernen Prozessor mit CMOS-Ausgang aus. Der CMOS-Transistor kann im eingeschalteten Zustand Strom in beide Richtungen leiten. Der kleine Strom, den Sie durch die LED bekommen, wenn der Ausgang hoch ist, wird durch den oberen Treibertransistor zu Vdd geleitet. Der Wert dieses Stroms bei 1,2 V Vorwärtsvorspannung ist schwer vorherzusagen, wird sich erheblich mit der Temperatur ändern und von Teil zu Teil variieren. Sie wird jedoch im Vergleich zur Gesamtstromaufnahme des Prozessors "sehr klein" sein.

Wenn Sie den Ausgang zwischen angesteuerter niedriger und hoher Impedanz anstelle von angesteuerter niedriger und hoher Impedanz umschalten, nimmt die Schutzschaltung für diesen Pin stattdessen den geringen LED-Strom auf. Bei einigen Designs ist dies nur eine Diode zu Vdd und daher nicht schlechter, als wenn der obere FET leitend ist. Andere Konstruktionen haben jedoch kompliziertere Schaltungen, die den Stromdurchgang schlechter abführen würden. Zu erraten, was die geringsten Probleme verursacht, ist eines der Probleme, auf die Sie stoßen, wenn Sie Spezifikationen ignorieren.

Es gibt zwei weitere Möglichkeiten, um vollständig in der Spezifikation zu sein:

  1. Fügen Sie einen kleinen Bleeder-Widerstand zur Erde hinzu. Bemessen Sie dies so, dass Sie unter allen Bedingungen den maximalen LED-Strom bestimmen. Die LED kann sehr schwach leuchten, wenn sie ausgeschaltet sein sollte.

  2. Verwenden Sie einen Pin mit einem "5 V toleranten" Eingang und schalten Sie den Pin zwischen Low und Floating um.

Dies würde einen zusätzlichen Transistor und Widerstand als zuvor erfordern und könnte eine sperrige Lösung zum Ansteuern vieler LEDs sein, wie es ihre Absicht zu sein scheint.
Wie op erklärt hat, sehen die Pins niemals eine Rohspannung, die höher als vcc ist. Sie versuchen nicht einmal, die Frage zu beantworten.
Vielen Dank, dass Sie sich die Zeit genommen haben, den konventionellen Transistoransatz zu entwerfen. Ich bin mir dieser Option bewusst, aber wie @KyranF verstanden hat, überprüfe ich, ob ich Vfwd der LED vertrauen kann, um die Schutzdioden zu schützen, und Feedback darüber, welcher der beiden Ansätze (Pin = VCC oder Pin mit hoher Impedanz) wäre besser in einem Kontext, in dem das Hinzufügen des Transistors und beider Widerstände weniger bequem wäre.
@Passe: Nein, der Pin kann eine Spannung über Vdd sehen. Die LED lässt einen gewissen Strom bei 1,2 V Vorwärtsspannung zu. Das könnte leicht ausreichen und ist es wahrscheinlich auch, um einen hochohmigen Pin über seine Versorgungsspannung zu heben.
Diese Antwort ist stark verbessert und hat gute Gründe dafür, warum aktives Hoch für LED aus sicherer wäre als hohe Impedanz. Leider hat eine weitere gute Antwort von @Spehro Pefhany auch Gründe dafür, warum eine hohe Impedanz besser wäre. Könnten Sie seine/ihre Argumentation berücksichtigen und mir helfen, herauszufinden, welcher Ansatz besser ist? Danke
@OlinLathrop, du weißt, warum das relevant ist! Weil die Chinesen, die diese Scheißplatinen herstellen, diese LED so verkabeln und Ihnen dieses Ding ohne Dokumentation schicken! GOTT, warum blinkt meine LED nicht!!!!

Ihr Ansatz 2 (Tristate des D3-Pins) ist in Ordnung, außer wie andere Poster darauf hingewiesen haben, dass die ESD-Schutzdiode von D3 zu VCC in Reihe mit der LED (und dem Widerstand) liegt, wenn der Ausgang tristate ist. Dort fließt ein kleiner Strom bei (4,5 V - 3,3 V) = 1,2 V über beide Dioden von der 4,5-V-Versorgung zu VCC. Die LED-Schwelle ist viel höher als die Schwelle der ESD-Diode von etwa 0,5 V bis 0,6 V für einen nennenswerten Strom (Mikroampere oder mehr; es sind große Dioden), sodass bei 1,2 V über beide der Strom wahrscheinlich im Mikroamperebereich liegt. Die D3-Pin-Spannung steigt jedoch um etwa 0,5 V bis 0,6 V über VCC, und dies übersteigt wahrscheinlich die empfohlene Spannung am Pad (zur Belastung des Gate-Oxids der Eingangsschaltungstransistoren).

Sie verwenden den D3-Pin im Wesentlichen als Open-Drain-NMOS-Schalter. Sie könnten immer einen diskreten NMOS-Transistor außerhalb des Chips hinzufügen, der> 4,5 V standhalten kann. Während es eine Komponente hinzufügt und die Richtung des Ports umkehrt, verhindert es eine Überspannung am IC.

Beachten Sie, dass bisher keiner der Ansätze eine Stromregelung bietet, sodass die Helligkeit mit Widerstandstoleranz, Temperatur und Versorgungsschwankungen variiert. Es gibt einige einfache Schemata dafür, wenn Sie interessiert sind, aber sie fügen ein paar weitere Komponenten hinzu.

Ich schätze eine rote LED bei etwa 2 V Vfwd, also müsste der Widerstand 2,5 V bei 20 mA abfallen, sagen wir 1K2 Ohm.

Sie müssen Ihre Mathematik auf diesen für Ihren Widerstandswert überprüfen.

R = v ICH

R = 2,5 V Abfall durch den Widerstand / 20 mA durch den Widerstand = 125 Ohm.

Wenn Sie nicht daran interessiert sind, einen Transistor hinzuzufügen, warum beziehen Sie die LED nicht vom Mikrocontroller-Pin?

Ups, war die Aufteilung schnell und falsch in meinem Kopf, du hast recht. Welchen Rat würden Sie geben, um eine blaue oder grüne LED von einem Mikrocontroller-Pin mit Vcc bei 3,3 V zu beziehen? Ich gehe davon aus, dass der 0,3-V-Abfall über dem Widerstand sehr unterschiedlich sein wird, da die nominale Vfwd der LED (ca. 3 V) je nach Charge, Temperatur usw. variieren kann. Eine Vfwd-Variation um 0,1 V macht einen kleinen Unterschied, wenn von 4,5 aus gefahren wird v (1,5 vs. 1,6 oder 1,4 V Abfall über den Widerstand), aber viel mehr beim Fahren von 3,3 V. So habe ich es gehört.