【抵抗】プルアップ・プルダウン抵抗とは? 役割から定数の算出方法まで詳しく解説!

電子部品

プルアップ・プルダウン抵抗は単純ですが重要な電子回路です。「なんとなく」で実装されがちですが、しっかり設計しないと思わぬ不具合を招くことがあります。本記事では、プルアップ・プルダウン抵抗の役割や定数の算出方法について詳しく解説します。

👉この記事で分かること

✔️プルアップ・プルダウン抵抗とは?
✔️電子回路にプルアップ・プルダウン抵抗が必要な理由
✔️プルアップ・プルダウン抵抗の定数を算出する方法

プルアップ・プルダウン抵抗とは

抵抗を介して回路(信号)と電源を接続することを「プルアップ(Pull up:”引き上げる”の意)する」、GNDを接続することを「プルダウンPull up:”引き下げる”の意)する」と言います。この抵抗をそれぞれ「プルアップ抵抗」、「プルダウン抵抗」と呼びます。

左:プルアップ回路 右:プルダウン回路


用途は主に下記の二つです。

✔️信号の論理固定
✔️オープンドレイン出力の駆動

それぞれの用途について解説していきます。

信号の論理固定

一般的なデジタル回路は、Hレベル(出源電圧レベル)とLレベル(GNDレベル)の2値で信号を伝達します。

すなわち、デジタル回路の入力信号は、どちらかのレベルで確定されている必要があり、中間電位は許容されません。

一方、回路が電源やGNDと切り離されている(十分に大きな抵抗で隔てられている)状態を「Hi-Z(ハイ・インピーダンス)」状態といいます

Hi-Z状態では、電位がHレベルかLレベルに確定されません。

論理が固定されていない状態 ハイ・インピーダンス

Hi-Z状態は、回路と回路を電気的に切り離したい場合に意図的に作り出す場合もあるため、それ自体がダメということではありません

Hi-Z状態は、「オープン」、「電気的に浮いている」、「レベルが不定」と表現することもあります。

デジタル回路(ロジックICなど)の入力がHi-Z状態になっていると、回路の状態が定まらず誤動作を招く恐れがあります。


例えば、モータドライバICのモータ「オン」信号がHi-Z(入力論理が不定)だと、何も制御していないつもりが、勝手にモータが回転してしまうといった誤動作が考えられます。

論理固定によりシステムの信頼性を確保する

回路をプルアップまたはプルダウンすることで信号の論理をHレベルかLレベルに固定しておくことができ、システムの信頼性が確保できます

前段デバイスの出力によって論理が固定される場合は?

通常、電子回路であれば、前段デバイスが常にHレベルかLレベルを出力しており、後段デバイスの入力はHレベルかLレベルに駆動されていることが多いはずです。

このような回路にプルアップ、プルダウンによる論理固定は必要でしょうか。


システムの設計にもよりますが、このような場合にもプルアップ、プルダウンによる論理固定が必要となる場合が一般的です。

電源投入直後などシステム状態の過渡期には、前段デバイスの状態やソフトウエアの初期化が完了していないことがあるため、プルアップ、プルダウンによる論理固定をしておいた方が無難と言えます。

例えば、初段デバイスがマイコンのポートである場合、電源投入からマイコンのIO設定を完了するまでにはタイムラグがあり、この間回路の論理は不定となります。

私も過去に、回路の論理固定を忘れて電源投入直後だけちょっとモータが動いてしまう、という誤動作を起こしてしまったことがあります...。

もし論理が不定でもシステムの正常動作を保証できるのであれば、コストや省スペース化のためにプルアップ、プルダウンを省いても良いと思います。

ただ、

いついかなる時にも論理不定が許容されるか?

想定していないケースはないか?

など検証の工数が必要となる場合もありますので、抵抗1本分のコストが許容できるのであれば、やはり論理固定しておくのが無難でしょう。

プル「アップ」と「ダウン」どちらを選択するか

回路の誤動作防止のため、システムが非アクティブとなる論理に固定することが基本です。

例えば、モータドライバICの「モータ・オン信号」を論理固定するのであれば、モータがオフする論理に固定します。

オープンドレイン出力の駆動

オープンドレイン出力(オープンコレクタ出力)には、Hレベルを出力するためのプルアップ抵抗が必須となります。

定数の算出

一般的に、プルアップ抵抗、プルダウン抵抗の定数は1kΩ〜100kΩ程度とまちまちですが、最適な定数について検証します。

私自身も新人の頃は良くわからず適当な定数の抵抗を使用していました...。

まず、プルアップ抵抗、プルダウン抵抗の定数を算出するためには、回路構成および、使用するデバイスの電気的特性を考慮する必要があります。

このため、今回は下記を前提条件とします。

・送信側デバイスと受信側デバイスが1対1で接続された回路とする
・デバイスは送信側、受信側共に3ステート・バッファ SN74LV245Aとする
・プルアップ電源とデバイスの電源電圧は共通の5V電源とする



以下、プルアップ抵抗の場合で説明を行いますが、論理を逆にすればプルダウン抵抗に関しても全く同じことが言えます。

