RS306MDの動作方向をMR-C3024で変更
RS306MDの動作方向の変更をroboBASICのDIR命令で行なうと、サーボの動作パルス幅の違いでモーションの動作が少し左右非対称になることがわかりました。そこで、miconoさんからRS306MDの設定変更の情報とヒントを頂き、予備のMR-C3024のマイコンボードを利用して、RS306MDにソフトで送信するだけでRS306MDの設定が出来ることがわかりました。なお、RS306MDの設定変更する詳細なコマンドは取扱説明書を参照ください。
さらに、miconoさんのブログもご覧になるととても参考になります。
但し、RS306MDのコマンド方式とPWM方式を混在させることはできませんので、あくまでもRS306MDの初期設定だけの専用プログラムをroboBASICで実行させることになります。RS306MDのコマンドの中には返信でデータも入手できるコマンドもありますが、半二重の回路が必要になるので簡単にはできません。そのため、今回は送信のみのプログラムです。
RS306MDの動作方向を切り替えるMR-C3024を使って、roboBASICでプログラムした例です。外部表示はMR-C3024のLCD端子に、設定変更したRS306MDはMR-C3024のRX端子に接続するだけです。なお、ここではサーボは何も動きません。そのため、液晶表示かLEDの点灯でステップを確認するしかありません。間違っても、FlashROMに書き込んでいる最中に電源を落とさないように注意してください。
【2011/4/23修正】
取扱説明書 ver.1.11の修正で、ver.1.12ではフラッシュROM書込みとサーボ再起動をまとめて指示ができなくなっています。そのため、フラッシュROM書込みの送信データを変更しました。
'============ RS306MD Setting program 2011/04/23 ===========
DIM RR AS BYTE
DIM i AS BYTE
main:
OUT 52,0
PRINT 12 'CLS
PRINT "RS306MD Servo"
PRINT 13 'CR
PRINT 10 'LF
PRINT "Direct Revers"
DELAY 1500
'Foward/Revers Select
GOTO flag1
flag0:
PRINT 12 'CLS
PRINT "RS306MD Foward"
PRINT 13 'CR
PRINT 10 'LF
PRINT "Setting Start.."
OUT 52,1
DELAY 500
'Servo Foward command
ETX 115200, &HFA 'Hdr
ETX 115200, &HAF
ETX 115200, &H01 'ID
ETX 115200, &H00 'Flg
ETX 115200, &H05 'Adr
ETX 115200, &H01 'Len
ETX 115200, &H01 'Cnt
ETX 115200, &H00 'Dat
ETX 115200, &H04 'Sum
GOTO main_exit
flag1:
PRINT 12 'CLS
PRINT "RS306MD Reverse"
PRINT 13 'CR
PRINT 10 'LF
PRINT "Setting Start!"
OUT 52,1
DELAY 500
'Servo Reverse command
ETX 115200, &HFA 'Hdr
ETX 115200, &HAF
ETX 115200, &H01 'ID
ETX 115200, &H00 'Flg
ETX 115200, &H05 'Adr
ETX 115200, &H01 'Len
ETX 115200, &H01 'Cnt
ETX 115200, &H01 'Dat
ETX 115200, &H05 'Sum
main_exit:
OUT 52,0
DELAY 1000
PRINT 12 'CLS
PRINT "RS306MD FlashROM"
PRINT 13 'CR
PRINT 10 'LF
PRINT "Writting Start!"
FOR i=0 TO 1
OUT 52,0
DELAY 500
OUT 52,1
DELAY 500
NEXT i
'FlashROM WRITE by ver.1.12
ETX 115200, &HFA 'Hdr
ETX 115200, &HAF
ETX 115200, &H01 'ID
ETX 115200, &H40 'Flg 60 -> 40
ETX 115200, &HFF 'Adr
ETX 115200, &H00 'Len
ETX 115200, &H00 'Cnt
ETX 115200, &HBE 'Sum 9E -> BE
PRINT 12 'CLS
PRINT "RS306MD FlashROM"
PRINT 13 'CR
PRINT 10 'LF
PRINT "Writting Complet"
FOR i=0 TO 2
OUT 52,1
DELAY 500
OUT 52,0
DELAY 500
NEXT i
DELAY 1000
END
'=================================================
見事、動作方向のリバースに成功!
この実行した結果、RZ-1の右半身のRS306MDをリバースにしましたので、モーションプログラムの初期設定でDIRはどちらも0に設定します。ゼロポイントの変更は必要ですが、モーションは90%ぐらい変更しないで問題はおきませんが、重心がかわったので微妙な重心でバランスしていたのは多少修正が必要となりますが、とても修正がやりやすくなります。
DIR G6A,1,0,0,1,0,0
DIR G6B,1,1,0,0,0,0
DIR G6C,0,0,0,0,0,0
DIR G6D,0,1,1,0,1,0
【注意】
本プログラムによる事故や故障の責任は当方では負いかねます。あくまで自己責任で行なってください。
さらに、miconoさんのブログもご覧になるととても参考になります。
但し、RS306MDのコマンド方式とPWM方式を混在させることはできませんので、あくまでもRS306MDの初期設定だけの専用プログラムをroboBASICで実行させることになります。RS306MDのコマンドの中には返信でデータも入手できるコマンドもありますが、半二重の回路が必要になるので簡単にはできません。そのため、今回は送信のみのプログラムです。
RS306MDの動作方向を切り替えるMR-C3024を使って、roboBASICでプログラムした例です。外部表示はMR-C3024のLCD端子に、設定変更したRS306MDはMR-C3024のRX端子に接続するだけです。なお、ここではサーボは何も動きません。そのため、液晶表示かLEDの点灯でステップを確認するしかありません。間違っても、FlashROMに書き込んでいる最中に電源を落とさないように注意してください。
【2011/4/23修正】
取扱説明書 ver.1.11の修正で、ver.1.12ではフラッシュROM書込みとサーボ再起動をまとめて指示ができなくなっています。そのため、フラッシュROM書込みの送信データを変更しました。
'============ RS306MD Setting program 2011/04/23 ===========
DIM RR AS BYTE
DIM i AS BYTE
main:
OUT 52,0
PRINT 12 'CLS
PRINT "RS306MD Servo"
PRINT 13 'CR
PRINT 10 'LF
PRINT "Direct Revers"
DELAY 1500
'Foward/Revers Select
GOTO flag1
flag0:
PRINT 12 'CLS
PRINT "RS306MD Foward"
PRINT 13 'CR
PRINT 10 'LF
PRINT "Setting Start.."
OUT 52,1
DELAY 500
'Servo Foward command
ETX 115200, &HFA 'Hdr
ETX 115200, &HAF
ETX 115200, &H01 'ID
ETX 115200, &H00 'Flg
ETX 115200, &H05 'Adr
ETX 115200, &H01 'Len
ETX 115200, &H01 'Cnt
ETX 115200, &H00 'Dat
ETX 115200, &H04 'Sum
GOTO main_exit
flag1:
PRINT 12 'CLS
PRINT "RS306MD Reverse"
PRINT 13 'CR
PRINT 10 'LF
PRINT "Setting Start!"
OUT 52,1
DELAY 500
'Servo Reverse command
ETX 115200, &HFA 'Hdr
ETX 115200, &HAF
ETX 115200, &H01 'ID
ETX 115200, &H00 'Flg
ETX 115200, &H05 'Adr
ETX 115200, &H01 'Len
ETX 115200, &H01 'Cnt
ETX 115200, &H01 'Dat
ETX 115200, &H05 'Sum
main_exit:
OUT 52,0
DELAY 1000
PRINT 12 'CLS
PRINT "RS306MD FlashROM"
PRINT 13 'CR
PRINT 10 'LF
PRINT "Writting Start!"
FOR i=0 TO 1
OUT 52,0
DELAY 500
OUT 52,1
DELAY 500
NEXT i
'FlashROM WRITE by ver.1.12
ETX 115200, &HFA 'Hdr
ETX 115200, &HAF
ETX 115200, &H01 'ID
ETX 115200, &H40 'Flg 60 -> 40
ETX 115200, &HFF 'Adr
ETX 115200, &H00 'Len
ETX 115200, &H00 'Cnt
ETX 115200, &HBE 'Sum 9E -> BE
PRINT 12 'CLS
PRINT "RS306MD FlashROM"
PRINT 13 'CR
PRINT 10 'LF
PRINT "Writting Complet"
FOR i=0 TO 2
OUT 52,1
DELAY 500
OUT 52,0
DELAY 500
NEXT i
DELAY 1000
END
'=================================================
見事、動作方向のリバースに成功!
この実行した結果、RZ-1の右半身のRS306MDをリバースにしましたので、モーションプログラムの初期設定でDIRはどちらも0に設定します。ゼロポイントの変更は必要ですが、モーションは90%ぐらい変更しないで問題はおきませんが、重心がかわったので微妙な重心でバランスしていたのは多少修正が必要となりますが、とても修正がやりやすくなります。
DIR G6A,1,0,0,1,0,0
DIR G6B,1,1,0,0,0,0
DIR G6C,0,0,0,0,0,0
DIR G6D,0,1,1,0,1,0
【注意】
本プログラムによる事故や故障の責任は当方では負いかねます。あくまで自己責任で行なってください。
- 2011.04.22 Friday
- サーボモータ
- comments(3)
- trackbacks(0)
- by takuo1
コメントありがとうございます。
自分のブログの方にも書きましたが、同時に行うことも可能です。実際に自分も動作することを確認していますし、双葉さんも、メーカー保証無しの動作として、動作することを認めています。