こんにちは、hayashiです。
今回は「HM-StarterKitの購入~迷路完走まで」の特別連載の第4回、内容は「step2 motorのサンプル動作確認」になります。
マニュアルの確認
ダウンロードカードのURLからアクセスできる、「HM-StarterKit_パート3_取扱説明書_ソフトウェア解説編」を確認します。
※マニュアルのダウンロードページを開くにはHM-StarterKitに同梱されているダウンロードカードに記載のパスワードが必要になります。
今回はモータを回すサンプルプログラムの動作確認なので、「1.ソフトウェアの解説/1.2 Step2 Motor」に今回の内容が書いてあります。
マニュアルには「マイコンのタイマ機能であるMTUを使用してモータを回すサンプルプログラム。」と書かれています。
動作確認
動作確認の流れは以下のようになります。
- プログラムのビルド
- マイコンへの書き込み
- 動作確認
プログラムのビルド
マニュアル「HM_StarterKit_パート2_取扱説明書_環境構築編」の1.4 サンプルプログラムのビルドと流れは同じです。
今回はCS+で「step2_motor」ファイルのプロジェクトファイルを選択します。
画像のように上の青枠部分でビルドを行います。
ビルドを実行して画像下の青枠部分のようにエラーが出なければ問題ありません。
マイコンへの書き込み
マニュアル「HM_StarterKit_パート2_取扱説明書_環境構築編」の1.5 プログラムの書き込みの操作を参考にします。
プログラムファイルの「参照」からビルドした、「HM_StarterKit.mot」を選択します。マニュアルに書いてあるように今回はstep2なので、「step2_motor/DefaultBuild/」の中にあるものを選択します。
書き込みの際は、書き込み基板のスイッチの状態をよく確認してください。
画像の青枠が書き込み基板のスイッチです。画像では上が書き込みモード(FW)、下が実行モード(RUN)になります。
マイコンへの書き込みを行う際は、画像のように書き込みモード(FW)になっていることを確認して下さい。
動作確認
書き込みが完了したら、本体の電源スイッチを「OFF」にします。
画像の青枠が本体の電源スイッチです。基板にも書いてありますが、画像の向きでは左が「OFF」、右が「ON」です。
モータを回すので、予期せぬ動作をする可能性があります。そのため、書き込みケーブルを本体から外し、画像のように台の上においてタイヤを空回りさせます。(画像はマスキングテープを使用しています)
この状態で、本体の電源スイッチを「ON」にするとモータが回転します。
今回のサンプルプログラムでは、モータを回転し続けるので、回転することが確認できたら、本体の電源スイッチを「OFF」にします。
これでstep2_motorの動作確認を完了です。
プログラムの解説、補足
RX631のハードウェアマニュアルにマイコンの設定に関して書いてあります。
HM-StarterKitではDCモータが使用されています。また、DCモータを動作させるのに、PWM信号を使用しています。DCモータの詳細やPWM信号についてはマニュアル「HM_StarterKit_パート1_基礎知識編」やこちらのサイトなどをご覧ください。
クロックについて
マイコン内部での周波数の引き上げはPLLといわれるマイコンの機能を使用しています。
この機能を使わないとデフォルトの125kHzのクロックが使われてしまい、本来のRX631の能力を引き出すことができません。
周波数の引き上げのことを逓倍と呼び、HM-StarterKitでは、16逓倍が使われています。
逓倍は元の周波数に対して、単純な掛け算をすることで出力を得ることができます。
今回は、外部クロックで12MHzの発振器が使用されており、その値を16逓倍するため、12×16=192MHzとなります。マニュアルでは196MHzと記載されていますが、192MHzが正しい値となっています。
その後、クロックの引き下げのため分周が行われます。
分周は元の周波数に対して、単純な割り算をすることで出力を得ることができます。
今回は、逓倍した周波数を2分周するため、最終的なメインクロックは(12×16)/2=96MHzとなります。また、ペリフェラル機能(周辺機能)タイマーのクロックは48MHzまでクロックを引き下げています。
クロックの仕様等はハードウェアマニュアルのp248に書かれています。
PWM動作について
ハードウェアマニュアルのp812にMTU0でPWMを出力する方法が書いてあります。今回のサンプルはPWMモード2を使用しています。
RX631のPWMモードは、PWM1とPWM2があります。
RWM1は、1つのタイマーで1つのPWMを生成する時に使用します。
PWM2は、タイマー1つで複数のPWMを生成する時に使用します。
ただし、PWM2はPWMの周期が同じになってしまうため、周期が異なるPWMを複数生成することができません。
HM-StarterKitは左右のモータに与えるPWMの周期を同じにし、duty比を調整して制御しています。
サンプルプログラムの方では240になっていますが、0からのカウントになるので240-1が正しいです。(HM_StarterKit.c 102行目)
//サンプルプログラム MTU0.TGRD = 240; //マニュアル MTU0.TGRD = 240 - 1;
モータ出力の変更
マニュアルでは電源電圧10%、サンプルプログラムでは20%になっています。(HM_StarterKit.c 107,108行目)
入力の値には範囲があるので、マニュアルを参考に設定してください。
//電源電圧 20% MTU0.TRGA = 48; MTU0.TRGC = 48; //電源電圧 10% MTU0.TRGA = 24; MTU0.TRGC = 24;
モータの回転方向の変更
使用しているモータドライバのICはこちらの型番:DRV8838を使用しています。
PC4,PC5がモータドライバのPH Pin に繋がっています。こちらを変更することで回転方向を変更できます。
ICのPHにモータの回転方向、ENにPWMの信号を入力しています。
また、DRV8838のnSLEEPピンに割り当てられているPC6を”1”にしないとモータが回りませんので、間違えないようにPC4とPC5の値を変更してモータの回転方向が変わることを確認してください。
組み合わせの例を記載します。
//前進 PORTC.PODR.BIT.B5 = 0; //R_PH PORTC.PODR.BIT.B4 = 1; //L_PH //後退 PORTC.PODR.BIT.B5 = 1; //R_PH PORTC.PODR.BIT.B4 = 0; //L_PH //時計回り PORTC.PODR.BIT.B5 = 1; //R_PH PORTC.PODR.BIT.B4 = 1; //L_PH //半時計回り PORTC.PODR.BIT.B5 = 0; //R_PH PORTC.PODR.BIT.B4 = 1; //L_PH
パラメータを変更して動作確認
各パラメータを以下のように設定して動作させた様子
//電源電圧 10% MTU0.TRGA = 24; MTU0.TRGC = 24; //時計回り PORTC.PODR.BIT.B5 = 1; //R_PH PORTC.PODR.BIT.B4 = 1; //L_PH
まとめ
- HM-StarterKitのサンプルプログラム step2_motorの動作確認を行いました。
- パラメータを変更して時計回りに回る動作をさせました。
HM-StarterKitの紹介
特別連載で使用しているロボットになります。連載の第1回からご覧になると初心者でも迷路完走までできるようになります。
手のひらサイズのマイクロマウスキット「HM-StarterKit」
33%OFFの特別価格で販売中!
製品ページはこちら

アールティロボットショップで購入する
また、6月10日(木)からは学生マイクロマウスサークルを対象としたプレゼントキャンペーンを開催予定です!詳細をお楽しみに!
今回の内容は以上になります。
特別連載が続きますので、次の内容もぜひご覧ください。