[Lab0_2]環境のセットアップ + モータサンプルコードを動かす②
目次
5. ソフトウェアセットアップ
ここからは、実際に開発環境をセットアップしてサンプルコードを動かすまでの流れを、エンジニア目線で詳しく解説します。
初めての方でも迷わないよう、つまずきやすいポイントや「ここが便利!」というコツも交えて紹介します。
5-1. MCUXpressoを起動
まずはIDE(MCUXpresso)を起動しましょう。
インストール直後は「Welcome画面」が表示されるので、ここからスタートです。

ポイント
初回起動時は少し時間がかかることも。焦らず待ちましょう!
5-2. SDKからSample Demoをインポート
SDK(ソフトウェア開発キット)には、たくさんのサンプルプロジェクトが入っています。
今回は「mc_pmsm_enc」という、エンコーダ付きPMSMモータ制御のサンプルを使います。


- 「MCXA156」を選択
- 「frdmmcxa156」を選択
- Nextをクリック
- Examples欄で「pmsm」と検索し、「mc_pmsm_enc」にチェック
- Finishでインポート完了!

コツ
サンプル名で迷ったら「pmsm」「motor」などで検索すると見つけやすいです。
5-3. DebugからReleaseに変更
プロジェクトをインポートしたら、まず「Release」ビルドに切り替えましょう。
Debugビルドでも動きますが、Releaseの方が最適化されていて実機動作に向いています。
USBケーブルでMCU-LinkコネクタとPCを接続し、
「Build」アイコンをクリックしてビルド開始!
次に「GUI Flash Tool」アイコン
をクリックし、
デバッガが正しく認識されているか確認してからフラッシュ書き込みを行います。




トラブルシューティング
デバッガが認識されない場合は、USBケーブルの抜き差しや、PCの再起動で直ることも。
5-4. ビルドプロジェクト
ビルドが完了すると、プロジェクトの「Release」フォルダにバイナリファイルが生成されます。
エラーが出た場合は、SDKのバージョンやインポート手順をもう一度確認しましょう。
5-5. フラッシュ書き込み
「GUI Flash Tool」でターゲットボードに書き込みます。
書き込みが終わると、いよいよ実機でサンプルが動かせます!
6. リアルタイムデバッガツールと接続
ここからは、FreeMASTER(MCAT)を使ってリアルタイムでモータの状態を観測します。
IDEの「Project Explorer」から motor_control フォルダ内の pmsm_float_enc.pmpx をダブルクリックすると、FreeMASTERが起動します。

体験談
初めて波形がリアルタイムで動くのを見たときは「おおっ!」と感動しました。
ボードとの通信
左上の緑色「GO!」ボタンをクリックして通信開始。
うまく通信できない場合は、
Projectメニュー → Options → Commタブで、正しいCOMポート(115200bps)を選択しましょう。


コツ
COMポートが分からない場合は「COM_ALL」で試すと自動検出してくれることも!
デモの実行
いよいよデモのスタート!
ホストボード上のSW2ボタンを押すと、モータが回転し始めます。
Speed画面では、実際の回転速度がグラフで表示されるので、動きが一目で分かります。




感動ポイント
初めてモータが回った瞬間は、思わず「やった!」と声が出ました。
グラフがリアルタイムで動くのも楽しい!
7. 動作確認とフォルト体験
デモをオフにしてから、モータの電源(DC24V)を外すと、
MCAT画面にフォルト(障害)の原因が表示され、ホストボードの赤いLEDが点滅します。




電源を再接続し、LEDの点滅が止まったら「M1 Fault Clear」をクリックしてフォルトをクリアしましょう。
注意点
フォルトが出たままだとモータが動かないので、必ずクリアしましょう。
モータの速度を自由にコントロール!
Speed画面で「M1 Application Switch」をONにすると、
アプリケーションの電源が入り、速度を自由に変更できます。
逆回転させたい場合は「-1000」のようにマイナス値を入力すればOK!

遊び方
いろいろな速度を試してみたり、逆回転させてみたりすると、モータ制御の面白さが実感できます!
ボードとの通信がうまくいかない時は?
FreeMASTERでボードと通信できない場合は、
Projectメニュー → Options → Commタブで、正しいCOMポートと通信速度(115200bps)を設定しましょう。
もしCOMポートが分からない場合は「COM_ALL」で試すのもアリです!

8. デバッグ
デバッグ機能を使えば、プログラムの動きを細かく観察できます。
ブレークポイントを設定して、変数の値や処理の流れを確認しましょう。
初心者向けアドバイス
まずは「main関数」や「割り込み処理」など、動きが分かりやすい場所からデバッグしてみるのがおすすめです。
9. 一部SWコードの説明
プロジェクトの詳細
ここからは、実際のプロジェクト構成や主要なソースコードについて、エンジニア向けに解説します。





プロジェクト構造
- freemaster
ランタイムの設定・チューニングを可能にするリアルタイムデバッグモニタ&データ視覚化ツール。UART/USB経由で通信し、MCATプラグインもここに含まれます。
- motor_control
モータ用ステートマシン、ベクトル制御コード、モータ識別ルーチン、低レベルドライバが集約。
- rtcesl
高度な変換やオブザーバまで、モータ制御を含む複雑なリアルタイム制御アプリケーション向けの数学ライブラリ群。
- source
メイン処理、初期化、コンフィグレーションなど。
メイン処理と割り込み
- main.cでは、初期化・割り込み設定・FreeMASTER通信のバックグラウンドタスクを実行します。
- 割り込みハンドラは高速(ADC同期)・低速(タイマ同期)の2種類。
高速ループはベクトル制御アルゴリズム、低速ループは速度制御やLEDステータス管理など。
ポイント
「motor_control」フォルダには、モータ制御のロジックが詰まっています。
気になる関数や変数を見つけたら、コメントやドキュメントも参考にしましょう!
10. まとめ・次回予告
今回は、NXPの開発環境を使ってモータ制御のサンプルを動かすところまでを体験しました。
次回は、サンプルコードの中身をさらに深掘りしたり、パラメータを変更して自分だけのモータ制御にチャレンジしてみましょう!(4月公開予定)
疑問や「ここが分からない!」というポイントがあれば、コメントでぜひ教えてください!
NXPのモーター制御の記事をまとめたサイトはこちら↓
NXPのモーター制御 ~まとめページ~ (日本語ブログ)
=========================
お問い合わせの際には「NXPへの技術質問 - 問い合わせ方法 (日本語ブログ)」もご参照ください。
(既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。)