ハイパワーフルカラー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色を独立に制御したいので、配線はもちろん並列になります。回路図にするとつぎのような感じです。

便宜上、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でも買えます。
最初に買う参考書ならこちらがおススメ。