トランジスタのスイッチ回路|Arduinoでモーターや多くのLEDを動かす、ベース抵抗の決め方
モーターを動かす例とダイオード
なぜダイオードが必要か
モーターやリレーの中にはコイルがあります。コイルは電流の変化を嫌う性質があり、トランジスタで電流を止めた瞬間に、電流を流し続けようとして高い電圧を発生させます。これを逆起電力といいます。この電圧はトランジスタのコレクタにかかるので、耐圧を超えるとトランジスタが壊れることがあります。

そこで、モーターと並列にダイオードをつなぎます。トランジスタがオフになった瞬間、コイルの電流はこのダイオードを通って回り続け、モーターの中で消費されます。これをフライバックダイオードや還流ダイオードと呼びます。
向き
ダイオードは、普段は電流が流れない向きでつなぎます。
- カソード(帯のある側)を、負荷の電源のプラス側に。
- アノード(帯のない側)を、トランジスタのコレクタ側に。
向きを逆にすると、トランジスタがオンになった瞬間にダイオードを通って大きな電流が流れ、ショートに近い状態になります。電源を入れる前に、必ず確かめます。
ダイオードには、モーターの電流以上を流せる物を選びます。小信号用の小さなダイオードではなく、整流用ダイオードやショットキーバリアダイオードがよく使われます。
起動時の電流に注意
モーターが止まった状態から動き出す瞬間には、回っているときの数倍の電流が流れます。軸が止められた状態でも同じです。「定格100mAのモーターだから100mAのトランジスタでよい」とは考えず、止まった状態の電流(データシートの「ストール電流」)か、その見当をもとに、余裕を持って部品を選びます。
小型のDCモーターでは、起動時に1Aを超えることもあります。このような場合、小信号用のトランジスタでは足りないので、MOSFETやモータードライバを使います。
電源を分ける
モーターの電流の変動やノイズは、Arduinoの動作を不安定にすることがあります。Arduinoが勝手にリセットされる場合は、電源の電圧が下がっている可能性があります。
対策は次のとおりです。
- モーターの電源とArduinoの電源を分け、GNDだけを共通にする。
- GNDの配線は、モーターの大きな電流がArduinoのGNDを通らないように引き回す。
- 電源の近くに、電解コンデンサとセラミックコンデンサを入れる。

プログラムの書き方
オンとオフ
回路がスイッチなので、プログラムは LEDの点滅 と同じです。
const int controlPin = 9; // ベース抵抗につないだピン
void setup() {
pinMode(controlPin, OUTPUT);
digitalWrite(controlPin, LOW); // 最初はオフにする
}
void loop() {
digitalWrite(controlPin, HIGH); // オン
delay(2000);
digitalWrite(controlPin, LOW); // オフ
delay(2000);
}
setup() の中で、最初に LOW を書いておくと、オフから始まることがはっきりします。
PWMで速さを変える
analogWrite() を使うと、オンとオフを高速に切り替えて、平均の電力を変えられます。これがPWMです。Arduino Unoでは、ピン番号の横に「~」の印があるピンで使えます。
const int controlPin = 9;
void setup() {
pinMode(controlPin, OUTPUT);
}
void loop() {
// 少しずつ速くする
for (int duty = 80; duty <= 255; duty += 5) {
analogWrite(controlPin, duty);
delay(50);
}
delay(1000);
analogWrite(controlPin, 0); // 止める
delay(2000);
}
モーターは、値が小さいと動き出せずに、うなるだけになることがあります。止まった状態で電流だけが流れるので、低い値を長く続けないようにします。上の例で80から始めているのはそのためですが、適切な値はモーターによって違います。
PWMでも、トランジスタはオンかオフのどちらかなので、基本的に発熱は増えません。ただし切り替えの瞬間に少し熱が出ます。高速な切り替えが必要なときは、専用のドライバを使います。
逆転はできない
この回路で変えられるのは、回す・止める・速さまでです。逆転させるには、電流の向きを変えるHブリッジという回路が必要です。手作りするより、モータードライバICを使うのが確実です。
MOSFET・リレーとの使い分け
同じ「スイッチ」の役割を持つ部品には、ほかにMOSFETとリレーがあります。
| 部品 | 動かす方法 | 得意なこと | 苦手なこと |
|---|---|---|---|
| バイポーラトランジスタ | ベース電流 | 小さな負荷、安い、簡単 | 大電流でベース電流が増える |
| MOSFET | ゲート電圧 | 大電流、PWM、発熱が少ない | 3.3Vや5Vで動く品の選択が必要 |
| リレー | コイルの電流 | 回路を電気的に分ける | 動作音、寿命、高速な切り替え |
MOSFETを選ぶとき
MOSFETはゲートの電圧で動くので、定常の電流がほとんど流れず、ピンの負担がありません。数百mAから数Aを扱うなら、こちらが有力です。
注意点は、ゲートの電圧です。データシートに書かれた「ゲートしきい値電圧」は、電流が流れ始める電圧で、十分にオンになる電圧ではありません。ドレイン・ソース間のオン抵抗(RDS(on))が、どのゲート電圧で規定されているかを確かめます。5Vや3.3Vで規定された「ロジックレベル」の品を選びます。
リレーを選ぶとき
リレーは電磁石で接点を動かす部品で、制御側と負荷側が電気的に分かれます。ただしコイルの電流が大きいので、Arduinoのピンで直接は動かせず、やはりトランジスタとダイオードが必要です。音がするうえ接点に寿命があるので、速い切り替えには向きません。

