●RCサーボ制御の基本
RCサーボの制御信号線(通常は白)には右図のようなパルスが送られてきます。このパルス幅によってサーボの角度がコントロールされています。一般のRCサーボは1.5msec前後が中立位置となりこのパルス幅を変えることでサーボ角が変化します。パルス周期は通常10msec以上で大きすぎると反応が遅くなります。
●RCサーボ制御の準備
RCサーボを使うためにはサーボ用のコネクタをミュウロボ制御基板(S1-S6)に半田付けしなければなりません。
コネクタは電子部品店などで売られている2.54mmピッチのピンヘッダ(オス)を3Pに折って使います。これにRCサーボを接続しますが必ず黒コード(−側)を外側にします。
※モーターとRCサーボの制御は同じ出力ポートを使っているので同時使用には制限があります。
1、3モーター制御の場合はサーボ制御は不可
2、M1・M2モーターとS1・S2サーボ制御は可能
3、M3モーターとS3・S4・S5・S6サーボは可能
4、6サーボ制御の場合はモーター制御は不可
●RCサーボの制御
パルス幅(30-255) サーボ番号(1-6) サーボ (ドリトル:パルス幅x0.008msec:パルス幅=187が中立位置)
サーボ,パルス幅(30-255),サーボ番号(1-6) (myurobo.exe)
Servo パルス幅(30-255),サーボ番号(1-6) (MYU BASIC)
サーボ命令は、パルス幅・サーボ番号を指定し、電子音・ブザー以外の時間設定可能な命令(前進・後退・左前・右前・左後・右後・停止・左回り・右回り・時間・ポート出力など)を実行している間、サーボ信号を出力します。
※PIC16F688では電子音・ブザー以外の時間設定可能な命令は必要ありません。サーボ命令だけで動作します。
複数のサーボを制御するには、複数のサーボ命令をセットし電子音・ブザー以外の時間設定可能な命令を実行することで可能です。
※RCサーボは3V以下では動作しません。4.5Vでの利用をお勧めします。
※サーボ命令を実行すると20msecごとにタイマー1がクリアされます。
例1、ショベルドーザーロボット
RCサーボを使ってショベルを動かしピンポンをすくい上げ箱の中に入れます。
★動画(272KB)はこちら
//ショベルドーザーロボット (MYU BASICの場合)
Servo 250,1
停止 10
前進 10
停止 10
Servo 220,1
停止 10
後退 10
Servo 150,1
停止 10
前進 10
停止 10
Servo 40,1
停止 10
//ショベルドーザーロボット (ドリトル)
ロボ太=MYU!作る。
ロボ太:転送命令=「!はじめロボット
250 1 サーボ
10 停止
10 前進
10 停止
220 1 サーボ
10 停止
10 後退
150 1 サーボ
10 停止
10 前進
10 停止
40 1 サーボ
10 停止
おわりロボット」。
ロボ太! ”com5"ひらけごま。
ロボ太!転送命令。
ロボ太!とじろごま。
|
//ショベルドーザーロボット (MYU BASIC)
Servo 250,1
停止 10
前進 10
停止 10
Servo 220,1
停止 10
後退 10
Servo 150,1
停止 10
前進 10
停止 10
Servo 40,1
停止,10
|
例2、ボールゲッターロボ
RCサーボを使ってロボットアームを動かし箱の中のピンポンをゲットします。筒の先の輪ゴムがポイント。ピンポンが戻らないよう工夫されてています。
★動画(328KB)はこちら
//ボールゲッターロボ (MYU BASIC)
前進 10
Servo 220,1
停止 30
Servo 150,1
停止 20
後退 10
停止 10
右回り 9
停止 10
後退 6
停止 10
Servo 40,1
停止 10
//ボールゲッターロボ (ドリトル)
ロボ太=MYU!作る。
ロボ太:転送命令=「!はじめロボット
10 前進
220 1 サーボ
30 停止
150 1 サーボ
20 停止
10 後退
10 停止
9 右回り
10 停止
6 後退
10 停止
40 1 サーボ
10 停止
おわりロボット」。
ロボ太! ”com5"ひらけごま。
ロボ太!転送命令。
ロボ太!とじろごま。
|
//ボールゲッターロボ (myurobo.exe)
前進,10
サーボ,220,1
停止,30
サーボ,150,1
停止,20
後退,10
停止,10
右回り,9
停止,10
後退,6
停止,10
サーボ,40,1
停止,10
|
例3、2足歩行ロボット
RCサーボ3個を制御して重心移動を行い足首を回転させて歩きます。前後進はもちろん方向転換もできます。
★動画(888KB)はこちら
//2足歩行ロボット (MYU BASIC)
PwerOnStart
STANDUP
FORWARD
FORWARD
LTURN
LTURN
LTURN
LTURN
FORWARD
FORWARD
RTURN
RTURN
RTURN
Proc STANDUP() //直立
Servo 185,1
Servo 185,2
Servo 185,3
Wait 10
EndProc
Proc FORWARD() //前進
Servo 165,2
Wait 10
Servo 210,1
Servo 210,3
Wait 10
Servo 225,2
Wait 10
Servo 160,1
Servo 160,3
Wait 10
EndProc
Proc LTURN() //左ターン
Servo 165,2
Wait 10
Servo 210,1
Servo 160,3
Wait 10
Servo 225,2
Wait 10
Servo 160,1
Servo 160,3
Wait 10
EndProc
Proc RTURN() //右ターン
Servo 165,2
Wait 10
Servo 210,1
Servo 210,3
Wait 10
Servo 225,2
Wait 10
Servo 210,1
Servo 160,3
Wait 10
EndProc
//2足歩行ロボット (ドリトル)
ロボ太=MYU!作る。
ロボ太:転送命令=「!はじめロボット
パワーオンスタート
10 ブロック実行
20 2 ブロック繰り返し
30 4 ブロック繰り返し
20 2 ブロック繰り返し
40 4 ブロック繰り返し
10 ブロック実行
10 ブロックはじめ //直立
185 1 サーボ
195 2 サーボ
185 3 サーボ
10 時間
ブロックおわり
20 ブロックはじめ //前進
165 2 サーボ
10 時間
210 1 サーボ
210 3 サーボ
10 時間
225 2 サーボ
10 時間
160 1 サーボ
160 3 サーボ
10 時間
ブロックおわり
30 ブロックはじめ //左ターン
165 2 サーボ
10 時間
210 1 サーボ
160 3 サーボ
10 時間
225 2 サーボ
10 時間
160 1 サーボ
160 3 サーボ
10 時間
ブロックおわり
40 ブロックはじめ //右ターン
165 2 サーボ
10 時間
210 1 サーボ
210 3 サーボ
10 時間
225 2 サーボ
10 時間
210 1 サーボ
160 3 サーボ
10 時間
ブロックおわり
おわりロボット」。
ロボ太! ”com1"ひらけごま。
ロボ太!転送命令。
ロボ太!とじろごま。
|
//2足歩行ロボット (myurobo.exe)
パワーオンスタート
ブロック実行,10
ブロック繰り返し,20,2
ブロック繰り返し,30,4
ブロック繰り返し,20,2
ブロック繰り返し,40,4
ブロック実行,10
ブロックはじめ,10 //直立
サーボ,185,1
サーボ,185,2
サーボ,185,3
時間,10
ブロックおわり
ブロックはじめ,20 //前進
サーボ,165,2
時間,10
サーボ,210,1
サーボ,210,3
時間,10
サーボ,225,2
時間,10
サーボ,160,1
サーボ,160,3
時間,10
ブロックおわり
ブロックはじめ,30 //左ターン
サーボ,165,2
時間,10
サーボ,210,1
サーボ,160,3
時間,10
サーボ,225,2
時間,10
サーボ,160,1
サーボ,160,3
時間,10
ブロックおわり
ブロックはじめ,40 //右ターン
サーボ,165,2
時間,10
サーボ,210,1
サーボ,210,3
時間,10
サーボ,225,2
時間,10
サーボ,210,1
サーボ,160,3
時間,10
ブロックおわり
|
|