本文へ移動

tf-2md3-devel@t-frog.com

Re: __ブラ シレスモータ の動作確認方 法について

Date:
Mon, 12 Sep 2016 11:49:53 +0900
From:
Atsushi Watanabe <
atsushi dot w at ieee dot org
>
To:
tf-2md3-devel <
tf-2md3-devel at t-frog dot com
>
Subject:
[00141] Re: __ブラ シレスモータ の動作確認方 法について
河原様

渡辺です。

> また、100ではかなり振動が大きくなり、2000では回転後の挙動がコギングトルクを感じるようなカクっとした動きとなりました。

> 現物合わせの方法では、
> MOTOR_VCが400くらいでfree状態と同等程度になりました。
> それ以下の100〜200ではコギングのような挙動が出ます。

MOTOR_VCが小さいと、逆起電力補償が過剰にかかり、
回転にポジティブフィードバックがかかって暴走する(止まらなくなる)はずです。
なので、MOTOR_VCを小さくしても暴走しないようであれば、
位相が大幅にずれているか、エンコーダ類の回転方向が違う
かの、どちらかだと思います。
(本来は、真値よりほんの少し小さいだけでも暴走します。)

> 「手でタイヤを空中で回転させ、手を離した際に回転が止まらない場合には、止まるようになるまでMOTOR_VCを大きくする」
> とありますのは、逆起電力補償を大きくする、であって、MOTOR_VCは小さくする方向でしょうか?

MOTOR_VCは、回転数定数で単位が rpm/V なので、次式のように使われており、値を小さくすると大きな逆起電力補償がかかります。
(与える電圧) = (現在の回転数) / MOTOR_VC


以前に、パラメータの自動同定プログラム(DCモータのみ)を作っていたのですが、
パラメータ調整に関しての問い合わせが多いので、
ブラシレスモータの位相ずれ同定も含めてリリースしようかと考えています。
(すこし時間がかかると思いますが)



> 1点、ハード面で気になる所が出て来たのですが、
> 時々、起動から7秒ほど通信できない状態が起こるようになりました。
> LED1の点滅が消えず、usbに認識されない状態が7秒ほど、その後LED1が消えてからは通信できるようになります。
> これは何か対処法があるのでしょうか?

電源投入時にLED1の点滅が消えないのは、
自己故障診断に失敗している場合で、主にFPGAのイニシャライズの失敗です。
原因としては以下の2点が考えられます。
・電源供給が不安定
・半田不良


以上、よろしくお願いいたします。

// Atsushi WATANABE
// Assistant Professor
// Field Robotics Laboratory, Tohoku University
// 6-6-10, Aramaki-Aoba, Aoba-ku, Sendai, 980-8579, Japan
// Phone: [Telephone number removed] / E-mail:
atsushi dot w at ieee dot org



