この業界ではとりあえず最初はLチカをすることになってますね。プログラミング言語で言うところの Hello World は、組み込み業界ではLEDをチカチカ点滅させる、ということになっています。LEDを点滅させるときにどのような技術が背景にあるのか、考えてみましょう。
電源の供給能力
電源というのは、理想的には無限に電流を供給できるものですが、現実には違います。たとえば身近な乾電池を例にとると、内部抵抗というものが存在します。内部抵抗があるせいで、電流を流すと電圧が落ちます。無限に電流を流すことはできず、負荷が増えると電圧が落ちます。回路には動作可能な最低電圧というのが各部品ごとにきまっていますので、その電圧より低くなってしまうぐらいに電流を流すと回路が動かなくなります。
オームの法則
オームの法則を習うのは中学生の理科でしょうか。電圧=抵抗x電流 というやつです。E=RIと買いたりもしますね。LEDというのは、誤解を恐れず雑にいうとほぼ抵抗はゼロです。つまり電圧をかけるととてもたくさん電流が流れます。たくさん電流を流すとLEDが発熱しすぎて壊れます。難儀ですね。ということで、電流制限抵抗というものを必ずつけます。
先ほどの電池の内部抵抗の話もオームの法則ですね。
PWM
LEDの明るさをけっこう難しいです。流す電流量で明るさが変わりますが、抵抗がほぼ無いことになっているので、電流量を変化させるのはけっこう難しいです。そこで、すばやくONとOFFを繰り返すことで光っている時間を短くして暗くします。ソフトウェアでこんな風にやってもまあできるはできますが、専用のハードウェアを使うことが一般的です。
for(i=0;i<100;i++){
on();
off();
}
内部ではタイマーを利用してカウンタ値がいくつになったらHIGHを出していくつになったらLOWを出して、みたいなことになっています。
GPIOの電流供給力
MCUのGPIOには、どれぐらい電流を流しても大丈夫かというのが決まっています。大丈夫という意味は、壊れないという意味と、電圧が落ちないという意味です。最近は2mAぐらい流せば十分まぶしく光るLEDもありますので、GPIOから直接駆動することもできるようになっていますが、昔ながらのLEDや、明るく光らせないといけない場合には、GPIOから直接駆動するのではなくて、GPIOはトランジスタのON/OFF制御に使って、LED自体は電源から直接駆動します。
コメント