■ホビーロボット部品の製造・販売 
  モータコントローラ、センサ、音声、画像、無線モジュールなど、
■ホビーロボット制作記事のページ (各種マイコン、PCとの接続事例)
■特殊メイク、特殊材料の販売 ※特殊メイクのコーナーはこちらに移りました。
Top(お知らせ) 製品紹介 使い方とサンプルプログラム通信販売 リンク ロボット掲示板 会社案内
 Easy Robotics for all enthusiastic people!!!  ---HOBBY ROBOT PARTS SHOP ASAKUSAGIKEN---   Since 2003...

シリアルサーボコントローラ AGB65-SSC/P の紹介




<概要>

■ピルクス系のシリアルサーボのコントロールボード

 AGB65−SSC/Pは、ピルクス系のシリアルサーボをコントロールするボードです。2009年11月現在では、小型サーボPRS-DE07MS、PRS-S40M(通称「苺」)、浅草ギ研で発売予定の超小型シリアルサーボに対応しています。浅草ギ研のヒューマノイドロボットキットRemoHKPでも使われています。

■シリアル通信により、一回の通信で複数のサーボの位置とスピードを制御
 シリアルサーボのコントロールは、時分割に複数のサーボに対して高速にコマンドを送る必要があります。このボードでは一度の通信パケットで複数サーボの位置と速度をコントロールしますので、上位側のCPUの負担が軽くなります。

■サーボ一斉ON、サーボ一斉OFFコマンド
 4バイトのコマンドを送るだけで、全てのサーボを一斉にON、一斉にOFFができます。

■サーボ位置の一斉取得コマンド
 全てのサーボの位置を一度の命令で一括で取得できます。

■各種設定コマンド
 サーボのゲイン調整、デッドバンド調整ができます。また、温度測定が可能なサーボはサーボ内温度の取得も可能です。

■PCからの制御に最適
 シリアルサーボの通信方式はマルチドロップになっているので、PCから直接シリアルサーボを駆動することはできません。
 また、シリアルサーボを駆動するには常に通信をやりとりする必要があり、PCのOS、たとえばWindowsでは、対応できません。
 AGB65-SSC/Pは一般的なシリアル通信が行えますのでPCとも接続でき、細かい作業を肩代わりするのでPCからの制御を行うことが可能となります。尚、PCと有線接続するには別売のAGB65−232Cが必要です。PCと無線で接続する場合は浅草ギ研のBluetooth無線を使います。

■非力なマイコンでもシリアルサーボを駆動可能
 シリアル通信ができるマイコン、たとえば小さいPICなどでも複数のシリアルサーボの駆動が可能になります。マルチドロップに対応していなくても一般的なTTLレベルのシリアル通信が行えれば駆動することができます。

■9600〜460Kbpsの通信速度
 AGB65-SSC/Pとの通信速度は9600、115200、460800の3種類が選べます。SSCとサーボ間は460800bps(固定)で通信します。浅草ギ研で販売しているピルクス系シリアルサーボは460800bpsに設定されています。

■無線での遠隔操作も可能
 浅草ギ研のBluetooth無線(通信速度460Kbps対応)と連携できますので、サーボ駆動システムを簡単に無線化できます。

■他のAGR65シリーズに接続可能
 他のAGB65シリーズのセンサやコントローラと同じシリアルラインを共有できます。AGB65シリーズについては「ロボット神経システムAGB65シリーズの説明」のページを参照願います。

■2台を同じシリアルラインで駆動可能
 ID設定により2つのAGB65-SSC/Pを1つのシリアルラインで駆動できます。

■電源搭載で外部に電源回路不要!バッテリ駆動が可能!
ボード上に電源回路を内蔵し、外部に電源回路が不要で、バッテリなどで駆動することができます。


■37x39mmの超小型設計!
ロボットなどに基板を搭載する場合はその大きさがネックになりますが、本製品は極力小さい部品で構成されており、実装面積が小さくて済みます。また、基板には取り付け穴があります。(穴系2.2mm、M2ネジ用)



<仕様>