2016年9月4日 20:11 貴軌 河原 <
b1295223 at planet dot kanazawa-it dot ac dot jp
>:
> 渡辺 様
>
> お返事が遅くなり失礼致しました。
> 河原です。
>
>
>> ゲインを0にしたときの挙動はどのようになりますか?
>
> ゲイン0にてcodinaterを実行して手で回した場合では、回し始めと止める際に細かく振動したような反応で、回転してからはフリーの状態と同じでした。
> ギヤはすぐに取り付けられないためモータ軸を直接触っています。
>
> MOTOR_VCは500と1000では反応の違いがわかりませんでした。
> また、100ではかなり振動が大きくなり、2000では回転後の挙動がコギングトルクを感じるようなカクっとした動きとなりました。
> モータ端子を解放した状態をエミュレートという点では、500、1000付近が近そうです。
>
>
>
>> 逆起電力係数の現物合わせの調整方法としては、
>> ゲイン0、摩擦係数0の状態で、逆起電力係数を実際より大きめの値にしておき(軸を手で回すと、パッシブのブレーキが掛かり、重いはず)
>> 少しずつ逆起電力係数を小さくしていき、軸を手で回した時の重さが、モータをドライバから外して端子を解放したときと同じぐらいになるようにする
>> という手順で調整できます。
>
>
> 現物合わせの方法では、
> MOTOR_VCが400くらいでfree状態と同等程度になりました。
> それ以下の100〜200ではコギングのような挙動が出ます。
>
> 確認ですが、「逆起電力係数を実際より大きめの値にしておき」というのは、MOTOR_VCを小さい値にしておき、ということで大丈夫でしょうか?
> その場合、筑波大学知能ロボット研究室のHPに書いてある、YP-Spur/パラメータファイルの速度制御パラメータ欄の
> 「手でタイヤを空中で回転させ、手を離した際に回転が止まらない場合には、止まるようになるまでMOTOR_VCを大きくする」
> とありますのは、逆起電力補償を大きくする、であって、MOTOR_VCは小さくする方向でしょうか?
> http://www.roboken.iit.tsukuba.ac.jp/platform/wiki/yp-spur/parameter-file
>
> また、方向による差は感じないため、おそらく位相は大丈夫かと思います。
>
> 上記URLの手順にて、パラメータ設定を再度行いましたが、挙動は変わらず等速で回り続け、stop状態で手で回すと等速で回転し続けます。
>
>
>
>
>
> 別途、DCモータも用意できましたので動作確認をしました。
> こちらでは正しくオドメトリも取れて、run_testも想定通りの動きができる事を確認できました。
> 使用モータはRE35(24V仕様)、ギヤヘッド23:1です。
> ACモータの方は、スペックシートの怪しい外国製という点で、扱うのが難しそうですので、原因が特定できなさそうであればDCモータで使用しようと思います。
>
>
> 1点、ハード面で気になる所が出て来たのですが、
> 時々、起動から7秒ほど通信できない状態が起こるようになりました。
> LED1の点滅が消えず、usbに認識されない状態が7秒ほど、その後LED1が消えてからは通信できるようになります。
> これは何か対処法があるのでしょうか?
>
> お手数ですが宜しくお願い致します。
>
>
> 2016/08/08 23:15、Atsushi Watanabe <
atsushi dot w at ieee dot org
> のメール:
>
>> 河原さま
>>
>> ゲインを0にしたときの挙動はどのようになりますか?
>> (ギアがついている状態の方がわかりやすいですが)
>>
>> ゲイン0の状態だと、逆起電力補償のみが働く状態になり、
>> モータ軸を外力で回したときの挙動は、
>> モータ特性のパラメータが正しければモータ端子を解放した状態をエミュレートします。
>>
>>
>> モータのパラメータについてですが、
>> スペックシート中のRated speedは、パラメータ生成ツールの無負荷回転数とは異なる意味のようです。
>> (おそらく、機械的な許容最大回転数を表している。)
>> Resistanceの項が回転数定数のようで
>> 0.00413 V/rpm = 242 rpm/V
>> 定格24Vなので、パラメータ生成ツールでの入力値としては、5811 rpm が正しく、
>> パラメータファイル上は968.5 になります。
>>
>> これが正しいとすると、現在の値が500くらいになっているので、
>> 過剰に逆起電力補償をして(この値が小さいほど大きく逆起電力補償をする)、暴走するような挙動を示すはずです。
>>
>> ただし、このモータのスペックシートの値がかなりいい加減なように見えます。
>> (左側の方のモータは、トルク係数と逆起電力係数の関係から計算すると、
>> エネルギー効率100%以上(?)になる。指数部の誤植らしき場所も複数。)
>> ので、現物合わせで調整した方がよいかもしれません。
>>
>>
>> 逆起電力係数の現物合わせの調整方法としては、
>> ゲイン0、摩擦係数0の状態で、逆起電力係数を実際より大きめの値にしておき(軸を手で回すと、パッシブのブレーキが掛かり、重いはず)
>> 少しずつ逆起電力係数を小さくしていき、軸を手で回した時の重さが、モータをドライバから外して端子を解放したときと同じぐらいになるようにする
>> という手順で調整できます。
>> ただし、軸を手で回したときの重さが、方向によって非対称な場合は、UVW信号と、モータ端子の位相がずれていますので、
>> PHASE_OFFSETの値で対称になるように調整する必要があります。
>>
>> // Atsushi WATANABE
>> // Assistant Professor
>> // Field Robotics Laboratory, Tohoku University
>> // 6-6-10, Aramaki-Aoba, Aoba-ku, Sendai, 980-8579, Japan
>> // Phone: [Telephone number removed] / E-mail:
atsushi dot w at ieee dot org

