Verwenden Sie den SPST-Schalter als digitalen Eingang?

10

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, ob 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 digitalen Eingang an einen Widerstand anschließen würde, der mit Masse verbunden ist, sodass er bei ausgeschaltetem Schalter geerdet wird, aber wenn der Schalter eingeschaltet ist, wird er nicht kurzgeschlossen - würde das funktionieren?

Schwamm Bob
quelle

Antworten:

9

Die konventionellste 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.

Ein anderer Weg mit einem Pulldown-Widerstand, wie Bruno es beschreibt, ist möglich, aber weniger bevorzugt. Viele Eingänge haben bereits einen gewissen Grad 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 Herunterziehen eine gute Lösung, obwohl viele es vorziehen, einen kleinen Widerstand zu verwenden, wenn Logikeingänge mit der positiven Schiene verbunden werden.

Viele Mikrocontroller verfügen auch über 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 diese verfügt.

Chris Stratton
quelle
4
Wenn Sie ein uC mit integrierten Klimmzügen oder Klimmzügen verwenden, empfiehlt es sich, diese an Stiften zu aktivieren, die nicht verwendet werden, um sie in einem bekannten Zustand zu halten.
Matt Young
Für mein Projekt ist es tatsächlich einfacher, den Schalter mit Masse zu verbinden. Also werde ich versuchen, einen Pull-up-Widerstand zu verwenden. Vielen Dank!
Sponge Bob
2
Groß! Komm zurück, wenn du uns nach "Switch Bounce" fragen willst :)
Gbarry
Es stellt sich heraus, dass Arduino das Pullup automatisch ausführt. Ich bin nicht sicher wie, aber im Code gibt es ein digitales "INPUT_PULLUP" und ich brauche nicht einmal einen Widerstand. Das war einfach. Auch beim Abprallen des Schalters bemerkte ich dies, als ich den seriellen Ausgang überwachte. Also habe ich dem Code gerade eine Verzögerung von 3 ms hinzugefügt. Es ersparte mir eine weitere Reise in den Laden. :)
Sponge Bob
Wenn Sie das ATMEGA-Datenblatt durchblättern, werden Sie sehen, dass ein Bit in ein Konfigurationsregister geschrieben werden kann, um das Pullup zu aktivieren. Die Arduino-Bibliotheken machen es nur bequemer. Für den Sprung ist es ein üblicher Kurs, (diesen) Eingang für eine Weile zu ignorieren, obwohl 3 ms etwas kurz sein können. Wenn die Verzögerung Ihr gesamtes System blockiert, müssen Sie es möglicherweise kurz halten. Wenn diese Eingabe nur ignoriert wird, können Sie sie etwas länger machen, da absichtliche Reaktivierungen immer noch langsamer sind.
Chris Stratton
9

Ja, es würde so funktionieren, wie Sie es beschrieben haben. Dies wird als Pulldown-Widerstand bezeichnet, da dadurch sichergestellt wird, dass sich der Digitaleingang bei geöffnetem Kontakt im logischen Zustand 0 (niedrig) befindet. Normalerweise können Sie zu diesem Zweck einen 10-KΩ-Widerstand verwenden.

Bruno Ferreira
quelle
2

Das wird funktionieren und Ihnen eine positive Logik geben: einen hohen Pegel (Logik "1"), wenn der Schalter geschlossen ist.

Aber wie Chris sagt, ist das Invertierte häufiger: Schalter an Masse angeschlossen und ein Pull-Up-Widerstand (anstelle eines Pull-Down-Widerstands) an der 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 Ihren Anforderungen aktivieren / deaktivieren können. Einige Mikrocontroller verfügen auch über konfigurierbare Pulldowns, diese sind jedoch 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 denken Sie daran, dass sie bei geschlossenem Schalter einen größeren Strom gegen Erde haben. Ein 1-kΩ-Widerstand zieht 5 mA bei 5-V-Versorgung, was wirklich eine Energieverschwendung ist. Für die 10 kΩ sind das nur 500 µA. Bei Anwendungen mit sehr geringem Stromverbrauch können Sie den Wert auf 100 kΩ erhöhen. Beachten Sie jedoch den Leckstrom. 1 µA ergibt einen Abfall von 100 mV!

stevenvh
quelle