NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

プルアップ抵抗とプルダウン抵抗

 プルアップ抵抗とプルダウン抵抗はON・OFF信号を確実に伝達するために使われます。特にマイコンへの入力先にスイッチを使って回路がオープンになるような場合などは誤作動防止の為、確実に取り付けるべき大事な抵抗です。

Arduino(ATmegaマイコン)でトランジスタを使う場合、NPN型はプルダウン抵抗を使用し、PNP型を使う場合プルアップ抵抗を使用します。
 Arduinoにはプルアップ抵抗が内蔵されており、プログラム側で設定することによって(1.3参照)PNP型トランジスタに関しては抵抗及びその周辺回路を省略する事が出来ます。

1. プルアップ抵抗

1.1 悪い例
 プルアップ抵抗を使わないと残念な回路になる見本です。
 Arduinoのデジタル入力ピン自体がHigh状態になる事は無いので参考まで。
 TTL論理入力などは入力ピン自体がHigh状態になる事から、図1-1で一見問題無い様に見えます。しかし、スイッチONでTTL論理入力が0Vとなった時は無駄な電流が流れ続けますのであまりこの回路はオススメ出来ません。
イメージ 7
イメージ 8
図1-1:悪い見本
 
1.2 良い例
 極力無駄な電流は使わず、スイッチOFF時(図1-2上段)入力ピンをHigh状態とし、スイッチがON時(図1-2下段)入力ピンをLow状態にしたいです。その為には図1-2の様に抵抗を通して5Vと接続した回路にします。
 この抵抗の事をプルアップ抵抗と言います。
イメージ 2
イメージ 1
図1-2:良い見本
 
1.3 便利な関数(INPUT_PULLUP)      ※2016年4月3日追記
 Arduinoマイコンチップ内部にはプルアップ抵抗が内蔵されており、プログラム側の設定で使用する事が可能になります。
 通常はPinModeを設定するとき以下の様にプログラム(スケッチ)を書きます。

//設定
void setup() {                      //一回だけ実行する
  pinMode(1, INPUT);           //1番ピンを入力用に設定する
}

 図1-1の回路で通常の設定を行うと不安定な回路となります。
 しかし「INPUT」に「_PULLUP」を加えると図1-1の回路でも、マイコンが内部的にプルアップしてくれるので実質図1-2のプルアップされた回路と同じになる機能があります。

//設定
void setup() {                            //一回だけ実行する
  pinMode(1, INPUT_PULLUP);     //1番ピンを入力用に設定しかつプルアップする
}

 pinModeの設定時に「INPUT_PULLUPとするだけでプルアップ抵抗1つ、またそれに接続する配線一つが省略出来て大変便利です。
 プルアップ抵抗について1.1~1.3まで紹介しましたが、実際用いるのは1.3が最適です。

肝心な魔法の呪文を書くのを失念しておりました失礼いたしました。
ひろさんご指摘頂きまして誠にありがとうございます<(_ _)>

2. プルダウン抵抗

2.1 悪い例
 プルダウン抵抗を使わないと、残念を通り越して危ないです、特に図2-1上段。
 回路オープン(配線が浮いてる)状態は、理想(シュミレート)的には0Vですが、現実的には静電気などの影響でHighになることもあります。
 つまりスイッチ押して無いのに勝手に装置が動き出します。
※装置が勝手に動き出すポルターガイストは回路設計が↓だったのでは⁉
イメージ 5
イメージ 6
図2-1:悪い見本
 
2.2 良い例
 確実に、スイッチOFF時(図2-2上段)入力ピンをLow状態とし、スイッチがON時(図2-2下段)入力ピンをHigh状態にしたいです。その為には図2-2の様に抵抗を通してGNDと接続した回路にします。
 この抵抗の事をプルダウン抵抗と言います。
イメージ 3
イメージ 4
図2-2:良い見本

3. まとめ

 プルアップ・ダウン抵抗は、先人達の失敗と改善による試行錯誤の結果得られたものですので、同じ失敗を繰り返さないためにも確実に回路に入れるべき抵抗です。
 
イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【NOBのArduino日記!】目次に戻る