>>
>>
>> 2016年8月7日 17:54 河原貴軌 <
b1295223 at planet dot kanazawa-it dot ac dot jp
>:
>>> 渡辺 様
>>>
>>> ご連絡ありがとうございます。
>>>
>>> 早速VVVFモードにてエンコーダの回転方向を確認してみたのですが、接続は正しいようでした。
>>>
>>>> モータ、エンコーダ、UVW信号すべての回転方向があっていないと、
>>>> 正しく制御できないので、そのあたりが怪しい気がしています。
>>>> (UVW信号・モータ駆動端子のUVWの対応はついていますか?)
>>>
>>>
>>> UVW信号・モータ駆動端子のUVWの対応は、
>>> カタログ上ではついていますが、海外製なので念のため差し替えて確認もしています。
>>> ホール素子の回転方向に関しては、オシロなどで立ち上がり順を確認しました。矩形波で、一回転につき4パルス出て来ます。
>>>
>>> ホール素子を差し替えた場合は、カタログの位相から120度ずらしたパターンと240度ずらしたパターンとなりますが、片方は挙動が変わらず制御がきかない状態で等速で周り続け、もう片方は発振して回りませんでした。
>>>
>>>
>>> センサ類の配線で無いようなのですが、他に考えられる事はありますでしょうか?
>>>
>>> お手数ですが、宜しくお願い致します。
>>>
>>>
>>>> モータ、エンコーダ、UVW信号すべての回転方向があっていないと、
>>>> 正しく制御できないので、そのあたりが怪しい気がしています。
>>>> (UVW信号・モータ駆動端子のUVWの対応はついていますか?)
>>>>
>>>>> U端子に対してVに120度送れた波形をかけて回転した時の立ち上がりをとマニュアルにありますが、
>>>>> 3相波形をテスト用に生成する事はこのMDで可能でしょうか?
>>>>
>>>> ファームウェア、とyp-spurのアップデートが必要なのですが、
>>>> エンコーダ・UVW信号を使わずに、VVVFで駆動して回転方向を確認することができます。
>>>> ファームウェアを devel_v0.1.4_rc5に、yp-spurを v1.15.0-rc3 にして、
>>>> パラメータファイルで、
>>>> ENCODER_TYPE 0
>>>> とすると、VVVFでの制御モードになります。
>>>>
>>>> この状態で、軸角速度指令を与えると、回転方向を確認できます。
>>>> ypspur-interpreter で
>>>>  set_wheel_vel (右角速度制限[rad/s]) (左角速度制限[rad/s])
>>>>  set_wheel_accel (右角加速度制限[rad/s]) (左右角加速度制限[rad/s])
>>>> と設定し、
>>>>  wheel_vel (右角速度[rad/s]) (左角速度[rad/s])
>>>> コマンドで各軸の角速度指令を与えられます。
>>>>
>>>> 各軸の角速度指令に正の値を与えたときの回転方向を覚えておき、
>>>> モータ駆動端子をはずすか、駆動系電源を供給せずに
>>>> ENCODER_TYPE 2 (2相エンコーダモード)
>>>> の状態で起動します。
>>>> 先ほどの回転方向に軸を手で回転させながら
>>>> ypspur-interpreter で
>>>>  get_wheel_vel
>>>> コマンドで、角速度を確認して下さい。
>>>> この角速度の符号が正であれば、エンコーダの位相と、モータの回転方向が一致しています。
>>>>
>>>>
>>>> ファームウェアのアップデート方法はマニュアルに、
>>>> yp-spurの開発中バージョンへのアップデートは、openspur.orgのwikiにあります。
>>>> なお、マニュアル中のLinuxでのファームウェアアップデート方法で、
>>>> google codeからsambaをダウンロードするところのURLが、無くなってしまっているので、
>>>> 1行目のところを
>>>> $ git clone https://github.com/at-wat/samba.git
>>>> に置き換えて下さい。
>>>>
>>>> // Atsushi WATANABE
>>>> // Assistant Professor
>>>> // Field Robotics Laboratory, Tohoku University
>>>> // 6-6-10, Aramaki-Aoba, Aoba-ku, Sendai, 980-8579, Japan
>>>> // Phone: [Telephone number removed] / E-mail:
atsushi dot w at ieee dot org

