2014年4月13日日曜日

PWMって?~結局はon と off~

前回はCPUに命令をして、LEDをチカチカさせました。
ただ、このやり方だとLEDを増やしたりすると、
CPUへ命令する内容を増やさないといけません。

では、CPUへの命令を極端に減らして同じ、もしくはそれ以上の事をさせるにはどうしたらよいでしょう?

そこで!

PSoC5LPの強靭な柔軟性を活用することで可能にしましょう。


問題は「一定周期でON と OFF」を繰り返すという事

そんな機能を持つコンポーネント(部品)があればいいんです
そこで、PWMと言うのを使います。

PWMと聞くとmbedarduinoを使った事のある人だと
「LEDをフワフワ光らせるときに使った」 とか
「モーター動かす時に使った」とか
そんなのだと、思います。

しかし、PWMそのものを理解して使っているわけではないでしょう。

PWMと言うのは、平たく言って

基準となるon offの周期を数えて、別のon offを出力する

と言うただそれだけの機能なんです。

もちろんCPUに任せることもできますが
それでは、他にもCPUに任せたい
プログラムが止まってしまうんです。

PWMは
基準のon off 、 数える部品 、 回数を比べる部品
この3つで出来ています。

わかりやすく、2bitのPWMを描いてみました。
基準となるon offクロックって言って
CPUも含めてこのクロックを基準に動いています。

on offのセットを数える部品をカウンターと言って
今回は2ビットなので、4回数えたら、「0」になる部品です。

数を比べる部品をコンパレータと言って
設定した数とカウンターの数を比べて
設定された数を超えるとoff ⇒ on になる部品となっています。

今回はカウンターの数と比べるのを
カウンターの数が2回以上の時(緑)と3回以上(オレンジ)の時を書きました。
よく言うデューティー比と言うのは
全体の回数と数える回数の比のことなんですね。

ね!実は単純。

この3つを組み合わせて、LEDやモーターに
適切な on off を送っているだけなんです。

たとえば、遅いクロックに出来たり、数える回数が増やせれば・・・


LEDのチカチカにも応用できると思いません???


次回、実際にPWMを使ってほぼ書かないで、LEDをチカチカさせましょう!

0 件のコメント:

コメントを投稿