最小限の部品を使い、マイコンの1個の出力ポートで2個のLEDを個別に制御する回路です。
マイコンの空きポートが少なかったり、コスト要求が厳しい時に使えそうです。
Twitterでは、ギリセーフやら燃えるやら結構いろんな反応がありました。
一部のBluetoothレシーバーのICでも実績があるようです。
さて、この回路は実用的なのか?検証してみます。
どんな動きをするのか?
電源(Vdd)は5Vとします。
LED1は赤色で順方向電圧Vf=2.1V、LED2は青色でVf=3.1Vとしましょう。
この電圧を超えないとLEDは光りません。
マイコンのI/O端子はプログラムから
①入力設定、②出力Low、③出力High
の3モードが設定できるとします。
もちろんマイコンはLEDを駆動できるだけの能力があると仮定します。
①どっちも消灯
マイコンのI/O端子を入力設定にします。
ハイインピーダンスになるのでマイコンの存在を無視できます。
(pA、nAオーダーはこの際無視)
LEDを光らせるには、
LED1のVf 2.1V + LED2のVf 3.1V = 5.2Vが必要です。
しかし電源が5Vなので、ギリギリ電圧が足りず、2個のLEDには電流が流れないので光りません。
②LED1のみ点灯
マイコンのI/O端子を出力設定にしてLowにします。図のVoutが0Vになります。
LED1: 抵抗Rを介して電流が流れ、光ります。
LED2: 電源電圧VddからLED1のVfを差っ引いた2.9Vが掛かりますが、必要なVf=3.1Vより低いため光りません。
③LED2のみ点灯
マイコンのI/O端子を出力設定にしてHighにします。図のVoutが5Vになります。
LED1: 電源電圧VddからLED2のVfを差っ引いた1.9Vが掛かりますが、必要なVf=2.1Vより低いため光りません。
LED1: 抵抗Rを介して電流が流れ、光ります。
なおLED1とLED2の電流は抵抗Rで決まるので、それぞれの電流が異なります。
が、極限まで部品を減らしたいので妥協しましょう。
④どっちも点灯
LED1もLED2も点灯させるにはどうするか?
マイコンのI/O端子を高速でHigh/Lowにします。すると残像効果でどっちも光っているように見えるでしょう。(強引)
現実問題
さて上記のように適当に考えると、上手くいく感じがします。
しかし現実は甘くない……。
電源5Vの精度、LEDのバラツキ、温度特性等々、考慮するべき点が多数あります。
というか、既に①の時点で0.2Vしか余裕がありません。
マイコンの電源5Vに三端子レギュレータ、
定番のTOSHIBAのTA78L05Sを使ったとしたら、
出力電圧は最小4.8Vから最大5.2Vです。破綻しました。
また測定条件が異なると最大5.25Vとなっています。
LEDのほうは、例えば次のLEDを選んだとします。
- 赤色LEDには、OptoSupply製のOSR5JA3Z74A
- 青色LEDには、OptoSupply製のOSB5YU3Z74A
データシートを見てみると、
赤色LEDの方はVfの最小値が1.8Vです。
青色LEDの方はVfの最小値が2.8Vです。
合計すると4.6Vです。これだと光りますねえ!
また、上の表の値は順方向電流Ifが20mAの時です。
LEDやダイオードは、順方向電流Ifが小さくなると
Vfも下がります。
If=20mAではVfが2.1Vですが、
If=10mAではVfが下がり1.8Vぐらいになりそうです。
更に温度特性を見てみます。
温度が上がるとVfが下がります。
25℃上がると凡そ0.06V下がるようです。
青色LEDの場合、
赤色LEDの時と縦軸のレンジが違ってますが、
If=20mAではVfが3.1V、
If=10mAでは2.7Vぐらいになりそうです。
赤色LEDと同様、温度が上がるとVfが下がります。
25℃上がると凡そ0.06V下がるようです。
つまり・・・この回路は、そのまま使うには危険ですね。
実際に使うには
とまあ色々考えましたけど、そのまま使うのは厳しそうです。
ですが、次の解決策を考えてみました。
たぶん、イケるでしょう。