ちょっとわかりにくいプルアップ抵抗について
2017/02/18
初心者向けの本では、プルダウン抵抗についての説明はあっても、プルアップ抵抗についての説明は省略されている本が目立ちます。
プルダウン抵抗もプルアップ抵抗も、ICの端子の信号が1(HIGH)なのか0(LOW)なのかをハッキリとさせるためにつける抵抗です。
プルアップ抵抗をつけるのは、
・スイッチOFFで、IOポートが1(HIGH:電圧がかかっている状態)
・スイッチONで、IOポートが0(LOW:電圧がほぼゼロの状態)
となる回路の場合。
プルダウン抵抗とは逆の動きになります。
さて、プルアップ抵抗を理解するにあたって肝心なのが、IC内部についてです。
IOポートの端子から内部は、小さい電流しか流れないように、抵抗が大きくしてあるということ。
この抵抗については、交流などの「電気的な抵抗」も含めてインピーダンスと呼ぶらしいです。
Raspberry PiのIOポートである、GPIOを例に図を描いてみました。
私も、回路については詳しい方ではないので、私の頭の中のイメージを元に描いてます。
【スイッチOFF】 | 【スイッチON】 |
・スイッチONの場合(右図)
スイッチがONになると、プルアップ抵抗(10[kΩ])に電流が流れて両端に3.3[V]の電位差が発生します。
抵抗から先の電位差は、グランド(GND:0[V])に直結しているため、0[V]になります。
GPIO端子も、抵抗から先に枝分かれしてつながっているので、同じく0[V]になります。
つまり信号は0(LOW)です。
・スイッチOFFの場合(左図)
普通なら次の図ようになると思いませんか?
プルアップ抵抗(10[kΩ])の両端に電位差が発生して、抵抗から先の電位は低下してGPIO端子はほぼ0[V]、つまり信号は0、つまりLOWになるのでは?・・・と。
【スイッチOFF:普通なら・・・】 |
ここでカギになるのが、GPIO端子に流れる電流の大きさです。
プルアップ抵抗(10[kΩ])から先の電流の行き先は、GPIO端子のみです。
GPIO端子から先には大きな抵抗がついているのでほとんど電流は流れません。
プルアップ抵抗に電流が流れない場合、両端の電位差はほぼ0[V]となります。
つまり、GPIO端子には電源電圧とほぼ同じ3.3[V]がかかる事となり、信号は1(HIGH)となります。
【スイッチOFF】 |
ちょっと難しいですが、私なりにはこれで何とかイメージできました。
プルダウン抵抗の記事と同様、こまかな点は間違えているかもしれません。
神経質な方は、自分なりに専門書を読み漁ってみてください。