LoginSignup
9
3

More than 3 years have passed since last update.

簡単なモーターのモデリングをしてみた

Last updated at Posted at 2019-10-06

今回は簡単にモーターのモデリングをしてみたのでメモがわりに手順を残しておきたいと思います

モーターの力学的モデル

モーターのトルクは電流値に比例し、かつ粘性抵抗によって減衰するので以下のような式になる

J\frac{d^2\theta}{dt^2} = - D\frac{d\theta}{dt} + K_\tau i

ここで、
$J$:慣性モーメント
$D$:粘性抵抗率
$K_\tau$:トルク定数

モーターの電気的モデル

モータの逆起電力は角速度に比例するので以下のようになる

v = L\frac{di}{dt} + Ri + K_e\frac{d\theta}{dt}

ここで、
$v$:入力電圧
$L$:インダクタンス
$R$:抵抗値
$K_e$:逆起電力定数

モーターのブロック線図

simulinkでモーターのモデルを作成してみました

スクリーンショット 2019-10-07 0.46.27.png

各種伝達関数

電圧から角速度

G_{v2\omega} = \frac{K_\tau}{(J\cdot L)s^2 + (J\cdot R+L\cdot D)s + K_\tau\cdot K_e+R\cdot D}

電圧からトルク

G_{v2\tau} = \frac{(J\cdot s+D)K_\tau}{(J\cdot L)s^2 + (J\cdot R+L\cdot D)s + K_\tau\cdot K_e+R\cdot D}

電圧から電流

G_{v2\omega} = \frac{J\cdot s+D}{(J\cdot L)s^2 + (J\cdot R+L\cdot D)s + K_\tau\cdot K_e+R\cdot D}

状態方程式

状態変数を$x = \left[i, \dot\theta \right]^T$とすると、モーターの状態方程式は以下のように書ける

\frac{dx}{dt} = \begin{bmatrix}
-\frac{R}{L} & -\frac{K_e}{L} \\
\frac{K_e}{J} & -\frac{D}{J} \\
\end{bmatrix}x
+ \begin{bmatrix}
\frac{1}{L} \\ 0\\
\end{bmatrix}v

MATLABによるシミュレーションのサンプルコード

上記のモデルをもとに現実に近いパラメータをモーターのデータシートも参考にしながら求めていきました
サンプルコード

%%%
パラメーターの宣言
%%%
v2omega_tf = tf(K_tau,[J*L,J*R+L*D, K_tau*K_e+R*D]);
v2tau_tf = tf([K_tau*J, K_tau*D], [J*L,J*R+L*D, K_tau*K_e+R*D]);
v2i_tf = tf([J, D], [J*L,J*R+L*D, K_tau*K_e+R*D]);
subplot(1,3,1);
step(v2omega_tf);
title('電圧に対する角速度のステップ応答');
subplot(1,3,2);
step(v2tau_tf);
title('電圧に対するトルクのステップ応答');
subplot(1,3,3);
step(v2i_tf);
title('電圧に対する電流のステップ応答');

motor.jpg

よりリアルな応答を再現するために...

熱による抵抗値の変化やインダクタンスのヒステリシス損失も考えた方がいいかもしれないです

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3