本文へ移動

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

Re: 「ブラシレスギアードモータ」駆動方法について

Date:
Mon, 10 Nov 2014 17:54:26 +0900
From:
Atsushi Watanabe <
atsushi dot w at ieee dot org
>
To:
tf-2md3-devel <
tf-2md3-devel at t-frog dot com
>
Subject:
[00075] Re: 「ブラシレスギアードモータ」駆動方法について
進藤様

> そこで質問ですが、「ypspur-coordinator」を起動する前から重くなっている状態と
> なっているため、パラメータ以前の問題でモータにより何か
> 別の制御が必要となる可能性は有りませんでしょうか?

モータドライバに接続しているPCのプログラムが止まったときや、ケーブルが抜けたときなどに、
惰性でロボットが転がって行くような事故を避けるため、
通電中でPCからの通信が無い時には、ショートブレーキをかける仕様です。

極数の件については、必要な数値は、ホール素子出力のパルス数(20)でしたので、
ひとまず問題はありません。


何が問題なのか、現状ではわかりません。
まず配線周りを確認させて頂きたいのですが、
差し支えなければモータドライバにケーブルがつながっている部分の写真を
直接メールでお送り頂けますか。

よろしくお願いいたします。

// Atsushi WATANABE
// E-mail:
atsushi dot w at ieee dot org


2014年11月10日 11:08 "進藤@三矢" <
shindo at mitsuya-lab dot co dot jp
>:
> 渡辺 様
>
> 対応頂きありがとうございます。
>
> 御提供頂いたパラメータでの動作ですが、
>> パラメータが正しければ、ypspur-coordinator を起動した際、無通電時と近い軽さでバックドライブができるはずです。
> →記述のままテキストコピーし動作させて見ましたが、
> フリーモード(Spur_free)でもしなくても「無通電に近い軽さでのバックラッシュ動作」
> にはなりませんでした。
> 更に、基盤に対し無通電の状態から通電するとロックがかかったように重くなり
> その状態で、上記プログラムを動作させていますが、まったく変化がありません。
>
> そこで質問ですが、「ypspur-coordinator」を起動する前から重くなっている状態と
> なっているため、パラメータ以前の問題でモータにより何か
> 別の制御が必要となる可能性は有りませんでしょうか?
>
> 尚、確認中でした「具体的に20極とは?」に対し
> →20極は、モータの回転ロータ部の永久磁石の極の数になります。
> 簡単に言えば、N極が10ヶ、S極が10ヶある状態です。
>
> の回答が有りました。
>
> 以上。宜しくお願いします。
>
>
> On Sun, 9 Nov 2014 12:05:18 +0900
> Atsushi Watanabe <
atsushi dot w at ieee dot org
> wrote:
>
>> 進藤様
>>
>> これまでに頂いた情報をまとめると、以下のパラメータになります。
>> お試し頂けますでしょうか。
>> パラメータが正しければ、ypspur-coordinator を起動した際、無通電時と近い軽さでバックドライブができるはずです。
>>
>> GAIN_KP, GAIN_KI については、調整して頂く必要があります。
>> 質量、慣性モーメントのパラメータについては、実機に合わせて計算して頂くと制御の特性が良くなりますが、動作テストはこのままで問題ないかと思います。
>>
>> ---------
>> VERSION 4.000
>> COUNT_REV 30.000 #[Counts/rev] 150*4[逓倍]/20[極]
>> VOLT 22.200 #[V]
>> CYCLE 0.001 #[s]
>> GEAR 300.000 #[in/out] 15*20[極]
>> MOTOR_R 1.350 #[ohm] 1.8[ohm-端子間]*(3/4)
>> MOTOR_VC 1312.500 #[rpm/V] 1575rpm*20極/24[定格V]
>> MOTOR_TC 0.00728 #[Nm/A]
>> MOTOR_PHASE 3.000 # 3相ブラシレス
>> RADIUS[0] 0.0625 #[m]
>> RADIUS[1] 0.0625 #[m]
>> TREAD 0.380 #[m]
>> CONTROL_CYCLE 0.020 #[s]
>> MAX_VEL 0.680 #[m/s]
>> MAX_W 1.570 #[rad/s]
>> MAX_ACC_V 1.000 #[m/ss]
>> MAX_ACC_W 3.140 #
>> MAX_CENTRI_ACC 0.980 #[m/ss] 0.1G
>> L_C1 0.010
>> L_K1 800.000
>> L_K2 300.000
>> L_K3 200.000
>> L_DIST 0.400
>>
>> TORQUE_MAX 0.009 # [Nm] 2.7[Nm]/300
>> TORQUE_LIMIT 0.02 #[Nm] 6.0[Nm]/300
>> GAIN_KP 0.0 # PI control parameter Kp 【要再調整】
>> GAIN_KI 0.0 # PI control parameter Ki 【要再調整】
>> TORQUE_NEWTON 0.0 # [Nm] 【要再調整】
>> TORQUE_VISCOS 0.0 # [Nm/(rad/s)] 【要再調整】
>> INTEGRAL_MAX 0.1 # [rev]
>>
>> MASS 10.00000000 #[kg](robot+PC)【要設定(ロボットの質量をkg単位で設定)】
>> TORQUE_FINENESS 0.00000100
>> MOMENT_INERTIA 0.20000000 #【要設定(ロボットの慣性モーメントを計算して設定)kgm^2】
>> MOTOR_M_INERTIA 0.00000010
>> TIRE_M_INERTIA 0.00400000 #【要設定(タイヤの慣性モーメントを計算して設定))kgm^2】
>> ---------
>>
>> 慣性モーメント計算の近似式は、下記のURLにありますので、ご参考まで。
>> 上記のパラメータには、モータの仕様やTREAD、RADIUSのパラメータ値から想像して計算した値が書いてあります。
>> http://www.roboken.iit.tsukuba.ac.jp/platform/wiki/index.php/YP-Spur:%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB#.E3.83.80.E3.82.A4.E3.83.8A.E3.83.9F.E3.82.AF.E3.82.B9.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF.E3.81.AE.E6.B1.BA.E5.AE.9A
>>
>> ドライバ設計時には想定していなかった仕様のモータのため、色々とお手数をお掛けしておりますが、よろしくお願いいたします。
>>
>> // Atsushi WATANABE
>> // E-mail:
atsushi dot w at ieee dot org

