STEPシリーズのServoModeコントローラをTouchDesignerで作る
2022年08月16日:ファイルをアップデートしました
キネティックインスタレーションやステッピングモータを使ったプロトタイピングにとても便利なPonoor Experiments社のSTEP400およびSTEP800のServoModeコントローラを作りました。
ダウンロードはこちら。
以下は概要と説明です。
STEPシリーズとは
STEPシリーズはステッピングモータをOSCで簡単に制御できる制御基板です。STEP400は4台のステッピングモータを、STEP800は8台のステッピングモータを同時に制御できます。
他にDIYできるSTEP100および200というのもあるようです。
何故ステッピングモータなのか
世の中の常設、あるいは長期展示のキネティックインスタレーションは大体ステッピングモーターで実装されています。
何故なら通常のDCモータは細かい制御ができず、サーボモータは故障率の高さから長期展示に向かないからです。消去法的にステッピングモーター一択になります。
何故STEPシリーズが良いのか
このあたりはPonoor Experiments社のホームページを見ると書いてくれていますが、通常、産業用途の場合ステッピングモーターの制御にはPLCというコントロールデバイスが利用されます。
このPLCですが相場的には1台のモーターを制御するタイプで60,000円~と結構お高い上、開発環境もラダーと言われるもので、プログラミングと電子工作ちょこっと触ったレベルのヒトが触るのにとっつきやすいものではありません。
その点STEPシリーズはお値段もお安く(8台制御できるSTEP800で40,000円程度)、通信プロトコルも直接OSCで制御できるなど色々やりやすく作られています。
また、値段が安く使いやすいだけでなく、開発元のPonoor Experiments社自体が様々な常設コンテンツへSTEPシリーズを納品しており、品質的にも信頼できるところが大きいです。
今もファームなどには継続的なアップデートが施されています。
STEPシリーズのモータ制御方法
STEPシリーズのモータ制御方法は大きく3つあります。
1つ目がrunというAPIに代表される、速度を指定して延々と回転させる方法。次にgoToというAPIに代表される、目標のポジションまで移動させる方法(位置決め回転と言います)。プロペラみたいに何処を向いてるかは関係なく速度を変えながら延々回すことが目的ならrunが良いですが、特定の方向を向いたり、止めたりする演出だとgoToを使ったほうが良いでしょう。
しかしgoToは途中で向かう先や速度の更新をすることができず、一度ストップをかける必要があります。
また、ステッピングモーターは急加速などで負荷がかかりすぎると脱調(ギアがすっぽ抜けて座標位置が判らなくなる)という厄介な現象が起きます。
そのためPID制御というフィードバック制御を行うのが一般的です。
そこで出てくるのがSTEPシリーズオリジナルのでサーボモードという制御方法です。
サーボモードであれば連続して目標位置を送ってもデバイス側で対応してくれます。
ということでサーボモードで制御すれば大体のことはできます。
事前に準備するもの
一応STEP400でも動くように作っていますが7月25日現在STEP400での動作を確認していません。私は以下の機材で検証しました。Amazonとスイッチサイエンスで40,000円弱で揃えられます。
STEP800。
12Vの電源。
NEMA17のステッピングモーター(これは違うコネクタがついているのでカットと配線の被覆を剥く必要があり、もっと違うモータが楽かもしれません)。
TouchDesigner製サーボコントローラの使い方
ということでサーボコントローラの使い方です。
TouchDesignerで製作していますがGUIを付けているのでそのままPerformModeに切り替えてください。
PerformModeにするとこんな画面が出てくるかと思います。
起動したらまずは利用するSTEPシリーズのタイプを指定します。
次にIPアドレスとポート番号、ローカルアドレスを指定します。
設定を書き換えたりSDカードを差し込んだり、あるいはDIPスイッチを操作してなければ以下の設定になっていてアプリケーションの初期値と合致しているはずです。
返送先アドレスがアプリのLocal Addressであり、アプリを立ち上げているPCのIPアドレスである必要があります。適宜PCのネットワーク設定なども合わせてください。DIPスイッチを操作した場合はOSCの送信ポートとIPアドレスを変更してください(受信ポートはDIPスイッチの影響を受けないので注意してください)。
設定ができたらConnectionボタンを押してください。
設定が合っていればSTEPシリーズとアプリケーションが接続されます。
手っ取り早く試す
とりあえず手っ取り早く試したい人は行き成りEnable Servo Modeを押してください。
これでSTEPシリーズはサーボモードになるので、あとは各種モーターのターゲットポジションを変更するとその度ステッピングモーターが動くようになります。
ちゃんと試す
現在のモーターの位置などを確認しながら動かしたい場合、まずはRequest Responseボタンを押して、STEPシリーズにレスポンスを送るように指令を出します。
するとResponse欄にSTEPシリーズがレスポンスを返す予定のIPアドレスが返ってきます。これで応答が返ってくるようになります。
次にGet Positionsボタンを押すと現在のモータのポジションが返ってくるはずです。
都度押せばこのようにポジションは得られるのですが、面倒な場合はNotifyRateを設定してNotifyPositionsをOnにすれば定期的にGet Positionsを読んでくれます。
あとは同様にEnable Servo Modeを押してMotorのTarget Positionを変更するだけです(こちらの丁寧な手順だとSTEPシリーズにステッピングモータをつけてなくてもポジションの移動が判るので便利です)。
もしもPID制御のパラメータを変更したい場合はkP、Ki、kDの値を変更したのちにSet Servo Paramボタンを押してください。
また、ステッピングモータが何かに当たりそうになったらSoft Stopボタンを押してください。全モータが停止するはずです。この際、サーボモードが解除されてしまうので再び動かしたい場合はもう一度Enable Servo Modeボタンを押してください。