連載
» 2007年07月11日 00時00分 UPDATE

H8で学ぶマイコン開発入門(10):PWMを利用したDCモータ制御プログラミング (1/3)

PWM制御を利用してモータを回すには何が必要か? 回転速度、回転方向、ブレーキを制御するプログラムと併せて解説する

[宮崎 雅史 ソフィアシステムズ,@IT MONOist]

 今回は前回記事「モータ制御に欠かせない技術“PWM”って何?」の続きとなります。

 前回説明したPWM制御を利用して実際にモータを回すにはどうするのか、プログラムと併せて解説します。一部前回の内容と重複する部分がありますがご容赦ください。


PWMの式の確認

 まずはPWMにおけるデューティ比の式を再確認しておきましょう。

ay_h810_01.gif

 デューティ比とは周期的なパルス波を出したときの周期とパルス幅の比でした。私たちが実際にモータを制御する際には、周期とデューティ比を先に決めておき、マイコンから任意のパルス幅を出力させるという使い方をします。

DCモータの何を制御するのか

 本連載ではPWM制御を用いてDCモータとサーボモータを制御しますが、まずはDCモータから動かしていきたいと思います。簡単にDCモータの仕組みに触れておきましょう。DCモータは外側に固定された磁石と、軸を中心に回転するコイルで構成されています。磁石の間には磁界が発生しており、磁界の中でコイルに電流を流すことで力が発生します(図1)。

DCモータの仕組みイメージ 図1 DCモータの仕組みイメージ

 DCモータはこの力(いわゆるフレミングの法則)によって回転するモータです。そのほかの構成要素としてブラシや整流子がありますが、プログラムを作成するうえではあまり重要ではありませんので、ここでは割愛します。

 今回はDCモータの以下の点を制御します。

  1. 回転速度
  2. 回転方向
  3. ブレーキ

 回転速度は、前回も書いたとおりDCモータに与えるパルス波の長短で調節します。デューティ比が1(100%)に近づくほどモータに電圧が切れ目なく与えられることとなり、最高速度に近づきます。

 回転方向はモータ端子のプラス/マイナス極性を逆にすることで逆転できます。つまり2本あるDCモータの端子のどちらにパルス波を与えるかで決定するわけですが、この切り替えはステッピングモータ制御でも使用したPLD(注1)の助けを借りています。

※注1:
PLDについては第8回「ステッピングモータの仕組みと制御のコツ」を参照してください。


 最後のブレーキですが、これはPWM制御というよりは後述するモータ用のドライバICの助けを借りています。

ターゲットボードとDCモータの接続

 ターゲットボード(仕様は第6回を参照)とDCモータは、図2のように接続されています。

H8/3048F-ONEからDCモータまでの接続イメージ 図2 H8/3048F-ONEからDCモータまでの接続イメージ

 H8マイコンとDCモータの間にはPLDとモータ用のドライバICがあります。H8マイコンから制御信号を出力して、PLDがモータを動かすための信号パターンに変換するやり方は、ステッピングモータの構成と似ています。ただし、今回はH8マイコンのITU(注2)機能を使うので、ステッピングモータよりはプログラムが若干複雑になります。

※注2:
ITUについては第9回「モータ制御に欠かせない技術“PWM”って何?」を参照してください。


 H8マイコンからはDC_EN、DC_CW、DC_PWM、DC_BRKがPLDに接続されています。DC_PWM(TIOCA3、4。詳細は後述)はITUのチャネル3、4のPWM波を出力するための信号となります。各信号の意味は表1のとおりです。

信号名 意味
DC_EN DCモータ制御のEnable信号です。この信号がLowの間、DCモータの制御を許可します
DC_CW DCモータの回転方向を制御します。LowとHighを切り替えるたびに回転方向が逆転します
DC_PWM H8マイコンのPWM波出力です
DC_BRK DCモータのブレーキ信号です。Highを出力している間、DCモータにブレーキが掛かります
表1 H8マイコンから出ている制御信号名と意味

 PLDからドライバICには2本の信号が出力されています(P_OUT0、1)。この信号のHigh/LowはH8マイコンからの制御信号によってPLD内部で決定されます。先ほど簡単に触れましたが、回転速度、回転方向、ブレーキを実際に制御しているのはこのドライバICになります。H8マイコンからの制御信号はPLDでドライバIC用の制御信号に変換され、それをドライバICが受けることでDCモータを思ったとおりに制御しています。

 上記の信号の流れを見ると随分と回りくどいことをしているように思えますが、これにはH8マイコンの信号上の理由があります。

 1つ目の理由は、DCモータの回転方向を選択するためです。PWM制御はH8マイコンのITUを使うわけですが、ITUをPWMモードに設定すると、TIOCA端子(ポート端子と兼用。モードにより用途を選択できる)と呼ばれる端子が自動的にPWM波の出力端子として設定されます。この1本の出力端子でモータの回転方向を切り替えるために、DC_CW信号とPLDを使ってドライバICの入力端子のどちらにPWM波を与えるかを決定する仕組みを設けています。

 2つ目は、DCモータの仕組みに理由があります。H8マイコンの設定によってはTIOCBという端子(これもポート端子と兼用)もPWM出力信号として使用できますが、TIOCB3はPB1として、TIOCB4はPB3としてDCモータのブレーキ用信号として使用しています。また、TIOCA、TIOCBを同時にPWM波の出力端子として使用したとしても、PWM波を与えるのはDCモータの2本の端子のうちどちらか一方になるので、PWM波は同時に2つも必要ない、ともいえます。

 以上を要約すると、

  • PWM波をDCモータ端子のどちらに与えるかを決定するためにPLDを間に挟む必要がある
  • やろうと思えば1チャネルにつきPWM波を2つ同時に出せるが、DCモータの仕組みとして2つ同時に出すことに意味がない

となります。これを踏まえて、H8マイコンからドライバICまでの信号の流れとHigh/Lowの組み合わせをまとめると、表2のようになります。

H8/3048F-ONEからDCモータまでの信号の組み合わせ 表2 H8/3048F-ONEからDCモータまでの信号の組み合わせ

       1|2|3 次のページへ

Copyright© 2018 ITmedia, Inc. All Rights Reserved.