- armadillo300のシリアルデバイス経由でプログラムによりサーボを動作させる.ここで,armadillo300のシリアルデバイスに接続する機器として以下のものがある.
- armadillo300のシリアルデバイス
- RS-232Cレベルの信号を扱うシリアルデバイスである.具体的には,-15V〜15Vの範囲を扱い,論理0が+3V〜+15V,論理1が-15V〜-3Vである.
- AGB65-RSC
- シリアルポート経由で受けた指令を元にサーボを制御する機器である.この機器が扱うシリアルデバイスはTTLレベル信号であり,論理0が0V,論理1が5Vである.
- AGB65-232C
- RS-232Cレベルの信号とTTLレベルの信号には電圧互換がないため,変換処理が必要となる.AGB65-232CはRS-232Cレベルの信号とTTLレベルの信号の変換処理を行う機器である.
- サーボモータ
- 物体の位置などを制御量として目標値に追従するように自動で作動するモータ.
- 各デバイスの接続は図1のようになる
実験前準備等†
準備・確認†
- 全ての電源が入っていることを確認
- TeraTermでarmadillo300にログインできていることを確認
- 演習用のディレクトリを作成し,そのディレクトリに移動していることを確認
- 演習後は消すこと
- 演習用ディレクトリにて,プログラムファイルを作成し,コンパイル,実行を行うこと.
- コンパイル例:プログラムファイル:sample.c, 実行ファイル:sample
- 実行
- 以下のように配列を定義して値を代入する.
- unsigned char output[7] = {255,3,4,2,0,127,20};
シンクロバイト(255) | RSCにデータの通信開始を知らせるデータで,常に「255」で始まる. |
ID(3) | RSCに設定された固有のID(AGB65シリーズを複数接続したときの判別用.RSCの場合,出荷時のIDは「3」.) |
送信バイト数(4) | 送信される命令の(バイト)数.シンクロバイト,ID,送信バイト数は数えない. |
命令1(2) | 個別サーボ駆動設定 |
命令2(0) | サーボ番号.0はRSC基板上のP0に対応 |
命令3(127) | 角度(min:0,max:255で,絶対位置を指定) |
命令4(2) | 指定した角度まで移動する速度(x15ms) |
- この配列をシリアル送信する.
- 命令値は0から255まで.
- 命令値に対するサーボの可動角は「だいたい」0°から180°まで.(0°の位置はサーボによる.)
プログラミング演習†
- 下記のプログラムを作成,実行してサーボの制御について学ぶ.
#include(): Limit exceeded:
ゼミのお話/ロボット工学者養成所/一覧/シリアル通信によるデバイス制御/サーボ駆動プログラム作成/対話的制御プログラム
#include(): Limit exceeded:
ゼミのお話/ロボット工学者養成所/一覧/シリアル通信によるデバイス制御/サーボ駆動プログラム作成/対話的メータ表示プログラム
参考情報†
#include(): Limit exceeded:
ゼミのお話/ロボット工学者養成所/一覧/浅草ギ研AGB65シリーズ/AGB65-RSC命令仕様