基板用電源
 +5.3〜+20V (*1)  コネクタ:日圧 B2PVH 又は B2B-EH  (B2PVHケーブル付属)
基板消費電流
 80mA
動作電圧
 5V
サーボコネクタ数
 5箇所
最大サーボ駆動数
 48サーボ(*2)
通信設定
 8ビット、ノンパリ、ストップ1ビット フロー制御なし 非同期通信
通信規格
 TTLレベルEIA232C準拠 (*3)
通信速度
 9600bps/115200bps/460800bps (ハンダジャンパで切り替え。デフォルト460800bps)
固有ID
 129〜130 (IDについては下記取扱い説明に詳しく書いてあります。)
寸法/重量
 寸法37x39mm 重量:8g
付属品
 ■RSCケーブルx1 (基板とバッテリをつなぐケーブル。要加工。)
 ■電源延長ケーブルx1 (二台目のAGB65と電源を共有するケーブル)
 ■通信ケーブルx1 (二台目のAB65と通信ラインを共有するケーブル)
(*1)高い電圧になるほど効率が落ち、発熱量が増えます。やけどに注意してください。
(*2)起動時は24サーボ駆動モードになっています。サーボの種類にもよりますが、沢山のサーボを1つのコネクタにつなげるとサーボへの電源供給が行われなくなりますので、サーボ電源ラインを別に引くなどの対応が必要です。
(*3)5V系のマイコンと直結できます。PCと接続する場合は別売のAGB65-232Cが必用になります。


<ピン配列>

     




<ID設定、bps設定について>

 ID設定、bps設定はJ1〜J3のジャンパをハンダジャンパして設定します。設定値については上の図を参照ねがいます。

 このハンダジャンパですが、J1とかJ2とか書いてある方のパッド(上側)がGNDになっており、基板上のベタグランドにつながっているため、ハンダの熱が逃げてしまいハンダが上手くのらない場合があります。ハンダジャンパをする時は、通常よりも長めにハンダごてを当ててください。一見ジャンパされているように見えても実は接続されてないということがあります。



<価格>
 税込み 5,040円 (本体価格4,800円)


<オプション>
 AGB65−232C 4,725円 (本体価格4,500円)
 (PCと接続する場合に必用です。下記接続例を参照。)

 Bluetooth無線機(本製品と接続するには下記2つが必要です。)
 BlueMaster  12,600円(本体価格12,000円)

 AGB65−BT 2,520円(本体価格2,400円)



<接続例>

<システム構成例>

  



<PCとの接続(無線)>
 PCと無線で接続する場合は、オプションのBluetooth無線及びAGB65−BTを使って簡単に無線化することができます。PC側のBluetooth無線機は、安価なUSBタイプのBluetoothなどが使えます。

 



<PCとの接続(有線)>
 PCと接続する場合は、AGB65-232Cに表示されている通りにケーブルを接続します。AGB65-232CにはPCのCOMポートへ接続するためのD-sub9ピンコネクタケーブルが付属していますので、これをPCへ接続します。この結果、上記マイコンとの接続の場合と同様に、PC(マスタ)のTXがコントローラのRXへ、PCのRXがコントローラのTXへ接続されます。

 
 ※PCの通信設定は「フロー制御無し、スターとビット1、ノンパリティ」に設定します。フロー制御無しの場合はPCはRTS/CTS信号を無視しますが、念のため、PCケーブル内部でRTS/CTSラインをループしており、これによりまちがってフロー制御=RTS/CTSになった場合、もしくは通信ソフト側でどうしてもRTSコントロールを行ってしまう場合でも、強制的に通信可能状態になります。
 ※AGB65-SSC/Pは460Kbpsの通信速度にも対応していますが、PCのCOMポートは460Kも出ないものが多いので注意してください。460Kbps対応の市販のUSBシリアルアダプタを使うか、浅草ギ研のBluetooth無線を使うと460Kbpsで通信できます。



<マイコンとの接続詳細>

 




