パソコンのプログラミングで最初にやる事はHelloWorldではないでしょうか?
モニターのあるパソコンならではですよね。
ではマイコンでのHelloWorldは何かといえばLEDを点滅させるLチカだと思います。
LEDを点灯させられれば点滅も簡単にプログラム出来ますが、その前にAVRにLEDを接続しなければいけません。
そこで今回はLEDの点灯方式をご紹介したいと思います。
LED点灯方式3種
マイコンでLEDを点灯させる方法として一般的な3種類の方式を紹介します。
マイコンからの吐き出し
マイコンからGNDにかけて電流が流れる方式、最大でも数十mA程度しか流せません。
接続ピンがHIGH(1)の時、LEDがオンになります。
マイコンへの吸い込み
電源側からマイコンへ電流が吸い込まれる方式です。吐き出しより電流は流せますがそれでも数十mAの範囲です。
接続ピンがLOW(0)の時、LEDがオンになります。
トランジスタ、FET駆動
トランジスタを駆動することでLEDに電流を流すため、マイコン側からはほとんど電流を消費しません。
そして、トランジスタの定格が許す範囲で大電流も流すことが可能です。
図ではNPNトランジスタを使用していますが、PNPトランジスタを使用しても点灯するのはもちろん可能です。
LED点灯の為の抵抗値選定
LEDはダイオードの一種で一定方向にしか電流を流さない性質があります。
しかし電流を流すにはLEDによって一定の電圧を掛けてあげないと流れてくれません。
順方向電圧(Vf)はその電圧を表し、その電圧以下では点灯しないのです。
その為大前提としてマイコンの電源電圧は点灯させたいLEDのVf以上でなければなりません。
ただし、これは吸い込み、吐き出しの場合であってトランジスタやFET駆動の時にはLED用電源を別に用意すればマイコンの電源電圧に影響しなくなります。
LEDと直列に繋がっている抵抗はLEDに流れる電流を制限する目的でこれが無いと過電流が流れてLEDが焼損したりマイコンが壊れてしまいます。
取り付ける抵抗の値ですが、例えば
Vcc = 5V
Vf = 3.6V
If = 30mA
として抵抗値を計算してみます。先に答えから
46.6Ω = (5V – 3.6V) / 0.03A
となります。
VccとVfの電圧差は1.4Vで30mA流すので1.4 / 0,03Aで抵抗で1.4V消費されLEDには3.6Vが掛かるようになります。
抵抗を流れた電流は直列接続のLEDへそのまま流れますので壊れることなく点灯させられます。
パワーLEDなど数百mAクラスのLEDの場合はトランジスタやFETでの駆動が必要になるかと思います。
この場合抵抗の定格電力にも気を付けてください。定格電力を越えてしまうと最悪の場合抵抗器が燃えたりして危険です。
上記例ですと
0.042W = 1.4 * 0.02
となり、1/8Wタイプで問題ありません。定格電力は2倍以上余裕のある物を使う様にするのが安心です。
まとめ
思い起こせば私自身も最初はLチカしてたと思います。
目に見える成果としては最適なんだと思っています。
マイコンでの制御はLチカだけでなく、もっと複雑な変化も付けられますしデバッグ用途でLEDを使うなんて方法もあるんですよ。
初心者の方は慣れるためにもLチカで楽しんでみてください。