【基礎から学ぶ設計思想】 プルアップ抵抗とプルダウン抵抗は何のために存在するのか?どのように定数を決定するのか?

電気電子
スポンサーリンク
スポンサーリンク
スポンサーリンク

回路設計を行う上で考慮すべき事柄は、使用環境・製品寿命・性能のバラつき・熱の影響・ノイズの影響など多岐に渡ります。
突き詰めていくと際限が無いので、本記事では設計時に意識しておくべきだと感じた内容についてわかりやすくまとめています。
考え方自体は回路設計以外にも通じるものがあるので、知っていて損をする内容ではないかと思いますよ?

今回は、プルアップ抵抗とプルダウン抵抗についての説明です。

1.初めに

回路設計初心者の方は、いきなり設計をしろと言われても無理がありますよね。
なので、設計に入る前にまず既存の製品の回路図を眺めて、どんな接続になっているかをなんとなくイメージするように言われたりした方は多いかと思います。

正直眺めても意味はわからないのではないかと思うのですが、中でも抵抗を介して電源ラインやGNDラインに接続している謎の回路構成を見たことがありませんか?
この回路構成のことを、プルアップ/プルダウンと呼びます。

プルアップ/プルダウンは、ICの出入口付近など、回路の至る所に存在します。
なので、『なんでここにあるのか』とか『抵抗値に意味はあるのか』とか謎が多いんですよね。

今回は、このプルアップ/プルダウンが何のために存在しているのかについて解説していこうと思います。

2.プルアップとは?

プルアップ[pull-up]とは、信号線と電源ラインの間に抵抗を接続することです。
この時に使用している抵抗のことをプルアップ抵抗と呼びます。

図1

[pull]は[牽引する・引っ張る]という意味です。
なので、信号のレベルをup/Highレベルに引っ張ることを目的としているわけです。
だから、信号ラインと電源ラインが接続されているんですね。

Highレベルとは何かわからないという方は、以下の記事も参照してみてください。

3.プルダウンとは?

プルダウン[pull-down]とは、信号線とGNDラインの間に抵抗を接続することです。
この時に使用している抵抗のことをプルダウン抵抗と呼びます。

図2

プルアップとは逆に、信号のレベルをdown/Lowレベルに引っ張ることを目的としているわけです。
だから、信号ラインとGNDラインが接続されているんですね。

4.プルアップとプルダウンをする理由

では、肝心のプルアップとプルダウンをしなければならない理由について記述していきます。

理由は多々あるのですが、総じて信号の電圧値を安定化させることを目的としています。
ICのI/O入出力を安定化させたり、ノイズ対策として使用したりという具合です。

デジタル回路では、信号のレベルは必ず“0(Lowレベル)”か“1(Highレベル)”である必要があります。
“0”と“1”だけで構成される世界がデジタル回路なので、当然のことですよね。

では、どのようにLowレベルとHighレベルを判断しているのかと言うと、CPUなどのICの信号取り込み値が何V以下ならLowと認識、何V以上ならHighと認識…という具合で判断しています

例えば、供給電源が3.3Vで、0.9V以下がLowレベル、2.2V以上がHighレベルと認識するようなICの入力ポートがあったとします。
この場合、0.8VならLowレベル、3.0VならHighレベルと判断されるわけです。

では、2.0Vならどうなるでしょうか?
Lowレベル/Highレベルのどちらの条件にも当て嵌まりませんよね?
なので、ICがLowレベルなのかHighレベルなのか判断できない不安定な状態になってしまいます。

ICの場合、この不安定な状態になる範囲での使用は動作保証をしないとされていることが大半です。
どういうことかと言うと、『その範囲内で使用したらどんな動きをするかわからないので、誤動作しても知らないよ』ということです。
プルアップとプルダウンは、そんな不安定な状態を無くすための措置なのです

『そんな状況になることはあるの?』と疑問に思うかもしれませんが、普通にあります。
例えば、ICのある機能は使用しないことになったので、その機能に関わるピンには何も繋がずに放置していたとします。
このような状態は“浮いている”というのですが、浮いている状態って信号はLowレベルとHighレベルどちらになると思いますか?
答えは、“どちらにもならない”です。
何も印加されていないから何なのかよくわからない状態になるんです。