<電源ケーブルの接続>

 AGB65電源ケーブルは、なれないと差し込みづらいので、下の図を参照に、慎重に差し込んでください。まっすぐに挿入すると簡単に入ります。簡単に入らない場合は無理をして端子を曲げないように注意して下さい。尚、逆に挿そうとすると入りません。
 電源ケーブルの逆側には、9V乾電池用のスナップが付いております。これは簡易的なものなので、何回も乾電池を抜き差しするとスナップ部がゆるみますのでご注意下さい。9V乾電池以外の電源を使用する方は、ケーブルを切断してそれぞれの電源に合ったコネクタを取り付けて下さい。電源ケーブルを切断する際は、電源がつながっていないことを十分注意した上で行ってください。通電したまま電源線をカットすると乾電池などが破裂する可能性がありますので注意して下さい。

  




<シリアルデータ通信による操作>

<データ形式>


 マスタからAGB65−SSC/Pへの指示は、バイトサイズの数値データで送られます。バイトサイズ(8ビット)なので、表される数値は0〜255の256種類になります。

 尚、以下特に記述がない場合は、数値は10進数で表しています。

 −基本形−

 データの基本形は次の通りになります。[ ]内は1バイトを表します。()内は送りえる数値の範囲を表します。

 [シンクロバイト(255)] [ID(129-130)] [送信バイト長(1-101)] [命令1] [命令2] [命令3] ...
シンクロバイト SSC/Pにデータの通信開始を知らせるデータで、常に「255」で始まります。
ID SSC/Pに設定された固有のID。(*)
送信バイト長 送信される命令の(バイト)数。シンクロバイト、ID、送信バイト数は数えません。
命令 SSC/Pに動作させたい命令。以下で詳しく説明します。
(*)ハンダジャンパで129又は130の2パターンに設定できます。
注)データはキャラクタデータではなく、数値(バイナリ)データで送ります。
例えばマイコンをマスタとし、C言語でプログラムを作る場合に255を送信しようとして(PCや他の言語も考え方は同じ)、

printf("255");

とするのは間違いです。これですとキャラクタデータですので実際には2と5と5を表す3バイトのキャラクタデータが送られてしまいます。数値データに直すと[32][35][35]が送信され(ASCIIコード参照)、[255]ではないことになります。

unsigned char SINC = 255;
printf("%d",SINC);

で、[255]が1バイトだけ送られます。
※お使いのCコンパイラによっては構文がことなるかもしれません(printf関数がないとか、バイトサイズ変数の宣言はcharではなくintやbyteだとか)のでご注意下さい。

−命令一覧−
ID:AGB65-SSC/PのID。129か130かをハンダジャンパで設定
LEN:送信バイト長
CMD:命令番号
PosH:サーボ位置情報上位8ビット
PosL:サーボ位置情報下位8ビット
sID:サーボID
dataH:データ値の上位バイト
dataL:データ値の下位バイト

※とくに表示が無い場合は、数値は10進数で表しています。

※方向はマスタ側から見たデータの通信方向を表します。「送信」はマスタ−>コントローラへ送る命令、「受信」はコントローラ−>マスタへ返される結果を表します。

