プルアップ(Pull Up)とは、引っ張り上げるということ。
デジタル入出力の説明で、図1の回路について取り上げた。ここでスイッチをON/OFFすると、図2の様にVswが変化すると説明した。理屈としては、これで間違いではないのだが、現実はそう簡単ではない。
図1 デジタル信号とIOポート
図2 電圧と閾値、デジタル値の関係
図3に示すように、スイッチが押された状態であれば、電圧センサの入力は5Vに固定されるので問題は生じない。
図3
スイッチを押した状態
しかし、スイッチが離されると、図4の様に、電流を供給する電池が切り離されるため、電圧センサの入力は非常に不安定な状況になる。電圧センサの入力は高感度(専門的に言うと入力抵抗が大きい)ので、周囲からの漏れ電流や、雑音の影響を受けやすい。このため、スイッチのON/OFF動作とは無関係なデジタル値が読み取られる可能性がある。(図5)
図4 スイッチを離した状態
図5
スイッチ操作とデジタル値
このような事態を避ける手法として一般に用いられるのがプルアップ(プルダウンもある)である。
図4の回路で問題なのは、電圧センサの入力に電源が無い(従って微弱な信号に影響されやすい)事なので、スイッチが離された状態でも
電源供給が出来れば、問題は生じないことになる。
従って、図6の様にスイッチが離された状態でも電源供給されるように、プルアップ抵抗を付加する。この回路では、スイッチが離された状態では、電池からプルアップ抵抗を通じて電流が供給される。(電圧センサの入力端子の電圧は、5Vになる)
これにより、ノイズの影響等は電池によって吸収されるため、避けることができる。
また、スイッチを押すと、電圧センサの入力端子は電池のマイナス側とショートするため、0Vとなる。
このような動作から、以下の回路では、スイッチONの時=デジタル値は0、スイッチOFFの時=デジタル値は1となる事に注意が必要。
図6 プルアップ抵抗を接続した例
(余談)
プルアップ抵抗なるものを付加せずに、「直接、電池を電圧センサ(IOポート)に繋げばいいじゃん」と思った人もいるかもしれない。
やってみれば分かるのだが(決してやってはいけないよ!!)、そのような回路では、スイッチを押した時に電池のプラス・マイナスがショートするため、火を噴いたり電池が破裂したりする可能性がある。
プルアップ抵抗の役目は、漏れ電流やノイズによる影響が避けられる程度に電流が流れるように調整することである。