また、こうして浮いている状態だと、周辺の部品や信号パターンの影響を受けてノイズが載りやすくなってしまい、何も印加していないのにLowレベルになったりHighレベルになったりする可能性もあります。
するとどうなるかと言うと、何も繋いでいないのにあたかも信号が入力されているような挙動をしてしまうんです。
なので、使用しない機能だからといって何も対策をしないと、変な挙動をし兼ねないのです。

そこで、プルアップやプルダウンをすることで信号レベルが一定で変化しないようにしたりしているのです。
仮にLowレベルからHighレベルに立ち上がったタイミングを認識して動作するような入力ポートがあったのなら、常にLowレベルになるようにプルダウンさせておけば良いわけですね。

ちなみに、電圧値を安定させる使い方以外にもメジャーな使い方は存在します。
それは、オープンコレクタ/オープンドレインが出力ポートになっているICの場合です。

オープンコレクタ/オープンドレインとは、IC内部にトランジスタ/FETがあり、そのコレクタ端子/ドレイン端子を出力ポートにしている構成のことを指します。

図3

トランジスタとFETを併記していくと見た目がややこしいことになるので、ここからはトランジスタを例に説明していきますね。

このトランジスタは、エミッタ端子(E)がGNDに接続されています。
なので、トランジスタがONになると、コレクタ(C)-エミッタ(E)間が導通してGNDに接続されます。
その為、オープンコレクタの出力はLowレベルになります。

では、トランジスタがOFFの時ってどうなっているでしょうか?
浮いていますよね?
つまり、オープンコレクタを出力ポートとしている場合、出力は不確定/Lowレベルの二択になるんです。

何度も述べている通り、デジタルの世界では“0”か“1”にしなければなりません。
そこで、オープンコレクタの先にプルアップをすることでHighレベル/Lowレベルになるんです。

図4

オープンコレクタ方式については別途まとめてあるので、気になりましたら以下の記事も参考にしてみてください。

【基礎から学ぶトランジスタ】 オープンコレクタ方式の回路構成と動作原理
私たちの身の周りにある電子製品には、様々な電子部品が使用されています。そんな中でも、特に根幹的な部分に使用されている重要な部品として、トランジスタという部品が存在します。本記事では、そんなトランジスタの種類・構造・特性などについてまとめてみました。今回はオープンコレクタ方式の回路構成と動作原理についてです。

5.プルアップとプルダウンの仕組み

次は実際の回路の考え方について触れていきます。
慣れると当たり前になって特に考えるまでもなくなるのですが、最初はプルアップ/プルダウンにすることによって電圧がどう変化するのかわかりづらいですからね。

図5のように、3.3V駆動のICの入力ポートにスイッチを繋ぎ、プルアップ処理をしてあったとします。

図5

図5の左と右では、スイッチの状態が異なりますよね?
では、このスイッチの状態により、ICの入力ポートが電圧をどう認識するのかを考えてみましょう。

まずは図5左からです。

こちらは回路構成が単純で、ICの入力ポートに抵抗を介して3.3V電源が繋がっているだけだとわかります。

ICの入力ポートの抵抗値は非常に大きいです。
どの程度大きいかと言うと、プルアップ抵抗としてよく使用されている4.7kΩや10kΩと比較にならないくらいには大きいです。
なので、抵抗Rでの電圧降下がほぼ無く、3.3VがICの入力ポートにダイレクトにかかっていることになります。

ということで、ICは3.3V駆動だから3.3Vが入力されることでHighレベルだと認識するわけです

では、図5右はどうなるでしょうか?
スイッチが切り替わることでICの入力ポートとGNDが繋がりました。

先に結論から述べると、ICは0VだからLowレベルだと認識します

電気について学び始めたばかりだと、おそらく3.3Vなのか0Vなのかよくわからないと思うんですよね。
説明を聞けばすぐにわかるんですけど、教科書でちゃんと解説されることってほぼ無いから最初は困惑するんですよ。

オームの法則より、電圧=抵抗×電流になりますよね?
なので抵抗Rに流れる電流値により、抵抗Rでどの程度電圧降下が発生するかを求めることができます。

では、下図の赤枠で囲んだ部分って何Ωくらいでしょうか?

図6

スイッチの接点に微量の抵抗値はあるものの、ほぼほぼ導線で構成されているので0Ωだと考えることができます。

ということで、以下のように図を置き換えてみます。

図7

