<概要>
■シリアル通信により小型DCモータ又はステッピングモータを駆動するボード
AGB65−SAC (Small Actuator Controller) は1つのシリアルラインで制御できるモータコントローラです。
制御できる対象のアクチュエータは電圧2〜8.6V、各チャンネルの最大供給電流は700mAまでです。よって、マブチモータや小型ステッピングモータなど、一般的にホビーで使われている小型アクチュエータのほとんどに対応できます。
■4つまでのDCモータをコントロール
4チャンネルの正転/逆転ポートがあり、280クラスまでのマブチモータ(*1)などの小型DCモータの場合は同時に4つ(1ライン最大32個(*2))又は個別に操作することができます。各ポートはPWM制御(*3)も可能で、出力を0〜100%に1%づつの解像度で指定できます。
(*1)マブチモータなどのコイル抵抗が低いモータを駆動する場合はモータ側にワット数(2W以上)の大きな1オーム抵抗をモータの両端につける必要があります。詳しくは下記事例にて説明。
(*2)ID切替で8つまでのAGB65−SACを1つのシリアルラインで制御できます。
(*3)RCサーボのPWMとは違いますのでRCサーボは駆動できません。RCサーボはAGB65-RSCで1ボードで12個駆動できます。
■電磁石サーボAA-PT01の制御も可能
浅草ギ研で販売しているAA-PT01の制御も可能です。4つのポートに直接接続するだけで使用できます。
■2つまでのバイポーラ又はユニポーラ型ステッピングモータをコントロール
2つのチャンネルを使って1つのステッピングモータをコントロールすることができます。ユニポーラ型のためのコモン端子(GND)も各チャンネルに配置していますので、バイポーラ(コモン端子が無い)型/ユニポーラ型両方のステッピングモータを駆動できます。チャンネルは4つあるので1つのボードで2つまでのステッピングモータを駆動可能です。(1ライン最大16個までのステッピングモータの駆動が可能。上記(*2)参照)
ステッピングモータの場合は、回転方向とステップ数を指示するだけでステップ終了までステップ波形を出力します。
■2相励起、ハーフステップ、マイクロステップに対応
ステッピングモータの場合は機種によって1ステップで回転する角度が違います。このボードではステップ角度を1/2にする「ハーフステップ」駆動、及びステップ角度を1/4にする「マイクロステップ」駆動、ステップ角度は仕様のままだが常にコイル2つに通電して駆動するトルク重視の「2相励起」駆動を選ぶことができます。
■ステッピングモータの加速/減速設定が可能
ステッピングモータの場合は急に回転させると脱調(回転が追いつかなくなる状態)になりますが、このボードでは加速/減速の設定が可能ですので、それぞれのステッピングモータに合った動作を設定することが可能です。詳しくは下記事例にて。
■マイコンやPCと簡単接続
シリアル通信は5Vレベルなので5V系のマイコンと直結して使うことができます。又、オプションの232C変換ボードを使用することでPCとの接続も可能です。よって、シリアル通信の機能を使えればPCやマイコンで簡単にモータなどの大電流機器を操作することができます。(各チャンネル最大700mAまで)
■1ライン最大8個までのSACを直列接続可能
本製品はDIPスイッチのID切替により8台までを同一シリアルラインに接続することができます。つまり、1つのシリアルポートでDCモータ(及び電流を正転/逆転するもの)の場合4x8=32個の制御が可能です。ステッピングモータの場合は2×8=16個の制御が可能です。
■他のAGR65シリーズに接続可能
他のAGB65シリーズのセンサやコントローラと同じシリアルラインを共有できます。AGB65シリーズについては「ロボット神経システムAGB65シリーズの説明」のページを参照願います。
■115Kbpsの高速通信が可能!
通信速度は115Kbpsにも対応し、PCなどから高速にデータを送信することが出来ます。(初期設定は9600bps)
注)PCは115kbpsの速度を出せるものがほとんどですが、マイコンの場合はクロックによっては正確な115Kが出ないものがありますので注意してください。クロックの選択は各マイコンのデータシートを参照願います(H8TinyやPICなどの低速マイコンの場合は115200の倍数のクロックを使う必要があります。)
■電源搭載で外部に電源回路不要!バッテリ駆動が可能!
ボード上に電源回路を内蔵し、外部に電源回路が不要で、バッテリなどで駆動することができます。
■35x40mmの超小型設計!
ロボットなどに基板を搭載する場合はその大きさがネックになりますが、本製品は極力小さい部品で構成されており、実装面積が小さくて済みます。また、基板の4角には取り付け穴があります。(穴系2.2mm、M2ネジ用)
※説明にあたり、以後、ステッピングモータを”STM"と略します。
<使用上の注意(必ずお読み下さい)>
・このボードは電子機器です。取扱い、輸送時には静電気対策を行ってください。ICの足や、各ピンを直接手で触ったりすると静電破壊される場合があります。
・バッテリ使用時には電源ラインをショートさせると、バッテリが破裂・発火する可能性があります。作業中にはショートさせないよう十分注意して下さい。また、取り付け後も、あいている電源ラインに導電物質が触らないように注意して下さい。
・このボードは他の浅草ギ研製品とは違い、大電流が流れる可能性があります。取扱を間違えるとモータやコイルなどのアクチュエータ、SAC自体、バッテリなどの電源が燃えたり破裂したりする可能性が非常に高いので、仕様するアクチュエータの仕様をよく読み、また下記事例などを十分参照した上でお使い下さい。実際に、試験テストではマブチモータなどのコイル抵抗が非常に低いモータを直結した場合にSAC上のドライバICがやけどをするぐらい高温になったり、充電用電池が破裂したりしました。
また、ステッピングモータに長時間電流を流しつづけると、ステッピングモータの種類によっては手で持てないぐらい熱くなりました。
<仕様>
基板用電源
|
+6.0〜+15V (*1)
コネクタ:日圧B2B-EH (9V電池ケーブル付属) |
基板消費電流
|
80mA |
電源出力
|
5V 100mA(max)
*外部に対して供給できる電源 |
モータ用電源
|
2〜8.6V
|
モータ用電流
|
各チャンネル700mAまで出力可能
|
チャンネル数
|
順方向/逆方向電流制御ポート × 4チャンネル (STMの場合、2個同時駆動可能) |
PWM分解能
|
1〜100%までの1%単位の出力設定 |
PWM周期
|
任意の周期に可変。電源投入時は1mS周期に設定。 |
STM駆動方式
|
2相励起/ハーフステップ/マイクロステップ の3種類を選択可能。 加速/減速設定可能。 |
STM種類
|
一般的な ユニポーラ/バイポーラ型 の駆動が可能 |
通信設定
|
8ビット、ノンパリ、ストップ1ビット フロー制御なし
非同期通信 |
通信規格
|
TTLレベルEIA232C準拠 (*2)
|
通信速度
|
9600bps/115200bps
(DIPスイッチで切替) |
固有ID
|
20〜27 (IDについては下記取扱い説明に詳しく書いてあります。)
|
寸法/重量
|
寸法35x40mm 重量:9g |
付属品
|
■AGB65電源ケーブルx1 (基板と9V乾電池をつなぐケーブル)
■電源延長ケーブルx1 (二台目のAGB65と電源を共有するケーブル)
■通信ケーブルx1 (二台目のAB65と通信ラインを共有するケーブル)
■モータ用電源ケーブルx1 (モータ用電源を接続するケーブル) |
(*1)高い電圧になるほど効率が落ち、発熱量が増えます。12V以下での使用を推奨。
(*2)5V系のマイコンと直結できます。PCと接続する場合は別売のAGB65-232Cが必用になります。
<ピン配列>
※各コネクタ用のケーブルは、商品に添付されています。(5V電源出力コネクタを除く)
<DCモータ及びAA-PT01との接続>
※マブチモータなどのコイル抵抗が低いモータ(2オーム以下)の場合は下記のように抵抗を接続してください。
※2Wぐらいの抵抗器は、通常の電子回路に使われる1/4Wや1/8W抵抗よりかなり大きいものになります。1/4W抵抗などは熱くなり危険ですのでかならずワット数が大きいものを使用してください。
※AA=PT01はコイル抵抗が50オームと、比較的大きいので抵抗を入れる必要はありません。
<バイポーラステッピングモータとの接続>
※各相の位置に注意して下さい。A相とB相では上下位置が逆になります。
<ユニポーラステッピングモータとの接続>
※各相の位置に注意して下さい。A相とB相では上下位置が逆になります。
※Cが1本しか出ていないユニポーラステッピングモータの場合は、G1/G2どちらかにつないでください。chB側も同じくG3/G4のどちらかにつないでください。
<bps/ID設定スイッチ>
*上の写真は開発中のもので、実際の製品と形状が異なります。
※出荷時はID=20、通信速度9600bpsに設定されています。
<価格>
税込み 14,700円 (本体価格14,000円)
<オプション>
AGB65−232C 4,725円 (本体価格4,500円)
(PCと接続する場合に必用です。下記接続例を参照。)
Bluetooth無線機(本製品と接続するには下記2つが必要です。)
BlueMaster 12,600円(本体価格12,000円)
AGB65−BT 2,520円(本体価格2,400円)
<接続例>
<システム構成例>
※複数接続する場合は、消費電流合計以上の出力が出せるバッテリ(又は電源)を使用してください。基板用の電源にアルカリ9V乾電池を使用する場合は最高で800mA前後です。ニッカドやニッケル水素はアルカリの5〜10倍ぐらい出力できます。(商品にもよります)
<マイコンとの接続詳細>
<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コントロールを行ってしまう場合でも、強制的に通信可能状態になります。下記事例でC#によるシリアル通信プログラム例を紹介しています。
<電源ケーブルの接続>
AGB65電源ケーブルは、なれないと差し込みづらいので、下の図を参照に、慎重に差し込んでください。まっすぐに挿入すると簡単に入ります。簡単に入らない場合は無理をして端子を曲げないように注意して下さい。尚、逆に挿そうとすると入りません。
電源ケーブルの逆側には、9V乾電池用のスナップが付いております。これは簡易的なものなので、何回も乾電池を抜き差しするとスナップ部がゆるみますのでご注意下さい。9V乾電池以外の電源を使用する方は、ケーブルを切断してそれぞれの電源に合ったコネクタを取り付けて下さい。電源ケーブルを切断する際は、電源がつながっていないことを十分注意した上で行ってください。通電したまま電源線をカットすると乾電池などが破裂する可能性がありますので注意して下さい。
<シリアルデータ通信による操作>
<データ形式>
マスタからSACへの指示は、バイトサイズの数値データで送られます。バイトサイズ(8ビット)単位なので、表される数値は0〜255の256種類になります。
尚、以下特に記述がない場合は、数値は10進数で表しています。
−基本形−
データの基本形は次の通りになります。[ ]内は1バイトを表します。()内は送りえる数値の範囲を表します。
[シンクロバイト(255)] [ID(20-27)] [送信バイト長(1-9] [命令1] [命令2] [命令3] ...
シンクロバイト |
SACにデータの通信開始を知らせるデータで、常に「255」で始まります。 |
ID |
SACに設定された固有のID。(*) |
送信バイト長 |
送信される命令の(バイト)数。シンクロバイト、ID、送信バイト数は数えません。 |
命令 |
ADCに動作させたい命令。以下で詳しく説明します。 |
(*)DIPスイッチで20-27の8パターンに設定できます。 |
注)データはキャラクタデータではなく、数値(バイナリ)データで送ります。
例えばマイコンをマスタとし、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だとか)のでご注意下さい。
|
|
−命令一覧−
命令値 |
動作 |
方向 |
フォーマット |
|
<共通命令> |
|
|
0 |
停止 |
送信 |
[255][ID(20-27)][バイト長(1)][命令(0)] |
254 |
セルフチェック |
送信 |
[255][ID(20-27)][長(1)][254] |
|
|
受信 |
[255][ID(20-27)][長(1)][254] |
|
<DCモータ用命令> |
|
|
1 |
ON/OFF設定 |
送信 |
[255][ID(20-27)][バイト長(2)][命令(1)][設定(0-254)]
|
20 |
PWM周期設定 |
送信 |
[255][ID(20-27)][バイト長(4)][命令(20)][プリスケーラ(0-3)][値上位][値下位]
|
30
|
PWM駆動(1ch) |
送信 |
[255][ID(20-27)][バイト長(3)][命令(30)][ch(1-8)][D(0-100)]
|
31
|
PWM駆動(全ch) |
送信 |
[255][ID(20-27)][バイト長(9)][命令(31)]
[D1(0-100)][D2][D3][D4][D5][D6][D7][D8]
|
|
<STM用命令> |
|
|
90
|
STM設定(A,Bch) |
送信 |
[255][ID(20-27)][バイト長(7)][命令(90)][開始速度H][開始速度L][加速ステップ数H][加速ステップ数L][上限速度H][上限速度L]
|
95
|
STM設定(片方ch) |
送信 |
[255][ID(20-27)][バイト長(8)][命令(95)][ch(0,1)][開始速度H][開始速度L][加速ステップ数H][加速ステップ数L][上限速度H][上限速度L]
|
100
|
ステップ(A,Bch) |
送信 |
[255][ID(20-27)][バイト長(6)][命令(100)][モード(0-3)][chA方向(0-2)][chB方向(0-2)][ステップ数上位][ステップ数下位]
|
105
|
ステップ(片方ch) |
送信 |
[255][ID(20-27)][バイト長(6)][命令(105)][ch(0,1)][モード(0-3)][方向(0-2)][ステップ数上位][ステップ数下位]
|
200 |
ステップ状態確認 |
送信 |
[255][ID(20-27)][長(1)][200] |
|
|
受信 |
[255][ID(20-27)][長(1)][状態(0-3)] |
上以外 |
無視されます。 |
|
|
※方向はマスタ側から見たデータの通信方向を表します。「送信」はマスタ−>コントローラへ送る命令、「受信」はコントローラ−>マスタへ返される結果を表します。
【命令0:動作停止命令】
<説明>
送信フォーマットのデータ列をマスタからSACに送信すると、SACは全ポートをLOWにします。つまり電流が流れなくなります。ステッピングモータを駆動している場合は命令発行後にその位置で停止します(保持はしません)。DCモータを駆動している場合は惰性で少し回転する場合があります。
<送信フォーマット>
[255][ID(20-27)][バイト長(1)][命令(0)]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は1で固定です。
・命令は0で固定です。
<送信データ例>
なにかの原因で、モータ回転中にすぐに停止させたい場合は書きのような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=20)のままとします。
[255] [20] [1] [0]
【命令1:ON/OFF設定】
<説明>
送信フォーマットのデータ列をマスタからSACに送信すると、SACは「設定」で指定したビットに対応したポートをONにします。
設定は2進数の01で表しますが、十進数でプログラムをする場合は、ONにしたい各桁の重みを加算すれば設定値になります。
重みは
bit0=1
bit1=2
bit2=4
bit3=8
bit4=16
bit5=32
bit6=64
bit7=128
となります。例えば上記の例のように二進数で「10001101」の場合はbit1,3,4,7がONですので加算すると1+8+16+128=153になりますので「設定」には153を入れればよいことになります。
各chの正転/逆転の方向や、bit計算の上位下位の方向は間違えやすいのでなれないうちは十分注意して下さい。
※システムの関係で、値255はシンクロバイト(先頭バイト)以外では使えません。よって、設定値は二進数の11111111(十進数で255、十六進数でFF)は設定できません。但し、全てのchをハイインピーダンスにするという状況はあまり無いと思われますので問題にはならないと考えています。
<送信フォーマット>
[255] [ID(20-27)] [バイト長(2)] [命令(1)] [設定(0-254)]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は2で固定です。
・命令は1で固定です。
・設定には上記を参照に設定したい値を指定します。
<送信データ例>
上記の図と同じ動作をする場合には下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=20)のままとします。
[255] [20] [2] [1] [153]
【命令20:PWM周期設定】
※PWM出力は、DCモータコントロール時には1mS周期、ステッピングモータのマイクロステップ動作のときには100uS周期に自動的に設定されます。お使いのアクチュエータの周期をどのように設定してよいかわからないときは、とくにこのコマンドは実行しないで下さい。(下記の周期設定の説明がよくわからない場合も、このコマンドは特に実行しないで下さい。)
<説明>
PWM出力の周期を設定します。
<PWMの周期とデューティー>
パルス幅が周期の何%かを「デューティー」と言います。例えば、デューティー50%と言うと、パルス幅が周期の50%という意味になります。デューティー50%の場合は普通のアクチュエータは(おおまかに)出力が50%となります。
出力が50%でもモータによっては回転が50%やトルクが50%になるわけでは無い場合もありますので注意して下さい。あくまでデューティーで表される%の供給電力量が供給されます。
RCサーボを駆動する場合も「PWM方式」と表現しますが、厳密に言うとRCサーボの場合はパルス幅を15〜20mSに固定して、0.5〜2mSのパルス幅で制御しますのでここで説明しているような一般的に言うPWM制御とは違います。よってデューティーは15%程度以上にはなりません。つまり、このPWM方式ではRCサーボは駆動できませんので注意して下さい。RCサーボの駆動はAGB65-RSCを使用してください。
この命令で設定した設定値は保存されません。電源を切ると標準の周期(1mS)に再設定されます。
<送信フォーマット>
[255] [ID(20-27)] [バイト長(4)] [命令(20)] [プリスケーラ(0-3)] [値上位]
[値下位]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は4で固定です。
・命令は20で固定です。
・プリスケーラは周期を決める基本クロックを分周するかどうかを決めます。
・値は周期設定値を指定します。値は2バイトで表され、上位バイトを先に送ります(BIGエンディアン方式)。
<プリスケーラと周期設定値>
SACは内部で1秒間に14,740,000回(14.74MHz)カウントする基本カウンタが動いています。プリスケーラは、PWM周期設定用にこの基本カウンタを下記のように分周します。
プリスケーラ値0:分周なし(14,740,000回/秒)
プリスケーラ値1:1/8(1,842,500回/秒)
プリスケーラ値2:1/64(230,312.5回/秒)
プリスケーラ値3:1/256(57,578.125回/秒)
値は、周期を表します。2バイトで表せるので設定できる値は0〜65535までの数値となります。値上位・値下位と値の関係は次のようになります。
値=(値上位x256)+値下位
値から値上位と値下位を計算するには次のようになります。
値上位=値を256で割った商
値下位=値を256で割った余り
例えば、プリスケーラ値を3、つまり1/256に設定した場合、一秒間に約57578回カウントされるので、値を57,578に設定するとPWM周期は約1S(1秒)になります。
例えば、プリスケーラ値を0、つまり1/1に設定した場合、一秒間に14,740,000回、1/1000秒間つまり1mSで14,740回カウントされるので値を14740にするとPWM周期は1mSとなります。
設定値が2バイトで表される上限の65535を超えないようにプリスケーラ値を選択することになります。
<送信データ例>
PWM周期を1mSに設定する場合には下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=20)のままとします。(上記例と同じ)
プリスケーラ:1/1で14740カウントで1mS。
プリスケーラ値=0
値上位=14740を256で割った商=57
値下位=14740を256で割ったあまり=14740−(256x57)=148
よって送信するデータは次のようになる。
[255] [20] [4] [20] [0] [57] [148]
【命令30:PWM駆動(1ch)】
<説明>
送信フォーマットのデータ列をマスタからSACに送信すると、SACはNoで指定した端子からDで指定したデューティーのPWM出力をします。PWMについては上記「命令20:PWM周期設定」を参照してください。
命令30を連続して実行することにより複数chのモータを駆動できますが、命令送信には若干の時間がかかります。特に通信速度が9600bpsの場合は送信だけで6バイト=6mS以上かかりますので各モータの起動にズレが生じる場合があります。複数chを同時に駆動したい場合は、次の命令31を使用してください。
<送信フォーマット>
[255] [ID(20-27)] [バイト長(3)] [命令(30)] [No(1-8)] [D(0-100)]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は3で固定です。
・命令は30で固定です。
・Noには出力した端子番号を指定します。(番号の位置に注意して下さい。)1-8以外の値を指定した場合はこの命令は無視されます。
・Dにはデューティーを%単位で指定します。100(%)以上を指定した場合はパルスは発生せずに、PWM周期の終りでもON状態が続きます(詳しくは命令20の図の波形を参照)。
<送信データ例>
No5を50%出力にする場合には下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=20)のままとします。
[255] [20] [3] [30] [5] [50]
No6をずっとON状態にする場合は下のような送信データになります。この時、Dは101〜254の値どれでも結構です。DIPスイッチは出荷時設定(9600bps、ID=20)のままとします。
[255] [20] [3] [30] [6] [101]
【命令31:PWM駆動(全ch)】
<説明>
送信フォーマットのデータ列をマスタからSACに送信すると、SACは全端子からDで指定したデューティーのPWM出力をします。PWMについては上記「命令20:PWM周期設定」を、端子番号については「命令30:PWM駆動(1ch)」を参照してください。
この命令の場合、各chのモータは同時に動きます。複数のモータを同時に動かしたい場合はこの命令を使います。
<送信フォーマット>
[255] [ID(20-27)] [バイト長(9)] [命令(31)] [D1(0-100)] [D2]
[D3] [D4] [D5] [D6] [D7] [D8]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は9で固定です。
・命令は31で固定です。
・Dにはデューティーを%単位で指定します。100(%)以上を指定した場合はパルスは発生せずに、PWM周期の終りでもON状態が続きます(詳しくは命令20の図の波形を参照)。
D1はNo1端子のデューティー、D2はNo2の...D8はNo8端子のデューティーを表します。
<送信データ例>
全てのchを50%の出力で正転する場合には下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=20)のままとします。
[255] [20] [9] [31] [50] [0] [50] [0] [50] [0] [50] [0]
全てのchを20%の出力で逆転する場合には下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=20)のままとします。
[255] [20] [9] [31] [0] [20] [0] [20] [0] [20] [0] [20]
【命令90:ステッピングモータ加減速設定(ABch)】
<説明>
送信フォーマットのデータ列をマスタからSACに送信すると、SACはステッピングモータの加速、減速設定を行います。1つのSACでは2つのステッピングモータを駆動できますが、この命令では同時に2つのステッピングモータを動かす場合の設定を行います。この命令を実行しないと命令100は動きませんので、命令100を使う場合は起動後に1度は必ずこの命令を実行する必要があります。その後は、命令95(片方chの設定)を実行するまではこの設定が有効になります。
<加速、減速設定の必要性>
ステッピングモータは機種によっては一秒間に何ステップ実行できるか、つまり最高の回転速度が決まっています。また、ほとんどのステッピングモータは急には最高速度でまわせない場合があり、始めはゆっくりと、そしてだんだん速く加速する必要がある場合が多いです。減速する場合も同じで、急には止まれないのでゆっくりと速度を落とす必要がある場合が多いです。SACはこの加速減速を設定できます。
ここでは回転速度を、一秒間に何回ステップできるかで表す「PPS」(パルス/秒)で表します。
一般的に入手できるステッピングモータは数百〜1000PPS程度です。DCモータなどに比べるとだいぶ遅いです。
ステッピングモーモータは、限界速度を超えると、パルスを加えても回転しない「脱調」という状態になります。
SACの場合は加速と減速を線形(上記のような加速曲線)で制御します。設定には開始速度(PPS)、加速ステップ数(ステップ)、上限速度(PPS)の3つのパラメータを使います。加速と減速の曲線は同じになります。
何ステップ回転させるかは、後で説明する「ステップ実行」命令で指定します。この命令は加減速を設定するだけなのでステッピングモータは回転はしません。
速度はPPSで表しますが、通常のステッピングモータは最高速度が数百ステップ、速いもので数千ステップのものがありますので、各設定値は2バイト(0〜65535の値)で指定します。全て上位バイトを先に送ります(BIGエンディアン方式)。
<送信フォーマット>
[255] [ID(20-27)] [バイト長(7)] [命令(90)] [開始速度H] [開始速度L] [加速ステップ数H]
[加速ステップ数L] [上限速度H] [上限速度L]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は7で固定です。
・命令は90で固定です。
・開始速度は2バイトで指定し、単位は”PPS”です。Hが上位、Lが下位バイトになります。
・加速ステップ数は2バイトで指定し、単位は”ステップ”です。Hが上位、Lが下位バイトになります。
・上限速度は2バイトで指定し、単位は”PPS”です。Hが上位、Lが下位バイトになります。
各パラメータは2バイトで表しますので設定できる値は0〜65535までの数値となります。値上位(xxH)・値下位(xxL)と値の関係は次のようになります。
値=(値上位x256)+値下位
値から値上位と値下位を計算するには次のようになります。
値上位=値を256で割った商
値下位=値を256で割った余り
<送信データ例>
AB両chを同時に駆動する場合、開始速度=100PPS、加減速ステップ数=20、上限速度=300PPSで駆動する場合には下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=20)のままとします。
上限速度のパラメータは
上限速度H=300/256の商=1
上限速度L=300/256のあまり=44 となります。
[255] [20] [7] [90] [0] [100] [0] [20] [1] [44]
【命令95:ステッピングモータ加減速設定(片方ch)】
<説明>
送信フォーマットのデータ列をマスタからSACに送信すると、SACはステッピングモータの加速、減速設定を行います。1つのSACでは2つのステッピングモータを駆動できますが、この命令では片方のchの設定をします。よって、A,Bチャンネル別々の加減速設定を行うことができます。この命令を実行しないと命令105は動きませんので、命令105を使う場合は起動後に1度は必ずこの命令を実行する必要があります。その後は、命令90を実行するまではこの設定が有効になります。
<加速、減速設定の必要性>
ステッピングモータは機種によっては一秒間に何ステップ実行できるか、つまり最高の回転速度が決まっています。また、ほとんどのステッピングモータは急には最高速度でまわせない場合があり、始めはゆっくりと、そしてだんだん速く加速する必要がある場合が多いです。減速する場合も同じで、急には止まれないのでゆっくりと速度を落とす必要がある場合が多いです。SACはこの加速減速を設定できます。
ここでは回転速度を、一秒間に何回ステップできるかで表す「PPS」(パルス/秒)で表します。
一般的に入手できるステッピングモータは数百〜1000PPS程度です。DCモータなどに比べるとだいぶ遅いです。
ステッピングモーモータは、限界速度を超えると、パルスを加えても回転しない「脱調」という状態になります。
SACの場合は加速と減速を線形(上記のような加速曲線)で制御します。設定には開始速度(PPS)、加速ステップ数(ステップ)、上限速度(PPS)の3つのパラメータを使います。加速と減速の曲線は同じになります。
何ステップ回転させるかは、後で説明する「ステップ実行」命令で指定します。この命令は加減速を設定するだけなのでステッピングモータは回転はしません。
速度はPPSで表しますが、通常のステッピングモータは最高速度が数百ステップ、速いもので数千ステップのものがありますので、各設定値は2バイト(0〜65535の値)で指定します。全て上位バイトを先に送ります(BIGエンディアン方式)。
<送信フォーマット>
[255] [ID(20-27)] [バイト長(7)] [命令(90)] [ch(0,1)] [開始速度H]
[開始速度L] [加速ステップ数H] [加速ステップ数L] [上限速度H] [上限速度L]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は8で固定です。
・chはどちらのチャンネルを設定するかを指定します。
0:Ach
1:Bch
・命令は95で固定です。
・開始速度は2バイトで指定し、単位は”PPS”です。Hが上位、Lが下位バイトになります。
・加速ステップ数は2バイトで指定し、単位は”ステップ”です。Hが上位、Lが下位バイトになります。
・上限速度は2バイトで指定し、単位は”PPS”です。Hが上位、Lが下位バイトになります。
各パラメータは2バイトで表しますので設定できる値は0〜65535までの数値となります。値上位(xxH)・値下位(xxL)と値の関係は次のようになります。
値=(値上位x256)+値下位
値から値上位と値下位を計算するには次のようになります。
値上位=値を256で割った商
値下位=値を256で割った余り
<送信データ例>
Bchを駆動する場合、開始速度=100PPS、加減速ステップ数=20、上限速度=300PPSで駆動する場合には下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=20)のままとします。
上限速度のパラメータは
上限速度H=300/256の商=1
上限速度L=300/256のあまり=44 となります。
[255] [20] [7] [90] [1] [0] [100] [0] [20] [1] [44]
【命令100:ステッピングモータ、ステップ実行(ABch)】
<説明>
送信フォーマットのデータ列をマスタからSACに送信すると、SACは命令90で設定した加減速設定で、指定したステップ数を指定した方向に指定した方式で回転して止まります。1つのSACでは2つのステッピングモータを駆動できますが、この命令ではAB両方のステッピングモータが同時に同じステップ数(方向は逆にもできる)だけ回転します。これは、ステッピングモータに車輪などを直接付けたタイプのロボットの走行などに便利です。この命令は命令90を実行して設定を終えたあとでしか動きませんん。又、命令95を実行すると命令90の設定が消えてしまいますのでもう一度命令90を実行する必要があります。
<ステッピングモータの駆動方式>
ステッピングモータはA、Aバー、B、Bバー相の4つの相を、ある決まったパターンで駆動することにより回転します。駆動パターンにはいろいろあり、トルク重視や角度重視の駆動ができます。
SACの場合は
1)ハーフステップ(基本ステップ角の1/2づつ回転する)
2)2相励起(にそうれいき:基本ステップ角で回転するが、常に2つの相に電流が流れ、静止トルクが強い)
3)1/4マイクロステップ(基本ステップ角の1/4づつ回転する)
の3つのパターンが指定できます。
※正転の場合は、最後のステップまで行ったらステップ1にもどります。
※逆転の場合は、ステップ1までいったら最後のステップにもどります。
※上記図右のステッピングモータの絵は概念図です。実際の製品は1ステップが1.8〜18度と、図よりも小さい基本角度になります(上記図右では基本角度が90度になっている。このような製品は見当たらない)
<一回目の起動時の注意>
電源を入れた直後は、前回どのステップで停止しているか判断できません。よって、前回止まった位置によっては起動後一回目の最初のステップが逆に回転する可能性があります。SACは動作中は現在のステップ位置を常に把握していますので、1ステップでも動作させればその後は指定したステップ数を間違いなく回転できます。よって、起動後は本番の駆動前に1ステップほど回転させることをお勧めします。
尚、3種類ある各駆動駆動方式はそれぞれ止まる位置が違いますので、駆動方式をを変えた場合も、同様の問題が起きる可能性があります。
電源投入直後は必ずステップ1から始まります。
ステッピングモータの機種によっては、ハーフステップやマイクロステップに対応していないものもありますので注意して下さい。ちなみに、浅草ギ研で販売しているAA−STM15は2相励起でしか駆動できません。
<送信フォーマット>
[255] [ID(20-27)] [バイト長(6)] [命令(100)] [モード(0-3)] [chA方向(0-2)]
[chB方向(0-2)] [ステップ数上位] [ステップ数下位]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は6で固定です。
・命令は100で固定です。
・モードは0−3で駆動方式を指定します。
1:ハーフステップ
2:2相励起
3:マイクロステップ(1/4)
・chA方向はchAの回転方向を指定します。0を指定すると回転しません。(回転中は回転停止になる)
0:停止
1:正転(ステップ1−2−3・・・の順に実行)
2:逆転(ステップ3−2−1・・・の順に実行)
・ステップ数は2バイトで指定し、最大で指定できるステップ数は65535となります。SACは指定されたステップを回転すると自動的に停止し、その位置を保持します。
ステップ数は2バイトで表しますので設定できる値は0〜65535までの数値となります。ステップ数上位・ステップ数下位とステップ数の関係は次のようになります。
ステップ数=(ステップ数上位x256)+ステップ数下位
ステップ数から上位と下位を計算するには次のようになります。
ステップ数上位=ステップ数を256で割った商
ステップ数下位=ステップ数を256で割った余り
<送信データ例>
両chを正転でマイクロステップで400ステップ駆動する場合は下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=20)のままとします。
ステップ数のパラメータは
ステップ数上位=400/256の商=1
ステップ数下位=400/256のあまり=144 となります。
[255] [20] [6] [100] [3] [1] [1] [1] [144]
Achを正転、Bchを逆転で2相励起で50ステップ駆動する場合は下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=20)のままとします。
[255] [20] [6] [100] [2] [1] [2] [0] [50]
【命令105:ステッピングモータ、ステップ実行(ABch)】
<説明>
送信フォーマットのデータ列をマスタからSACに送信すると、SACは命令95で設定した加減速設定で、指定したチャンネルを指定した方向に指定した方式指定したステップ数を回転して止まります。1つのSACでは2つのステッピングモータを駆動できますが、この命令ではA又はB片方のステッピングモータを駆動します。この命令は命令95で加減速設定を行わないと実行されません。命令90を実行すると命令95の設定が消えてしまいますのでもう一度命令95を実行する必要があります。
<ステッピングモータの駆動方式>
ステッピングモータはA、Aバー、B、Bバー相の4つの相を、ある決まったパターンで駆動することにより回転します。駆動パターンにはいろいろあり、トルク重視や角度重視の駆動ができます。
SACの場合は
1)ハーフステップ(基本ステップ角の1/2づつ回転する)
2)2相励起(にそうれいき:基本ステップ角で回転するが、常に2つの相に電流が流れ、静止トルクが強い)
3)1/4マイクロステップ(基本ステップ角の1/4づつ回転する)
の3つのパターンが指定できます。
※正転の場合は、最後のステップまで行ったらステップ1にもどります。
※逆転の場合は、ステップ1までいったら最後のステップにもどります。
<一回目の起動時の注意>
電源を入れた直後は、前回どのステップで停止しているか判断できません。よって、前回止まった位置によっては起動後一回目の最初のステップが逆に回転する可能性があります。SACは動作中は現在のステップ位置を常に把握していますので、1ステップでも動作させればその後は指定したステップ数を間違いなく回転できます。よって、起動後は本番の駆動前に1ステップほど回転させることをお勧めします。
尚、3種類ある各駆動駆動方式はそれぞれ止まる位置が違いますので、駆動方式を変えた場合も、同様の問題が起きる可能性があります。
電源投入直後は必ずステップ1から始まります。
ステッピングモータの機種によっては、ハーフステップやマイクロステップに対応していないものもありますので注意して下さい。ちなみに、浅草ギ研で販売しているAA−STM15は2相励起でしか駆動できません。
<送信フォーマット>
[255] [ID(20-27)] [バイト長(6)] [命令(105)] [ch(0,1)] [モード(0-3)]
[方向(0-2)] [ステップ数上位] [ステップ数下位]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は6で固定です。
・命令は105で固定です。
・chはA又はBのチャンネルを指定します。
0:Ach
1:Bch
・モードは0−3で駆動方式を指定します。
1:ハーフステップ
2:2相励起
3:マイクロステップ(1/4)
・方向は指定したchの回転方向を指定します。0を指定すると回転しません。(回転中は回転停止になる)
0:停止
1:正転(ステップ1−2−3・・・の順に実行)
2:逆転(ステップ3−2−1・・・の順に実行)
・ステップ数は2バイトで指定し、最大で指定できるステップ数は65535となります。SACは指定されたステップを回転すると自動的に停止し、その位置を保持します。
ステップ数は2バイトで表しますので設定できる値は0〜65535までの数値となります。ステップ数上位・ステップ数下位とステップ数の関係は次のようになります。
ステップ数=(ステップ数上位x256)+ステップ数下位
ステップ数から上位と下位を計算するには次のようになります。
ステップ数上位=ステップ数を256で割った商
ステップ数下位=ステップ数を256で割った余り
<送信データ例>
Achを正転でマイクロステップで400ステップ駆動する場合は下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=20)のままとします。
ステップ数のパラメータは
ステップ数上位=400/256の商=1
ステップ数下位=400/256のあまり=144 となります。
[255] [20] [6] [105] [0] [3] [1] [1] [144]
【命令200:ステップ状態確認】
<説明>
送信フォーマットのデータ列をマスタからSACに送信すると、SACは現在ステッピングモータが動いているかどうかを確認し、その状態を返信します。
命令100又は命令105を実行してステッピングモータを駆動するとSACは指定されたステップ数までステッピングモータを回転しつづけますが、この命令で回転終了を判定できます。
<送信フォーマット>
[255] [ID(20-27)] [バイト長(1)] [200]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は1で固定です。
・命令は200で固定です。
<返信フォーマット>
[255] [ID(20-27)] [バイト長(1)] [状態(0-3)]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は1で固定です。
・状態は現在の状態を表します。
0:ステップ終了
1:chAがステップ中(命令100実行時には、両chがステップ中)
2:chBだけがステップ中
3:命令105実行中で、AB両方chがステップ中
<送信データ例>
現在のステップ状態を調べるには下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=20)のままとします。
[255] [20] [1] [200]
この時、たとえばABどちらのchも回転していなければ
[255] [20] [1] [0]
のデータが返されます。
たとえば、命令105を2回実行してAB両方のchを回転させた瞬間は
[255] [20] [1] [3]
となります。その後、chAの回転が終わったがchBはまだ回転している時は
[255] [20] [1] [2]
となります。その後、chBも回転が終わった場合は
[255] [20] [1] [0]
となります。
【命令254:セルフチェック】
<フォーマット>
[255] [ID(20-27)] [バイト長(1)] [命令(254)]
<説明>
SACはこの命令を受け取ると、同じ数値をマスタ側へ返信します。SACが正常に動作しているかどうかはこの命令を実行することにより確認することができます。尚、SACが起動時に正常に動作しているかどうかは、起動時にLEDが3回点滅しますのでそれで判断できます。
<送信データ例>
セルフチェックを行うには下のようなデータを送信します。IDは20だったとします。SACが正常動作していれば、同じデータが返されます。
[255] [20] [1] [254]
|
<ドキュメント>
■AGB65-SAC取扱説明書
<サンプルプログラム>
■PCからAGB65−SACを使ってマブチモータ、電磁石サーボAA−PT01、ステッピングモータを駆動してみる
■無線でPCと接続する
■H8からAGB65−SACを使ってマブチモータ、電磁石サーボAA−PT01、ステッピングモータを駆動してみる
■AVRからAGB65−SACを使ってマブチモータ、電磁石サーボAA−PT01、ステッピングモータを駆動してみる
■PICからAGB65−SACを使ってマブチモータ、電磁石サーボAA−PT01、ステッピングモータを駆動してみる
<トラブルシューティングQ&A>
Q:自作回路につないでいるがまったく動かない。ADCが正常に動作しているか確認したい。
A:SACは電源入り時に赤LEDが3回点滅します。これが確認できればSACは正常に動いていますので自作回路の方を重点的に確認してください。
この確認の時は電源以外のケーブルはつながないで下さい。
Q:マイコンと接続し、命令を送ったが返答が無い。
A:下記が考えられます。
・マイコンとSAC間でGNDを接続していない。
・SACのTXとマイコンのTXをつないでいる。(SACのTXはマイコンのRXへ、SACのRXはマイコンのTXへつなぎます。接続例の図を参照。)
・SACが起動し終わる前にデータを送ると、マスタ間の通信ができなくなる場合があります。電源起動後はしばらく(3秒程度)経過してからデータを送り始めるようにしてください。マイコンと接続する場合は、マイコンのプログラム起動後に3秒ほどウェイトをおくと問題がおきません。
・電源電圧が不足(バッテリなどの表面の表示値ではなく、テスタで実際に電圧を測って確認して下さい)
・マスタ側の通信速度とSAC側の通信速度が合っていない(マイコンで115kbps通信の場合は特に注意)
・データを数値データ(バイナリデータ)ではなく、キャラクタデータで送っている。
・マスタ側から送信する際のIDが間違っている。(SACのIDは20〜27です。ご注意下さい。)
・通信中に、SAC側の電源を切ると、その後にSACの電源を入れてもSACとマスタ間の通信が出来ない場合があります。この場合は一度マスタとSAC両方の電源を切り、SAC側を先に立ち上げてからマスタ側を立ち上げてください(マイコンがマスタの場合は電源を共通で使用していると思いますので、ソフト的に電源投入後しばらくしてからデータを送るようにプログラムしておけば、単純に電源を切り入りするだけで済みます)。
・SACの起動には約2秒ほどかかります。SAC起動直後に命令を送っても動作しませんので注意して下さい。
Q:ステッピングモータがブルブルしているだけで動かない
A:接続している端子が合っているか確認して下さい。特に、#1、#2ではL/Hの方向が逆になるので注意して下さい。#3,4も同様です。基板上の表示をよく見てください。
A:ステッピングモータは機種によって最高の回転速度が決まっています。一般的にDCモータのように速くはまわりませんので注意して下さい。性能を超えて早く回転させようとすると
ブルブルしているだけで回転しなくなります(脱調という現象)。
Q:ハーフステップやマイクロステップで動かすと、動きがギコチなくなる。
A:ハーフステップやマイクロステップに対応しているステッピングモータを使用してください。ちなみに、浅草ギ研で販売しているAA-STM15は2相励起でしか駆動できません。
Q:一番初めにステッピングモータを動かすときに、1パルス目が逆に動いてしまう場合がある。
A:起動後の一番初めの駆動は、ステップ1から始めます。例えば、前回電源を切るときにステッピングモータがステップ2で止まっていると、ステップ2−>ステップ1
となり、一番初めの回転は逆になる場合があります。1ステップでも動かせば、コントローラは現在のステップ位置を記憶していますので、逆回転することはありません。
よって、実際に動作させる前(起動直後)に、1ステップ動かす命令を出すことをお勧めします。
Q:マイクロステップと2相励起、又はマイクロステップとハーフステップを交互に繰り返すと、位置がズレていく。
A:各方式ではそれぞれのステップで止まる位置が違いますので、切り替えた後の絶対位置はズレます。基本的には駆動方式を固定して使用してください。
Q:ステッピングモータ駆動で、2相励起がうまく動かない。
A:ステッピングモータはそれぞれ決まった駆動電圧がありますが、ハーフステップやマイクロステップの場合は駆動電圧が低くでも動く場合があります。
ということで2相励起だけが上手く動かない場合は、モータ電圧が規定よりも低いことが考えられますので確認して下さい。
Q:ON/OFF命令で、1つのモータの両方の端子をHIGHにするとどうなるか?つまり、#1にDCモータをつないでいて、命令1の設定値を0x03(つまり1Lと1H両方
がHIGH)にするとどうなるか?
A:両方の端子をHIGHに設定するとHi-z(ハイインピーダンンス)状態になります。つまり、モータには何もつながっていないのと同じになります。
Q:LEDが点きっぱなしになる。
A:命令を送るときに 間違って少ないバイト数を送ると、受信処理が途中で止まり、LEDがつきっぱなしになることがあります。
この場合は、正しい命令を再度送ることでまた受信できるようになります。
A:通信設定が間違っている場合(特にSACを9600bps設定でデータを115200bpsで送った場合)もLEDがつきっぱなしになる場合があります。
通信設定はSACの電源投入時にだけ有効になるので、bpsのDIPスイッチを変更した場合はは電源を一旦切り入りしてください。
|