Arduinoのプルアップ機能とは【どういった時に使うのか?】

どうも、なかしーです。

僕は自動車のマイコンにプログラミングをする組み込みエンジニアとして働きつつ、YouTubeでArduinoの使い方を解説しています。
>>なかしーの電子工作部

Arduino初心者
Arduino初心者

Arduinoにプルアップっていう機能があるみたいなんだけど、どんな時に使うの?

という疑問にお答えします。

電子工作でプルアップが必要な例は

  • スイッチをArduinoに繋ぐとき
  • I2C通信を使うとき

なかしー
なかしー

ArduinoでI2C通信をするときは、プルアップしないとデータの送信ができませんよ!

この記事では「Arduinoのプルアップ機能」について解説していきます。

動画でも解説しています!

https://youtu.be/kpdTMuXynus

プルアップとは?

プルアップは信号線に抵抗を通しておくことで、電位が不安定な状態を避けるために必要です。

必要性を実感しやすいのは、スイッチを使う時だと思います。

例えば、タクトスイッチの場合だとスイッチの状態に応じて接点が開閉します。

タクトスイッチを押すと5Vが入力されるようにしたとして、スイッチを押していないときの状態はどうなるのでしょうか?

実は0Vではなく、不安定な状態となります。

不安定な状態だとHIGHかLOWか正しく判断できず、誤作動する可能性があります。

上の写真は配線を浮かせた(何も繋いでいない)状態にし、プログラムを実行させています。

このとき、ArduinoがHIGHと判断し、LEDが点灯しています。

この不安定な状態を避けるために、抵抗を通して信号線に電源電圧を繋ぐのがプルアップです。

ArduinoのI2C通信でプルアップが必要な理由

I2C通信はマスタ(親)とスレーブ(子)で二本の通信線を使い、データの送受信を行います。

I2C通信で使うピンはタイミングに応じて入出力が切り替わります。

その回路はトランジスタを使ったオープンコレクタとなっています。

バッファー回路からの信号で入力を行い、オープンコレクタから出力を行います。

しかし、オープンコレクタはプルアップ抵抗がないとHIGH状態になりません。

I2C通信を使う時はArduinoのSCLピンとSDAピンにプルアップ抵抗が必要です。

Arduinoのプルアップ機能について

Arduinoには内部でプルアップ抵抗と繋いでくれる機能があります。

デジタルピンの入出力設定を行う時にpinMode関数にINPUTかOUTPUTを引数として渡すと思うんですが、INPUT_PULLUPを使うと内部のプルアップ抵抗が有効になります。

  • INPUT
  • OUTPUT
  • INPUT_PULLUP

このプルアップ抵抗を使うことで、回路上の抵抗を省略することができます。

Arduinoのプルアップ機能を使ったプログラム

タクトスイッチとLEDをArduinoに繋ぎ、プログラムでプルアップを有効にしたプログラムを作りました。

プログラム
#define SW 3
#define LED 2

void setup() {
  pinMode(SW, INPUT_PULLUP);
  pinMode(LED, OUTPUT);
}

void loop() {
  if(digitalRead(SW) == 0) {
    digitalWrite(LED, HIGH);
  } else {
    digitalWrite(LED, LOW);
  }
}

Arduinoの内部でプルアップしているので、スイッチを押した時にGNDと繋がるようにしています。

Arduinoのプルアップ機能|まとめ

この記事では「Arduinoのプルアップ機能」について解説しました。

プルアップとは、不安定な状態になる信号線に抵抗を通して電源電圧などの高い電位に繋げることです。

不安定な状態をなくし、Arduinoの誤動作を防ぐことができます。

Arduinoには内部にプルアップ抵抗があり、pinMode関数でINPUT_PULLUPと指定してあげると有効にすることができます。

プルアップすると通常時がHIGHとなります。

スイッチを繋げる場合は、押した時にGNDへ繋がるようにしてください。

https://youtu.be/kpdTMuXynus

Arduino関連の人気記事

>>【Arduino入門キット】電子工作の勉強におすすめ【こんなに安くていいの?】

>>Arduinoでできることを紹介【逆にできないことは何?】

>>Arduinoをゼロから勉強する方法【参考書は不要】

当ブログで人気のArduino入門キット

第1位:Arduino UNO スターターキット
Arduino UNOのスタータキットです。電子工作でよく使う部品が一式揃っており、バラバラで購入するより格段に安いです。
第2位:ELEGOO Arduino用のUNO R3 最終版スタータキット
こちらも電子工作によく使う部品が第一位のスタータキットよりたくさん入っています。とてもお買い得です。
第3位:ELEGOO Arduino MEGA 2560 R3
UNOの上位互換版MEGAのスターターキットです。これだけ入っていれば十分に電子工作の基本をマスターできることでしょう。
エンジニアが教えるArduino入門講座のまとめ【解説動画付き】