本文へ移動

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

Re: __Re:_ダ イレクト] ] ] ドラ イブモータの パラメータ設 定について

Date:
Sat, 06 Aug 2016 21:24:37 +0900
From:
Atsushi Watanabe <
atsushi dot w at ieee dot org
>
To:
tf-2md3-devel <
tf-2md3-devel at t-frog dot com
>
Subject:
[00129] Re: __Re:_ダ イレクト] ] ] ドラ イブモータの パラメータ設 定について
一点忘れていました。

前のメールで説明したとおり、このモータでは300rpm以上では、
通信上のエンコーダ値がオーバーフローします。
yp-spur側を、v1.15.0-rc3以降にして、パラメータファイルに
ENCODER_DIV n
のように記載すると、通信上のエンコーダ値を 2^n で割って扱います。

オドメトリなどは、適切に換算して計算するようになっています。

// 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日 20:20 Atsushi Watanabe <
atsushi dot w at ieee dot org
>:
> 明治大学 細田さま、黒田先生
>
> 渡辺です。
>
> エンコーダ信号のフィルタ周波数を高くしたところ、
> 元の4倍程度(2000kP/s)程度までは、何とか読めることがわかりました。
> (理論値で、このモータ換算で最大500rpmくらい)
>
> ドライバのEEPROMに保存されている設定を変更することで、
> エンコーダのサンプリング周波数を上げられるようにしました。
> (ノイズ耐性も下がるので、デフォルト設定は、元のままにしています。)
> この設定により、300rpm弱までは、制御が可能になります。
>
> 加えて、300rpmぐらいの領域から、エンコーダから受け取っているパルス波形の
> 歪みが大きくなり、パルスの読み飛ばしが発生します。
> 現行のファームウェアでは、磁気式のホール素子の特性を考慮して、
> 電気角速度10Hz(このモータだと機械角速度1.25Hz = 75rpm)以上では、
> UVW信号を使わず、パルスエンコーダのみを使用するようにしています。
> そのため、300rpm以上では、読み飛ばしにより電気角がずれてしまい、
> 無効電流が大きくなってしまいます。
> こちらも、新たに設定を追加して、常にUVW信号を信頼できるようにしました。
> これにより、オドメトリは少しずれますが、モータ制御への影響は無くなり、
> 400rpm弱までは制御が可能です。
>
> 現状400rpm以上では読み飛ばしの量が非常に大きくなり、制御できなくなります。
> 原因であるパルス波形の歪みは、エンコーダの配線の問題で発生しているようです。
> このエンコーダは差動ライン出力だと思いますので、
> ドライバの近くにラインレシーバICを追加することをおすすめします。
>
>
> これらの変更点のドライバへの適用ですが、
> AlteraのFPGAに、アクティブシリアルモードで書き込めるダウンロードケーブル
> (ALTERA USB Blasterなど)はお持ちでしょうか?
> もしあるようでしたら、マニュアルのピン配置図に従って、ダウンロードケーブルを
> 接続すれば書き込めますので、ファイルをお送りします。
>
> また、ファームウェアは devel_v0.1.4_rc5 以降を使用してください。
> 上記の設定は、モータドライバのUSBポートを、ターミナルソフトで開いて、
> $HFREQENC1
> $RELYHALL1
> $EEPROMSAVE
> と入力することで有効化できます。(行頭の$も入力してください。)
> 入力しても何も表示されない場合、改行コードが異なっている可能性がありますので、
> 改行コードの設定を変更して設定の有効化からやり直す必要があります。
> また、
> PP
> と入力したときの出力で、OPTION:欄にRELYHALL, HFREQENCと
> 表示されていることを確認してください。
>
> // 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月2日 23:28 HOSODA YUUKI <
ee33080 at meiji dot ac dot jp
>:
>> 渡辺さま
>>
>>
>> いつもお世話になっております.
>>
>> 細田です.
>>
>>
>> お忙しい中での検証ありがとうございます.
>>
>> こちらで想定している回転数としては,通常時100rpm,高速回転時300rpmを想定しています.
>>
>>
>> ご迷惑をおかけしますが,よろしくお願いします.
>>
>> ーーーーーーーーーーーーーー
>>
>> 明治大学
>>
>> ロボット工学研究室
>>
>> 細田 佑樹
>>
>>
>> E-mail:
ee33080 at meiji dot ac dot jp

