PWMはデジタルとアナログの架け橋1

コンピュータを含むデジタル回路の内部の演算は当然デジタル信号です。私たち人間の感覚器は全てアナログなので、デジタル回路の演算結果をアナログに変換して、例えばディスプレイに表示したりアラーム音を鳴らしたりする必要があります。

ところでデジタルの値をアナログの電流や電圧に変換するものとしてD/A変換器がありますが、変換速度、BIT精度、消費電力、付加回路の問題など少し敷居が高くなります。一方PWM(Pulse Width Modulation)を使うと通常のマイコンの1ポートの0/1のレベル制御だけでLEDの明るさをじわじわと変えたり、DCモータの回転速度を変えたり、ちょっとした音声合成もできたりします。今回はこのPWMの応用に関してのお話です。

PWMは矩形パルスのHi幅(あるいはLo幅)を変調する方法です。全体周期に対するHi幅の割合をデューティ比と呼びます。このデューティ比と周期だけがPWMのパラメータです。マイコンでPWMパルスを生成するには、①ポートを1にする→②WAIT→③ポートを0にする→④WAIT2→①に戻る。でソフトウェアだけで実現できます。ただし、割り込みが入ったりするシステムでは、正確なウェイト時間を作ることが難しくなります。通常はマイコン内に大抵入っているカウンタを利用します。Cube-Dで使っているARMマイコンにはSCT(State Configurable Timer)というカウンタとステートマシンが一体化したものが入っており簡単に任意のPWMパルスを発生させることができます(別の機会に紹介します)。

 

(1)LEDの明るさ調整

(2)DCモータの回転制御

(3)サーボモータの角度制御

(4)スピーカから音声出力

(5)光ディスクのレーザ記録パワー制御

 

次のブロクでPWMを使った上記の応用例5つを紹介します。