>>
>>
>> 2014年11月7日 16:16 "進藤@三矢" <
shindo at mitsuya-lab dot co dot jp
>:
>> > 渡辺 様
>> >
>> > 進藤です。
>> >
>> > 対応頂きありがとうございます。
>> >
>> >> ・エンコーダのパルス数は、モータ1回転あたり、ギヤ出力1回転あたり、のどちらでしょうか?
>> > →モータ軸1回転あたりのパルス数です。
>> >
>> >> ・モータの電気的な極数(何周期の駆動波形を与えるとモータ軸が1回転するか、
>> >>もしくは、モータのホール素子出力のモータ軸1回転あたりのパルス数)を教えて下さい。
>> >>これは、モータのタイプによりますが、コイルの個数と配線で決まります。
>> > →「電気的な極数」とはスロット数の事でしょうか?
>> > 回転ロータの「永久磁石」の極数(2の倍数)の事でしょうか?
>> >
>> > 現在の情報では「極数は20極」で
>> > したがって、モータ1回転(減速後は1/15回転)時のホールICのパルスは20×3(U,V,W)=60
>> > となるとの事です。
>> >
>> > 念のため、現在具体的にどこの数か確認中です。
>> >
>> >> Spur_set_vel( 1.1 );
>> >> で、速度を1.1m/sに設定されているようですが、
>> >> ギア出力の最大回転数105rpmでタイヤ半径0.0625mですと、最高速度は0.69m/sとなります。
>> > →了解しております。
>> > 実際の使用時には「Spur_set_vel(n.n)」のnの値を、キー入力により可変となるように
>> > しております。(使用方法に問題ありますでしょうか?)
>> >
>> > 以上、よろしくおねがいします。
>> >
>> >
>> > On Fri, 7 Nov 2014 12:34:31 +0900
>> > Atsushi Watanabe <
atsushi dot w at ieee dot org
> wrote:
>> >
>> >> 進藤様
>> >>
>> >> 渡辺です。
>> >> 問題はおそらくパラメータの設定値が誤っているか、エンコーダの分解能が足りないためです。
>> >> パラメータ設定のため、モータの仕様について2点、確認させて下さい。
>> >>
>> >> ・エンコーダのパルス数は、モータ1回転あたり、ギヤ出力1回転あたり、のどちらでしょうか?
>> >> ・モータの電気的な極数(何周期の駆動波形を与えるとモータ軸が1回転するか、もしくは、モータのホール素子出力のモータ軸1回転あたりのパルス数)を教えて下さい。これは、モータのタイプによりますが、コイルの個数と配線で決まります。
>> >>
>> >> この2点が確認できれば、パラメータファイルのモータに関する部分が作成できます。
>> >> また、エンコーダ分解能が十分かどうかも確認できます。
>> >> (この値を使ってパラメータが設定されていないと、正しく制御できません。)
>> >>
>> >>
>> >> 駆動用のコマンドの中で、
>> >> Spur_set_vel( 1.1 );
>> >> で、速度を1.1m/sに設定されているようですが、
>> >> ギア出力の最大回転数105rpmでタイヤ半径0.0625mですと、最高速度は0.69m/sとなります。
>> >> また、
>> >> Spur_line_FS( 0.1, 0, 0 );
>> >> のコマンドは、ロボットを基準としてx(正面方向)=0.1メートル、y=0メートルの座標を通る、0度方向を向いている直線に従って走行する、という意味です。つまり、今向いている方向真っ直ぐ走り続ける、という意味になります。
>> >>
>> >>
>> >> ご確認よろしくお願いいたします。
>> >>
>> >> // Atsushi WATANABE
>> >> // E-mail:
atsushi dot w at ieee dot org

