Wie bringe ich einen digitalen Eingangspin in den High-Zustand?

Das klingt wirklich sehr einfach, aber ich habe Angst, es zu versuchen, weil ich meinen Mikrocontroller nicht braten möchte.

Ich werde ein Arduino als Beispiel verwenden, aber es sollte für alle Mikrocontroller gleich sein.

Angenommen, Sie haben einen Schalter und möchten, wenn Sie den Schalter drücken, um einen digitalen Pin auf High (1) zu bringen, und wenn er nicht gedrückt wird, auf Low (0). Braucht man dafür Widerstände? Oder würden Sie einfach von 3,3 V in den Eingangsstift verdrahten?

Oder um meine Frage weiter zu vereinfachen. Wenn Sie aus irgendeinem Grund wollten, dass ein bestimmter digitaler Eingangspin immer hoch ist, würden Sie einfach einen Draht von 3,3 V in den digitalen Pin stecken? Oder brauchst du da irgendwo einen Widerstand?

Es ist nicht bei allen Mikrocontrollern gleich; Viele haben schwache interne Pullup- oder Pulldown-Widerstände, die für diesen Zweck verwendet werden können.

Antworten (3)

Um auf Ihre Frage zu kommen, ob Sie Strom ohne Widerstand direkt an den Pin anschließen können und ihn immer hoch haben ... ja, das funktioniert.

Wenn Sie Ihren Mikrocontroller auf den Eingabemodus eingestellt haben, können Sie den Pin so behandeln, als ob sich darin ein sehr großer Widerstand befindet. Unter Verwendung des Ohmschen Gesetzes, V / R = I mit V = 3,3 und R = sehr groß, sagen wir, 10 Megaohm ergibt einen Strom von 0,33 Mikroampere. Die Eingänge sind so ausgelegt, dass sie wie eine so hohe Impedanz wirken, dass sie einen sehr geringen Einfluss auf alles Äußere haben.

Was ist, wenn aus irgendeinem Grund während der internen Initialisierung des Mikrocontrollers oder was auch immer der Pin kurzzeitig in den Ausgangsmodus versetzt wird? Wenn es 0 ausgibt, würde dies den Mikrocontroller effektiv kurzschließen und somit etwas richtig kaputt machen? Welchen Schutz kann ich dagegen bieten?
Dies kann vom Mikro abhängen, aber ich glaube, die meisten geben standardmäßig beim Start ein. Wenn Sie vorsichtig sein möchten, fügen Sie einfach einen Widerstand zwischen dem Pin und der Stromversorgung hinzu. Man muss nur sicherstellen, dass es keine nachteiligen Auswirkungen auf irgendetwas hat, mit dem es verbunden ist.
@Earlz - Aus diesem Grund beginnen alle Mikrocontroller damit, dass ihre E / A-Pins beim Zurücksetzen auf Eingabe eingestellt sind.

Der Pin eines Mikrocontrollers im digitalen Eingangsmodus beträgt normalerweise viele hundert Kiloohm oder sogar einige Megaohm. Sie sind im Wesentlichen Operationsverstärker (heutzutage CMOS) mit hoher Impedanz.

Das Problem, wenn ein Pin auf Ausgang eingestellt ist, besteht darin, dass die Ausgangstreiber oft einen recht niedrigen Widerstand haben – einige zehn Ohm oder weniger. Sie können je nach Zustand durchbrennen, wenn sie mit VCC oder GND kurzgeschlossen werden. Es scheint, dass Sie sich über diese Situation mit einer Schaltflächen- / Schalterschnittstelle am meisten Sorgen machen.

Die Standardmethode für einen Schalter für einen digitalen Eingang besteht darin, den Schalter extern mit einem hochohmigen Widerstand auf die niedrige Seite zu legen. So:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Der Widerstand R1 hilft auf zweierlei Weise - wenn der Mikrocontroller seinen Pin irgendwie versehentlich in einen "Ausgangs" -Modus schaltet und aktiv LOW geht, stellt dieser Widerstand sicher, dass es keinen Kurzschluss nach GROUND durch den Pin gibt. Wenn ein digitaler Pin aktiv niedrig wird, ist dies im Grunde ein Kurzschluss gegen Masse, was sehr schlecht für einen Pin ist, der mit einer Quelle mit hoher Leistung / Strom verbunden ist.

Die zweite Funktion von R1 besteht darin, dass beim Drücken der Taste verhindert wird, dass hoher Strom durchfließt und den Schalter zerstört.

Sie können die internen Pull-up-Widerstände im Mikrocontroller für diesen Aufbau nicht wirklich verwenden, da der Schalter durch Kurzschlussstrom ausfällt, wenn R1 nicht vorhanden ist.

Das einzig Ärgerliche an diesem ganzen Aufbau ist, dass es "aktiv niedrig" ist, da der logische Wert, wenn die Taste gedrückt wird, "LOW" ist und wenn die Taste nicht gedrückt wird, auf "HIGH" sitzt.

Ihre andere Option besteht darin, dass sich der Schalter auf der hohen Seite befindet und VCC mit dem digitalen Pin verbindet. Sie können dann interne (sehr selten) oder externe Pulldown-Widerstände verwenden. Das ist gut, weil der Schalter nicht extern geerdet werden kann, kann aber trotzdem Probleme haben, wenn Sie den Mikrocontroller-Pin versehentlich auf Ausgang gesetzt und auf LOW gesetzt haben (was eine fast direkte Verbindung zu Ground ist, wie ich bereits erwähnt habe).

schematisch

Simulieren Sie diese Schaltung

Um das obige Diagramm zu erklären, ist Rext die Position eines externen Widerstands, wenn Sie sich dafür entschieden haben. Dadurch wird sichergestellt, dass die Spannung des digitalen Eingangsknotens durch diesen Widerstand auf Null abfällt, wenn die Taste nicht gedrückt wird. Der Rint ist der mögliche interne Widerstand, wenn Ihr Mikrocontroller einen bereitstellt - diese liegen oft im Bereich von 20-40 kOhm. Wenn der Pin auf OUTPUT und LOW gesetzt wird, dient der Rprot als Kurzschlussschutzwiderstand - ehrlich gesagt sollten alle Allzweck-Mikrocontroller-Pins einen externen Vorwiderstand wie diesen erhalten, um sie robuster zu machen.

Ich selbst verwende das erste Diagramm mit R1 zwischen Pin und Schalter an VCC. Das deckt alle Grundlagen ab und schützt vor verrückten Dingen. Ich passe einfach an, dass der Logikpegel LOW ist, wenn er in meiner Software aktiv ist.

Sie müssen entweder einen Pullup auf Vdd oder einen Pulldown auf GND verwenden. Wenn Sie dies nicht tun, werden Sie beim Drücken Ihres Schalters Vdd effektiv mit GND kurzschließen.

BEARBEITEN - Ich hätte ein Bild zeichnen sollen, aber stattdessen eine Seite mit einer Erklärung gefunden .

Würden Sie einen Pullup/Down-Widerstand benötigen, wenn Sie den Knopf aus der Gleichung herausnehmen und nur wollen, dass ein digitaler Pin immer hoch ist?
Nein, Sie können VCC ziemlich sicher an einen Pin binden, wenn er als Eingang konfiguriert ist. Die meisten uCs haben einen hohen Eingangswiderstand.