この状態の点Aの電圧は何Vでしょうか?
言い換えると、0Ωの両端の電圧は何Vになるでしょうか?
答えは簡単、抵抗がほぼ0Ωならオームの法則よりかかる電圧もほぼ0Vになります。
電流がいくら大きかろうが、0に何をかけても0なんですよ。

なので、抵抗Rの両端の電圧がほぼ3.3V、ほぼ0Ω抵抗の両端の電圧はほぼ0Vになるわけです。
つまり、点Aの電圧は0Vなんですね。

では、この点Aって何なのかというと、ICの入力ポートの入口のことですよね?
つまり、ICの入力ポートには0Vが印加されてきます
だから0V/Lowレベルだと認識するんです。

以上より、この回路構成ならスイッチの切り替えに合わせてLowレベル/Highレベルが切り替わるようになり、信号の状態が不安定な状態は無くすことができます。
プルダウンでも考え方は同じです。

6.プルアップとプルダウンの要不要判断

信号の電圧値を安定化させる・不安定な状態を無くすための処置がプルアップ/プルダウンなわけですが、ICの未使用ポートの中にはプルアップ処理もプルダウン処理もされていないことが普通にあります。
この理由について解説していきます。

考えられる主な理由は以下の2つです。

①ICで内部処理されている。
②ICが出力ポートになっている。

説明するまでもなく大体理解できているかもしれませんが、一応補足しますね。

①ICで内部処理されている。

ICのデータシートを読んでいると、端子ごとにどんな役割を持つのか、どんな動作をするのかなどの詳細が書かれています。
その中に、『内部プルアップ処理/内部プルダウン処理をしている』と記述されている場合があります。
要するに、回路上にプルアップ/プルダウンを挿入するまでもなく、IC内部で既にプルアップ/プルダウンされているのです。
だから自分でプルアップ/プルダウンする必要が無いのです。

②ICが出力ポートになっている。

ICがノイズを拾ったりして誤動作することを避けるためにプルアップ/プルダウンをするわけですよね。
ということは、単純な話、ICのポートが出力になっているならそこから何か信号が入り込む余地はないんですよ。
だから出力ポートは特に何も処理されていないことがあります。

まあ、例外も普通にあるので、基本的な考え方程度に押さえておくのが良いと思いますよ?

7.プルアップとプルダウンどちらにする?

プルアップもプルダウンも結果的には信号を安定化させる役割があるわけですが、プルアップとプルダウンのどちらにしたら良いのかは使用するICに依存します。

例えば、通信をしていない際はLowレベルで、信号が立ち上がってHighレベルになったタイミングから通信を開始するような通信ICがあったとします。
この場合、通信をしていない時はLow状態になっていて欲しいわけですよね。
だからプルダウンしておけば良いのです。
単純でしょう?

8.プルアップとプルダウンの抵抗値

最後に、プルアップとプルダウンをする際の抵抗値についてです。
基本的には、4.7kΩまたは10kΩとしておけば問題無いですが、どうしてその値にしているのかを一応記載しておきます。

例として、オープンコレクタ出力をプルアップしてICに入力させている場合について考えていきます。
図4で出てきた繋ぎの右側に別のICの入力ポートがある状態です。

図4 再

ICの入力ポートは実際には以下のようになっていると考えてください。

図8

入力ポートも抵抗が入っているのです。
そして、この抵抗R”にかかる電圧がIC[2]の入力電圧に当たります。
※R’とR”の抵抗値は大体同じ値になっていて、数MΩレベルの非常に大きな抵抗値になっていることが多いです。

まずは、オープンコレクタ出力のIC[1]内のトランジスタがOFFになっている、IC[2]の入力がHighレベルだと認識する場合について考えていきます。

Highレベルになる条件は、IC[2]のR”にかかる電圧がHighレベルだと判断できる電圧値であることです。
ここではほぼ3.3Vであって欲しかったとします。

この条件を満たすためには、3.3V⇒R⇒点A⇒R”と3.3V⇒R’⇒点A⇒R”のどちらの経路を通ってこようが、R”以外の抵抗での電圧降下を極力少なくする必要があります。
もし電圧降下してR”にかかる電圧が2.0Vとかになっていたら、Highレベルと認識されなくなってしまいますからね。
ということは、R”と抵抗値が同じであるR’側に電流は流れて欲しくないのです。
半分に分圧されて1.65Vになりますからね。
なので、3.3V⇒R⇒点A⇒R”という経路に電流が流れて欲しいわけです。

