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

電子部品

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

👉この記事で分かること

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

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

抵抗を介して回路(信号)と電源を接続することを「プルアップ(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レベルに駆動されている)いるはずです。

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

回路の入力が前段デバイスの出力で制御される場合は論理固定不要?


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

例えば、前段デバイスがマイコンの入出力ポートである場合、電源投入からマイコンのIO設定を完了するまではタイムラグがあり、この間の論理が不定となります(マイコンの入出力ポートは初期状態が「入力」となっていることが多く、この場合ポートはHi-Z状態となる)。

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

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

ただ、いついかなる時にも論理不定が許容されるか?想定していないケースはないか?など検証の工数が必要となる場合もありますので、やはり論理固定しておくのが無難でしょう。

✔️プルアップとプルダウン、どちらを選択すれば良い?
回路の誤動作防止のため、システムが「非アクティブ」となる論理に固定することが基本です。例えば、モータドライバICの「モータ・オン信号」を論理固定するのであれば、モータOFFとなる論理に固定します。

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

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

オープンドレイン出力:プルアップしなければHレベルを出力できない

定数の算出

一般的に、プルアップ抵抗、プルダウン抵抗の定数は1kΩ〜10kΩ程度である場合が多いですが、その根拠について検証します。

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

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

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



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

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

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

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

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

送信側デバイスの出力がHレベルの場合
 送信側デバイスがHレベルを出力するため、プルアップ抵抗の端子間電位は理論上ゼロです。
 プルアップに関係なく、受信側デバイスは送信側デバイスのHレベル出力5Vを受信でき、入力Hレベル
 電圧閾値(VIH)「3.5V以上」を満足できます。

<送信側デバイスの出力がHi-Zの場合
 送信側のSN74LV245AがHi-Zを出力すると、Hi-Z端子に電源電圧5Vが印加されます。
 これにより、リーク電流が流れ込みます。
 →データシート(IOHZ)より、最大5uAであることが分かります。

 同様に、受信側のSN74LV245Aの入力にも電源電圧5Vが印加され、リーク電流が流れ込みます。
 →データシート(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レベルを正しく認識するためには、入力端子が1.5V以下となる必要があります。

なお、送信側のSN74LV245Aは、Lレベル出力時、プルアップ電源から電流を引き込みます。
→データシート(IOH)より、最大16mA(VCC = 4.5 V to 5.5 V時)に抑える必要があります。

つまり、送信側デバイスの定格上、プルアップ抵抗に流れる電流を16mA以下に制限する必要があると共に、これを満足することでLレベル時の入力電圧をほぼ0(VIL<1.5V)にできます。
注:入力側デバイスへのリーク電流1uAも流れますが、16mAに対して十分に小さいので無視します。

 5V / Rpull-up< 16mA

 Rpull-up > 313Ω

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

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

プルアップ抵抗定数の算出 〜まとめ〜

以上より、今回の回路ではプルアップ抵抗の定数は313Ω〜250kΩとなりましたが、CMOSで構成される一般的なデジタル回路では、だいたい似たような範囲となります。

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

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

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

コメント