プルアップ抵抗に必要な値を計算するにはどうすればよいですか?


98

フローティンググラウンドを回避するために、スイッチと組み合わせてプルアップ抵抗またはプルダウン抵抗を使用する多くのチュートリアルがあります。

http://www.arduino.cc/en/Tutorial/button

これらのプロジェクトの多くは10Kの抵抗器を使用していますが、これは適切な値であることにだけ注目しています。

特定の回路が与えられた場合、プルダウン抵抗の適切な値を決定するにはどうすればよいですか?計算できますか、それとも実験によって最適に決定されますか?


sparkfunのこのチュートリアルは、プルアップおよびプルダウン抵抗器sparkfun Pull-up Resistorsの優れた入門書であり、最も優れた投稿された質問に対する回答は素晴らしいものです。
リチャードチェンバース

回答:


82

クイックアンサー:経験と実験は、適切なプルアップ/プルダウン値をどのように把握するかです。

長い回答:プルアップ/ダウン抵抗は、RCタイミング回路のRです。信号が遷移する速度は、R(抵抗)とC(その信号の静電容量)に依存します。多くの場合、Cは、トレースがPCB上でどのようにルーティングされるかなど、多くの要因に依存するため、正確に知ることが困難です。Cを知らないので、Rがどうあるべきかを理解することはできません。それが経験と実験の出番です。

優れたプルアップ/ダウン抵抗値を推測する際の経験則は次のとおりです。

  • ほとんどの場合、3.3k〜10kオームで十分です。
  • 電力に敏感な回路の場合は、より大きな値を使用します。50kまたは100kオームでも多くのアプリケーションで機能します(すべてではありません)。
  • 速度に敏感な回路では、低い値を使用します。1kオームは非常に一般的ですが、200オームという低い値も前代未聞ではありません。
  • I2Cのように、「標準」は使用する特定の値を指定する場合があります。また、チップのアプリケーションノートで値が推奨される場合もあります。

10
プルアップに200オーム?うわー、それは多くの静止電流です。
0x6d64

4
@ 0x6d64-静止時のバスは低いと仮定しています。
コナーウルフ

3
Texas Instrumentsには、I2Cプルアップ抵抗の値を計算する方法だけでなく、式が実際にどのように導出されるかを説明する非常に優れたリファレンスがあります。ti.com/lit/an/slva689/slva689.pdfのI2Cバスプルアップ抵抗計算アプリケーションレポートを参照してください。
ジェイミー

77

10kΩを使用してください、それは良い値です。

詳細については、プルアップの機能を確認する必要があります。マイクロコントローラで読みたいプッシュボタンがあるとします。プッシュボタンは、瞬間的なSPST(単極単投)スイッチです。接続されているかどうかに関係なく、2つの接続ポイントがあります。ボタンを押すと、2つのポイントが接続されます(スイッチが閉じます)。解放されたとき、それらは接続されていません(スイッチは開いています)。マイクロコントローラーは、本質的に接続または切断を検出しません。彼らが感じるのは電圧です。このスイッチには2つの状態しかないため、デジタル入力を使用することは理にかなっています。これは結局、2つの状態のうちの1つのみになるように設計されています。マイクロは、デジタル入力がどの状態にあるかを直接検出できます。

プルアップは、スイッチのオープン/クローズ接続を、マイクロコントローラーが感知できる低電圧または高電圧に変換するのに役立ちます。スイッチの一方はグランドに接続され、もう一方はデジタル入力に接続されています。スイッチが押されると、スイッチは基本的に接地に短絡するため、ラインは強制的にローになります。ただし、スイッチを離すと、ラインが特定の電圧に駆動されることはありません。低いままであるか、容量結合によって他の近くの信号を拾うか、最終的にデジタル入力を通るわずかな漏れ電流のために特定の電圧にフロートする可能性があります。プルアップ抵抗の役割は、スイッチが開いているときに正の保証された高レベルを提供することですが、閉じたときにスイッチがラインを安全に接地できるようにします。

