GPIO:なぜボタンを+ 3.3vではなくグランドに配線するのですか?


13

GPIO入力へのボタンの配線で見たほとんどの例では、ボタンは閉じられたときにピンとグランド間で回路が完成し、ピンに低い入力を生成するように配線されています。プルアップ抵抗を使用して、入力値をデフォルトで高に設定します。Piのコードは、ボタンを押すとローを検出できます。

私はボタンを+ 3.3vに接続しているので、信号はより理にかなっており、コードをより論理的に保つように信号が高くなっていますが、ほとんどの人がグラウンドへの接続を好む理由があるに違いありません。利点は何ですか?


注:「プルアップ抵抗器」と言うときは、コードで構成された物理的な外部抵抗器または内部プルアップ抵抗器を意味します。
howard10

回答:


17

GNDへのボタンとロジックの配線が好ましい(そしてインターネット全体にコピーされる)主な理由の1つは、電力の最適化のためです。

  • GNDに抵抗を付けてピンをLOWにすると、0ワットかかります。
  • 抵抗を使用してピンをHIGHにプルアップすると、電力が消費されます。

複雑な回路またはバッテリーに依存する回路では、この電力は非常に貴重です。

その他の理由には、EMF生成が低いことが含まれます。ワイヤレスデバイスでロジックをHighにすると、非常に敏感なRF受信機で不要なクロストークが発生します。このようなトランシーバーには、ノイズをフィルター処理するために使用されるGNDプレーンがあり、これはすべてのロジックが引き込まれる場所です。次に、プロセッサはGNDプレーンを使用してスイッチングノイズをフィルタリングします。


3
抵抗器を使ってプルアップまたはプルダウンすると、電力はどのようにかかりますか?電流は、Piの非常に高いインピーダンス入力に流れています。これにより、電流がサブマイクロアンペア(マイクロワットの電力)に減少します。
-stefandz

わかりましたが、間違っているかどうかを教えてください。ピンを下に引くことは0v = 0watts使用法ですが、ピンを上に引くと>0watts、マイクロ、ミリ、ナノのいずれの種類も関係ありません。言及されているように、バッテリー電力ではすべてのナノワットが役立ちます。しかし、すでにここで答えたように... USBでは何の意味もありません。私は間違っていますか?
ピョートルクラ

1
必ずしもそうではありません。デジタル入力はグランドに対して高インピーダンスです-true。しかし、それらは単なる抵抗器ではありません。これらは通常FETの入力ゲートであり、これらのゲートは理想的ではありません。それらには漏れ電流があり、これらの漏れ電流はどちらの方向にも、インまたはアウトになります。したがって、プルダウンは、プルアップと同じように、マイクロワットまたは2ワットを消費する可能性があります。
-stefandz

2AAバッテリーで動作する組み込みデバイスを設計する必要があり、顧客がそれを少なくとも12か月間実行することを要求した場合。そして、GPIOをプルダウン/アップする必要があります。最も電力を節約するためにどちらを使用しますか。(ここでマイクロ管理について話しています)
ピオトルクラ

4
それが価値があるものについて、私はこれについていくつかの測定を行いました-そしてプルダウンの勝利(電力消費のため)が、ただそれだけです。3.3Vへの10kプルアップ= 9fW(はい、フェムトワット)-グラウンドへの10kプルダウン= 5fW。これは、バッテリー領域を少しでも節約することにはなりません。
-stefandz

9

電気技術者が通常、抵抗を使用して入力を高くし、スイッチを使用してそれらを接地したのは、複雑な歴史的理由があります。

ただし、これらの理由は、Raspberry Piの趣味での使用には特に関係しません。理にかなったものを使用してください。

商用製品を製造している場合、または設計を少し改善したい場合は、次の実用的な理由から、接地スイッチ付きのプルアップを選択します。

  • 長いアース線は、電源に接続されているものよりもEMI / EMC放射のリスクが低い
  • 何かを接地し、接続する接地点を見つけることは、電力線よりも簡単です
  • 通常、回路からある程度離れた場所に配置されたスイッチまたは配線が損傷し、配線または内部スイッチ部品がケースまたはユーザーに短絡しても、害はありません-それはすべて接地です

2

厳密にはプルアップ抵抗は必要ありません。BMCGPIOには、入力としてプログラムされたときにアクティブになる内部プルアップ抵抗がありますが、害はありません。

GPIOピンを3V3またはGNDに直接接続することは適切ではありません。GPIOは双方向であり、入力としてプログラムされている場合、これは問題を引き起こしません。一方、出力としてプログラムされている場合、過剰な電流が流れます。

良い(安全な)設計では、プッシュボタンと直列に直列抵抗(1kΩ)を使用して電流を制限します。Adam Davisの理由により、プッシュボタンをグランドに接続し、GPIOピンの近くに保護抵抗器を配置することをお勧めします。


唯一の問題は、ブートフェーズ1〜3ではこれらのピンがフローティング(GPUからCPUへのハンドオーバー)であり、Linuxカーネルブート中のフェーズ4ではPINが正しい状態に設定されることです。これにより、ロジックを待機しているゲートで重大な問題が発生する可能性があります。したがって、ブート中のフローティング期間によって回路が精神的にならないように、とにかくそれらをプルダウンすることをお勧めします!
ピョートルクラ

1

RPiでは、どちらか一方を優先する理由はないと思います。ほとんどの人は、おそらく他の場所で見た回路を単にコピーまたは移植しています。

(ワイヤまたはPCBを使用して)回路を接続するとき、より便利な方を選択して、それをソフトウェアで正しい意味に変換するだけで問題ありません。


0

TTLの昔は、ピンをハイにするよりもローにするのにはるかに多くの電流が必要でした。そのため、プルアップ抵抗は、プルダウン抵抗よりも抵抗が高い(したがって、電力の浪費が少ない)可能性があります。現代のCMOSでは重要ではありませんが、古い習慣は一生懸命死にます。


-1

内部プルアップ抵抗でピンをグランドに接続すると、使用する部品が少なくなります。必要なのはボタンだけです。電流を制限するために外部抵抗を必要としません。

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