【初心者向け・図解有り】プルダウン抵抗・プルアップ抵抗をわかりやすく説明-農家のIoT入門(3)

2022年1月14日

農家のIoT入門、第三回です。

今回は、「入力」を理解し、電子工作に反映させてみましょう。

回路初心者には難しく、つまづきやすい範囲ですが、なるべく初心者にもわかりやすく解説します。

だって私が初心者ですからね(^^)

本記事の目的

・RaspberryPiにおける入力とは
・プルダウン抵抗を理解する
・プルアップ抵抗を理解する

RaspberryPiにおける入力とは

前回の記事では、RaspberryPiとPythonによる、電気の"出力"を実践しました。

「どのピンに、何秒、電圧を出力する」という、実にシンプルな回路です。

逆に今回は、"入力"を学びます。

RaspberryPiにおける"入力"とは、指定したピンに3.3Vの電圧が入ってくる事です。

指定ピンに3.3V電圧が入ってくれば、「1」。0Vなら「0」と数字を返して、現在入力されているかどうかを判断出来ます。

正確には、1.3~3.3Vを3.3V、0~0.8Vを0Vの入力と判断します。

では、この入力によって何が出来るかというと、
「入力を検知した」
   ↓
「ならばこういう動作をしなさい」

というような、スイッチの役目を持たせる事が出来る訳です。

プルダウン抵抗とプルアップ抵抗を理解する

では、最もシンプルな入力回路を考えてみましょう。

GPIO 24のピンに、3.3V電圧をかけたり止めたりする回路を考えます。

まず最初に思いつく回路が、下の図のような回路でしょう。スイッチをONにすれば、GPIO24に3.3Vが入力されると思いますよね。

間違ったRaspberryPi入力回路1

もちろんONにしている時はそうなのですが、OFFにした時には「ピンがどの電圧にも繋がっていない」状態になります。

0Vの入力を検知するには、 先程書いたように、「0~0.8V」である必要があります。

ところが、どの電圧にも繋がっていない状態だと不安定になり、この範囲に収まらないんですね。

電子回路初心者には、感覚的に理解しずらい点です(私もそうですが)

安定して0Vの状態を保つには、スイッチオフ時にGNDへ繋いでおく必要があります。

ならばと考えるのが、だいたい次の回路。

間違ったRaspberryPi入力回路2

スイッチオフ時にGNDへ繋がっていますよね。

でもこの回路でスイッチONすると、電流はGNDへ向けて一直線に流れていきます。(電気は流れやすい方へ流れる)

そしてこの間、抵抗になる物は何も無いですよね?

ここで出てくるのが、昔懐かしい「オームの法則」

電圧V=抵抗Ω×電流I という法則です。

この回路に流れる電流を計算すると・・

電流I=電圧V/抵抗Ω
電流I=3.3/ほぼゼロ(仮に0.01としましょうか)
電流I=330A(大電流!!)

とまぁ、大きな電流が流れてしまいます。

いわゆるショートとか短絡ですね。非常に危険です。

この状態をもう少しわかりやすい図にしてみました。

間違ったRaspberryPi入力回路3

RaspberryPiの内部には抵抗が入っているので、ちゃんとした回路図を書くとこうなります。

この状態になると、RaspberryPiは強制終了してしまいます。

プルダウン抵抗をわかりやすく解説する

ショートが起きないように対策しましょう。

GND側に大きめの抵抗を入れておき、スイッチオフ時には抵抗を通じてGNDに接続させ、スイッチON時には入力ピン側へ電流が流れるようにする回路を作ります。

この事を「プルダウン抵抗」と呼び、電子工作における基本的な考え方のひとつです。

まず、スイッチOFF状態はどうなるかというと。

プルダウン抵抗でスイッチオフ状態

このように、抵抗を通ってですがGNDに接続されており、入力ピンは安定して0Vの状態になります。

続いて、スイッチON状態の回路図がこちら。

プルダウン抵抗でスイッチオン状態

先程の間違った回路では、RaspberryPi側の方が抵抗が大きく、GND側へ大電流が流れてしまいました。
今度はGND側にRaspberryPi内部抵抗より大きな抵抗が入っているので、RaspberryPi側へ電流は流れ、入力ピンは3.3Vを検知します。

この回路図も、もう少しわかりやすく書いてみましょう。

正しいプルダウン抵抗の入力回路図

こういう風に書けば、わりと理解しやすいかと思います。

・・・・なのですが、このプルダウンの理論、初心者が最初につまづくとこのひとつでしょうね。

私も理解に時間が掛かりました。だって、参考にしている本とかだと、結論は書かれていても、よくわからない人向けの解説になっていないのですよね。

ある程度の知識がある事前提で書かれている感じです。

ですので、なるべく初心者向けにわかりやすく解説したつもりです。

プルアップ抵抗をわかりやすく解説する

プルダウン抵抗とは逆に、入力ON側(ラズパイなら3.3V)に抵抗をつける回路の場合は「プルアップ抵抗」と呼びます。

このプルアップ抵抗、さらに理解に苦しみましたが、頑張って解説します。

まず、一般的に書かれているプルアップ抵抗の回路図が下の図です。

よく見るプルアップ抵抗の入力回路図

これだけだと、電気の事がよくわからない人には理解しずらくないですか?特にONの時。

スイッチオン・スイッチオフ、それぞれわかりやすく図にしてみました。

まずはスイッチオフ状態。

プルアップ抵抗でスイッチオフだと、入力ピンは3.3Vを検知します。

このプルアップ抵抗図を理解するポイントは・・

  • プルアップ抵抗とRaspberryPiの内部抵抗の2つは直列で繋がっている
  • 直列の場合、回路全体はどこでも同じ電流が流れる
  • 電流が同じなら、オームの法則で抵抗が大きいほうが電圧も高くなる
  • プルアップ抵抗はRaspberryPiの内部抵抗と比べてかなり小さい
  • よって、プルアップ抵抗にかかる電圧V1(電圧降下)はほぼゼロになる
  • 結果、ほぼ元の3.3Vが入力ピンに入る

わかりましたか?

続いて、スイッチオン状態の回路図がこちら。

プルアップ抵抗でスイッチオン状態だと、入力ピンは0Vを検知します。

このプルアップ抵抗図を理解するポイントは・・・

  • RaspberryPi内部抵抗があるので、スイッチ側へ電流がほぼ全て流れる
  • 入力ピン側は電流がほぼゼロなので、オームの法則で電圧もほぼゼロになる

どうでしょうか?この説明でわかりますか?(というか合ってますよね?)

 

このプルアップ抵抗・プルダウン抵抗については、ちゃんと理解せずに「暗記する」だけでも良いのですが、理解していた方が応用が効くようになるし、間違った回路を組まずに済むと思います。

さて、次回はこのプルダウン抵抗を使って、入力による電子工作を実際にやってみます。