ステッピングモーターをUSBから制御

PICで楽しむ USB機器自作のすすめ  後閑 哲也 (著) を参考にして制作しました。この本が無ければ制作出来ませんでした。感謝です。

VB2008のコントロールパネルです。右側部分のデジタルI/Oとアナログ計測はそのまんまです。(^^);
USBに付いては後閑さんの本を参考にして下さい。

最初はUSBのドライバーをインストールします。その後COMポートを設定してUSB接続ボタンでパソコンと通信可能になり制御が出来る様に成ります。速度ボタンの右側のテキストボックスに設定値を入れ速度ボタンをクリックして基板に送信します。[X+]、[X-]、[Y+]、[Y-]、[Z+]、[Z-]、]、[A+]、[A-]ボタンはすべて同じ動作です。[コード]ボタンは右のテキストボックスの内容を、[コード解析]ボタンで右側のテキストボックスにX,Y,Z,A
のコードごとに振り分けて入れます。その内容をコードボタンで送信します。(デバッグ、確認のため)パネルの色合いがいまいちです。

VB2008のコマンド解析ソフトの最初の部分です。

コマンド解析ソフトのX軸部分です。少し苦労したので忘れない為に解説 参考になれば少しでも苦労が報われます。
l = Text.Box3.Text.Length        文字列の長さを取得
sp = TextBox3.Text.IndexOf("X",0) 文字列の中から”X"文字の位置を取得
If sp <> -1 Then             ”X"文字が見つかった位置で-1は無い時に返す値 あれば位置を返すので確認してから次の処理に入る
ch = Mid(TextBox3.Text, sp+2, 1)   "-"符号のチェック
If ch = "-" Then            マイナス符号の有る時の処理
Text.Box12.Text = "X-"        取り出し後のX軸のテキストボックスに文字部分を先に入れておく
For i = sp + 3 To l            文字列の"X-"部分をスキップした位置から文字列の最後まで数字を探して行く
ch = Mid(Text.Box3.Text, i, 1)    1文字取り出し
If IsNumeric(ch) = True Then    取出した文字が数字かチェック
TextBox12.Text = TextBox12.Text + ch 数字なら1文字(数字)を最後に追加
Else
    Exit For               文字の場合はforループから抜け出る
End If
Next 繰り返し
”X"の時はループの開始位置が1文字手前から始める。同じ処理です。

  

コードの送信部分です。長い可変長の文字列を構文解析して各軸ごとに続けて送信します。

説明が前後しますが下記のソフト部分がボタンをクリックした時に個別のテキストを送信する部分です。JOG操作

基板側のPIC18F4550のソフトです。USBに関する所は本のサンプルプログラムを流用しています。


ステッピングモーターの励磁パターンはタイマ0の割り込みの都度処理します。
T0countに割り込みの周期を決める値が入っています。速度ボタンで設定した数値です。

受信した文字列から符号を取出し、残りの数字文字列をatoiで数値にしてます。それぞれの軸のカウンタに入れます。説明の画像が行方不明?

ここから動作確認中の画像です。
秋月電子で購入した小さなモーター3個と4個のLEDの出力のテストです。電源電圧は12Vです。


大きなステッピングモーターを回して見ました。X,Y,Z,Aで4軸です。モーターの動作は通常の位置決め動作で同時に回転を始め、全部モーターは同じ速度で回転します。移動ステップ数の少ない順に停止します。電源電圧は24Vです。


基板のアップ画像です。回路図やパターン図は別のコンテンツに有ります。
基板左側に1KΩの抵抗を通して8個の10bitA/Dコンバータの入力が有ります。

 

動作中のパソコンの操作画面です。

 ここまでです。