>>>>
>>>>
>>>> 2016年8月6日 22:56 河原貴軌 <
b1295223 at planet dot kanazawa-it dot ac dot jp
>:
>>>>> 東北大 渡辺 様
>>>>>
>>>>> 河原です。
>>>>> ご連絡ありがとうございます。
>>>>>
>>>>>> RADIUSの値は、キネマティクス・逆キネマティクスの計算のみに用いるので、
>>>>>> モータ制御には影響を与えません。
>>>>>> 現状、エンコーダのA,B相を逆に接続している場合に、
>>>>>> ソフトウェアで逆転する設定は用意していません。
>>>>>> もし、逆の場合は配線を修正して下さい。
>>>>>
>>>>>
>>>>> エンコーダのA,B相が逆の可能性もあると思い入れ替えもしましたが、動作時に発振して回らない状態になります。
>>>>> 発振している状態が、本来の回転方向と逆に接続されているための発振かと思い、とりあえず等速に回る方向に接続しています。
>>>>>
>>>>> U端子に対してVに120度送れた波形をかけて回転した時の立ち上がりをとマニュアルにありますが、
>>>>> 3相波形をテスト用に生成する事はこのMDで可能でしょうか?
>>>>>
>>>>>> 多極のモータなので、マニュアルにも記載していますが、
>>>>>> 2磁極(電気角と機械角が一致)するモータにギアがついているように換算してパラメータを与える必要があります。
>>>>>> このあたりの計算は、ドライバのページからリンクがある、パラメータ生成ツールで計算できます。
>>>>>> モータのスペックに4極と書いてあるのは、おそらく4磁極なので、
>>>>>> パラメータ生成ツールの極数欄には2を入力することになります。
>>>>>
>>>>>
>>>>> 失礼致しました。
>>>>> モータスペックに8極と書かれていたので、4のパラメータに設定してあります。
>>>>>
>>>>>
>>>>> 現象の追加情報ですが、ypspur-coodinaterの起動後にモータ軸を手で回すと、回した方向に等速で回り始めます。
>>>>> ホール素子の配線が間違えていればこういう現象が起こる事もありますでしょうか?
>>>>> 1カ所のみテストとしてホール素子の方向を変えた場合には発振して回らず、位相をずらした場合は挙動は変わらず等速で回り続けます。
>>>>>
>>>>>
>>>>> 何かアドバイス頂けたらと思います。
>>>>> 宜しくお願い致します。
>>>>>
>>>>>
>>>>>
>>>>>> ドライバ設計者の、東北大の渡辺です。
>>>>>>
>>>>>>> 12 RADIUS[0] 0.150000
>>>>>>> 12 RADIUS[1] -0.150000
>>>>>>> のパラメータを++や-+、--に変更しても正しく動作しません。++、--の場合は下記よりも角速度が速くなり、パラメータ通りその場回転の動作になります。
>>>>>>
>>>>>> RADIUSの値は、キネマティクス・逆キネマティクスの計算のみに用いるので、
>>>>>> モータ制御には影響を与えません。
>>>>>> 現状、エンコーダのA,B相を逆に接続している場合に、
>>>>>> ソフトウェアで逆転する設定は用意していません。
>>>>>> もし、逆の場合は配線を修正して下さい。
>>>>>>
>>>>>>
>>>>>>> 1回転1000パルスの2相エンコーダ、3相ホール素子、原点信号(index)のセンサを持ち、4極のブラシレスモータとなります。5V電源を入れた状態で、GNDとパルス間の波形はオシロで出ている事は確認してあります。
>>>>>>
>>>>>> 多極のモータなので、マニュアルにも記載していますが、
>>>>>> 2磁極(電気角と機械角が一致)するモータにギアがついているように換算してパラメータを与える必要があります。
>>>>>> このあたりの計算は、ドライバのページからリンクがある、パラメータ生成ツールで計算できます。
>>>>>> モータのスペックに4極と書いてあるのは、おそらく4磁極なので、
>>>>>> パラメータ生成ツールの極数欄には2を入力することになります。
>>>>>>
>>>>>> // Atsushi WATANABE
>>>>>> // Assistant Professor
>>>>>> // Field Robotics Laboratory, Tohoku University
>>>>>> // 6-6-10, Aramaki-Aoba, Aoba-ku, Sendai, 980-8579, Japan
>>>>>> // Phone: [Telephone number removed] / E-mail:
atsushi dot w at ieee dot org

