ArduinoとトランジスタでLEDを点灯させる方法【モータに応用可】

どうも、なかしーです。

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

Arduino初心者
Arduino初心者

ArduinoとトランジスタでLEDを点灯させる方法を知りたいなぁ

という悩みにお答えします。

Arduinoなどのマイコンから出力できる電流は限られています。

例えば、Arduino Unoの場合は1ピンから出力できる電流は20mAで、合計で最大100mAとなっています。

そのため、電流を多く必要とする7セグメントLEDを光らせたり、モータを回転させたりすることができません。

しかし、マイコンとトランジスタを組み合わせて使うことで、この弱点を補うことが可能です。

この記事では「ArduinoとトランジスタでLEDを点灯させる方法」について紹介します。

トランジスタの使い方を理解することで、7セグメントLEDやDCモータを制御することも可能です。

トランジスタの特徴について

トランジスタを使うとこんなことができます。

  • 電流を増やす
  • 電気的なスイッチ

トランジスタには「NPN型」と「PNP型」の2種類があり、端子がそれぞれ3つあります。

端子は「ベース」と「エミッタ」と「コレクタ」となっています。

なかしー
なかしー

種類と端子はこの後の説明で重要なので覚えてください!

トランジスタを回路図に書く時はこんな記号を使います。

詳しく紹介します。

電流を増やす

トランジスタはベースの電流に応じて、コレクタとエミッタ間に流す電流を変えることができます。

NPN型かPNP型かによって、エミッタの電流の向きが違います。

NPN型は「コレクタ→エミッタ」ですが、PNP型は「エミッタ→コレクタ」となっています。

覚えるときのポイントは次の通りです。

  • NPN型:部品からGNDに電流を流すときに使う
  • PNP型:電源から部品に電流を流すときに使う

電気的なスイッチ

ベースに電流を流すだけでは、コレクタとエミッタ間に電流は流れません。

ベースとエミッタ間に一定値以上の電圧を与える必要があります。
(データシートにはVBEと書かれてる)

その一定値を基準よりも低い電圧のときはコレクタとエミッタ間に電流は流れませんが、高い電圧だと電流が流れます。

Arduinoにトランジスタを繋げる

Arduinoのデジタルピンとトランジスタのベースの間に抵抗を挟んで接続します。

抵抗はコレクタとエミッタ間に流したい電流値から計算をします。

NPN型の場合は

R = V / I = (5 – VBE) / (IC / hFE)

PNP型の場合は

R = V / I = (VCC – VBE) / (IC / hFE)

となります。

hfeはデータシートに電流増幅値と書かれてあると思います。

ArduinoとトランジスタでLEDを点灯させるプログラム

Arduinoとトランジスタを組み合わせた例として、こちらの回路を動かしたいと思います。

この回路の+5Vは外部電源(Arduinoとは別)を使っているので、Arduinoの+5Vを繋がないでください。

トランジスタをトグルスイッチに置き換えてみると分かりやすくなると思います。

スイッチを下に倒すとON状態になります。

左上のスイッチをONで、下のスイッチをOFFにすると回路が開いている状態なので黄色のLEDは点灯しません。

下のスイッチをONにすると閉回路になってLEDが点灯します。

下のスイッチをONにしたまま、左上のスイッチをOFFにするとLEDは点灯しなくなります。

スイッチをトランジスタに戻し、ベースの抵抗にArduinoを繋いでみます。

その上でプログラムを作りました。

HTML
#define LED_Y 2
#define LED_R 3
#define SW 4

void setup() {
  pinMode(LED_Y, OUTPUT);
  pinMode(LED_R, OUTPUT);
  pinMode(SW, OUTPUT);
}

void loop() {
  /*LED消灯*/
  digitalWrite(LED_Y, HIGH);  //OFF
  digitalWrite(LED_R, HIGH);  //OFF
  digitalWrite(SW, LOW);      //OFF
  delay(500);

  /*LED点灯*/
  digitalWrite(LED_Y, LOW);   //ON
  digitalWrite(LED_R, LOW);   //ON
  digitalWrite(SW, HIGH);     //ON
  delay(500);

  /*LED_RED点灯*/
  digitalWrite(LED_Y, HIGH);  //OFF
  digitalWrite(LED_R, LOW);   //ON
  digitalWrite(SW, HIGH);     //ON
  delay(500);

  /*LED_YELLOW点灯*/
  digitalWrite(LED_Y, LOW);   //ON
  digitalWrite(LED_R, HIGH);  //OFF
  digitalWrite(SW, HIGH);     //ON
  delay(500);
}

0.5秒ごとに全消灯→全点灯→赤色LEDだけ点灯→黄色LEDだけ点灯と切り替わります。

ArduinoとトランジスタでLEDを点灯させる方法

この記事では「ArduinoとトランジスタでLEDを点灯させる方法」について紹介しました。

Arduinoから出力できる電流は最大100mAでモータを回したり、7セグメントLEDを光らせるのには物足りません。

そこで、トランジスタの電流を増やす特性を利用し、Arduinoの出力に応じて外部から電流を流したり、流さなかったり制御すれば解決します。

Arduino関連の人気記事

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

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

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

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

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