その為に、抵抗値の関係をR≪R”にする必要があります。
そうすれば、抵抗値の低いRを経由してR”に電流が流れ、Rではほとんど電圧降下をしないという状態を作り出すことができます。

R≪R”という大まかな条件が必須であることはわかりましたが、これはR”の端子電圧がほぼ3.3Vであって欲しいというアバウトな条件を割り当てたからです。
実際はIC[2]によって2.2V以上ならHighレベルと認識するかもしれませんし、2.8V以上ならHighレベルと認識するかもしれません。
そこの微妙な差がRの抵抗値の差に結びつきます。

3.3V⇒R⇒R”という経路に流れる電流をI、IC[2]の入力ポートがHighレベルだと認識する電圧の最低限の値をVHMIN(※R”の端子電圧)とすると、以下の式が成り立ちます。

3.3-RI>VHMIN

VHMINの値によってどの程度電圧降下を許容できるかが決まるわけですね。
逆に言うと、RIの部分の最大許容値がわかります。
つまり、IC[2]のデータシートに記載されているであろう入力電流の値も考慮すれば、この回路構成におけるRの最大値が算出できるんです。

図9

次に、オープンコレクタ出力のIC[1]内のトランジスタがONになっている、IC[2]の入力がLowレベルだと認識する場合について考えていきます。

Lowレベルになる条件は、IC[2]のR”にかかる電圧がLowレベルだと判断できる電圧値であることです。

先程、Highレベルに関する説明時にも述べたように、少なくともR≪R”である必要があります。
ということは、R≪R’も成り立ちます。
R’とR”は大体同じ値になっていますからね。
つまり、オープンコレクタ出力のIC[1]内のトランジスタがONになった場合、電流のほとんどが流れる経路は以下のようになります。

図10

R’とR”は抵抗値が大きいので、比較的抵抗値の小さい経路にほとんどの電流が流れているというだけの話です。
まあ、“ほとんど”と述べた通り、微量ながらR’とR”側にも電流は流れますけどね。
無視できるレベルですけども。

この時の点Aの電圧値がIC[2]にとってLowレベルだと認識すれば良いわけです。

一応補足しておきますが、この状態での点Aの電圧値はR”の端子電圧でもあり、IC[1]のトランジスタのコレクタ-エミッタ間にかかる電圧でもあります。
点A-GNDまでの並列回路になっていますからね。

3.3V⇒R⇒IC[1]オープンコレクタ端子という経路に流れる電流をI、IC[2]の入力ポートがLowレベルだと認識する電圧の最大限の値をVLMAX(※R”の端子電圧)とすると、以下の式が成り立ちます。

3.3-RI<VLMAX

VLMAXの値によってどの程度電圧降下させなければならないのかが決まるわけですね。
逆に言うと、RIの部分の最低許容値がわかります。

仮にVLMAXが0.8Vだったら、RIは最低でも2.5Vはある必要がありますからね。
つまり、IC[1]のデータシートに記載されているであろうトランジスタのコレクタ-エミッタ間電流の値も考慮すれば、この回路構成におけるRの最小値が算出できるんです。

さて、ここまでの説明で以下の2点がどの程度の値になるのか計算できることがわかりました。

プルアップ抵抗Rの最大許容値
プルアップ抵抗Rの最小許容値

つまり、プルアップ抵抗Rをどの程度の値にすれば良いかはこうして計算しているのです。
で、実際の値を当て嵌めていくとこの範囲内に該当する抵抗値が4.7kΩか10kΩになることが多いのです。
こんな感じで算出しているんですね。

計算に必要になるパラメータがデータシートから読み取れないこともあるので、そんな場合はよく使われる抵抗値を選んでおき、実際に回路を組んで確認してみましょう。
結局のところ、実際にやって確かめてみるのが一番なんですよ。

ちなみに、4.7kΩと10kΩを使用していることが多いというだけで、2.2kΩなど別の抵抗値に設定されていることもあります。
I2C通信系の場合は仕様で2.2kΩにしておくのが望ましいと記述されていたと聞いたこともあるので、あくまで参考と考えておきましょう。

以上、プルアップ抵抗とプルダウン抵抗についての説明でした。