モータ制御に欠かせない技術“PWM”って何?:H8で学ぶマイコン開発入門(9)(2/3 ページ)
マイコンから電圧を変化させてモータの速度を変えるのは非常に効率が悪い。そこで周期的なパルス信号を発生させるPWMの登場となる。
H8マイコンのITUを使う
では、H8/3048F-ONEでPWM制御を行うには、どのようにすればよいのでしょうか。それには、H8マイコンのITU機能を使います。ITUはH8/3048F-ONEのマニュアルで「16ビットインテグレーテッドタイマユニット」と呼ばれる機能です。名前のとおりタイマ機能を提供するもので、16ビットのカウンタを備えています。
このカウンタが何秒でカウントアップされるかについては、H8マイコン自身を動作させている内部クロックを使うか、H8マイコンの外部からのクロックを使うか、大きく分けて2つから選ぶことができます。また、内部クロックは等倍から1/8倍まで選ぶことができます。このタイマユニットのモードの中にPWMモードがあり、H8マイコンの必要なレジスタを操作するだけでPWM制御が可能です。
このITUは全部で5チャネルあり、タイマを使う機器を同時に5種類使えるということになります。本連載のターゲットボードではサーボモータ2個をチャネル0と1で、DCモータ2個をチャネル3と4でそれぞれ制御しています。
ITUのレジスタ解説
それでは、ITUを使用するためにはどうすればよいのでしょうか。いままでのLED、LCD、ステッピングモータでは各ポートの入出力を操作するためにDR、PCR、DDRを操作してきました。ITUを使用するためには表1のレジスタを操作します。
各レジスタの構造は以下のようになります。
TCR(タイマコントロールレジスタ)
余談ですが、ビット7はリザーブビットとなっており、リードすると常に1が読み出されます。そしてライトは無効です。
GRA(ジェネラルレジスタA)
このレジスタの設定した値とTCNTの値が常に比較されます。値が一致したら以降はPWM波形の1(High)が出力されます。
GRB(ジェネラルレジスタB)
このレジスタの設定した値とTCNTの値が常に比較されます。値が一致したら以降はPWM波形の0(Low)が出力されます。
GRAとGRB、そしてタイマ用のクロック周波数とTCNTを調整することで自由にパルス幅を調整できるようになります。
TMDR(タイマモードレジスタ)
TSTR(タイマスタートレジスタ)
TCNT(タイマカウンタ)
このレジスタはTCRで選択した入力クロックにより、カウント動作を行います。リード/ライト可能なレジスタですが、PWM制御中は書き込むことはあまりないと思います。
Copyright © ITmedia, Inc. All Rights Reserved.