2022/9/15 「vcStitching」のプレスリリースを行いました!

7-29. ArduinoでたくさんのLEDを制御する1(トランジスタアレイの使い方)

はじめに

Arduinoで大電流のLEDをいくつか制御する必要が出てきました。Arduinoは数十mAまでしか出せないため、小さなLEDは点灯できても100mA以上の明るいLEDやサーボモーターなんかは動かせません。Arduinoは制御信号を出すだけにし、大電流の電源は別のところから取ることになります。

一般にリレーモジュールとトランジスタが選択肢になりますが、回路を小型にするにはトランジスタです。ここではトランジスタトランジスタアレイの使い方を備忘録として残しておきます。

材料

Arduino Uno

Arduino Uno Rev3: マイコン関連 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,マイコン,電子工作Arduino Uno Rev3秋月電子通商 電子部品通信販売

トランジスタはNPN型の一番安いもの(2N5551L-B-T92-K)を用意しました。

トランジスタ 2N5551L−B−T92−K 160V600mA: 半導体(モジュール) 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,マイコン,電子工作トランジスタ 2N5551L−B−T92−K 160V600mA秋月電子通商 電子部品通信販売

トランジスタアレイはNPN型でよく使われる型番(ULN2003AN)を用意しました。トランジスタが7個並んでいる感じです。

トランジスタアレイ ULN2003AN: 半導体(モジュール) 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,マイコン,電子工作トランジスタアレイ ULN2003AN秋月電子通商 電子部品通信販売

あとは適当なLED×7個、LED用の適当な抵抗(12V駆動なので強めの10kΩ)×7個、ベースエミッタ間抵抗(これも適当に10kΩ)×2個、ACアダプタ(12V, 2A)、DCジャック、配線用のジャンパワイヤです。

トランジスタとアレイで1系統制御

データシートでエミッタ、ベース、コレクタの足を確認します。今回の2N5551L-B-T92-KはEBCですが種類によってはECBもあるとのこと。

ブレッドボード上で次のように配線。これら2つは同じ動きをします。

※イラストの抵抗の模様は実際と異なります

デジタル出力2番ピンをHIGHにするとLEDが光ります。動作確認の様子は省略しますので、12V系統と5V信号系統の流れをしっかり理解しておきます。NPN型なのでトランジスタの上流側に全ての負荷(LED)を置きます。

青い点線はベースエミッタ間抵抗、赤い点線は名前は分かりませんが高電圧がかかったときに逃がす役割があるとのこと。いずれもこれくらいシンプルな回路なら省略しても影響ありません。アレイは内部でベース抵抗・ベースエミッタ間抵抗をしてくれているらしいので非常にコンパクトに収まります。

トランジスタアレイで7系統制御

次のように配線。デジタル出力の2~8番ピンを使いました。

Arduinoに書き込みます。

void setup(){
  // シリアルポートを9600 bps[ビット/秒]で初期化
  Serial.begin(9600);
  // 2~8番ピンをoutputに
  for (int i = 2; i <= 8; i++){
    pinMode(i, OUTPUT); digitalWrite(i, LOW);
  }
}

void loop(){
  // 順に点灯
  for (int i = 2; i <= 8; i++){
    digitalWrite(i, HIGH);
    delay(300);
    digitalWrite(i, LOW);
  }

  delay(300);
  
  // 複数を点灯
  digitalWrite(2, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(8, HIGH);
  delay(300);
  digitalWrite(2, LOW);
  digitalWrite(4, LOW);
  digitalWrite(6, LOW);
  digitalWrite(8, LOW);

  delay(300);
}

デジタル出力ピンはデフォルトをLOWにし、HIGHにしたときだけ導通します。複数チャンネルを同時に光らせる場合はトランジスタアレイの定格電流を超えないように注意します(できれば定格の半分未満と言われている)。

さいごに

いろいろ頑張ってPythonから制御することもできました。次回はシフトレジスタを学びます。

タイトルとURLをコピーしました