PWMを利用したDCモータ制御プログラミング:H8で学ぶマイコン開発入門(10)(1/3 ページ)
PWM制御を利用してモータを回すには何が必要か? 回転速度、回転方向、ブレーキを制御するプログラムと併せて解説する。
今回は前回記事「モータ制御に欠かせない技術“PWM”って何?」の続きとなります。
前回説明したPWM制御を利用して実際にモータを回すにはどうするのか、プログラムと併せて解説します。一部前回の内容と重複する部分がありますがご容赦ください。
PWMの式の確認
まずはPWMにおけるデューティ比の式を再確認しておきましょう。
デューティ比とは周期的なパルス波を出したときの周期とパルス幅の比でした。私たちが実際にモータを制御する際には、周期とデューティ比を先に決めておき、マイコンから任意のパルス幅を出力させるという使い方をします。
DCモータの何を制御するのか
本連載ではPWM制御を用いてDCモータとサーボモータを制御しますが、まずはDCモータから動かしていきたいと思います。簡単にDCモータの仕組みに触れておきましょう。DCモータは外側に固定された磁石と、軸を中心に回転するコイルで構成されています。磁石の間には磁界が発生しており、磁界の中でコイルに電流を流すことで力が発生します(図1)。
DCモータはこの力(いわゆるフレミングの法則)によって回転するモータです。そのほかの構成要素としてブラシや整流子がありますが、プログラムを作成するうえではあまり重要ではありませんので、ここでは割愛します。
今回はDCモータの以下の点を制御します。
- 回転速度
- 回転方向
- ブレーキ
回転速度は、前回も書いたとおりDCモータに与えるパルス波の長短で調節します。デューティ比が1(100%)に近づくほどモータに電圧が切れ目なく与えられることとなり、最高速度に近づきます。
回転方向はモータ端子のプラス/マイナス極性を逆にすることで逆転できます。つまり2本あるDCモータの端子のどちらにパルス波を与えるかで決定するわけですが、この切り替えはステッピングモータ制御でも使用したPLD(注1)の助けを借りています。
最後のブレーキですが、これはPWM制御というよりは後述するモータ用のドライバICの助けを借りています。
ターゲットボードとDCモータの接続
ターゲットボード(仕様は第6回を参照)とDCモータは、図2のように接続されています。
H8マイコンとDCモータの間にはPLDとモータ用のドライバICがあります。H8マイコンから制御信号を出力して、PLDがモータを動かすための信号パターンに変換するやり方は、ステッピングモータの構成と似ています。ただし、今回はH8マイコンのITU(注2)機能を使うので、ステッピングモータよりはプログラムが若干複雑になります。
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モータにブレーキが掛かります |
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のようになります。
Copyright © ITmedia, Inc. All Rights Reserved.