Verwenden Sie den SPST-Schalter als digitalen Eingang?

Ich bin neu in der "Elektrotechnik" und arbeite an einem kleinen Arduino-Projekt. Ich möchte, dass ein SPST-Schalter als digitaler Eingang auf der Platine verwendet wird.

Ich habe eine der Schalterleitungen mit Positiv und die andere mit dem Digitaleingang verbunden. Das Problem dabei ist, dass ich beim Ausschalten nicht sicher sein kann, dass der Eingang geerdet ist. Wie kann ich sicherstellen, dass der Eingang geerdet ist, wenn der Schalter ausgeschaltet ist?

Würde es funktionieren, wenn ich den Digitaleingang an einen Widerstand anschließen würde, der mit Masse verbunden ist, sodass er geerdet ist, wenn der Schalter ausgeschaltet ist, aber wenn der Schalter eingeschaltet ist, wird er nicht kurzgeschlossen - würde das funktionieren?

Antworten (3)

Die herkömmlichste Lösung wäre, eine Seite des Schalters mit Masse zu verbinden. Verbinden Sie den anderen mit dem digitalen Eingang und auch mit einem Widerstand zwischen 1 und 10 kOhm, der zur positiven Versorgung führt.

Der umgekehrte Weg mit einem Pulldown-Widerstand, wie Bruno es beschreibt, ist möglich, aber weniger bevorzugt. Viele Eingänge haben bereits ein gewisses Maß an implizitem Pull-up und lesen eine „1“, wenn sie nicht verbunden sind, wenn auch nicht ganz zuverlässig. Wenn Ihr Schalter jedoch bereits mit der positiven Schiene verbunden ist, ist ein Pulldown eine gute Lösung, obwohl viele es vorziehen, einen kleinen Widerstand zu verwenden, wenn sie Logikeingänge mit der positiven Schiene verbinden.

Viele Mikrocontroller haben auch interne Pullup- und/oder Pulldown-Widerstände an GPIO-Pins, die durch Schreiben in ein Konfigurationsregister aktiviert werden können. Wenn Sie einen Eingang eines solchen Mikrocontrollers ansteuern, benötigen Sie möglicherweise überhaupt keinen externen Pull-Up / Down-Widerstand, obwohl nicht jeder Mikrocontroller über einen solchen verfügt.

Wenn Sie einen uC mit integrierten Pull-Ups oder Pull-Downs verwenden, ist es außerdem eine gute Praxis, sie auf Pins zu aktivieren, die nicht verwendet werden, um sie in einem bekannten Zustand zu halten.
Für mein Projekt ist es eigentlich einfacher, den Schalter mit Masse zu verbinden. Also werde ich versuchen, einen Pull-up-Widerstand zu verwenden. Vielen Dank!
Großartig! Kommen Sie zurück, wenn Sie uns nach "Switch Bounce" fragen möchten :)
Es stellt sich heraus, dass Arduino Pullup automatisch ausführt. Ich bin mir nicht sicher wie, aber im Code gibt es ein digitales "INPUT_PULLUP" und ich brauche nicht einmal einen Widerstand. Das war einfach. Auch das Schalterprellen ist mir aufgefallen, als ich den seriellen Ausgang überwachte. Also habe ich gerade eine Verzögerung von 3 ms in den Code eingefügt. Das hat mir einen weiteren Gang in den Laden erspart. :)
Wenn Sie durch das ATMEGA-Datenblatt waten, werden Sie sehen, dass es ein Bit gibt, das in ein Konfigurationsregister geschrieben werden kann, um den Pullup zu aktivieren. Die Arduino-Bibliotheken machen es nur bequemer. Für den Bounce ist es üblich, (diese) Eingabe für eine Weile zu ignorieren, obwohl 3 ms etwas kurz sein könnten. Wenn die Verzögerung Ihr gesamtes System blockiert, müssen Sie sie möglicherweise kurz halten, wenn sie diese Eingabe nur ignoriert, können Sie sie etwas länger machen, da absichtliche Reaktivierungen noch langsamer wären.

Ja, so wie du es beschrieben hast, würde es funktionieren. Das nennt man Pull-Down-Widerstand, weil er dafür sorgt, dass der Digitaleingang bei geöffnetem Kontakt den logischen Zustand 0 (Low) hat. Normalerweise können Sie zu diesem Zweck einen 10-kΩ-Widerstand verwenden.

Das funktioniert und gibt Ihnen eine positive Logik: einen hohen Pegel (logisch "1"), wenn der Schalter geschlossen ist.

Aber wie Chris sagt, ist das Umgekehrte häufiger: Schalter mit Masse verbunden und ein Pull-Up-Widerstand (anstelle eines Pull-Down-Widerstands) zur Stromversorgung. Ihre Logik wird invertiert: Eine logische "1" entspricht einem offenen Schalter.

Ein guter Grund für die Pull-up-Version ist, dass die meisten Mikrocontroller sie integriert haben und Sie sie je nach Bedarf aktivieren/deaktivieren können. Einige Mikrocontroller haben auch konfigurierbare Pulldowns, aber diese sind weniger verbreitet.

Wenn Sie einen externen Pull-up wünschen, können 10 kΩ ein guter Wert sein. Der Eingang eines Mikrocontrollers kann einen Leckstrom von bis zu 1 µA haben, und dann fallen 10 kΩ um vernachlässigbare 10 mV ab. Niedrigere Werte sind sicherlich möglich, aber bedenken Sie, dass sie einen größeren Strom gegen Masse haben, wenn der Schalter geschlossen ist. Ein 1-kΩ-Widerstand zieht 5 mA bei einer 5-V-Versorgung, was wirklich eine Energieverschwendung ist. Für die 10 kΩ sind das nur 500 µA. Für Anwendungen mit sehr geringer Leistung können Sie den Wert auf 100 kΩ erhöhen, aber denken Sie an den Leckstrom; 1 µA ergibt einen Abfall von 100 mV!