電子回路

プルアップ/プルダウンとは?(ボタン入力を安定させる最初の一歩)

シリーズ:基礎シリーズ(電子回路)
この記事の役割:実験シリーズ(フェーズ1:GPIO)で、ボタン入力が不安定になる原因(フワフワ=浮く) を潰し、プルアップ/プルダウンで安定させる ための基礎です。

はじめに

ボタンを配線して入力ピンを読むと、初心者がよく次の現象に遭遇します。

  • 押してないのに、勝手にON/OFFが変わる
  • 触っただけで値が変わる
  • 配線は合っているのに、動作が安定しない

これらは、かなりの確率で 入力ピンが「浮いている(フローティング)」 のが原因です。
プルアップ/プルダウンは、入力を 0か1かを決め打ちして安定させる ための基本テクニックです。

先に結論(※ここは読み飛ばしてOK)

  • 入力ピンは、何もつながっていないと 0/1 が不安定になることがある(=浮く)
  • そこで抵抗で、入力ピンをふだん High側(プルアップ)Low側(プルダウン) に固定する
  • ボタンを押したときだけ、その固定を ひっくり返す(High→Low または Low→High)
  • 多くのマイコンは 内部プルアップ(内蔵抵抗) が使える。まずはそれを使用してOK(外付けは必要になったら)

1. 「入力が浮く」ってどういう状態なのか?

入力ピンは、ざっくり言うと「電気の状態(High/Low)を読む端子」です。

でも、ピンが どこにもつながっていない とき、ピンは
HighでもLowでもない“フワフワ”した状態になりやすいです。
これを フローティング(浮いている) と呼びます。

フローティングになっていると周りのノイズや指で触れた影響などで、値が

  • 0になったり、1になったりしてしまいます。

だから「押してないのに反応する」が起きます。

ポイント:入力は「何もしてないときの状態」を決めないと、安定しません。

2. プルアップ/プルダウンの役割(入力の“普段の姿”を決める)

プルアップ/プルダウンは、入力ピンを抵抗でゆるく固定して、何もしていないとき(ボタンを押していないとき)の状態を決める仕組みです。

  • プルアップ(Pull-up):何もしていないときは High(1) にしておく
  • プルダウン(Pull-down):何もしいないときは Low(0) にしておく

「ゆるく固定」というのが大事で、直結ではなく抵抗を挟むのがポイントです。

3. 一番よく使う形:プルアップ+ボタン(押すと0になる)

実務でも一番よく使うのはこの形です。

プルアップ抵抗

※抵抗が付いていますが、ボタンを押したときに電源とGNDを直接つなぐとショートするため、これを防ぐためです。

  • ボタンを押していない
    → 入力ピンは 抵抗を通して電源(Vcc)につながっている
    入力は 1(High)
  • ボタンを押した
    → 入力ピンがGNDにつながる(0V側に落ちる)
    入力は 0(Low)

つまりこの方式では、ボタンを入力する(押す)と0(Active-Low) になります。

4. もう1つの形:プルダウン+ボタン(押すと1になる)

※今回の実験シリーズ(GPIO入門)では、まず 内部プルアップ を使う前提で進めるため、プルダウンは基本的に使いません。
ただし考え方は同じなので、プルアップの逆の形として紹介します。

プルダウン抵抗
  • ボタンを押していない → 0(Low)
  • ボタンを押した → 1(High)

こちらは、ボタンを入力する(押す)と1(Active-High) になります。

5. なぜ抵抗が必要?(直結だと危険になる)

プルアップ/プルダウンで抵抗を入れる理由は、主に次の通りです。
もし抵抗なしで、ボタンを押していないときに入力ピンを電源(Vcc)へ直結し、ボタンを押した瞬間に入力ピンをGNDへ直結したら…

  • 電源と GND が直結(ショートに近い)になります。

抵抗があることで、押したときでも電流が大きくなりすぎず安全です。
(抵抗は、押していないときの入力を決めて安定させつつ、押したときに電流が流れすぎないようにする安全装置です。)

6. 抵抗値は何Ω?(最初は「10kΩ」でOK)

抵抗値は用途やノイズ環境で変わりますが、ボタン入力のプルアップ/プルダウンなら まず10kΩ が無難です。
理由は、次の「両方のリスク」の真ん中あたりでバランスが良いからです。

  • 抵抗が大きすぎると:入力の状態がふらつきやすくなり、周りのノイズの影響を受けやすくなることがあります
  • 抵抗が小さすぎると:ボタンを押したときに電流が多めに流れ、電池が減りやすい/発熱が増えることがあります

※マイコンの内部プルアップを使う場合は、外付け抵抗が不要なことが多いです。

7. 「内部プルアップ(内蔵)」って何?(最初はこれが楽)

多くのマイコンのGPIOには、内部にプルアップ抵抗を入れられる設定があります。

  • 配線が減る(抵抗がいらない)
  • 初心者のミスが減る(配線ミスが減る)
  • 実験が速く進む

なので、実験シリーズの最初は

  • 内部プルアップON
  • ボタンは「押したらGNDにつながる」配線

が最も楽です(=ボタンを入力する(押す)と0(Active-Low)になる方式)。

ただし内部プルアップの抵抗値は固定ではなく、外付けより精密ではないことが多いです。
でも実験シリーズのフェーズ1を行う際は内部ブルアップで問題ありません。

8. よくあるつまずき(最初に潰しておく)

つまずき1:ボタンを押してないのに値が変わる

入力ピンの状態が決まっていない可能性が高いです。
プルアップ/プルダウンを入れる(または内部プルアップをON)。

つまずき2:押したら「1」になると思っていたのに「0」になる

この配線のプルアップ方式では、ボタンを押すと0(Low)になります。(Active-Low)
コード側で if (read == 0) を「押された」として扱えばOKです。

つまずき3:GNDをブレッドボードにつないでいなくて動かない

※評価ボードのGNDはボード内にありますが、ブレッドボード側にGNDを1本つないで“共通の0V”を作る必要があります。
評価ボードのGNDピンブレッドボードのGNDレール(マイナス列) をつなぐ。
GNDが共通になっていないと、ボタンを押しても入力は0Vになりません。)

つまずき4:配線が合っているのに 入力(0/1)が変わる/安定しない

→ ブレッドボードの挿し間違い(同じ列じゃない/レールが分断)を疑う。

ブレッドボードについては、次の記事で取り扱っています。
リンク:ブレッドボードの内部構造と「LEDがつかない」原因(よくある罠まとめ)

9. 実験シリーズへのつなぎ(この記事を読んだら何ができる?)

この記事が終わったら、実験シリーズ(フェーズ1)で次ができる状態です。

  • 「入力が浮く」が何か説明できる
  • プルアップ/プルダウンの回路を見て、押したら0/1どっちか言える
  • 内部プルアップを使う意味が分かる
  • 「ボタンを押したら、0になる」でも焦らない(Active-Lowに慣れる)

まとめ

  • 入力ピンは、何もつながっていないと 浮いて不安定になることがある
  • プルアップ/プルダウンは、入力の普段の状態(1 or 0)を決めて安定させる
  • よく使うのは プルアップ+ボタン(押したら0)
  • 抵抗値は最初は 10kΩ でOK
  • まずは 内部プルアップ を使うと配線ミスが減る

次に読む(おすすめ順)

  • 次:デバウンス入門(ボタンが1回で複数回反応する問題)
  • 関連:GNDとは?なぜ基準点が必要なのか?(外部機器とつなぐ前に)
  • 実験:フェーズ1:ボタン入力でLED(ポーリング)→ プルアップ/プルダウン体験

-電子回路