SPSTスイッチをデジタル入力として使用していますか?


10

私は「電気工学」の初心者で、少しArduinoプロジェクトに取り組んでいます。SPSTスイッチをボードのデジタル入力として使用したいのですが。

スイッチリードの1つを正に接続し、もう1つをデジタル入力に接続しています。これの問題は、スイッチをオフにすると、入力が接地されるかどうか確信が持てないことです。スイッチがオフのときに入力が確実に接地されるようにするにはどうすればよいですか?

デジタル入力をグラウンドに接続されている抵抗に接続して、スイッチがオフのときは接地されるのに機能するのでしょうか?

回答:


9

最も一般的な解決策は、スイッチの片側を接地することです。もう一方をデジタル入力に接続し、正の電源につながる1〜10 Kオームの抵抗にも接続します。

逆に、ブルーノが説明するようにプルダウン抵抗を使用することは可能ですが、あまり好ましくありません。多くの入力にはすでにある程度の暗黙のプルアップがあり、接続されていない場合は「1」を読み取りますが、信頼性は高くありません。しかし、スイッチがすでに正のレールに接続されている場合は、プルダウンで問題ありませんが、多くの場合、ロジック入力を正のレールに接続するときに小さな抵抗を使用することを好みます。

多くのマイクロコントローラは、GPIOピンに内部プルアップおよび/またはプルダウン抵抗も備えており、構成レジスタに書き込むことで有効にできます。そのようなマイクロコントローラの入力を駆動している場合、すべてのマイクロコントローラがこれらを備えているわけではありませんが、外部プルアップ/ダウン抵抗はまったく必要ない場合があります。


4
また、プルアップまたはプルダウンが組み込まれたuCを使用している場合は、使用されていないピンでそれらを有効にして、既知の状態に保つことをお勧めします。
マットヤング

私のプロジェクトでは、スイッチをグラウンドに接続する方が実際には簡単です。プルアップ抵抗を使ってみます。ありがとう!
スポンジボブ

2
すごい!「switch bounce」についてお問い合わせがありましたら、またお越しください:)
gbarry

Arduinoは自動的にプルアップを実行します。方法はわかりませんが、コードにはデジタル「INPUT_PULLUP」があり、抵抗も必要ありません。それは簡単でした。また、スイッチのバウンスについては、シリアル出力を監視しているときに気づきました。そのため、コードに3msの遅延を追加しました。それは私に店への別の旅行を救いました。:)
スポンジボブ

ATMEGAデータシートを確認すると、プルアップを有効にするために構成レジスタに書き込むことができるビットがあることがわかります。Arduinoライブラリは単にそれをより便利にしています。バウンスについては、しばらくの間(その)入力を無視するのが通常のコースですが、3msは少し短いかもしれません。遅延によってシステム全体がブロックされる場合は、意図的に再アクティブ化を行うとさらに遅くなるため、入力を無視するだけの場合は、システムを短くする必要があります。
Chris Stratton

9

はい、それはあなたが説明したように機能します。これは、接点が開いているときにデジタル入力が論理状態0(ロー)になることを保証するため、プルダウン抵抗と呼ばれます。通常、この目的で10KΩの抵抗を使用できます。


2

それは機能し、スイッチが閉じているときに高レベル(論理 "1")の正の論理を提供します。

しかし、Chrisが言うように、反転したものがより一般的です。スイッチはグラウンドに接続され、プルアップ(プルダウンの代わりに)抵抗が電源に接続されています。ロジックが反転します。ロジック「1」は、開いているスイッチに対応します。

プルアップバージョンの正当な理由は、ほとんどのマイクロコントローラーにそれらが統合されており、必要に応じてそれらを有効/無効にできることです。一部のマイクロコントローラーには構成可能なプルダウンもありますが、これらはあまり一般的ではありません。

外部プルアップが必要な場合は、10kΩが適切な値です。マイクロコントローラの入力は最大1 µAのリーク電流を持つ可能性があり、10kΩはごくわずかな10 mVをドロップします。値を低くすることも可能ですが、スイッチを閉じたときに、グランドへの電流が大きくなることに注意してください。1kΩ抵抗は5 V電源で5 mAを消費しますが、これは実際には電力の浪費です。10kΩの場合、わずか500 µAです。非常に低電力のアプリケーションでは、値を100kΩに増やすことができますが、漏れ電流を覚えておいてください。1 µAで100 mV低下します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.