よくある失敗と確かめ方
動かないとき
| 症状 | 考えられる原因 | 確かめること |
|---|---|---|
| 負荷が全く動かない | GNDが共通でない、足の並びの間違い | GNDの配線、データシートの足の図 |
| 負荷が弱い、暗い | ベース電流の不足 | コレクタとエミッタ間の電圧 |
| オフにならない | トランジスタの破損、足の間違い | 部品を外して単体で測る |
| Arduinoがリセットする | 電源の電圧が下がる | 電源を分ける、コンデンサを入れる |
| トランジスタが熱い | 飽和していない、電流が大きい | すぐ電源を切り、計算を見直す |
テスターで確かめる手順
- Arduinoのピンを
HIGHのままにして止める。 - ベースとエミッタの間の電圧を測る。0.7〜0.9Vほどが正常の目安。
- コレクタとエミッタの間の電圧を測る。0.1〜0.3Vなら飽和している。
- 1V以上残っているときは、ベース抵抗を小さくするか、ベース電流の大きい部品に替える。
熱いトランジスタには触れず、電源を切ってから、冷めるのを待ちます。指で確かめる方法はやけどの原因になります。部品が焦げたにおいや、変色があれば、その部品は使わずに交換します。
回路が固まったら、ユニバーサル基板への組み替えでしっかりした形にできます。振動するモーターの回路では、ブレッドボードのままだと接触不良が起こりやすいためです。
まとめ
トランジスタは、ピンの小さな電流で、別の電源の大きな電流を制御する部品です。スイッチとして使うときは、負荷とGNDの間に入れ、ベース抵抗を入れて飽和させます。抵抗値は、負荷の電流の10〜20分の1をベース電流の目標にして、(ピン電圧 − 0.7V) ÷ ベース電流で求めます。
モーターにはフライバックダイオードを忘れず、起動時の大きな電流を見込みます。数百mAを超えるなら、MOSFETやモータードライバに切り替えます。
最初の一歩としては、手持ちの汎用NPNトランジスタと5Vの電源で、LEDを3本並列に点ける回路を組んでみてください。テスターでコレクタとエミッタの間の電圧を測り、0.2V前後になっていれば成功です。飽和した状態を数字で確かめられると、モーターの回路に進むときも自信を持って計算できるようになります。
よくある質問
ベース抵抗はどのくらいの値にすればよいですか?
負荷の電流の10〜20分の1を目標のベース電流にし、ピンの電圧からベースとエミッタ間の約0.7Vを引いて、その電流で割ると求められます。100mAの負荷を5Vのピンで動かすなら、470Ω〜820Ωが目安です。ベース電流がマイコンのピンの許容範囲に収まることも確かめます。
トランジスタのベース抵抗を省略してもよいですか?
省略しないでください。ベースとエミッタの間はダイオードと同じ性質なので、抵抗がないとピンから大きな電流が流れて、マイコンとトランジスタの両方を傷めるおそれがあります。
モーターのフライバックダイオードの向きはどちらですか?
モーターと並列に、普段は電流が流れない向きでつなぎます。カソード(帯のある側)を電源のプラス側に、アノードをトランジスタのコレクタ側に接続します。逆につなぐと電源がショートに近い状態になるので、通電前によく確かめます。
トランジスタが熱くなるのはなぜですか?
ベース電流が足りずに飽和していないか、流している電流が大きすぎる可能性があります。電圧が残ったまま電流が流れると、その積が熱になります。電源を切り、コレクタとエミッタ間の電圧を確かめて、ベース抵抗や部品の選択を見直します。
家庭用の100Vの機器をトランジスタで制御できますか?
この記事の回路は低電圧の直流に限った内容で、交流100Vには使えません。感電や火災の危険があるので、交流100Vを自作の回路で扱うことはおすすめしません。安全認証を受けた市販の機器を使ってください。










コメント
まだコメントはありません。最初の感想をどうぞ。