HOME > natural science Laboratory > 学会へ行こう!プロジェクト > Event Driven Science > コンピュータ・サイエンス講座 > 講座内容

第2回 デジタル制御1:PWM制御によるLEDの点灯

文責:林 叔克 (2008年12月22日) カテゴリ:講座内容(5)

マイコンの機能

マイコンは日常生活においてテレビのリモコン、冷蔵庫など身の回りの電子機器に広く使われている。マイコンの働きは一言でいえば、論理的記号によるソフトウェアの世界と電流と電圧によるハードウェアの世界をつなぐことといえます。

  • 1. C 言語で書かれたプログラムは、コンピュータのソフトウェアによって、[0][1] で書かれた機械語に翻訳される。マイコンの中にはこの[0][1] で書かれた機械語が書きこまれる。
  • 2. プログラムが実行されると、機械語が電気的な信号に変換され、マイコンの足の部分であるピンから[0V]、[5V] の電圧が出力される。
  • 3. 周辺の電子機器はピンからの電気的な信号を受け取り作動する。


Figure:マイコンから周辺機器への出力

LED を点灯させるプログラム

#include<avr/io.h>
int main(void)
{
long i;
DDRB = 0xFF;
	for(;;){
		for(i=0;i<200000;i++)
		{ PORTB =0x02;
		}
		for(i=0;i<200000;i++)
		{ PORTB =0x04;
		}
	}
	return 0; //
}
  • 課題1 上のプログラムをマイコンに書きこんで、LED を点灯させよう
  • 課題2 8 個のLED のうち、どのLED が発光するか観察し、8 ビット情報を扱えるポートB との対応を 16 進数を用いて考えよう
  • 課題3 左から右にLED を点灯させ、右から左にLED を消灯させよう
  • 課題4 オシロスコープを使って、LED にかかる電圧をはかろう

LED のオン・オフと2進数


Figure:8bit と8 個のLED の対応関係

LED のオン・オフは、プログラム上では、[1] と[0] に対応して行われます。つまり、マイコンのポートのオン・オフは2 進数によって記述することができます。ポートB は8 ビットなので、 たとえば右から2 番目のLED をオンしようと思えば、[00000010] という信号をポートB に送ります。しかし毎回、8 ビットの数字を打ち込むのは大変です。そこで16 進数を使います。2 進数と16 進数の対応は以下の表になります。 8 ビットの情報とは、1 ビットが[0] と[1] の2 通りの場合を表せるということなので、28 = 256 通りの場合を表せるということです。

2 進数の[0000] から[1111] の4 ビットの情報を16 進数ではひと桁の数で表すことができるので便利です。したがって8 ビットの情報を16 進数であつかうのであれば、2 桁の16 進数で足ります。A やB などのアルファベットが出ていますが、アラビア数字が9 までしかないので、足りない分をアルファベットで補っただけです。


Figure:2 進数と16 進数の対応

14.0.9 PWM制御によるLED の明るさの調節

明るさってなんだろう?人間の目から見える映像は、毎秒数十回撮られる写真を連続的に合成したものである。したがって一見、同じように光っているものでも、実は光ったり、消えたりしている可能性がある。一般的にはLED の明るさの調節にはかける電圧を調節するが、視覚の性質を利用すれば、かける電圧が同じでも、LED のオン・オフの繰りかえしで、暗く見えるLED をつくれる。


Figure:PWM 制御によるLED の明るさ調整

スイッチのオン・オフでLED を暗くする手順

  • 1 LED を点滅させる周期を連続的に光って見える周期にする
  • 2 その周期をもとに、オンにする時間、オフにする時間を調節する
  • 3 オンにする時間を短くすれば、点灯している時間が短くなるので、暗くみえる

LED をだんだん明るくするには、以下のプログラムを参考にしてください。周期を一定にし、オンの時間を長くしていっています。

LED を点灯させるプログラム

long i, j;
for(j=0; j<400; j++){ //周期の長さ
for(i=0; i<j; i++){ //オンの時間の長さ
PORTB = 0xFF;
}
for(i=0; i<400-j; i++){ //オフの時間の長さ
PORTB = 0x00;
}
}

パルスの波の幅でLED やモータの出力を調節する考え方をPWM 制御という。PWM はPulse Width Modulation の略で、パルス波のデューティー比を変化させる変調方法で、デューティー比とは周期とパルス幅の比のことである。デジタル制御でよく使われる。だんだん明るく、暗くなど、だんだんという連続的な出力を行いたい場合に、[0] と[1] という不連続な値しか扱えないコンピュータではこのようにパルス幅を制御することで対応する。



▲このページのトップNPO法人 natural science トップ

▲このページのトップNPO法人 natural science トップ