命令値 動作 方向 フォーマット
全サーボON 送信 [255][ID(129-130)][LEN(1)][CMD(0)]
100 全サーボOFF 送信 [255][ID(129-130)][LEN(1)][CMD(100)]
13 サーボ数設定 送信 [255][ID(129-130)][LEN(2)][CMD(13)][サーボ数(1-48)]
15 全サーボ位置指定 送信 [255][ID(129-130)][LEN(サーボ数x2+2)][CMD(15)][Speed][PosH1][PosL1]..[PosHn][PosLn]
14 全サーボ位置読み取り 送信 [255][ID(129-130)][LEN(1)][CMD(14)]
返信 [255][ID(129-130)][LEN(サーボ数x2+1)][CMD(14)][PosH1][PosL1]..[PosHn][PosLn]
サーボON 送信 [255][ID(129-130)][LEN(2)][CMD(1)][sID]
サーボOFF 送信 [255][ID(129-130)][LEN(2)][CMD(2)][sID]
サーボROMセーブ 送信 [255][ID(129-130)][LEN(2)][CMD(3)][sID]
ID 変更 送信 [255][ID(129-130)][LEN(2)][CMD(4)][sID]
リバースチェンジ 送信 [255][ID(129-130)][LEN(2)][CMD(6)][sID]
デジタルサーボモード 送信 [255][ID(129-130)][LEN(2)][CMD(7)][sID]
プロテクトオフ 送信 [255][ID(129-130)][LEN(2)][CMD(8)][sID]
プロテクトオン 送信 [255][ID(129-130)][LEN(2)][CMD(9)][sID]
16 サーボ位置指示 送信 [255][ID(129-130)][LEN(4)][CMD(16)][sID][PosH][PosL]
17 サーボ位置取得 送信 [255][ID(129-130)][LEN(2)][CMD(17)][sID]
返信 [255][ID(129-130)][LEN(4)][CMD(17)][sID][PosH][PosL]
18 InitialPosition設定 送信 [255][ID(129-130)][LEN(4)][CMD(18)][sID][dataH][dataL]
19 InitialPosition読み込み 送信 [255][ID(129-130)][LEN(2)][CMD(19)][sID]
返信 [255][ID(129-130)][LEN(4)][CMD(19)][sID][dataH][dataL]
20 OffSet設定 送信 [255][ID(129-130)][LEN(4)][CMD(20)][sID][dataH][dataL]
21 OffSet読み込み 送信 [255][ID(129-130)][LEN(2)][CMD(21)][sID]
返信 [255][ID(129-130)][LEN(4)][CMD(21)][sID][dataH][dataL]
23 サーボ温度取得 送信 [255][ID(129-130)][LEN(2)][CMD(23)][sID]
返信 [255][ID(129-130)][LEN(4)][CMD(23)][sID][dataH][dataL]
25 Dead band設定 送信 [255][ID(129-130)][LEN(4)][CMD(24)][sID][PosH][PosL]
25 Dead band読み取り 送信 [255][ID(129-130)][LEN(2)][CMD(25)][sID]
返信 [255][ID(129-130)][LEN(4)][CMD(25)][sID][PosH][PosL]
26 Punch設定 送信 [255][ID(129-130)][LEN(4)][CMD(26)][sID][PosH][PosL]
27 Punch読み取り 送信 [255][ID(129-130)][LEN(2)][CMD(27)][sID]
返信 [255][ID(129-130)][LEN(4)][CMD(27)][sID][dataH][dataL]
28 DutyLimit設定 送信 [255][ID(129-130)][LEN(4)][CMD(28)][sID][dataH][dataL]
29 DutyLimit読み取り 送信 [255][ID(129-130)][LEN(2)][CMD(29)][sID]
返信 [255][ID(129-130)][LEN(4)][CMD(29)][sID][PosH][PosL]
30 PositionLimit設定 送信 [255][ID(129-130)][LEN(4)][CMD(30)][sID][PosH][PosL]
31 PositionLimit読み取り 送信 [255][ID(129-130)][LEN(2)][CMD(31)][sID]
返信 [255][ID(129-130)][LEN(4)][CMD(31)][sID][dataH][dataL]
32 DutyOffset設定 送信 [255][ID(129-130)][LEN(4)][CMD(32)][sID][dataH][dataL]
33 DutyOffset読み取り 送信 [255][ID(129-130)][LEN(2)][CMD(33)][sID]
返信 [255][ID(129-130)][LEN(4)][CMD(33)][sID][dataH][dataL]
34 SetObjectivePosition設定 送信 [255][ID(129-130)][LEN(4)][CMD(34)][sID][PosH][PosL]
35 SetObjectivePosition読み取り 送信 [255][ID(129-130)][LEN(2)][CMD(35)][sID]
返信 [255][ID(129-130)][LEN(4)][CMD(35)][sID][PosH][PosL]
36 ILimit設定 送信 [255][ID(129-130)][LEN(4)][CMD(36)][sID][dataH][dataL]
37 ILimit読み取り 送信 [255][ID(129-130)][LEN(2)][CMD(37)][sID]
返信 [255][ID(129-130)][LEN(4)][CMD(37)][sID][dataH][dataL]
39 Status読み取り 送信 [255][ID(129-130)][LEN(2)][CMD(39)][sID]
40 Dゲイン設定 送信 [255][ID(129-130)][LEN(3)][CMD(40)][sID][Gain]
41 Dゲイン読み取り 送信 [255][ID(129-130)][LEN(2)][CMD(41)][sID]
返信 [255][ID(129-130)][LEN(3)][CMD(41)][sID][Gain]
42 Iゲイン設定 送信 [255][ID(129-130)][LEN(3)][CMD(42)][sID][Gain]
43 Iゲイン読み取り 送信 [255][ID(129-130)][LEN(2)][CMD(43)][sID]
返信 [255][ID(129-130)][LEN(3)][CMD(43)][sID][Gain]
44 Pゲイン設定 送信 [255][ID(129-130)][LEN(3)][CMD(44)][sID][Gain]
45 Pゲイン読み取り 送信 [255][ID(129-130)][LEN(2)][CMD(45)][sID]
返信 [255][ID(129-130)][LEN(3)][CMD(45)][sID][Gain]
46 ServoID設定 送信 [255][ID(129-130)][LEN(3)][CMD(46)][sID][変更ID]
47 ServoID読み取り 送信 [255][ID(129-130)][LEN(2)][CMD(47)][sID]
返信 [255][ID(129-130)][LEN(3)][CMD(47)][sID][sID]
上以外 無視されます。    



