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?
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.
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:
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).
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 .
Kevin Vermeer