プルアップ抵抗定数の上限値 〜受信側デバイスのHレベル電圧を確保する〜

この回路では、送信側デバイスがHレベルかHi-Zを出力した場合に、受信側デバイス入力Hレベル閾値を満足する必要があります。

SN74LV245Aのデータシートより、入力Hレベル電圧閾値(VIH)は Vcc 5Vx0.7V=3.5V以上です。

送信側デバイスの出力がHレベルの場合

受信側デバイスがHレベルを正しく認識するためには、入力電圧が3.5V以上必要です。

送信側デバイスは電源電圧に等しいHレベル(5V)を出力するため、プルアップ抵抗の端子間電位は理論上ゼロです。

よって、受信側デバイスは送信側デバイスのHレベル出力5Vを受信でき、入力Hレベル電圧閾値(VIH)「3.5V以上」を満足できます。

このケースでは、プルアップ抵抗の値は回路に影響を与えません。

送信側デバイスの出力がHi-Zの場合

送信側デバイスがHi-Zを出力すると、送信側デバイスのHi-Z端子と、受信側デバイスの入力端子に、プルアップ抵抗を介してリーク電流が流れ込みます。

送信側デバイスのHi-Z端子に流れ込む電流は、データシートのIOHZ項目より、最大5uAであることが分かります。

同様に、受信側デバイスの入力に流れ込む電流は、データシートのII項目より、最大1uAであることが分かります。

つまり、プルアップ抵抗には合計で最大6uAが流れることになり、このときプルアップ抵抗での電圧降下Vdropは、次式で表せます。

  Vdrop = 6uA x Rpull-up

 ※Rpull-upはプルアップ抵抗の定数

送信側デバイスがHi-Zの時、プルアップ抵抗には合計6uAが流れる。プルアップ抵抗での電圧降下を考慮しても、受信側デバイスのHレベル閾値を満足させる必要がある。

 Vdropを考慮した上で入力電圧3.5V以上を満足するようにRpull-upの値を決定する必要があります。

  入力電圧 = 5V – Vdrop > 3.5V

  5V – (6uA x Rpull-up) > 3.5V

  Rpull-up < 250kΩ

 以上より、本回路において受信側デバイスの入力Hレベル電圧閾値(VIH)「3.5V以上」を満足する
 ためには、プルアップ抵抗の上限を「250kΩ」とする必要があります

プルアップ抵抗定数の下限値 〜受信側デバイスのLレベル電圧を確保する〜

この回路では、送信側デバイスがLレベルを出力した場合に、受信側デバイスのLレベル閾値を満足する必要があります。

SN74LV245Aのデータシートより、入力Lレベル電圧閾値(VIL)は Vcc5Vx0.3V=「1.5V」以下です。

送信側デバイスの出力がLレベルの場合

受信側デバイスがLレベルを正しく認識するためには、入力端子が1.5V以下となる必要があります。

送信側のSN74LV245AはLレベル出力時プルアップ電源から電流を引き込みます。

このときに流れる電流値は、データシートのIOH項目に従い、最大16mA(VCC = 4.5 V to 5.5 V時)に抑える必要があります。

なお、受信側デバイスへのリーク電流1uAも流れますが、16mAに対して十分に小さいので無視します。

 5V / Rpull-up< 16mA

 Rpull-up > 313Ω

 ※Rpull-upはプルアップ抵抗の定数

以上より、本回路において送信側デバイスの定格を満足すると共に、受信側デバイスの入力Lレベル電圧閾値(VIL)「1.5V以下」を満足するためには、プルアップ抵抗の下限を「313Ω」とする必要があります。

まとめ

今回の回路ではプルアップ抵抗の定数は313Ω〜250kΩの範囲とする必要があることが分かりました。

冒頭で説明した、1kΩ〜100kΩ程度と近しい値となることから分かるとおり、CMOSで構成される一般的なデジタル回路では、だいたい似たような範囲となります。

ここから先、具体的な定数選定に関しては考え方次第となりますが、設計上特に根拠が無ければ個人的には、4.7kΩ、10kΩとすることが無難かと思われます。

その理由は下記となります。

✔️部品入手製の観点からE3系列(1.0/2.2/4.7)内で選定することが望ましい
✔️出力がHi-Zとなる回路ではプルアップ抵抗の値が大きい程ノイズの影響を受けやすくなるため、定数を不必要に大きくすることは望ましくない
✔️出力側デバイスのLレベル出力電流(IOL)定格はデバイスによって異なるため、上記下限値の10倍程度の余裕を確保しておく(定格ギリギリの抵抗値だと回路ごとに計算・確認する必要があり手間がかかる)

但し、これに該当しないケースも当然あり得ます(オープンドレイン出力のスイッチング速度を速めたい場合や、基板間IFで回路への影響を最小にしたい場合など)ので、そのような場合には都度計算が必要です。

手間をかけて計算して定数を厳密に定めるケースと、手間を惜しんで経験則からおおよその定数を選定するケース、その両方を使い分けると良い思いますが、いずれにせよ設計根拠を理解しているか否かで、設計効率や回路の出来栄えに差が出てくると考えます。

コメント