・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはハンダジャンパで設定したIDを指定します。デフォルトは129です。

【命令8,9:ROMプロテクト】

<説明>
 この命令は2013.8.15出荷分より追加になりました。最新のピルクス製シリアルサーボはID変更などのROMに書き込む命令は、ROMプロテクトを外す必要があります。サーボは電源立ち上げ時には毎回プロテクトオンになっていますので、ID書き換えや、サーボ設定変更前に命令8でプロテクトをオフにしてください。
電源を切り入りすれば再度プロテクトがかかります。電源を切らないでプロテクトをかける場合は命令9を実行してください。

<送信フォーマット>
[255] [ID(129-130)] [バイト長(2)] [命令(8)] [サーボID]

<送信データ例>
ID=129のボードの#3サーボのプロテクトをオフにする場合は次のようになります。
[255] [129] [2] [8] [3]


【命令0:全サーボON】

<説明>
 全サーボをONします。SSC/Pはこの命令を受け取ると、設定された数(命令13で設定)のサーボに対して、現在位置を読み取り、現在位置をキープしたままサーボをONさせます。よって、全サーボON命令では見た目はロボットが動いていないがサーボはONになることになります。場合によってはまったく変化していないように見えますので気をつけてください。

<送信フォーマット>
[255] [ID(129-130)] [バイト長(1)] [命令(0)]

<送信データ例>
ID=129のボードの全サーボをONにする場合は次のようになります。
[255] [129] [1] [0]


【命令100:全サーボOFF】

<説明>
 全サーボをOFFします。SSC/Pはこの命令を受け取ると、設定された数(命令13で設定)のサーボに対して、サーボOFF命令を2回送信します。

<送信フォーマット>
[255] [ID(129-130)] [バイト長(1)] [命令(100)]

<送信データ例>
ID=129のボードの全サーボをOFFにする場合は次のようになります。
[255] [129] [1] [100]


【命令13:サーボ数設定】

<説明>
 サーボ数を設定します。SSC/Pは「全xx」命令を受け取ると、設定されたサーボ数分、ID番号1番から順番に全てのサーボにたいして命令を送ります。
 さとえば、起動時には24に設定されていますので、起動後に「全xx」命令を送ると#1〜#24のサーボに対して命令が実行されます。
 ほとんど全ての命令はサーボからなんらかの返答があり、SSC/Pではその返答があるかを毎回確認しています(上位側には報告はしない)。たとえば、接続していないIDに対して命令を送った場合は返答が帰ってきませんが、このときはSSC/Pは10〜100mSの間待って、それでも返答がこない場合は次のサーボIDの処理に移ります。この待っても来なかった状態をタイムアウトと言います。
 接続されていないIDに対して命令を沢山送ると、タイムアウトが沢山発生して動作がおそくなるので、この命令13を使ってサーボ数を設定します。

 

 全xx命令は#1から設定されたサーボ数のIDまで実行されるので、接続するサーボIDは#1から昇順に、間を空かせないように付けてください。ID変更は命令4で行います。


