2008年 2月 28日 木曜日
[Sun SPOT で外付けLEDを点滅させよう(1)] LEDのつなぎ方を考える。
今回は、マイコン制御の "Hello World" 、 外付けのLEDを点滅させてみたいと思います。一見簡単そうですが、やってみると結構奥が深いです(私は電子回路の専門家ではないので一から勉強しながらやってます)。
# 今回はソード型のLEDを使います(順電圧: 3.3V、電流: 20mA)

LEDを点灯させるための回路は例えばこのようになります↓
左側の図だと分かりにくいかもしれませんが、基本的には右の図と同じ意味で、電源と抵抗をつないで回路を作れば電流が流れて点灯します。
ここで、LEDに電源をつなぐ際の注意点を。LEDは流れる電流の量で光の明るさが変わるのですが、特定の電圧以下ではごくわずかな電流しか流れな い(ので当然光らない)という特性があります。順電圧というのはLEDが光るのに必要な電圧で、このとき流れる電流量がLEDの特性としてマニュアルに掲載されています。さらに、LEDに順電圧を超える電圧をかけると、急激に電流の値が増加して簡単に破損してしまいます(例えば順電流3.3VのLEDに10Vをかけるなど)。そこで、たいていの場合は、LEDに電流が流れすぎないようにするために回路に抵抗を追加します。
下の写真は、3Vの電池をつないだ状態です(このLEDの順電圧は3.3Vで、3Vの電源の場合は電流が流れすぎる心配が無いので抵抗はつないでいません)
# 当たり前ですが、光ります

このままだとLEDは光り続けるだけですし、仮にスイッチを付けても手でOn、Offしなければならないので、面白くないです。左図のスイッチと同じ働きをSun SPOTで実現するにはどうすればいいでしょう?
Sun SPOTを含め、マイコンには汎用I/Oポートというインタフェースが用意されていて、I/Oポートの出力をプログラムから制御することで、このI/Oポートに接続した負荷(LEDなど)を駆動することができます。ここで、出力値としてはHigh、Lowの2値を表す電圧をとります(例えば、High(5V)、Low(0V)など)。
一般に、マイコンのI/Oポートに負荷を直接接続して駆動するのには注意が必要です。なぜかというと、I/Oポートに流せる電流の最大値は決まっていて、一般に小さいからです。例えば、DCモータなどは必要な電流量が大きいので、直接接続して駆動することは普通のI/Oポートではできません。最大値を超えると、最悪壊れてしまいます。
電流の流し方には、流す方向によってソースとシンクの2種類あり、I/Oポートから流れ出る方向がソース、流れ込む方向がシンクです。それぞれに最大許容電流値が決まっています。

上図のように、例えばソース電流を流す場合には、プログラムからI/Oポートの出力をHighにすると、負荷のもう一方がGND(0V)のため電位差が発生して電流が流れます。このとき、負荷がLEDであれば光ります。一方、シンク電流の場合はI/Oポートの出力をLowにすると、もう一方がVcc(5Vなど)のため電位差が発生して電流が流れます。このように、I/Oポートの電圧を切り替えて、スイッチのように動作させます。
LEDを点滅させる回路のイメージがつかめた所で、Sun SPOTのI/Oポートの出力特性についても見てみましょう。と思いましたが、長くなってきたので続きはまた。
Posted at 10:55午後 2 28, 2008 by Shuichi Machida in SunSPOT | 投稿されたコメント[0]