>> >>
>> >>
>> >> 2014年11月5日 17:47 "進藤@三矢" <
shindo at mitsuya-lab dot co dot jp
>:
>> >> > 渡辺様
>> >> >
>> >> > 進藤です。
>> >> >
>> >> > ご回答頂きありがとうございます。
>> >> >
>> >> > 初回メールの情報に誤りが有りました事と
>> >> > モータの情報が入手できましたので再度掲載します。
>> >> >
>> >> > 【モータの仕様】
>> >> > ・ギヤードブラシレス3相モーター
>> >> > ・駆動電源電圧24V
>> >> > ・無負荷回転数/無負荷電流値:出力軸で105rpm程度,
>> >> > モーター軸1575rpm/0.5A以下
>> >> > ・連続駆動トルク:2.7 N・m以下
>> >> > ・最大トルク:6.0 N・m
>> >> > ・15:1(減速比15)
>> >> > ・局数:磁石数が20のため10極(N局数)
>> >> > ・端子間抵抗:1.8Ω
>> >> >
>> >> > 【主なパラメータ設定値】と設定内容の確認
>> >> > (2軸ブラシレスモータドライバTF-2MD3-R6 User's Manualの5.1項を参考にしました)
>> >> > VERSION 4.00000000
>> >> > COUNT_REV 12.00000000 #[Counts/rev]←1/nの0.1設定でcoordinator起動不可
>> >> > VOLT 22.20000000 #[V]
>> >> > CYCLE 0.00100000 #[s]
>> >> > GEAR 150.00000000 #[in/out]←n(極数)倍のため15*10を設定
>> >> > MOTOR_R 1.35000000 #[ohm]←3/4*Rのため1.8*(3/4)を設定
>> >> > MOTOR_TC 0.134667879 #[Nm/A]
>> >> > MOTOR_VC 70.94594595 #[rpm/V]
>> >> > MOTOR_PHASE 3.00000000 #blashi less
>> >> > RADIUS[0] 0.06250000 #[m]
>> >> > RADIUS[1] 0.06250000 #[m]
>> >> > TREAD 0.38 #[m]
>> >> > CONTROL_CYCLE 0.02000000 #[s]
>> >> > MAX_VEL 200.1 #[m/s]
>> >> > MAX_W 1.57 #[rad/s]
>> >> > MAX_ACC_V 10.20000000 #
>> >> > MAX_ACC_W 3.14000000 #
>> >> >
>> >> > 【駆動コマンド】
>> >> > Spur_set_vel( 1.0 );
>> >> > Spur_set_accel( 0.1 );
>> >> > Spur_set_angvel( M_PI / 2.0 );
>> >> > Spur_set_angaccel( M_PI / 2.0 );
>> >> > Spur_stop();
>> >> > Spur_free();
>> >> >
>> >> > Spur_set_vel( 1.1 );
>> >> > Spur_line_FS( 0.1, 0, 0 ); // 0.1で10cm
>> >> >
>> >> > 【目標回転速度】
>> >> > 125π(タイヤ周長)×105rpm(最高回転数)×60(min)≒2.5[km/h]
>> >> >
>> >> > 【問題点】
>> >> > ・目標回転速度に達していない理由が、
>> >> > パラメータ値によるものなのか?
>> >> > 動作方法によるものなのか?
>> >> > 現行suprファームでの対応の問題なのか?
>> >> > 絞りきれません。
>> >> >
>> >> > 以上の内容で何か判定ができましたら、御教授願います。
>> >> >
>> >> > よろしくおねがいします。
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > On Tue, 4 Nov 2014 20:04:02 +0900
>> >> > Atsushi Watanabe <
atsushi dot w at ieee dot org
> wrote:
>> >> >
>> >> >> 進藤様
>> >> >>
>> >> >> 渡辺です。
>> >> >>
>> >> >> モータのエンコーダパルス数についての情報、ありがとうございます。
>> >> >> 大変申し訳ないのですが、ご利用のモータはエンコーダの分解能が低いため
>> >> >> 現在のTF-2MD3-R6ファームウェアでは制御が難しいようです。
>> >> >>
>> >> >> T-frogのモータドライバは、ロボットの位置を高精度かつなめらかに、
>> >> >> ミリ秒オーダーの応答速度で制御できるように設計しているため、
>> >> >> 1ミリ秒周期で、エンコーダの信号から速度を計算して駆動・制御を行います。
>> >> >>
>> >> >> そのため、主なターゲットのモータとしては、
>> >> >> 例えば、最大3000rpmのモータに500パルス程度のエンコーダ
>> >> >> (100rpmであれば、1万パルス以上)が付いていることを想定しています。
>> >> >>
>> >> >>
>> >> >> 100rpmで、150パルスのエンコーダですと、
>> >> >> 制御周期(1ミリ秒)中のエンコーダカウント数が
>> >> >> 最大でも1パルスしか無いため、速度をほとんど検出できず、制御が困難です。
>> >> >> (NJM2626は、ホール素子のみで矩形波駆動するため、駆動できます。)
>> >> >>
>> >> >> エンコーダ分解能の低いモータ用に、ファームウェアを大幅に変更すれば
>> >> >> 制御可能になりますが、私の所属がドライバ設計時とは変わっており、
>> >> >> あまり時間がとれないため、すぐに対応することができません。
>> >> >> もし、ファームウェアの変更をご自身で行う場合には、
>> >> >> ソースコードは既に下記のリポジトリで公開していますので、
>> >> >> 改変してご利用頂けます。
>> >> >> http://t-frog.com/repos/?p=motor-controller.git
>> >> >>
>> >> >>
>> >> >> 大変申し訳ありませんが、よろしくお願いいたします。
>> >> >>
>> >> >> // Atsushi WATANABE
>> >> >> // E-mail:
atsushi dot w at ieee dot org

>> >> >>
>> >> >> 2014年11月4日 17:16 "進藤@三矢" <
shindo at mitsuya-lab dot co dot jp
>:
>> >> >> > 渡辺 様
>> >> >> >
>> >> >> > 進藤です。
>> >> >> >
>> >> >> > 下記について実施してみましたので、報告します。
>> >> >> >
>> >> >> >> 1. カタログ値から事前に与えるパラメータの設定
>> >> >> > →以下の設定としました。
>> >> >> > ・エンコーダパルス数は150Countsで減速比(15)のため
>> >> >> > 150*(1/15)=10としその4逓倍で40としました
>> >> >> > ・OTOR_VCは105*15/22.2=70.94594595
>> >> >> > ・MOTOR_TCは60/(2π*70.94594595)=0.134667879
>> >> >> >
>> >> >> > ** xxxx.param *****************************************************
>> >> >> > VERSION 4.00000000
>> >> >> > COUNT_REV 40.00000000 #[Counts/rev]
>> >> >> > VOLT 22.20000000 #[V]
>> >> >> > CYCLE 0.00200000 #[s]
>> >> >> > GEAR 15.00000000 #[in/out]
>> >> >> > MOTOR_R 14.80000000 #[ohm]
>> >> >> > MOTOR_TC 0.134667879 #[Nm/A]
>> >> >> > MOTOR_VC 70.94594595 #[rpm/V]
>> >> >> > MOTOR_PHASE 3.00000000 #blashi less
>> >> >> > RADIUS[0] 0.06250000 #[m]
>> >> >> > RADIUS[1] 0.06250000 #[m]
>> >> >> > TREAD 0.38 #[m]
>> >> >> > CONTROL_CYCLE 0.02000000 #[s]
>> >> >> > MAX_VEL 10.1 #[m/s]
>> >> >> > MAX_W 0.57 #[rad/s]
>> >> >> > MAX_ACC_V 1.20000000 #
>> >> >> > MAX_ACC_W 3.14000000 #
>> >> >> > MAX_CENTRI_ACC 9.80000000 #[G]
>> >> >> > L_C1 0.01000000 #
>> >> >> > L_K1 0.00000000 #
>> >> >> > L_K2 0.00000000 #
>> >> >> > L_K3 0.00000000 #
>> >> >> > L_DIST 0.40000000 #
>> >> >> >
>> >> >> > GAIN_KP 0.0 # *PI control parameter Kp
>> >> >> > GAIN_KI 0.0 # *PI control parameter Ki
>> >> >> > TORQUE_MAX 0.0 # * [Nm]
>> >> >> > TORQUE_LIMIT 6.0 #[Nm]
>> >> >> > TORQUE_NEWTON 0.0 # * [Nm]
>> >> >> > TORQUE_VISCOS 0.00001 # * [Nm/(count/1ms)]
>> >> >> > INTEGRAL_MAX 0.0 # * [rev]
>> >> >> >
>> >> >> > TORQUE_OFFSET 0.00000000 #[Nm]
>> >> >> > MASS 0.0250000 #[kg](robot+PC)
>> >> >> > TORQUE_FINENESS 0.000005
>> >> >> > MOMENT_INERTIA 0.05476133
>> >> >> > MOTOR_M_INERTIA 0
>> >> >> > TIRE_M_INERTIA 0.04321800
>> >> >> > *******************************************************************
>> >> >> >>
>> >> >> >> 2. 摩擦補償パラメータの調整
>> >> >> >> 2.1 ypspur-coordinator を立ち上げた状態で、ypspur-free コマンドを実行
>> >> >> > →プログラムでSpur_free();関数を実行(フリーモード)させました。
>> >> >> >
>> >> >> >> (摩擦補償のみを行うモードに入ります。)
>> >> >> >> 2.2 TORQUE_NEWTON(クーロン摩擦力項)を少しずつ大きくしながらタイヤを手で回転させて、軽く回転するように調整
>> >> >> > →値を0.1~900とかにしてみても軽く回転するようにならない
>> >> >> >
>> >> >> >> 2.3 同様にTORQUE_VISCOS(粘性摩擦項)を少しずつ大きくして調整
>> >> >> > →値を0.1~900とかにしてみても軽く回転するようにならない
>> >> >> >>
>> >> >> >> ※バックドライブが全くできず、手でタイヤを回そうとしたときに、エンコーダのパルスが1つも発生しないモータではこの方法は困難です。
>> >> >> >> その場合には新しい方法を考える必要があります。
>> >> >> > →重いがバックドライブ(手回し)するとパルスは出ている。
>> >> >> >>
>> >> >> >> 3. PI制御ゲインの調整
>> >> >> >> 3.1 ypspur-coordinator を立ち上げてサーボがかかっている状態にする
>> >> >> > →「サーボがかかっている状態」手回しして重く回る状態で良いでしょうか?
>> >> >> >> 3.2 作成したプログラム等で、適当な走行指令を出す
>> >> >> >> 3.3 GAIN_KIを0にし、GAIN_KPを発振しない範囲で大きくする
>> >> >> > →上記、パラメータでは回らなかった。TORQUE_MAXに0.1をいれたら回った
>> >> >> > 「発振」といわれる音がまったくしないので0.1から1200ぐらいまで
>> >> >> > 数値を大きくしたが目標の回転スピードにはならない(回転速度上がらず)
>> >> >> > 50として起動し、Spur_set_vel()で0.01から数値を上げて
>> >> >> > ドライブすると加速はできている
>> >> >> >> 3.4 GAIN_KIを発振しない範囲で大きくする
>> >> >> > →「発振」といわれる音がまったくしないので0.1から1200ぐらいまで
>> >> >> > 数値を大きくしたが目標の回転スピードにはならない(回転速度上がらず)
>> >> >> >
>> >> >> > 以上が状況です。
>> >> >> >
>> >> >> > ちなみ、「PWM型三相DCブラシレスモータ制御IC(NJM2626)」(新日本無線)ドライバにて
>> >> >> > ソフトなしでモータのみ単純駆動をしたところ、目標スピードで
>> >> >> > 回る事が確認できました。
>> >> >> >
>> >> >> > 「yp-spur」と上記IC(制御IC)との単純な動作の違いが有り
>> >> >> > ・モータ無通電時は双方とも手で軽く回る(ギア抵抗分の重さ?)が
>> >> >> > 通電により制御ICは正転方向(スイッチにより指定)に軽く回り、逆方向に重い
>> >> >> > 状態となるが、yp-spurは両方向とも重くなる(フリーモード時も同様)
>> >> >> >
>> >> >> > この違いは、yp-spurで回転速度が上がらない事と関連するとは思えませんが
>> >> >> > 報告しておきます。
>> >> >> >
>> >> >> > 以上、宜しくお願いします。
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >
>> >> >
>> >> >
>> >
>> > いつもお世話になっております。三矢研究所の進藤です。
>> >
>> > 以上、よろしくお願い致します。
>> > *********************************************
>> > 株式会社三矢研究所 技術部  進藤 裕
>> > Yutaka Shindo [
shindo at mitsuya-lab dot co dot jp
]
>> > Mitsuya Laboratories Inc. Equipment Section
>> > 〒215-0021 神奈川県川崎市麻生区上麻生6-31-18
>> > TEL [Telephone number removed] FAX新 [Telephone number removed](旧使用不可987-5938)
>> > Home Page http://www.mitsuya-lab.co.jp
>> > *********************************************
>> >
>> >
>
>
>

References