<送信フォーマット>
[255] [ID(129-130)] [バイト長(2)] [命令(13)] [サーボ数(1-48)]

<送信データ例>
ID=129のボードのサーボ数を20個に設定する場合は次のようになります。
[255] [129] [2] [13] [20]


【命令15:全サーボ位置指定】

<説明>
 命令13で指定したサーボ数の全サーボの位置と動作スピードを指定します。位置は2バイトで表し、900が中心位置、値が1変化するごとに0.1度の角度になります。

 

<動作スピード>
  移動スピードは1〜200の値で指定し、1の場合がサーボ速度の最速、値が大きくなるほど遅くなります。「移動スピード」という名称ですが、実際には各サーボが設定した時間で目的の位置同時に到達するように各サーボがスピード調整され、ほぼ同時に停止するような動きになります。

 

 値と速度(目的の位置までにかかる時間)の関係はサーボ数によって異なります。大体、サーボ数24の設定ですと目的の位置に到達するまでに値1につき20mSの時間がかかります。サーボ数が少なくなると値1の時間は減ります。動作スピードに関しては実際に動かしてみて値を調整してください。

<注意>
 この命令を使う場合は、事前にサーボ数設定命令(命令13)を実行することをおすすめします。接続しているサーボ数よりも少ない数のサーボに対して全位置指定命令を行うと、動作が不定になる場合があります。動かしたくないサーボに対しては、前回の位置を上位(PCかマイコン)側で記憶しておいて、同じ値をセットするようにしてください。
 ちなみに、接続しているサーボ数よりも多い数のサーボに対して実行した場合は、タイムアウトロスはありますが動作はきちんと行います。たとえば、デフォルトでは24個になっていますが、ID1−20の20個のサーボが付いているロボットに対して、命令13を実行する前にこの命令を送っても、見た目はきちんと動きます。
 この動きの理解は少し難解なので、実際に動かしてみて試してください。電源をすぐに切れるような状態で実験し、変な動きをしたらすぐに電源を切ります。サーボが変な動きをしても、ピルクス系シリアルサーボなら短時間(数秒〜数十秒)ならサーボが燃えるなどの心配はありません。


<送信フォーマット>
[255] [ID(129-130)] [LEN(サーボ数x2+2)] [CMD(15)] [Speed] [PosH1] [PosL1]..[PosHn] [PosLn]

<送信データ例>
ID=129のボードの全サーボをOFFにする場合は次のようになります。
[255] [129] [42] [100] [15] [50] [PosH1] [PosL1]..[PosHn] [PosLn]

<位置の値について>
 位置は2バイトで表します。たとえば#1を中心位置の900にする場合は、
 PosH1=3
 PosL1=132
 のようにセットします。上位バイトx256+下位バイト、の計算になります。


【命令14:全サーボ位置読み取り】

<説明>
 命令13で指定したサーボ数の全サーボの位置を読み取り、返します。サーボから応答が無かった場合は位置の値は9999(上位39、下位15の値)になります。これにより、サーボの位置及びサーボが接続されているかを調べることができます。

<送信フォーマット>
[255] [ID(129-130)] [LEN(1)] [CMD(14)]

<返信フォーマット>
[255] [ID(129-130)] [LEN(サーボ数x2+1)] [CMD(14)] [PosH1] [PosL1 ].. [PosHn] [PosLn]

<送信データ例>
ID=129のボードの全サーボ位置を読み取る場合は次のようになります。
[255] [129] [1] [14]

<結果の値について>
 結果の値は2バイトで返されます。初めに上位バイト、次に下位バイトの順に来ます。たとえば、#1のサーボの位置は900(中心位置)だった場合は
 PosH1=3
 PosL1=132 (3x256+132=900)
のようになります。#1のサーボが故障し、応答が無かった場合は
 PosH139
 PosL1=15 (139x256+15=9999)
