チュートリアル

チュートリアル用コード

これから各環境に合わせたチュートリアルのファイルを準備予定ですが、今のところはMax用のファイルのみあります。

STEP400_proto_r4.maxpat

これは以下のファイルと同一のものです。

https://github.com/kanta/STEP400_prototype/blob/master/rev4/STEP400_proto_r4.maxpat

接続

まずPCと基板をLANケーブルで接続します。PCにEthernet端子がない場合は USB-Ethernet変換などが必要です。自動でIPアドレスを割り振るDHCPサーバ機能がついたルータなどを経由すると問題が起きる可能性がありますので、まずはPCとSTEP400を一対一で接続するとわかりやすいです。
基板とモータ、電源の接続についてはこちらを参照してください。

ネットワークの設定

基板側

基板上のDIPスイッチは1に設定してください。すなわち1の桁のみON, ほかの桁はすべてOFFの状態です。この状態で、基板はネットワーク設定は以下になります。

項目 設定値
IPアドレス 10.0.0.101
返信先アドレス 10.0.0.10
OSC受信ポート 50000
OSC送信ポート 50101

PC側

STEP400を接続しているEthernetポートに手動でIPを設定します。IPv4を以下のように設定してください。

項目 設定値
IPアドレス 10.0.0.10
サブネットマスク 255.255.255.0

固定IPの設定の仕方はOSによって異なります。

ここまでうまく設定できていれば、Terminal (Windowsの場合はコマンドプロンプト)などからping 10.0.0.101などのコマンドで接続が確認できると思います。

通信の確認

ここから先は制御に使用する環境によって実際の操作は異なりますが、実際に送受信する Open Sound Control のメッセージのみ記載していきます。

まず、STEP400にメッセージの返信先アドレスを教えるコマンドである /setDestIp を送ります。送る際の送信先アドレスは10.0.0.101, 送信ポートは50000です。このコマンドが届くまでは、STEP400側からはOSCメッセージの送信を行いません。存在しないあて先にOSCメッセージを送り続けるとSTEP400の動作が不安定になることがあるためです。

/setDestIpが問題なく受信されると、以下のような応答があるはずです。受信ポートは50101です。

/destIp (int)destIp[0] (int)destIp[1] (int)destIp[2] (int)destIp[3] (bool)isNewDestIp
  • destIp[0-3] : destIpの各桁
  • isNewDestIp : destIpが変更されたかどうかを示します。変更されていると1, すでに同じアドレスが設定されていた場合は0です。

これでメッセージをやり取りする準備が整いました。

動かしてみる

早速モータを動かすコマンドを送ってみましょう。/run (int)motorID (float)speedというコマンドでモータが指定速度で回ります。

motorIDとは、どのモータを動かすかをSTEP400の基板に印刷されている番号で指定します。255をIDに指定すると、すべてのモータへコマンドを送ることができます。これはIDを指定するほとんどのコマンドで使用できます。

speedはモータの回転速さと向きを指定します。指定できる範囲は -15625.0 - 15625.0 で、単位は [step/s] です。もし1周が200stepのモータを使っているとすると、1秒で1回転させるには200.0を指定します。マイナスの値を指定すると逆向きに回ります。

例えば、コネクタ1番に接続したモータを1秒で1回転させるには、次のようなOSCメッセージになります。

/run 1 200.

無事回ったでしょうか?何かモータの様子が変でとりあえず停止させたい場合は、speedに0.0を指定するか、すべてのモータを停止する

/hardHiZ 255

というメッセージを送ってください。

おそらく多くの場合ではきれいに回らなかったと思います。モータに合わせたパラメータの調整が必要ですので、引き続き設定していきます。

KVALの設定

きれいに回らない原因の多くは駆動電圧が不足していることによるもの(高すぎてきれいに回らないこともあります)で、KVALレジスタで調整します。これはモータを駆動する電圧を0から255の数値で指定するもので、0にすると0V(回りません)、255にすると電源電圧のほぼそのままがモータ駆動電圧になります。
例えば24Vの電源を使っていて、KVALに128を指定した場合は、モータは約12Vで駆動されることになります。

KVALは以下のように4種類に分かれています。

名称 内容  STEP400の初期値
KVAL_HOLD モータ停止中のKVAL 0
KVAL_RUN モータが一定速で回転中のKVAL 16
KVAL_ACC モータが加速中のKVAL 16
KVAL_DEC モータが減速中のKVAL 16

モータを一定速で回転させながら、KVAL_RUNを調整してみましょう。

/hardHiZ 255

を送ってモータを回転させます。

/setRunKvalというコマンドで KVAL_RUN だけ設定することもできますが、ここでは4つまとめて設定できる次のメッセージを使用してみます。

/setKval (int)motorID (int)holdKVAL (int)runKVAL (int)accKVAL (int)setDecKVAL

motorIDは/runと同様に1-4, 255で指定し、KVALはいずれも0-255で指定します。ここでは停止中のKVALは0, 加速、減速については一定速のKVALと同じ値に設定しながら、徐々に数値を増やしてみます。

/setKval 1 0 24 24 24

このOSCメッセージを送ると、1番目のモータのKVALを、停止時は0, それ以外は24(電源電圧の約9%)に設定します。ここから徐々に数値を

/setKval 1 0 32 32 32

のように上げていくと、どこかで静かに回り始めます。KVALを上げるとトルクが上がっていきますが、モータの発熱が大きくなったり、振動が再び大きくなってきたりしますので、負荷に合わせて調整してください。