
スイッチやセンサーなど、外部信号をマイコンに入力する時に必要となるのが『プルアップ』『プルダウン』抵抗です。この抵抗は必須でありながら効果が良く分かっていなかったり、逆に省いてしまっている方もいると思います
本記事では、スイッチ入力に使うプルアップ・プルダウン抵抗について解説します。
目次
スイッチ入力を安定な状態に保つプルアップ(プルダウン)抵抗

プルアップ(プルダウン)抵抗とは、電子回路における「浮いている」状態を避けるための抵抗です。マイコンの入力端子は、必ず電圧源、グランド、グランド基準信号源に接続しなければならず「浮いている」状態を極力避ける鉄則があります。
スイッチとマイコンを接続した場合、どのような状態が浮いている状態になるのかを考えてみます。
例えば、電子回路を始めたばかりの方が考えるのは下のような回路です。
下の図は、スイッチを押したときにONの信号が入力される回路です。5V電源とスイッチを繋いで、マイコンの入力端子にそのまま接続しています。説明のスイッチでは、押したら通電して離すと切れる仕様のモーメンタリスイッチをイメージして解説します。


この回路は、スイッチをONにしている時であれば問題ありません。
しかし、スイッチOFFの状態にすると、マイコンの入力端子が何も繋がっていない「浮いている」状態になります。このような状態を避けるために「プルアップ抵抗」を使用します

このような「浮いている」状態を「ハイインピーダンス(Hi-Z)」や「フローティング」「開放」と呼ぶ場合もあります。
開放状態が悪いのではなく、ノイズやサージに弱くなる事が問題となる
「浮いている」状態になるとノイズによるマイコン誤作動やサージによるラッチアップの誘発などを引き起こし、製品にした場合の安定性が極端に弱くなります。これは、5VやGNDに接続していれば、それ以外の範囲の電圧が加わったとしても影響を受けにくくなるのですが、浮いている状態では直接その影響を受けてしまう事になります。
とは言え、実際には入力端子が浮いていたとしてもほとんどの場合想定している通りの動作はしますし、回路制作の途中で直接的なトラブルに繋がる場合も恐らくはありません。
しかしながら、1台や2台の試作であれば問題にはならなくても、100台を超えるような回路を量産して長期間動作させることがあれば「浮いている」状態を原因とする不良が発生します。
入力端子の「浮いている」状態を残すのは、回路全体の信頼性を低下させたり、最悪の場合マイコンの破壊に繋がる場合もあるので、回路設計における慣例としてプルアップ抵抗やプルダウン抵抗を接続して浮いている状態を避けるような回路構成にします。
「何も入力がないとき、アップ(ON)状態」にするプルアップ
先ほどの回路は「スイッチがOFFの時に浮いた状態になる」のが問題点となります。それをプルアップ抵抗を使って対策したのが以下の回路となります。

この回路では、先ほどの回路とスイッチをONにした時の電圧状態が反転しており、スイッチを押したときにマイコンにはOFF (0V)、スイッチを離すとON状態 (5V)が出力されます。プルアップ抵抗を追加すると、スイッチを押していない状態でもマイコンには抵抗を介して5Vが入力されるようになります。
それぞれ、スイッチを押したときと、押していないときの動作を解説します。理想的な条件としてマイコンの入力端子の入力抵抗は非常に大きい値と考えます。
スイッチを押した時の考え方は、スイッチが0Ωとなることでスイッチ部分の電圧が電圧も0Vとなる点が理解のポイントです。
スイッチと並列に繋がるマイコンの電圧入力は0Vになりマイコン入力はOFFとなります。この状態だと5Vの電圧は全てプルアップ抵抗側に印加されます。

スイッチを押していない時には、5V電圧がプルアップ抵抗とマイコンの入力抵抗で分圧されます。
プルアップ抵抗とマイコンの入力抵抗ではマイコン入力抵抗の方が遥かに大きいため、5Vが抵抗比で分圧された結果、5V電圧のほぼ全てがマイコン側に加わり、マイコンはON入力となります

プルダウンは何もないときにダウン(OFF)
プルアップではボタンが押されていない時にONとなりますが、抵抗を下側に配置するとボタンを押した時にONになるプルダウンになります。

それぞれ、スイッチを押したときと押していないときの動作を解説します。理想的な条件としてマイコンの入力端子の入力抵抗は非常に大きい値と考えます。
スイッチを押した時はスイッチを通して5Vが供給されます、プルダウン抵抗とマイコン入力端子は並列接続のため、電圧降下もなく5Vが加わりON状態となります。

スイッチを押していない時は5Vが供給されません。マイコンの入力端子は、プルダウン抵抗を通じてGNDと繋がり、OFF状態に固定されます。

ちなみに、スイッチを押していない時だけに注目すると「プルダウン抵抗は無くても」と思うかもしれませんが、スイッチを押した時には5Vラインが抵抗なしでGNDに直接印加され、ショートによって電源自体を破壊してしまうのでプルダウン抵抗は必須となります。

慣例的によく使われるのはプルアップ抵抗
プルアップ・プルダウンは出力が反転するだけで、用途に大きな違いはありませんが、慣例的に多く使われるのはプルアップです。
歴史的には当時の半導体の特性によってプルアップが多用された経緯があり、現在でも慣れや古い技術書の引用からプルアップが多用されている傾向があります。近年のマイコンなどはどちらを使用しても大きな違いはありませんが、内部プルアップを搭載しているマイコンも多いため、この先もプルアップが多用されるでしょう。
しかしながら、用途によってはプルダウンが必須となる場合もあるので、前例に捕らわない柔軟な回路設計を行いましょう。
マイコンの内蔵プルアップを使って部品点数低減
マイコン内部プルアップ(プルダウン)を利用すると、抵抗を省いてスイッチをそのまま接続しても、マイコン内部でプルアップ(プルダウン)しているのと同じ状態を保つことができます。

部品を減らすことはトラブルの低減やコストの削減など、様々な面でメリットがあります。内部プルアップ(プルダウン)があるマイコンを使用する場合は活用してみましょう。
電子工作で人気のArduinoにも内部プルアップがあり。pinMode関数の第2引数にINPUT_PULLUPを指定すると内部プルアップが有効になり、外付プルアップ抵抗を省略できます。