命令値 |
動作 |
方向 |
フォーマット |
|
<共通命令> |
|
|
0 |
全モータ停止 |
送信 |
[255][ID(28-31)][バイト長(1)][命令(0)] |
3 |
PWM駆動(1ch) |
送信 |
[255][ID(28-31)][バイト長(4)][命令(3)][ch(1-2)][方向][出力(0-100)] |
4 |
PWM駆動(2ch) |
送信 |
[255][ID(28-31)][長(5)][命令(4)][#1方向][出力(0-100)][#2方向][出力(0-100)]
|
7
|
全モータブレーキ |
送信 |
[255][ID(28-31)][長(1)][命令(7)]
|
10
|
1モータ駆動(パルス) |
送信 |
[255][ID(28-31)][長(5)][命令(10)][M1/M2][方向][パルス上位][パルス下位]
|
11
|
1モータ駆動(時間x10mS) |
送信 |
[255][ID(28-31)][長(5)][命令(11)][M1/M2][方向][時間上位][時間下位]
|
20
|
2モータ駆動(パルス) |
送信 |
[255][ID(28-31)][長(5)][命令(20)][M1方向][M2方向][パルス上位][パルス下位]
|
21
|
2モータ駆動(時間x10mS) |
送信 |
[255][ID(28-31)][長(5)][命令(21)][M1方向][M2方向][時間上位][時間下位]
|
30
|
PID設定 |
送信 |
[255][ID(28-31)][長(8)][命令(30)][M1Kp][M1Ki][M1Kd][M2Kp][M2Ki][M2Kd][DEADBAND]
|
40
|
PWM周期設定 |
送信 |
[255][ID(28-31)][長(2)][命令(40)][設定値(10-230)] *230=1mS
|
50 |
パルス数応答 |
送信 |
[255][ID(28-31)][長(1)][命令(50)] |
|
|
返信 |
[255][ID(28-31)][長(5)][命令(50)][M1上位]
[M1下位] [M2上位] [M2下位] |
254 |
セルフチェック |
送信 |
[255][ID(28-31)][長(1)][254] |
|
|
返信 |
[255][ID(28-31)][長(1)][254] |
上以外 |
無視されます。 |
|
|
※方向はマスタ側から見たデータの通信方向を表します。「送信」はマスタ−>コントローラへ送る命令、「受信」はコントローラ−>マスタへ返される結果を表します。
【命令0:全モータ停止】
<説明>
ch1及びch2のモータ端子の両端を0Vにします。回転中のモータは停止します。
<送信フォーマット>
[255][ID(28-31)][バイト長(1)][命令(0)]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはジャンパで設定したIDを指定します。(出荷時はID=28)
・バイト長は1で固定です。
・命令は0で固定です。
<送信データ例>
なにかの原因で、モータ回転中にすぐに停止させたい場合は次ような送信データになります。出荷時設定(115200bps、ID=28)のままとします。
[255] [28] [1] [0]
【命令3:PWM駆動(1ch)】
<説明>
0〜100%の出力指定で、モータを回します。
出力はPWM方式で制御します。電源ON時のPWM周期は0.435mSに設定されています。この周期は命令40で変えることができます(マブチモータなど、一般的なモータを使用する倍は、PWM周期はなるべく変更しないで下さい。)
<PWMの周期とデューティー(出力)>
パルス幅が周期の何%かを「デューティー」と言います。例えば、デューティー50%と言うと、パルス幅が周期の50%という意味になります。デューティー50%の場合は普通のアクチュエータは(おおまかに)出力が50%となります。
出力が50%でもモータによっては回転が50%やトルクが50%になるわけでは無い場合もありますので注意して下さい。あくまでデューティーで表される%の供給電力量が供給されます。
RCサーボを駆動する場合も「PWM方式」と表現しますが、厳密に言うとRCサーボの場合はパルス幅を15〜20mSに固定して、0.5〜2mSのパルス幅で制御しますのでここで説明しているような一般的に言うPWM制御とは違います。よってデューティーは15%程度以上にはなりません。つまり、このPWM方式ではRCサーボは駆動できませんので注意して下さい。RCサーボの駆動はAGB65-RSC2を使用してください。
この命令で設定した設定値は保存されません。電源を切ると標準の周期(1mS)に再設定されます。
<送信フォーマット>
[255][ID(28-31)][バイト長(4)][命令(3)][ch(1-2)][方向(0-2)][出力(0-100)]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDは設定したIDを指定します。(出荷時はID=28)
・バイト長は4で固定です。
・命令は3で固定です。
・chはch番号を指定します。1にするとch1の出力を、2にするとch2の出力を設定します。その他の値は無視されます。
・方向は次のようになります。 0=停止 1=CW(時計回り) 2=CCW(反時計まわり)
・出力は1%単位で値を設定します。
<送信データ例>
ID=28のボードのch2のモータを出力68%でCW方向に回転させる場合
[255] [28] [4] [3] [2] [1] [68]
【命令4:PWM駆動(2ch)】
<説明>
0〜100%の出力指定で、2つのモータを同時に回します。
出力はPWM方式で制御します。PWMについては命令3を参照願います。
<送信フォーマット>
[255][ID(28-31)][長(5)][命令(4)][ch1方向][ch1出力(0-100)][ch2方向][ch2出力(0-100)]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDは設定したIDを指定します。(出荷時はID=28)
・バイト長は5で固定です。
・命令は4で固定です。
・ch1方向は次のようになります。 0=停止 1=CW(時計回り) 2=CCW(反時計まわり)
・ch1出力は1%単位で値を設定します。
・ch2方向と、ch2出力もch1同様です。
<送信データ例>
ID=28のボードのch1のモータを出力65%でCW方向に、ch2のモータを出力75%でCCW方向に回転させる場合
[255] [28] [5] [4] [1] [65] [2] [75]
【命令7:全モータブレーキ】
<説明>
ch1及びch2のモータ端子の両端をHighにします。モータによっては、ブレーキがかかる状態になります。
<送信フォーマット>
[255][ID(28-31)][長(1)][命令(7)]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDは設定したIDを指定します。(出荷時はID=28)
・バイト長は1で固定です。
・命令は7で固定です。
<送信データ例>
ID=28のボードの全モータにブレーキをかける場合
[255] [28] [1] [7]
【命令10:1モータ駆動(パルス)】
<説明>
ロータリーエンコーダを使用している場合に、パルス数を指定してモータを回します。モータはPID制御で目的パルスまで回転します。PIDパラメータ設定(命令30)により挙動は変わります。目的パルス近辺になった場合は停止し、その位置を保持しつづけます。位置の保持を解除するには、命令0の停止命令を送ります。
<送信フォーマット>
[255][ID(28-31)][長(5)][命令(10)][M1/M2][方向][パルス上位][パルス下位]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDは設定したIDを指定します。(出荷時はID=28)
・バイト長は5で固定です。
・命令は10で固定です。
・M1/M2のところで、1を指定するとch1を、2を指定するとch2を駆動します。
・方向は次のようになります。 0=停止 1=CW(時計回り) 2=CCW(反時計まわり)
・パルス数は2バイトで指定します。「パルス上位」に上位バイトを、「パルス下位」に下位バイトを指定します。
<送信データ例>
ID=28のボードのch1を30パルスCW方向に回転させる場合
[255] [28] [5] [10] [1] [1] [0] [30]
ID=28のボードのch2を1024パルスCW方向に回転させる場合
[255] [28] [5] [10] [2] [1] [4] [0]
※たとえば、一回転の解像度が10bitのロータリーエンコーダが最終軸についている場合、1024パルス分駆動すれば1回転回ることになります。
【命令11:1モータ駆動(時間x10mS)】
<説明>
時間指定でモータをまわします。
<送信フォーマット>
[255][ID(28-31)][長(5)][命令(11)][M1/M2][方向][時間上位][時間下位]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDは設定したIDを指定します。(出荷時はID=28)
・バイト長は5で固定です。
・命令は11で固定です。
・M1/M2のところで、1を指定するとch1を、2を指定するとch2を駆動します。
・方向は次のようになります。 0=停止 1=CW(時計回り) 2=CCW(反時計まわり)
・時間は2バイトで指定します。「パルス上位」に上位バイトを、「パルス下位」に下位バイトを指定します。値x10mSの時間回転し、止まります。たとえば、値を100に指定すると10mSx100=1000mS=1秒間回転します。尚、モータによってはすぐに停止しない場合もありますので、1秒を指定してもちょうど1秒で止まるとは限りませんので注意してください。
<送信データ例>
ID=28のボードのch1を1秒間CW方向に回転させる場合
[255] [28] [5] [11] [1] [1] [0] [100]
【命令20:2モータ駆動(パルス)】
<説明>
ロータリーエンコーダを使用している場合に、パルス数を指定してモータを回します。この命令ではch1及びch2を同時に駆動します。モータはPID制御で目的パルスまで回転します。PIDパラメータ設定(命令30)により挙動は変わります。目的パルス近辺になった場合は停止し、その位置を保持しつづけます。位置の保持を解除するには、命令0の停止命令を送ります。
<送信フォーマット>
[255][ID(28-31)][長(5)][命令(20)][M1方向][M2方向][パルス上位][パルス下位]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDは設定したIDを指定します。(出荷時はID=28)
・バイト長は5で固定です。
・命令は20で固定です。
・方向は次のようになります。 0=停止 1=CW(時計回り) 2=CCW(反時計まわり)
・パルス数は2バイトで指定します。「パルス上位」に上位バイトを、「パルス下位」に下位バイトを指定します。
<送信データ例>
ID=28のボードのch1をCW方向、ch2をCCW方向に30パルスCW方向に回転させる場合
[255] [28] [5] [20] [1] [2] [0] [30]
【命令21:2モータ駆動(時間x10mS)】
<説明>
時間指定でモータをまわします。この命令ではch1とch2のモータを同時に駆動します。
<送信フォーマット>
[255][ID(28-31)][長(5)][命令(21)][M1方向][M2方向][時間上位][時間下位]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDは設定したIDを指定します。(出荷時はID=28)
・バイト長は5で固定です。
・命令は21で固定です。
・方向は次のようになります。 0=停止 1=CW(時計回り) 2=CCW(反時計まわり)
・時間は2バイトで指定します。「パルス上位」に上位バイトを、「パルス下位」に下位バイトを指定します。値x10mSの時間回転し、止まります。たとえば、値を100に指定すると10mSx100=1000mS=1秒間回転します。尚、モータによってはすぐに停止しない場合もありますので、1秒を指定してもちょうど1秒で止まるとは限りませんので注意してください。
<送信データ例>
ID=28のボードのch1をCW、ch2をCCWに1秒間CW方向に回転させる場合
[255] [28] [5] [21] [1] [2] [0] [100]
【命令30:PID設定】
<説明>
パルス数指定で駆動する場合はPID制御を行いますが、そのときのPIDパラメータを設定します。
<送信フォーマット>
[255][ID(28-31)][長(8)][命令(30)][M1Kp][M1Ki][M1Kd][M2Kp][M2Ki][M2Kd][DEADBAND]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDは設定したIDを指定します。(出荷時はID=28)
・バイト長は8で固定です。
・命令は30で固定です。
<パラメータの説明>
・M1、M2はそれぞれch1及びch2のパラメータを表します。
・Kpは比例制御係数を表し、初期値は5です。値は0〜254に可変です。一般的に比例係数を上げると目的位置までの到達時間が短くなりますが、本ボードの場合はホビー用のモータ中心にチューニングしてあるため、この係数を変えてもあまり変化はありません。
・Kiは積分制御係数を表し、初期値は10です。値は0〜254に可変です。この係数を上げると、目標位置までの到達時間が短くなりますが、オーバーシュートしやすくなります。
・Kdは微分係数を表し、初期値は1です。値は0〜254に可変です。この係数を上げると、外乱に強くなります。Kiのオーバーシュートを押さえる動きや、停止位置からズレた場合にすばやく復帰させるようになります。但し、システム構成によっては発振の原因にもなります。
・DEADBANDはデッドバンドを設定します。初期値は2です。たとえば、値が2の場合はパルスカウントがプラスマイナス2ズレてもそこで停止します。デッドバンドを小さくすると停止位置の精度が上がりますが、発振しやすくなります。デッドバンドを大きくすると発振はしづらくなりますが、停止位置の精度が落ちます。
※パラメータは各システムによってチューニングする必要があります。電源を切り入りすると設定値は初期値に戻りますので、チューニングによって得られた設定値を起動毎に設定する必要があります。
※本ボードでは単純なPID制御だけではなく、一度停止した後に外乱で軸をまわされた場合の制御、など、複数のロジックが入っています。実際の動作については実機を動かしながら挙動を確認してください。
【命令40:PWM周期設定】
<説明>
PWM駆動、又はパルス数指定駆動の場合のPWM周期を設定します。
値230が1mS周期に相当し、1〜254の範囲で設定できます。電源起動時には値100に設定されます。
<送信フォーマット>
[255][ID(28-31)][長(2)][命令(40)][設定値(10-230)] *230=1mS
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDは設定したIDを指定します。(出荷時はID=28)
・バイト長は2で固定です。
・命令は40で固定です。
・設定値で周期を設定します。
PWM周期ですが、PWM駆動で一般的なDCモータ(マブチモータなど)を駆動する場合は初期値の設定を変更する必要はありません。パルス駆動の場合、PWM周期を短くして反応を速くしたい場合にこの設定を変更してください。
尚、PWM周期の値を100以下にすると、PWM駆動時の解像度が落ちますので注意してください。パルス駆動の場合、PWMの解像度が下がっても動作にはあまり影響ありません。
<送信データ例>
ID=28のボードのPWM周期を0.1mS周期にする場合
[255] [28] [2] [40] [23]
【命令50:パルス数応答】
<説明>
パルス駆動時に、残りのパルス数を確認する命令です。
<送信フォーマット>
[255][ID(28-31)][長(1)][命令(50)]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDは設定したIDを指定します。(出荷時はID=28)
・バイト長は1で固定です。
・命令は50で固定です。
この命令を送信すると、下記のフォーマットで本ボードからの返信があります。
<返信フォーマット>
[255][ID(28-31)][長(5)][命令(50)][M1上位] [M1下位] [M2上位] [M2下位]
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDは設定したIDを指定します。(出荷時はID=28)
・バイト長は5で固定です。
・命令は50で固定です。
・パルス数は符号付2バイトの数値で返信されます。CW方向に回転していてまだ目標位置に達していない場合は正の数、CCW方向に回転している途中の場合は負の数が返されます。M1はch1、M2はch2の値です。
<送信データ例>
ID=28のボードの残りパルス数を確認する倍
[255] [28] [1] [50]
【命令254:セルフチェック】
<フォーマット>
[255] [ID(28-31)] [バイト長(1)] [命令(254)]
<説明>
本ボードはこの命令を受け取ると、同じ数値をマスタ側へ返信します。正常に動作しているかどうかはこの命令を実行することにより確認することができます。尚、起動時に正常に動作しているかどうかは、起動時にLEDが3回点滅しますのでそれで判断できます。
<送信データ例>
ID=28のボードのセルフチェックを行うには下のようなデータを送信します。正常動作していれば、同じデータが返されます。
[255] [28] [1] [254]
|