【初心者向け・図解有り】プルダウン抵抗・プルアップ抵抗をわかりやすく説明-農家のIoT入門(3)
農家の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が入力されると思いますよね。
もちろんONにしている時はそうなのですが、OFFにした時には「ピンがどの電圧にも繋がっていない」状態になります。
0Vの入力を検知するには、 先程書いたように、「0~0.8V」である必要があります。
ところが、どの電圧にも繋がっていない状態だと不安定になり、この範囲に収まらないんですね。
電子回路初心者には、感覚的に理解しずらい点です(私もそうですが)
安定して0Vの状態を保つには、スイッチオフ時にGNDへ繋いでおく必要があります。
ならばと考えるのが、だいたい次の回路。
スイッチオフ時にGNDへ繋がっていますよね。
でもこの回路でスイッチONすると、電流はGNDへ向けて一直線に流れていきます。(電気は流れやすい方へ流れる)
そしてこの間、抵抗になる物は何も無いですよね?
ここで出てくるのが、昔懐かしい「オームの法則」
電圧V=抵抗Ω×電流I という法則です。
この回路に流れる電流を計算すると・・
電流I=電圧V/抵抗Ω
電流I=3.3/ほぼゼロ(仮に0.01としましょうか)
電流I=330A(大電流!!)
とまぁ、大きな電流が流れてしまいます。
いわゆるショートとか短絡ですね。非常に危険です。
この状態をもう少しわかりやすい図にしてみました。
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内部抵抗があるので、スイッチ側へ電流がほぼ全て流れる
- 入力ピン側は電流がほぼゼロなので、オームの法則で電圧もほぼゼロになる
どうでしょうか?この説明でわかりますか?(というか合ってますよね?)
このプルアップ抵抗・プルダウン抵抗については、ちゃんと理解せずに「暗記する」だけでも良いのですが、理解していた方が応用が効くようになるし、間違った回路を組まずに済むと思います。
さて、次回はこのプルダウン抵抗を使って、入力による電子工作を実際にやってみます。