プルアップ抵抗のサイズには、2つの主要な競合する要件があります。ラインをしっかりと高く引き上げるには十分低くなければなりませんが、スイッチが閉じられたときにあまり多くの電流が流れないように十分高くなければなりません。どちらも明らかに主観的であり、相対的な重要性は状況によって異なります。一般に、スイッチが開いているときにラインが高いことを確認するのに十分なだけプルアップを低くします。

ラインをプルアップするために必要なものを見てみましょう。DC要件のみを見ると、デジタル入力ラインの漏れ電流が明らかになります。理想的なデジタル入力のインピーダンスは無限です。もちろん、実際のものはそうではなく、それらが理想的でない範囲は通常、ピンから出たり入ったりする可能性のある最大漏れ電流として表されます。あなたのマイクロは、デジタル入力ピンで最大1 µAのリークが指定されているとします。プルアップはラインを高く維持する必要があるため、最悪の場合、ピンはグランドへの1 µA電流シンクのように見えます。たとえば、1MΩのプルアップを使用する場合、その1 µAにより、1MΩの抵抗器で1ボルトが発生します。これが5Vシステムであるとすると、ピンは最大4Vまでしか保証されません。ここで、デジタル入力仕様を見て、ロジックHighレベルの最小電圧要件を確認する必要があります。一部のマイクロではVddの80%になる可能性があり、この場合は4Vになります。したがって、1MΩのプルアップがマージンにあります。DCの考慮事項により、正しい動作を保証するためには、少なくともそれよりも少し必要です。

ただし、他にも考慮事項があり、これらを定量化することは困難です。すべてのノードには、他のすべてのノードとの容量結合がありますが、結合の大きさは距離とともに低下し、近くのノードのみが関連します。これらの他のノードに信号がある場合、これらの信号はデジタル入力に結合する可能性があります。値を小さくすると、ラインのインピーダンスが低くなり、拾う浮遊信号の量が減少します。また、漏れ電流に対してより高い最小保証DCレベルが得られるため、そのDCレベルと、デジタル入力が結果を意図したロジックハイではなくロジックローとして解釈する可能性がある場所との間に余裕ができます。それで、いくらですか?明らかに、この例の1MΩプルアップでは不十分です(抵抗が高すぎます)。近くの信号への結合を推測することはほとんど不可能です。しかし、最小のDCケースに対して少なくとも1桁のマージンが必要です。つまり、少なくとも100kΩのプルアップまたはそれより低いプルアップが必要ですが、周囲に多くのノイズがある場合は、それを低くする必要があります。

プルアップを低くする別の考慮事項があり、それは立ち上がり時間です。ラインにはグランドへの浮遊容量があるため、瞬時に供給値に向かうのではなく、供給値に向かって指数関数的に減衰します。すべての浮遊容量が20 pFになるとしましょう。その時、100kΩプルアップは2 µsです。整定値の95%、この場合は6 µsに達するには3つの時定数が必要です。これは人間の時間には何の影響もありませんので、この例では問題になりませんが、これが200 kHzのデータレートで実行したいデジタルバスラインの場合は機能しません。

次に、他の競合する考慮事項を見てみましょう。これは、スイッチが押されたときに現在無駄になっているものです。このユニットがライン電源で動作しているか、その他の方法でかなりの電力を処理している場合、数mAは問題になりません。5Vで1 mAを引き込むには5kΩかかります。それは実際にはいくつかのケースでは「大量」であり、他の考慮事項のために必要以上に多くなります。これがバッテリー駆動のデバイスで、スイッチがかなりの時間オンになる可能性がある場合、すべてのµAが重要になる可能性があるため、これについて非常に慎重に検討する必要があります。場合によっては、スイッチを定期的にサンプリングし、電流を最小限に抑えるためにサンプルの周囲でプルアップを短時間だけオンにすることがあります。

バッテリー動作などの特別な考慮事項以外に、100kΩは十分に高いインピーダンスなので、ノイズを拾うことに神経質になります。スイッチがオンのときに無駄に消費される1 mAの電流は、不必要に大きいようです。したがって、500 µA、つまり10kΩのインピーダンスはほぼ正しいことを意味します。

私が言ったように、10kΩを使用します。良い値です。


