トランジスタのスイッチ回路|Arduinoでモーターや多くのLEDを動かす、ベース抵抗の決め方
Arduinoのピンでは足りない電流を、NPNトランジスタで制御する方法を説明します。スイッチとして使うしくみ、データシートの見方、ベース抵抗の計算、LEDを複数点ける例、モーターに必要なダイオード、MOSFETやリレーとの使い分けまで順に整理します。

Arduinoで小さなLEDを光らせたら、次はモーターを回したい、LEDをたくさん点けたい、と思うようになります。ところが、これらをピンに直接つなぐと、動かないばかりかArduinoを壊してしまうことがあります。ピンから取り出せる電流は小さいからです。
そこで使うのがトランジスタです。ピンから流す小さな電流を合図にして、別の電源から負荷へ流す大きな電流をオン・オフできます。この記事では、NPNトランジスタをスイッチとして使う回路について、しくみ、データシートの見方、ベース抵抗の計算、LEDとモーターの実例、MOSFETやリレーとの使い分けまでを順に説明します。
Arduinoの基本的な使い方はArduinoのはじめの一歩で説明しています。また、この記事の抵抗の計算は、LEDに付ける抵抗の計算と同じオームの法則を使います。
この記事の回路は、5Vや12Vなどの低電圧の直流を前提にしています。交流100Vや、保護のないリチウムイオン電池のように大きな電流を出せる電源は扱わないでください。
なぜピンから直接動かせないのか
ピンの電流には上限がある
Arduino Unoで使われているマイコンのデータシートでは、一つのピンの絶対最大定格は40mAです。絶対最大定格とは「これを超えると壊れるおそれがある」という限界で、常に流してよい値ではありません。普段使いの目安としては、20mA以下、余裕を見て10mA前後と考えます。さらに、マイコン全体で流せる電流にも上限があります。
モーターは、小さなものでも100mA以上の電流を使うことが珍しくありません。LEDも1個なら問題なくても、10個を同時に点ければ数十mAになります。こうした負荷をピンに直接つなぐのは無理があります。
電圧が足りない場合もある
12Vで動くLEDテープや小型ファンは、5Vのピンでは電圧そのものが足りません。トランジスタを使えば、負荷の電源はArduinoとは別に用意して、オン・オフの合図だけをピンから出せます。
モーターは逆向きの電圧も出す
モーターのようなコイルを持つ部品は、電流を止めた瞬間に、高い電圧を発生させます。ピンに直接つなぐと、この電圧でマイコンが壊れることがあります。対策はあとの章で説明します。

NPNトランジスタのしくみ
三本の足
トランジスタには、ベース(B)、コレクタ(C)、エミッタ(E)の三本の足があります。この記事で使うNPN型では、ベースからエミッタへ小さな電流を流すと、コレクタからエミッタへ大きな電流が流れるようになります。
水道の蛇口にたとえると分かりやすいでしょう。ベースは蛇口のハンドルで、小さな力で回すと、コレクタからエミッタへ太い水流が流れます。ハンドルを回す力と、流れる水は別物です。
増幅とスイッチ
トランジスタの使い方には、大きく二つあります。
一つは増幅です。コレクタ電流がベース電流の一定倍になる範囲で使います。この倍率を直流電流増幅率(hFE)といいます。音声の増幅などに使われる状態です。
もう一つがスイッチです。ベース電流をじゅうぶんに流して、これ以上コレクタ電流が増えない状態にします。この状態を飽和といいます。飽和すると、コレクタとエミッタの間の電圧は0.1〜0.3Vほどまで下がり、まるでスイッチを閉じたようになります。ベース電流を止めれば電流も止まり、スイッチを開いた状態になります。
スイッチとして使うときに大切なのは、中途半端な状態にしない ことです。オフならほとんど熱は出ず、飽和していれば電圧が小さいので熱も少なくなります。その中間では、電圧も電流も大きいので、トランジスタが熱くなります。
必要な電圧はベース・エミッタ間
ベースとエミッタの間は、ダイオードと同じ性質を持っています。一般的なシリコントランジスタなら、0.7Vほどの電圧で電流が流れ始めます。電圧を少し上げるだけで電流が急に増えるので、LEDに抵抗が必要なのと同じ理由で、ベースには必ず抵抗を入れます。

基本の回路「ローサイドスイッチ」
つなぎ方
もっとも基本となる回路は、トランジスタを負荷とGNDの間に入れる形で、ローサイドスイッチと呼ばれます。つなぎ方は次のとおりです。
- 負荷の電源のプラスを、負荷の片側につなぐ。
- 負荷のもう片側を、トランジスタのコレクタにつなぐ。
- トランジスタのエミッタをGNDにつなぐ。
- Arduinoのピンを、ベース抵抗を通してベースにつなぐ。
- 別の電源を使うときは、Arduinoと負荷の電源のGNDをつなぐ。
GNDを共通にする理由
5番は見落としやすい点です。ベース電流はピンから出て、ベース、エミッタ、GNDを通ってArduinoへ戻ります。負荷の電源のGNDとArduinoのGNDがつながっていなければ、電圧の基準がそろわず、回路が動きません。電源のプラス側どうしをつなぐのではなく、GNDだけをつなぎます。電源の種類と電流の考え方は、電子工作の電源の選び方が参考になります。
なぜGND側に入れるのか
NPNは、ベースがエミッタより0.7Vほど高いときに動きます。エミッタをGNDに固定しておけば、5Vや3.3Vのピンでも問題なく条件を満たせます。
もしトランジスタを負荷の上(電源側)に入れると、エミッタの電圧は負荷の分だけ上がってしまいます。5Vのピンではエミッタは約4.3Vまでしか上がらず、12Vの負荷を動かすことはできません。電源側でスイッチしたいときは、PNPトランジスタやPチャネルのMOSFETを組み合わせた、少し複雑な回路が必要になります。入門のうちは、GND側に入れる回路を使うと覚えておきましょう。
起動時のためのプルダウン抵抗
Arduinoの電源を入れた直後は、ピンの設定が決まるまでのあいだ、ピンの状態が定まりません。ノイズを拾ってトランジスタが一瞬オンになり、モーターが動き出すことがあります。
これを防ぐため、ベースとGNDの間に10kΩほどの抵抗を入れておく回路がよく使われます。LEDの点灯くらいなら省略しても問題になりにくいのですが、動く物を制御するときには入れておくと安心です。