のようになります。

 サーボはデッドバンド設定されているので、命令15や命令16で指定した位置ぴったりに止まっているとは限りません。また、ゲイン設定などによっては負荷にまけてサーボ位置がかわってしまう場合があります(そのかわり故障しずらくなる)。逆に言うと、これらはサーボにたいしての負荷センサーにもなります。たとえば、通常設定のPRS-DE07MSの場合、位置900に設定しても値がプラスマイナス2ぐらいで止まります。ここに力を加えると、停止位置が5以上変化します。プラスかマイナスかによってどちらの方向に力が加わったかもわかります。



【命令46:ServoID設定】

<説明>
 AGB65-SSC/Pに接続されたサーボのIDを変更します。RemoHKPを購入した場合は20個のサーボIDが#1〜#20に設定されています。浅草ギ研から単品でピルクス系シリアルサーボを購入した場合はIDが#1に設定されています。

<送信フォーマット>
[255] [ID(129-130)] [バイト長(3)] [命令(46)] [変更前のID] [変更するID]

<送信データ例>
ID=129のボードにつながっている#1のサーボを#2にする場合
[255] [129] [3] [46] [1] [2]



【上記以外の命令】

 上記以外は、シリアルサーボ自体の機能にたいしてそのまま設定や読み取りをするものです。シリアルサーボの機能については下記ドキュメントで解説されていますのでサーボに対しての細かい設定などはそちらを参照してください。いくつかの命令についてはサンプルソフト Remo Mortion Editor で実行できますのでそちらのソースも参照願います。

 シリアルサーボ仕様

 本ページのコマンド一覧と、この資料の命令が1対1で対応しています。尚、シリアルサーボはACKなどの返信をその都度返しますが、SSC/Pを経由すると結果値だけが返されます。応答が無いサーボからの返信値は不定となりますので、命令14であらかじめ接続されているサーボ番号を確認しておいて下さい。



<RemoMortionEditor>

 浅草ギ研ではAGB65-SSC/Pを使用したヒューマノイドロボットキットRemoHKPを販売しています。このRemoHKP用に作ったサンプルプログラム RemoMortion Editor はサーボ軸構成などを変更登録できますので、AGB65-SSC/Pを使ったオリジナルロボットのモーションエディターとしても使用できます。作成したモーションはボタン操作で動かすことができます。

 RemoMortionEditorのページ

 尚、当プログラムはサンプルプログラムにつき、ご質問や改造のご要望にはお答えできませんのでご注意願います。使用にはMicrosoftのVisualC#2008が必要です。VisualC#2008ExpressEditionがMicrosoftのページ(MSDNのページ)から無償で取得できます。

※RemoHKPではBluetooth無線を使っての接続が前提となっており、このソフトの通信速度設定が460800bpsになっています。AGB65-SSC/PとAGB65-232Cを使って有線接続した場合は普通のPCのCOMポートが460800bpsまで対応していないので注意してください。ソフトを書き換えて115200bpsぐらいで通信してください(SSC/Pの通信速度設定も行ってください。)。



<サンプルプログラム>

 ■PCからシリアルサーボを動かす

 ■H8からシリアルサーボを動かす(工事中)

 ■PICからシリアルサーボを動かす(工事中)

 ■AVRからシリアルサーボを動かす
(工事中)

 ■Flash(ActionScript3.0)でシリアルサーボを動かす


<トラブルシューティングQ&A>


Q:電源を入れたが、LEDが点灯しない。
A:お問い合わせの中で、電源の不備が原因のケースが多いので、まずは電源まわりを確認してください。どうしても動かなかった場合は浅草ギ研までメールでお問い合わせ下さい。

Q:自作回路につないでいるがまったく動かない。正常に動作しているか確認したい。
A:本製品は電源入り時に赤LEDが3回点滅します。これが確認できれば正常に動いていますので自作回路の方を重点的に確認してください。 この確認の時は電源以外のケーブルはつながないで下さい。