1
また、追加の要件として、一部のスイッチ、たとえば一般的な「タクト」タイプのスイッチは、1 mAなどの非常に低い電流に対してのみ指定される必要があります。10k(5V以下)がこの要件を満たしますが、より低い抵抗値が考慮されることに留意する必要があります。
Wouter van Ooijen

1
@Wouter-私のお気に入りのタクトスイッチは最大50mA(私にとっては1mAが低いようです)だけでなく、最小もあります。接点をきれいに保つために、スイッチに並列にコンデンサを配置します。これは、切り替え時の短絡電流ピークが接点をきれいに保つという考えです。テストで指定された寿命はわずか100,000サイクルですが、200,000サイクルまで問題なく使用できました。
-stevenvh

@stevenvhスイッチと並列のコンデンサについて詳しく説明していただけますか?なぜ、最初の短絡電流を高くすると接点がきれいに保たれますか?
アブドラカーラマン

プルアップ抵抗値に影響を与える過剰な容量結合が見られるこの状況。クレイジーに思えますが、そうではありません。ADCで読み取り中の不快なトライステート出力があります。1つのボード、220kのプルアップで十分であるため、ADCはすべてのトライステートを読み取ることができます。別の(よりしっかりと配置されたボード)では、100kのプルアップが必要です。私はこれを一晩中追いかけてクレイジーピルを飲んでいたと思った。
Leroy105

23

まず、この種のチュートリアルは役に立たないので、電子工学については教えません。あなたは回路図を描く方法を学ばなければなりません、配線は後で来ます。
そのため、回路図が欠けていたので、配線図から自分で導出しなければなりませんでした。OK、それはそれほど難しくありませんでしたが、回路図を描くと、何かが足りないことがわかります。あなたはあなたの質問に答えるためにそれを知らなければなりません。私はそれがマイクロコントローラのデジタル入力だと思いますが、知る方法はありません。

タクトスイッチが開いている場合と、スイッチが閉じている場合の2つの状況があります。

閉じた状態では、マイクロコントローラーの入力はグランドに接続されているため、低レベルになります。抵抗器にも電流が流れます。優れた回路図では、抵抗の一端が+ 5Vに接続され、タクトスイッチが他端をグランドに接続していることがわかります。10kの抵抗器が機能するかどうか見てみましょう。すると、抵抗を流れる電流は = 500 Aに等しくなります。これは妥当なようです。スイッチが開いているときにも問題ないかどうか見てみましょう。 Ω5V10kΩμ

スイッチが開いた状態では、それを無視して、V +とマイクロコントローラーの入力の間に抵抗器しかないふりをすることができます。我々は、データシートでそれを見上げたので、我々はあなたがマイクロコントローラの入力に電圧を印加したときにのみ、多くの場合、1未満、ほとんど電流が流れてしまうことを、より良い経験から知っている、または A.だが、それが1だとしましょう Aすると、抵抗器の電圧降下は1 A 10k = 10mVになります。入力の電圧は4.99Vになります。おそらく大丈夫ですが、適切に仕事をしましょう。あなたが回路図を持っているなら(私はあなたが今それを手に入れていると思いますか?)、あなたはマイクロコントローラがどんなタイプであるかを知っているでしょう。ArduinoがAVRであることは知っているので、μμμ×ΩランダムAVRデータシート。電気的特性では、高入力レベルは少なくとも0.6(320ページ)でなければなりません。それは3Vなので、4.99Vは安全です。 × VDD

別の抵抗値を選択した場合はどうなりますか?値が低いほど電圧降下が小さくなり、入力電圧は4.99Vよりも高くなります。しかし、その後、スイッチが閉じられたときに抵抗器を流れる電流が増えます。これは望ましくないことです。
スイッチが閉じている場合、電流が少なくなるため、抵抗値を高くしても問題ありませんが、マイクロコントローラの入力電圧は4.99Vより低くなります。ここには余裕がありますので、多少高い値でも構いません。

結論

  1. 10kのは、スイッチが開いている状態でも閉じている状態でも問題ありません。Ω
  2. 回路図の描画とデータシートの読み方を学ぶ

7
役に立たないことに同意しません。実際、Fritzingで作成された配線図は、Arduinoに関しては回路図よりもおそらく一般的です。聴衆を考慮に入れる必要があります。
デイブニュートン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.