明日は我が身の備忘録(あすびぼ)

自分向け備忘録です。頻繁に更新は難しいでしょうね

ArduinoUNO で Futaba RS304MDのIDを変更して動かす。

f:id:kirikoshokunin:20210411214817j:plain
 前回フタバサーボのRS304MDを動かしたが、これはIDが初期設定で1となっていることが前提だった。しかし、ID1しか動かせないのではコマンドサーボを使う必要がない。なので、今回はID設定を変更して動かしてみる。

 まず、RS304MDの設定ツールというものは双葉電子工業のHPにサンプルプログラムの形で公開されている。ダウンロードして解凍すると、中にソースコードと実行形式のファイルがあるのでそれを使えばサーボモータの各種設定ができる。接続するツールはRS485-USB変換器(RSC-U485)のソフトだが、RS304MDを接続する際は信号線のプラス側だけを接続することで通信を行う。

   しかし、私がRSC-U485を持っていないので今回はArduinoからIDを変更してROM保存を行うプログラムを書いてみる。


目次

IDを変更する通信

 まずフタバのコマンドサーボでIDを変更するには3段階の処理が必要。まず、IDを変更するコマンドを送信する。このコマンドを送ったら即座にIDが変更されるがRAMに保存されているだけなので、電源をOFFしたらIDは元に戻ってしまう。そのため、RAMに書き込んだら次にROMに書き込む処理が必要。ROMに書込みが終了したら最後に、サーボモータを再起動するコマンドを送信する。この工程を踏むことで正常にIDを変更することができる。

 ID設定を255にするとすべてのサーボに対して指令を与えるので、IDを変更したいサーボに設定されているIDがわからないときは指令IDを255にするとIDを変更できる。

RAMのIDを変更する

 IDを変更するコマンドは下の通り。SumはIDからDataまでのすべてをXORで計算した結果。

パケット構成
Header FA AF h
ID 変更したいサーボの現在のID
Flag 0x00
Address 0x04
Length 0x01
Count 0x01
Data 変更したいサーボの変更後のID
Sum 送信データの確認用のチェックサム

RAMの変数をROMに書込む

 RAMの変数をROMに書込むコマンドは下の通り。SumはIDからDataまでのすべてをXORで計算した結果。

一括してROMに書き込むのでID以外の変数を変更していた場合のその変数も保存されてしまうので要注意。 また、ROM保存中に電源がきれるとROMの値が消えてしまい最悪動かなくなる可能性があるらしいのでこの点も注意したほうが良い。

パケット構成
Header FA AF h
ID ROM保存したいサーボのID
Flag 0x40
Address 0xFF
Length 0x00
Count 0x00
Sum 送信データの確認用のチェックサム

サーボモータを再起動する

 サーボモータを再起動するコマンドは下の通り。SumはIDからDataまでのすべてをXORで計算した結果。

パケット構成
Header FA AF h
ID ROM保存したいサーボのID
Flag 0x20
Address 0xFF
Length 0x00
Count 0x00
Sum 送信データの確認用のチェックサム

IDを変更した動作

 IDを変更するスケッチを書きこんだArduinoUNOでRS304MDを動作させた様子を下に示す。

リセットする前はID1で設定されているが、リセットボタンを押すとsetup関数でIDを変更するので動作角度が大きくなっていることからIDが正常に変更されたことがわかる。

youtu.be

ArduinoUNOのスケッチ

 今回作成したArduinoスケッチを下に示す。これ以上長くなったらGithubで公開したほうが良さそう。

動作の確認はしていますが、試す場合は自己責任でお願いします。