>>>>>>
>>>>>>
>>>>>> 2016年8月3日 0:44 河原貴軌 <
b1295223 at planet dot kanazawa-it dot ac dot jp
>:
>>>>>>> お世話になっております。
>>>>>>> 金沢工業大学OBの河原と申します。
>>>>>>>
>>>>>>>
>>>>>>> 趣味用途で貴社のモータドライバTF-2MD3-R6Aを使用してブラシレスモータを回そうとしているのですが正常な動作を確認できず、ご教授願いたく連絡致しました。
>>>>>>>
>>>>>>> 現状、モータの接続と動作確認のため、ギアやタイヤなどを付けずにrun_testの動作を机上で見ているのですが、回転後に速度が変動せず制御されている動作が確認できません。
>>>>>>> また、-oで確認できるオドメトリの値も回転方向が補正されず、正しく動いているように見えません。
>>>>>>> パラメータなのか、何か問題があればご指摘お願い致します。
>>>>>>>
>>>>>>>
>>>>>>> 環境としては
>>>>>>> ・ypspurをインストールしたUbuntu14.04から、sampleのrun_testで動作確認を行っています。
>>>>>>>
>>>>>>> そのrun_testの動作中、本来は2つのモータが逆回転し、1m進んだ所で一度停止、同じ方向に回転して旋回動作、180度(th 1.57)になると再度停止し、1m戻ってくるような動作になると思いますが、
>>>>>>> 両モータとも反転動作も無く、等速で回転し続ける状態から変化しません。
>>>>>>> メールの最後に動作中のコンソールを添付しましたが、直進の制御になるはずが角度補正が制御されず回転を続けるような動作に見えます。
>>>>>>>
>>>>>>> エンコーダの回転方向が怪しいとは思いましたが、
>>>>>>> 12 RADIUS[0] 0.150000
>>>>>>> 12 RADIUS[1] -0.150000
>>>>>>> のパラメータを++や-+、--に変更しても正しく動作しません。++、--の場合は下記よりも角速度が速くなり、パラメータ通りその場回転の動作になります。
>>>>>>> たまたまx座標が1mを超えた事でspin指令に入る事がありますが、停止せず逆回転もなくそのまま周り続けます。
>>>>>>>
>>>>>>> ・モータはACサーボモータ(3相ブラシレス)の「42JSF630AS-1000」という中国製の物を使用しています。
>>>>>>> ( http://www.jmc-driver.com/h-pd-138.html )
>>>>>>> 1回転1000パルスの2相エンコーダ、3相ホール素子、原点信号(index)のセンサを持ち、4極のブラシレスモータとなります。5V電源を入れた状態で、GNDとパルス間の波形はオシロで出ている事は確認してあります。
>>>>>>> 定格は24Vですが、今は駆動電圧12Vで動作を行っています。
>>>>>>> エンコーダの位相遅れなどが明記されていなかったため、配線は手探りで安定して回転できる接続を探しました。
>>>>>>>
>>>>>>> MASSも1や25kgとしてみたりしましたが特に変化ありません。
>>>>>>> ファームウエアについては、既存の物とv0.1.3の両方を試しています。
>>>>>>> LEDなども異常アラームは発生していません。
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> お手数ですが、宜しくお願い致します。
>>>>>>>
>>>>>>>
>>>>>>> ・参考までに動作中のコンソール表示を下記に添付致します。
>>>>>>> ~/ypspur/yp-robot-params/robot-params$ ypspur-coordinator -p test.param -d /dev/ttyACM1 --verbose -o
>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>> YamabicoProject-Spur
>>>>>>> Ver. 1.14.0
>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>> Device Information
>>>>>>> Port : /dev/ttyACM1
>>>>>>> Vender : T-frog Prject
>>>>>>> Product : T-frog Motor Driver rev.5
>>>>>>> Firmware: 98d3cea
>>>>>>> Protcol : YPP:06:00
>>>>>>> Serialno: 01300000
>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>> Driver depending parameters
>>>>>>> Name : unknown
>>>>>>> PWM resolution: 1200
>>>>>>> Motor number : 2
>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>> Parameter file: test.param
>>>>>>> 0 VERSION 4.000000
>>>>>>> 5 VOLT 12.000000
>>>>>>> 6 CYCLE 0.001000
>>>>>>> 16 CONTROL_CYCLE 0.020000
>>>>>>> 2 TORQUE_FINENESS 0.000005
>>>>>>> 12 RADIUS[0] 0.150000
>>>>>>> 12 RADIUS[1] -0.150000
>>>>>>> 15 TREAD 0.200000
>>>>>>> 37 MASS 0.500000
>>>>>>> 40 TIRE_M_INERTIA 0.000000
>>>>>>> 38 MOMENT_INERTIA 0.000000
>>>>>>> 31 TORQUE_VISCOS 0.000050
>>>>>>> 30 TORQUE_NEWTON 0.020000
>>>>>>> 29 TORQUE_MAX 0.200000
>>>>>>> 36 TORQUE_LIMIT 1.000000
>>>>>>> 11 MOTOR_PHASE 3.000000
>>>>>>> 4 COUNT_REV 1000.000000
>>>>>>> 7 GEAR 4.000000
>>>>>>> 10 MOTOR_VC 500.000000
>>>>>>> 9 MOTOR_TC 0.053000
>>>>>>> 8 MOTOR_R 1.100000
>>>>>>> 39 MOTOR_M_INERTIA 0.000000
>>>>>>> 27 GAIN_KP 10.000000
>>>>>>> 28 GAIN_KI 3.000000
>>>>>>> 34 INTEGRAL_MAX 0.500000
>>>>>>> 17 MAX_VEL 2.000000
>>>>>>> 18 MAX_W 3.000000
>>>>>>> 19 MAX_ACC_V 2.000000
>>>>>>> 20 MAX_ACC_W 12.000000
>>>>>>> 21 MAX_CENTRI_ACC 2.450000
>>>>>>> 22 L_C1 0.010000
>>>>>>> 23 L_K1 800.000000
>>>>>>> 24 L_K2 300.000000
>>>>>>> 25 L_K3 200.000000
>>>>>>> 26 L_DIST 0.600000
>>>>>>> A 0.000703
>>>>>>> B 0.000703
>>>>>>> C -0.000703
>>>>>>> D -0.000703
>>>>>>> E 0.000000
>>>>>>> F 0.000000
>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>>
>>>>>>> Warn: Baudrate setting is not supported on this device.
>>>>>>> Applying parameters.
>>>>>>> YP-Spur coordinator started.
>>>>>>> Trajectory control loop started.
>>>>>>> Command analyzer started.
>>>>>>> 0.007422 0.000000 -0.142550
>>>>>>> 0.007422 0.000000 -0.142550
>>>>>>> 0.007422 0.000000 -0.142550
>>>>>>> 0.007422 0.000000 -0.142550
>>>>>>> Command: vel 1.000000
>>>>>>> Mode: servo 1
>>>>>>> Command: dvel 1.000000
>>>>>>> Command: w 0.157080
>>>>>>> Command: dw 1.570796
>>>>>>> Command: set pos 0.000000 0.000000 0.000000
>>>>>>> Command: stop_line 0.997279 -0.142067 -0.142550
>>>>>>> Mode: servo 3
>>>>>>> Command: over line ( dist = -0.995000 )
>>>>>>> 0.007422 0.000000 -0.142550
>

References