>>
>> ーーーーーーーーーーーーーー
>>
>>
>> ________________________________
>> 差出人: Atsushi Watanabe <
atsushi dot w at ieee dot org
>
>> 送信日時: 2016年8月1日 17:55:49
>> 宛先: tf-2md3-devel
>> 件名: [tf-2md3-devel:00125] Re: __Re:_ダ イレクト ] ] ドラ イブモータの パラメータ設 定について
>>
>> 明治大 細田さま、黒田先生
>>
>> 渡辺です。
>>
>> お借りしたモータで、ファームウェア上の
>> カウンタのオーバーフローの問題は一応解決しました。
>> (PCからドライバのパラメータ送信のビット数はもともと32bitだったのですが、
>> 内部で保持する変数が16bitだった点と、制御の計算式中でのオーバーフローが
>> あった点を修正しました。)
>>
>> ファームウェアを、devel_v0.1.4_rc4 にアップデートし、
>> yp-spur を、v1.15.0-rc2 ブランチにして実行すると、
>> とりあえず制御は可能になります。
>>
>> パラメータファイルの生成に関して、
>> 製品のデータシートの表記の解釈が若干難しいのですが、
>> 600 rpm は、機械的な許容最大回転数で、
>> 等価誘起電圧定数から計算すると無負荷最大回転数は 3000 rpm になります。
>>
>> 具体的には、16 V/krpm = 62.5 rpm/V
>> 無負荷最大回転数@48V = 3000 rpm
>> パラメータとしては、62.5 rpm/V * 8 極 = 500
>>
>> また、モータと極センサのUVW相の配線(?)が違っているようで、
>> PHASE_OFFSETのパラメータを指定する必要がありました。
>> (-120度なので、センサの配線が1つずつシフトしている?)
>>
>> 加えて、現状では以下2点の制約があります。
>>
>> 1. エンコーダパルスが、ノイズフィルタの周波数以上になってしまう
>>
>> FPGA上で、3 MHz, 3 bit median filter をかけているため、
>> High、Low それぞれ 1 us 以上ホールドする必要があります。
>> これより、A,B各相の最大周波数は 500 kP/s
>>
>> モータ仕様は 324 kP/R なので
>> 1.5 Hz = 90 rpm 以上の回転数ではエンコーダの読み飛ばしが発生します。
>>
>> この制約は、FPGAのファームウェアによる物で、
>> 3 MHz のところを最大 48 MHz まで大きくできますが、
>> ノイズフィルタとの兼ね合いなので、しっかり検証する必要があります。
>>
>> このファームウェア書き換えは、基板上のUSBコネクタからは行えません。
>> 一方、マイコンのファームウェアとは独立に変更を加えられるので、
>> ひとまずこのモータ用に使っているドライバのFPGAだけ、
>> 高速仕様に変更するのは行い易いです。
>>
>>
>> 2. パルス数を送る通信がオーバーフロー
>>
>> マイコン-PC間のオドメトリ計算用の5msごとの通信が
>> 16bit signed なので ±32,768 cnt/5ms 未満の必要あり。
>> 6,553,600 cnt/s = 1,638,400 P/s より
>> 5.1 Hz = 303 rpm 以上の回転数ではエンコーダ値が取れなくなります。
>>
>> こちらは、オドメトリ計算上はここまでのパルス数は不要なので、
>> 通信する値を 1/n にするような設定を用意するのが妥当かと考えています。
>> (現状、1番目の制約が強いので、未着手です。)
>>
>> また、ドライバ内のマイコン-FPGA間の通信にも同じ問題がありますが、
>> こちらは 50 us ごとの通信なので、上記の100倍の余裕があるため考慮する必要はなさそうです。
>>
>>
>>
>> 現状、約90rpm以下であれば、モータドライバの、通常のファームウェア書き換え
>> のみで対応できますが、それ以上の回転数は、
>> FPGAの書き換えが必要になり、もう少し検証が必要です。
>>
>>
>> 調整したパラメータは下記のとおりです。
>>
>> -------
>> VERSION 4
>> VOLT 16
>> CONTROL_CYCLE 0.02
>> TORQUE_FINENESS 0.00000001
>>
>> MOTOR_PHASE 3
>> COUNT_REV 162000
>> ENCODER_TYPE 2
>> CYCLE 0.001
>> MOTOR_R 1.8
>> TORQUE_MAX 0.0413
>> TORQUE_LIMIT 0.113
>> MOTOR_VC 550
>> MOTOR_TC 0.016
>> PHASE_OFFSET 4.188
>>
>> GEAR 8
>> TREAD 1
>> RADIUS[0] 0.3
>> RADIUS[1] -0.3
>>
>> MASS 0.1
>> MOMENT_INERTIA 0
>> TIRE_M_INERTIA 0.0
>> MOTOR_M_INERTIA 0.000000124
>>
>> L_C1 0.01
>> L_K1 800
>> L_K2 300
>> L_K3 200
>> L_DIST 0.6
>>
>> MAX_VEL 1
>> MAX_W 2
>> MAX_ACC_V 2
>> MAX_ACC_W 4
>> MAX_CENTRI_ACC 1.96
>>
>> GAIN_KP 10
>> GAIN_KI 1000
>> INTEGRAL_MAX 0.05
>> TORQUE_NEWTON 0
>> TORQUE_VISCOS 0
>> -------
>>
>>
>>
>> // 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年7月28日 14:07 HOSODA YUUKI <
ee33080 at meiji dot ac dot jp
>:
>>> 細田です.
>>>
>>>
>>> モータ送ることができるので,修正の件よろしくお願いします.
>>>
>>> モータを送るにつきまして,宛名を教えていただいてもよろしいでしょうか?
>>>
>>> ________________________________
>>> 差出人: Atsushi Watanabe <
atsushi dot w at ieee dot org
>
>>> 送信日時: 2016年7月28日 11:10:02
>>> 宛先: tf-2md3-devel
>>> 件名: [tf-2md3-devel:00123] Re: __Re:_ダ イレクト ] ドラ イブモータの パラメータ設 定について
>>>
>>> 黒田先生
>>>
>>> 渡辺です。
>>> 手元に該当するようなモータが無いため、このままだと手探りでの修正になり、時間がかかってしまいます。
>>> モータをお借りすると早いのですが、可能でしょうか?
>>>
>>> // 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年7月27日 23:33 黒田洋司 <
ykuroda at meiji dot ac dot jp
>:
>>>> 渡辺さん
>>>>
>>>> 黒田です.ご確認有難うございます.カウンタがオーバーフローしているなら
>>>> あの挙動は納得できます.実は大変に急いでおります.最悪でもお盆になる前に
>>>> なんとかなると有難いのですが.
>>>>
>>>> 黒田
>>>>
>>>>
>>>>> 2016/07/27 19:14、Atsushi Watanabe <
atsushi dot w at ieee dot org
> のメール:
>>>>>
>>>>> 細田さま
>>>>>
>>>>> 渡辺です。
>>>>>
>>>>> 原因はドライバ内でエンコーダ分解能のパラメータを16bitで扱っている為とわかりました。
>>>>> これは、PCからドライバにパラメータを送るプロトコルが16bit仕様なことに起因しています。
>>>>> (カウント自体は32bitで行っているので、制御系そのものには問題ありません。)
>>>>>
>>>>> 現在、ファームウェアのメジャーアップデートの準備をしており、この修正も含めたいと思います。
>>>>> すみませんが、少々お待ちください。
>>>>> (ちなみに、どのくらい急いでいますか?)
>>>>>
>>>>> 2016/07/25 午後10:53 "HOSODA YUUKI" <
ee33080 at meiji dot ac dot jp
>:
>>>>>
>>>>> 細田です.
>>>>>
>>>>>
>>>>>> パラメータ生成の極数欄でいうと、N極が8, S極が8で、8になるかもしれません。
>>>>>> モータを回したときの、UVW矩形波のパルス数を見ると確実です。
>>>>>
>>>>> UVW短形波を確認したところ,パルスの数は8でした.
>>>>>
>>>>> パラメータ生成を極数8にして何度かパラメータをいじってみましたが,モータの挙動は前回同様不規則な回転と停止になってしまいました.このような場合どのように対処すればいいでしょうか
>>>>>
>>>>>
>>>>> 現在のパラメータです.
>>>>>
>>>>> VERSION 4
>>>>> VOLT 24
>>>>> CONTROL_CYCLE 0.02
>>>>> TORQUE_FINENESS 0.000001
>>>>>
>>>>> MOTOR_PHASE 3
>>>>> COUNT_REV 162000
>>>>> ENCODER_TYPE 2
>>>>> CYCLE 0.001
>>>>> MOTOR_R 8
>>>>> TORQUE_MAX 41.25
>>>>> TORQUE_LIMIT 125
>>>>> MOTOR_VC 100
>>>>> MOTOR_TC 0.0955
>>>>>
>>>>> GEAR 8
>>>>> RADIUS[0] 0.159
>>>>> RADIUS[1] -0.159
>>>>>
>>>>> MASS 3
>>>>> TIRE_M_INERTIA 0.0379
>>>>> MOTOR_M_INERTIA 0.938
>>>>>
>>>>> L_C1 0.01
>>>>> L_K1 800
>>>>> L_K2 300
>>>>> L_K3 200
>>>>> L_DIST 0.6
>>>>>
>>>>> MAX_CENTRI_ACC 1.96
>>>>>
>>>>> GAIN_KP 0
>>>>> GAIN_KI 0
>>>>> INTEGRAL_MAX 0.05
>>>>> TORQUE_NEWTON 0
>>>>> TORQUE_VISCOS 0
>>>>>
>>>>>
>>>>> よろしくお願いします
>>>>>
>>>>> ________________________________
>>>>> 差出人: Atsushi Watanabe <
atsushi dot w at ieee dot org
>
>>>>> 送信日時: 2016年7月25日 15:03:20
>>>>> 宛先: tf-2md3-devel
>>>>> 件名: [tf-2md3-devel:00119] Re: ダイレクトドライ ブモータのパラメータ設定について
>>>>>
>>>>> 明治大学 細田さま
>>>>>
>>>>> 渡辺です。
>>>>>
>>>>> ダイレクトドライブモータの制御自体は、私も以前に使っていたので大きな問題はないはずです。
>>>>> (ただし、モータの極数の関係で、パラメータの設定が若干難しいです)
>>>>>
>>>>> データシートを見ると、磁極が16となっているので、
>>>>> パラメータ生成の極数欄でいうと、N極が8, S極が8で、8になるかもしれません。
>>>>> モータを回したときの、UVW矩形波のパルス数を見ると確実です。
>>>>>
>>>>> // 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年7月21日 18:47 HOSODA YUUKI <
ee33080 at meiji dot ac dot jp
>:
>>>>>> お世話になっております.
>>>>>>
>>>>>>
>>>>>> 明治大学機械工学科の細田と申します.
>>>>>>
>>>>>>
>>>>>>
>>>>> 現在,t-frogのドライバを使用してモータの制御を試みようとしているのですが,パラメータ調整がうまくいかず,速度指令を与えてもうまく回転しません.具体的には,不規則な回転と停止を繰り返します.また,速度指令を与えるのを止めると,指令していた方向と反対の方向に回転し始めてしまいます.パラメータはyp-spur用パラメータ生成でできたものをベースに使用しています.使用しているモータはDDモータになっており,ダイレクトドライブのためギア比が1のためうまくいってないのではないかと思っているのですが,どうでしょうか?
>>>>>>
>>>>>>
>>>>>> 現在使用しているモータの情報とパラメータを載せておきます.
>>>>>>
>>>>>> 使用モータ:mtlのマイクロDDモータの MDH-40になります.
>>>>>>
>>>>>> URL http://www.mtl.co.jp/products/motor/mds_mdh_40.html
>>>>>>
>>>>>> 【モータの仕様】
>>>>>> ・3相ブラシレスモーター
>>>>>> ・駆動電源電圧24V
>>>>>> ・無負荷回転数/無負荷電流値:600rpm
>>>>>> ・最大トルク:1000 N・m
>>>>>> ・1:1(減速比1)
>>>>>>
>>>>>> <http://www.mtl.co.jp/products/motor/mds_mdh_40.html
>>>>>> 現在使用しているパラメータは以下のようになっています.
>>>>>>
>>>>>> VERSION 4.00000000
>>>>>>
>>>>>> VOLT 24.0000000 #[V]
>>>>>>
>>>>>> CYCLE 0.00100000 #[s]
>>>>>>
>>>>>> CONTROL_CYCLE 0.02000000 #[s]
>>>>>>
>>>>>> TORQUE_FINENESS 0.00000100
>>>>>>
>>>>>>
>>>>>> RADIUS[0] -0.15900000 #[m]
>>>>>>
>>>>>> RADIUS[1] 0.15900000 #[m]
>>>>>>
>>>>>> TREAD 1.00000000 #[m]
>>>>>>
>>>>>> MASS 3.0000001
>>>>>>
>>>>>> TIRE_M_INERTIA 0.10000001
>>>>>>
>>>>>> MOMENT_INERTIA 0.10000000
>>>>>>
>>>>>> TORQUE_VISCOS 0.00000000
>>>>>>
>>>>>> TORQUE_NEWTON 0.00000000
>>>>>>
>>>>>> TORQUE_MAX 20.50000000
>>>>>>
>>>>>> TORQUE_LIMIT 62.00000000
>>>>>>
>>>>>>
>>>>>> MOTOR_PHASE 3.00000000 #3相DC
>>>>>>
>>>>>> COUNT_REV 81000.00000000 #[Counts/rev] 324000/16極*4
>>>>>>
>>>>>> ENCODER_TYPE 2.0000
>>>>>>
>>>>>> GEAR 16.00000000 #[in/out] 1*16極
>>>>>>
>>>>>> MOTOR_VC 300.00000000 #逆起電力係数[rpm/V] rmax/V ... V:定格電圧[24]
>>>>> rmax:Vでの無負荷最大回転数[600]
>>>>>>
>>>>>> MOTOR_TC 0.04780000 #トルク係数[Nm/A] 60/2/Pi/Ke ...
>>>>> Ke:逆起電力係数MOTOR_VC
>>>>>>
>>>>>> MOTOR_R 8.00000000 #[ohm]:モータの端子間抵抗*3/4
>>>>>>
>>>>>> MOTOR_M_INERTIA 0.11700001
>>>>>>
>>>>>> GAIN_KP 0.00000000
>>>>>>
>>>>>> GAIN_KI 0.00000000
>>>>>>
>>>>>> INTEGRAL_MAX 0.05000000 #[rev]
>>>>>>
>>>>>>
>>>>>> MAX_VEL 1.00000000 #[m/s]
>>>>>>
>>>>>> MAX_W 20.28000000 #[rad/s]
>>>>>>
>>>>>> MAX_ACC_V 20.00000000 #[m/ss]
>>>>>>
>>>>>> MAX_ACC_W 41.89000000 #[rad/ss]
>>>>>>
>>>>>> MAX_CENTRI_ACC 1.95000000 #0.25G
>>>>>>
>>>>>>
>>>>>> L_C1 0.01000000 #
>>>>>>
>>>>>> L_K1 800.00000000 #
>>>>>>
>>>>>> L_K2 300.00000000 #
>>>>>>
>>>>>> L_K3 200.00000000 #
>>>>>>
>>>>>> L_DIST 0.60000000 #
>>>>>>
>>>>>>
>>>>>> STOP_LINEAR 0.01000000
>>>>>>
>>>>>> SPIN_LINEAR 0.05000000
>>>>>>
>>>>>> WHEEL_ANG_LINEAR 0.05000000
>>>>>>
>>>>>> このようになっています.
>>>>>>
>>>>>>
>>>>>> お手数おかけしますが,ご回答のほどよろしくお願いします.
>>>>>>
>>>>>> ----------------------------------
>>>>>>
>>>>>> 明治大学
>>>>>>
>>>>>> 理工学部機械工学科 4年生
>>>>>>
>>>>>> ロボット工学研究室
>>>>>>
>>>>>>
>>>>>> 細田佑樹
>>>>>>
>>>>>>
>>>>>> E-mail:
ee33080 at meiji dot ac dot jp

>>>>>>
>>>>>> ----------------------------------
>>>>>>
>>>>>>
>>>>>> <http://www.mtl.co.jp/products/motor/mds_mdh_40.html>
>>>>>>
>>>>>> <
>>>>> http://www.mtl.co.jp/dcms_media/other/%CE%BCDD%E3%83%A2%E3%83%BC%E3%82%BF%E3%82%AB%E3%82%BF%E3%83%AD%E3%82%B0.pdf
>>>>>> <http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html><
>>>>> http://www.mtl.co.jp/products/motor/mds_mdh_40.html>
>>>>
>>>> ----
>>>> Yoji KURODA, Dr.E
>>>> Professor
>>>> Director of Autonomous Mobile Systems Laboratory
>>>> Department of Mechanical Engineering,
>>>> School of Science & Technology, Meiji University
>>>> http://www.isc.meiji.ac.jp/~amslab/racing
>>>> http://www.isc.meiji.ac.jp/~amslab/
>>>> Access Map: http://g.co/maps/tws8y
>>>>
>>>> ?????
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>

References