Q:マイコンと接続し、命令を送ったが返答が無い。
A:下記が考えられます。
・マイコンと本製品の間でGNDを接続していない。
・本製品のTXとマイコンのTXをつないでいる。(TXはマイコンのRXへ、RXはマイコンのTXへつなぎます。接続例の図を参照。)
・起動し終わる前にデータを送ると、マスタ間の通信ができなくなる場合があります。電源起動後はしばらく経過してからデータを送り始めるようにしてください。マイコンと接続する場合は、マイコンのプログラム起動後にウェイトをおくと問題がおきません。
・電源電圧が不足(バッテリなどの表面の表示値ではなく、テスタで実際に電圧を測って確認して下さい)
・マスタ側の通信速度との通信速度が合っていない(マイコンで115kbps通信の場合は特に注意)
・データを数値データ(バイナリデータ)ではなく、キャラクタデータで送っている。
・マスタ側から送信する際のIDが間違っている。
・通信中に、本製品の電源を切ると、その後に電源を入れてもマスタ間の通信が出来ない場合があります。この場合は一度マスタと本製品両方の電源を切り、本製品側を先に立ち上げてからマスタ側を立ち上げてください(マイコンがマスタの場合は電源を共通で使用していると思いますので、ソフト的に電源投入後しばらくしてからデータを送るようにプログラムしておけば、単純に電源を切り入りするだけで済みます)。

Q:乾電池、ACアダプタ、無線用電源などを使っているが動かない。
A:サーボを駆動する場合はLiPo、ニッケル水素バッテリ、ニッカドバッテリを使用してください。無線用の大電流電源を使っていたとしても、機種によっては電圧が安定しないものが多いです。市販の”安定化電源”でも、Remoの動作基準からみると安定していないものが多いです。スイッチング電源などはノイズが多いので向きません。

Q:ロボットがブルブルする。
A:調整か組み立ての問題です。以下の原因が考えられます。
・ネジがゆるんでいる
・外している部品がある。特に、顔と腕の付け根は片持ち構造なので、背中カバーを外した状態だとそれらがブルブル振動する可能性があります。
・モーション作成時に、ひもなどで吊るすと思いますが、この場合は手足の先が安定していないので振動します。床に置くと直る場合が多いです。
・それでも振動する場合は、サーボの調整でおさまります。1)デッドバンドを広げる2)使用していないサーボをオフにする3)ゲインを下げる、で解決できます。

Q:少ないサーボの時、複数同時にサーボを動かす命令を出すと応答速度が悪い。
A:つながっていないサーボに対してAGB65-SSC/Pなどから命令を送った場合、もしくはサーボの応答が無い場合、は10mSecのタイムアウトまで応答を待ってしまいます。サーボのIDを少ない順番からシーケンスに設定(1〜5、とか。飛び飛びにしない)し、SSCに対してサーボ数設定を行うとタイムアウトが発生しません。

Q:複数のサーボを駆動するプログラムを作ったが、場所によって動きが遅いところがある。動くタイミングがバラバラになったりする。
A:複数同時駆動の命令を使わないとタイミングがバラバラの動作をします。WindowsPCからシリアル通信を行う場合、データ送信命令を出しても即座には送信されません。PCの動作にもよりますが、10〜40mSecは間が空くことが多いです。たとえば、10個のサーボの対して、間接位置データを10回送信すると、初めのサーボが動き出してから最後のサーボが動き出すまで、最大10x40=400mSecの差が出ます。このようなことをふせぐためにAGB65-SSCには一斉動作コマンドがあります。このコマンドはPCからの送信をとりあえず複数サーボ分一度に送り、SSC側で高速に各サーボへ命令を振り分けています。




<使用上の注意>


・このボードは電子機器です。取扱い、輸送時には静電気対策を行ってください。ICの足や、各ピンを直接手で触ったりすると静電破壊される場合があります。

・バッテリ使用時には電源ラインをショートさせると、バッテリが破裂・発火する可能性があります。作業中にはショートさせないよう十分注意して下さい。また、取り付け後も、あいている電源ラインに導電物質が触らないように注意して下さい。
 




(C)Copylight 2003. 有限会社浅草ギ研 | 通信販売の法規(訪問販売法第8条)に基づく通信販売業者の表示