ArduinoでハイパワーのフルカラーLEDを制御する

ハイパワーフルカラーLED

どんなLED?

ペットボトルイルミネーションを作成するに当たり、超高輝度のLEDを扱う必要がありました。普通のLEDの感覚とかなり異なるので、Arduinoでの扱い方をまとめてみたいと思います。使用したLEDはこちら。秋月電子通商で入手できます。秋月の商品ページによると、

熱を持つため、放熱板付きです。

◆輝度:(@350mA)
赤…40~50lm
緑…65~75lm
青…10~15lm
◆波長:(@350mA)
赤…625nm(620~630nm)
緑…525nm(520~535nm)
青…470nm(465~475nm)
◆VF:(@350mA)
赤…2.5V(2.0~3.0V)
青、緑3.3V(3.0~4.0V)

一色当たり350mAもの電流を流せるということで、相当明るいです。肉眼で直接見るのは危険なレベル。(普通のLEDは10mAくらいで光るので、ケタが違いますね。)

今回はこのLEDを使ってArduinoでグラデーション制御をしてみます。

350mA流す、ということ

普通のLEDの10倍以上の電流を流せる!つまり超明るい!やった!

といって以前の記事 Arduinoで電子制御④ お洒落に酔いしれるフルカラーLED

のように光らせようとしても、多分普通の明るさで光るだけです。なぜなら、Arduinoの出力ピンから流せる電流値には制限があるから。つまりこのLEDの本領を発揮させるためには、別途LED点灯用の電源を確保する必要がある、ということになります。

そこで今回はACアダプタを用意して、LED用電源を取るついでにArduinoの電源も同じACアダプタから確保することにしました。たまたま手元にあった9V-1.3Aのものを使います。あとはR,G,Bの各色ごとにFETを用意して、ゲート電圧をPWM制御することで色の制御ができそうです。

使ってみる

保護抵抗は何Ω・・?

ここで少し頭を使います。ほんの少しです。電子工作でLEDの点灯回路を考える際に必ず必要な作業なので、ちょっと考えてみましょう。

今の制作条件は次の通りです。

・電源は9V-1.3A

・R,G,Bそれぞれに350mA流したい

RGBの3色を独立に制御したいので、配線はもちろん並列になります。回路図にするとつぎのような感じです。

Arduino側は省略してます

便宜上、RGBを個別のLEDとして書いてますが、実際には一つのLEDです。

この回路で消費する最大の電流は

350mA×3=1050mA=1.05A

になります(RGB全てを点灯させる場合)。ACアダプタの電流値は1.3Aなので、何とかなりそうです。もっと並列にLEDを並べたい場合は、より大きな電流値の電源が必要になります。

次に、保護抵抗の値を考えます。簡略化のために、導通中のFETによる電圧降下は無視できるものとして考えます。LEDの仕様から、LEDを点灯させるのに必要な順方向電圧は

赤:2.5V 緑:3.3V 青:3.3V

です。電源電圧は9Vですから、保護抵抗に加わる電圧Vr1,Vr2,Vr3は

Vr1 = 9.0-2.5 = 6.5 V

Vr2 = Vr3 = 9.0 - 3.3 = 5.7 V

流す電流はそれぞれ350mAなので、抵抗値は

R1 = 6.5 / 0.35 = 18.57 Ω

R2 = R3 = 5.7 / 0.35 = 16.29Ω

となりました。両方を満たして、かつあまり大きすぎない方がいいと考え、20Ωの抵抗を選択することにします。

ここで喜び勇んで20Ωのカーボン抵抗なんかを使うと、多分大変なことがおきるので落ち着きましょう。まだ考えるべきことがあります。

20Ωに設定した抵抗で消費する電力を計算してみます。

W1 = 6.5 × 0.35 = 2.275 W

W2 = W3 = 5.7 × 0.35 = 1.995 W

いずれも2W程度の電力です。普通のカーボン抵抗(ひょうたん型でカラーコードがついてるやつ)はせいぜい1/2Wとかなので、場合によっては燃えたり焦げたりする恐れがあります。もっと耐電力性の高い抵抗を使う必要があります。

今回はセラミック抵抗というものを使用しました。これは5Wまで耐えられるので、問題なさそうです。

これで準備完了

これで必要な準備は整いました。あとは配線をして、制御するだけです。プログラムは、この記事 Arduinoで電子制御④ お洒落に酔いしれるフルカラーLED のものがそのまま流用できます。

#define R 11
#define G 9
#define B 10
int i;
 
void setup(){
  pinMode(R,OUTPUT);
  pinMode(G,OUTPUT);
  pinMode(B,OUTPUT);
}
 
void loop(){
  for(i=0;i<=255;i++){      //R → G へ変化
  analogWrite(R,255-i);
  analogWrite(G,i);
  delay(10);
  }
  for(i=0;i<=255;i++){      //G → R へ変化
  analogWrite(R,i);
  analogWrite(G,255-i);
  delay(10);
  }
}

参考動画

実際に点灯させてみた動画が以下です。結構きれいに光りました。ペットボトル恐るべし。

Arduino UNOはAmazonでも買えます。

最初に買う参考書ならこちらがおススメ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です