ホストからのコマンドでパルスモーターを制御するインテリジェントなパルスモーターコントローラです。マイコンチップには、最近流行の PIC16F84を使用してみました。
実は、PICを使うのはこれが初めてだったりします。今回の実験は、PICがどれほど使えるものか試してみるという目的もありました。で、使ってみた感触としては、「かなりいける !」というのが率直なところ。ファンが多い理由もなんとなく分かりますね。
まずパルスモーターというのは、位置決め制御に使ってなんぼというモノですので、位置決め制御に必要と思われる機能を盛り込むことにしました。今回はインテリジェントということで、ホストからの移動コマンドに応じて自立的にモーターを駆動するものとします。パルスモーターの制御で重要なのは、起動・停止時にスピードを緩やかに変化させて脱調を防ぐことですが、当然これも制御に加えることになり、今回の目玉的機能となりました。また、制御に必要な各パラメータ (最高速度・加速度・励磁方式など) もコマンドで変更できるようにしました。
ホスト I/F | RS-232C (N81,38400bps) |
コマンド | 絶対移動 (Gn) 相対移動 (+n,-n) 原点復帰 (Rn) 位置設定 (Pn) 最高速度設定 (Vn) 加速度設定 (An) 励磁方式設定 (Mn) 内部パラメータ読み出し (?) ステップ送り/戻し (<,>) 励磁ON/OFF (Dn) |
励磁方式 | 2相、1相、1-2相、CW/CCWパルス |
ステップレート | 166pps〜1266pps(max) |
その他 | リミットSW入力、原点SW入力など |
コマンドはホストコントローラーと RS232Cで接続して送ります。手軽に通信ソフトで制御できるように無手順としました。次にそれぞれのコマンドの詳細を示します。
ロケーション<n>へ移動します。内部演算の関係上、指定可能な値は 0〜32767です。
現在位置から +/- <n>ステップ移動します。指定可能な値は 0〜65536です。
原点へ復帰して値をロケーションカウンタに設定します。移動速度は 200pps一定速度で、ORG入力を検出するまで逆送りして、その後 ORG入力がなくなるまで順送りして終了します。通常は値を省略(0)します。
値をロケーションカウンタに設定します。値を省略すると 0を設定したのと同じです。
移動速度を設定します。値の範囲は 0〜31で、166pps〜1266ppsまで 33pps単位で対応します。
起動・停止時の加速度を設定します。値の範囲は 0〜15で、値が大きいほど加減速が緩やかになります。
パルスモーターの励磁モードを設定します。値は 0〜3で、詳細は後述。
モーターの励磁出力を ON/OFFします。0で OFF(初期値)、1で ONです。OFFの状態でも移動コマンドを受ければ ONします。励磁モード3ではこのコマンドを与えると無効パルスを出力します。
このコマンドは 1文字受信した瞬間に実行します (CRは不要)。"<" で 1ステップ逆送り、">" で 1ステップ順送りです。
P値、V値、A値、M値を読み出します。
V値、A値、M値を EEPROMに保存します。次の起動時のデフォルト値となります。
移動系コマンドで移動中にブレーク信号 (20ms以上) を送ると即時停止します。
各コマンドの処理が終了するとリザルトコードを返します。値と意味の対応は次の通り。
0 | 正常終了 |
1 | 無効コマンド |
2 | リミット検出による非常停止 |
4 | ブレーク信号による強制停止 |
→ 進み方向 0 1 2 3 4 5 6 7 A1 H L L H H L L H モード 0 : 2相励磁 A2 L H H L L H H L 常に両方の相が励磁されている、 B1 H H L L H H L L もっとも一般的な励磁方式です。トルク・消費電力共に最大。 B2 L L H H L L H H 0 1 2 3 4 5 6 7 A1 H L L L H L L L モード 1 : 1相励磁 A2 L L H L L L H L 片方の相だけ励磁される方式です。 B1 L H L L L H L L B2 L L L H L L L H 0 1 2 3 4 5 6 7 A1 H L L L L L H H モード 2 : 1-2相励磁 A2 L L H H H L L L 2相励磁のタイミングに中間の状態を追加した励磁方式。 B1 H H H L L L L L ステップ角度が半分(つまり精度は倍) になります。 B2 L L L L H H H L A1 正転パルス モード 3 : パルス出力 A2 逆転パルス CW/CCW入力のモータードライバを接続する場合に使いま B1 L す。パルス幅は 30μsec程度。 B2 L