マイコンボードのArduino Nanoを使用して、パワーLEDをLチカさせてみる試みです。
パワーLEDは消費電流が大きいので、Arduino等のマイコンの出力ポートの電流では十分に駆動できません。
そこで、出力にMOSFETを使った回路で動作させてみました。
このページは「マイコンLチカ道場 Arduino編」の「1-10:パワーLEDをLチカ」に対応するページです。
回路図と部品
回路図
今回の回路は下記になります。
マイコンボードはArduino Nanoの互換品を使用します。
Arduino Nanoの出力ピンの電流は最大40mAまでのため、出力ピンからの電流ではパワーLEDをフルで駆動することは出来ません。
そこで、外部のトランジスタやMOSFETが必要になります。
※今回はArduinoの5Vではなく、電源直の9V~12VでLEDを駆動します。
また、今回の回路ではPch(チャンネル)のMOSFETを使ってみました。
NchのMOSFETでももちろん可能です。
部品リスト
品名 | 参照名 | 数量 | 数値・仕様 |
抵抗 | R1,R2,R3 | 3 | 10kΩ |
抵抗 | R4 | 1 | 50Ω(1W以上) |
NPNトランジスタ | Q1 | 1 | 2SC1815 |
Pch MOSFET | Q2 | 1 | 東芝製、TJ11A10M3 |
パワーLED | D1 | 1 | OptoSupply、OSW4XME1C1E 1W、白色 |
使用するパワーLEDについて
今回使用するパワーLEDは、共立電子で購入した「OptoSupply製1W級白色ハイパワーLED、OSW4XME1C1E」です。
ヒートシンク「1W用スター型アルミ基板、OSMCPCB8060B」も合わせて購入しました。
※秋月電子でも購入可能です。
LEDのリードにプラス・マイナスで極性が刻印されています。
プラスがアノード、マイナスがカソードです。
本当はLED裏面のパッドもはんだ付けするか、放熱用シリコングリスを塗るべきなんでしょうが、取り急ぎ熱伝導シートを挟み込んでみました。
大丈夫かな…、不安なのでマネしないで下さい。
データシートに載ってなかったので、IF-VF特性を測ってみました。
350mAでVFは約3.3Vです。ほぼスペックどおりですね。
100mA時のVFは約2.9Vです。
使用するPch MOSFETについて
共立電子で購入したPch MOSFET「東芝製、TJ11A10M3」です。
※秋月電子でも購入可能です。
【スペック】※秋月電子のHP上のデータシートより
・ドレーン・ソース間電圧:-100V
・ゲート・ソース間電圧:±20V
・ゲートしきい値電圧:-2V~-4V
・ドレーン・ソース間ON抵抗:typ100mΩ
・ドレーン電流:-11A(連続)、-22A(パルス)
・ピン配列:上の写真で見て、左からゲート・ドレーン・ソース(G・D・S)
動作説明
興味のある方は、下記をクリックして読んでください。
【PchMOSFETについて】
NチャンネルのMOSFETは、ゲート端子に電圧を印加すると、ドレーン・ソース間をONして電流を流すことが出来ます。
今回使用するPチャンネルのMOSFETは、Nチャンネルとは逆になります。
※一般的な説明では、ゲートソース間に負の電圧を印加するとONになると書いてあります。ややこしいですね。
電流の流れる方向も「ソースからドレーン」となり、Nチャンネルとは逆になります。さらにややこしくなってきました。
私なりの解釈で言い換えると、ゲート・ソース間の電位差を無くせばOFF、電位差があれば(ゲートの方が低ければ)ONとなります。
ということで、今回の回路の様にソースとドレーンをR3でプルアップして同じ電圧に吊り上げておけば、PチャンネルMOSFET(Q2)はOFFの状態になります。
これを、Aruduinoマイコンからの信号でトランジスタ(Q1)をONさせて、Q2のゲートをGNDにショートして電圧を下げてやると、PチャンネルMOSFETがONするという仕組みです。
現在はNチャンネルMOSFETの方が性能も良く使いやすいため主流の様です。(秋月電子での取扱数もかなりの差が有りますね)
ではなぜ今回Pチャンネルを使ったのか?と言われそうですが、ハイサイド側のスイッチとしては使いやすそうという理由と、興味本位(自分の勉強のため)です。
シミュレーション確認
実際に動かす前に、念のためLTSpiceによるシミュレーションをしてみました。
シミュレーション回路と入力波形の設定
下記の回路でシミュレーションしてみました。
とりあえずの動作確認のため、解析で使うパーツモデルはLTSpiceにデフォルトで入っていた有り合わせのモデルです。
基本は実際の回路と同じですが、
R5(0.01Ω)はMOSFETのゲートの電流が見たかったため追加。
R6(10kΩ)は放電用の抵抗です。これが無いとOFFの時にMOSFETのドレーン端子の電圧がスパッと落ちませんでした。(LEDの寄生容量による影響かな?)
はたして実機ではどうでしょうか。
入力波形の設定は主に下記になります。
・パルス波形
・Vinitial:0V …OFF時の電圧
・Von:5V …ON時の電圧
・Ton:10ms …ONしている時間
・Tperiod:100ms …1周期の時間
よって、5Vの矩形波で、100ms周期(10Hz)、Dutyは10%ということになります。
・シミュレーション結果
左下の波形:下は入力電圧V2(重なるので-6Vシフトしています)
上がMOSFETのドレーン端子の電圧(抵抗R4とLEDにかかる電圧)です。
右下の波形がLEDの電流です。ON時は約130mA流れています。
※参考までに、LTSpiceのシミュレーション用データをUPしておきます。
プログラム(スケッチ)
LEDをPWM駆動するプログラムです。
プログラム自体は普通のLEDのLチカと同じ要領で動作させてみます。
PWMでふわっとLチカさせてみた時の、下記と同じプログラムで動作させてみました。
※今回は点滅時間を少しゆっくりに変更してみました。
const int LED1 = 9; //LEDを接続するピン(PWM出力490Hz:3,9,10,11、980Hz:5,6)
const int wait = 5; // 点滅の速さを決めるウェイト時間(ms)
int led_width = 0; //ledのPWM幅用の変数
void setup() {
pinMode(LED1, OUTPUT); //LED1ピンを出力にする
}
void loop() {
for (led_width = 0; led_width <= 255; led_width +=1){
analogWrite(LED1, led_width); //LED1をPWMで点灯させる
delay(wait); //ウェイト時間
}
for (led_width = 255; led_width >= 0; led_width -=1){
analogWrite(LED1, led_width); //LED1をPWMで点灯させる
delay(wait); //ウェイト時間
}
}
動作確認
ブレッドボードで下記のように回路を組み立ててみました。
Arduino nanoはブレッドボードに直接挿せるので便利ですね。
パワーLEDの電流制限抵抗R4の消費電力は、ピークで50Ω×0.13A^2≒0.85Wになります。
PWM駆動なので平均はもう少し小さいと思いますが、通常の1/4Wサイズの抵抗だと燃える可能性があるので注意してください。
今回は、手持ちの5W、100Ωのセメント抵抗を2個並列にして50Ωとしています。
発熱的にはかなり余裕があります。
実際に動作させてみたところ、無事にマイコンの出力信号に合わせて、MOSFETがON・OFFして、パワーLEDをLチカさせることが出来ました。
今回は、パワーLEDはVin端子に接続して動作させるので、USBからの5V電源では動かせません。
なので、あらかじめArduino nanoにプログラムを書き込んでおき、外部から9V電源を印加して動作させています。
【オシロで波形確認】
オシロスコープで下記の箇所の電圧を確認してみました。
Ch1:Arduino nano 9ピン(PWM出力電圧)
Ch2:Q2ドレーン端子
PWM駆動なので、実際にはパルス幅は常に増減しています。
ただし、OFF時もドレーン端子に中途半端な電圧が残っています。(LEDの寄生容量による影響かな?)
別に問題はないとは思いますが、シミュレーションと同様に放電抵抗(10kΩ)を付けると、下記の波形のようにOFF時に0V付近になりました。
【動画で見てみよう】
今回のパワーLEDに流す電流は、130mA程度としています。
スペックの全力ではありませんが、直視は目に悪いレベルに明るいのでマネする時は注意してください。
まとめ
マイコンボードのArduino Nanoを使用して、パワーLEDをLチカさせてみました。
今回は、Pch MOSFETを使って、電源をON・OFFさせることが出来ました。
この回路を使えば、パワーLEDに限らず、消費電力の大きいデバイスを操作することが出来ます。
Nch MOSFETを使ったバージョンも試してみたいですね。
引き続き難しいLチカに挑戦していきましょう。
参考リンク
Arduino Nano 純正品
今回使っているのは、ELEGOO製のArduino Nano互換ボードです。
使用しているオシロスコープは下記