さて,回路シミュレータとして名高い「SPICE」ですが,これ系統のフリーソフトとしてはLTspiceが有名なんじゃないでしょうか...?私はもっぱらこいつです.ここから貰ってきて下さい.Windowsじゃないと使えないのが残念なところ...
LTspiceの使い方とかは適当にググって頂くとして...(エレキジャックのサイトなんかにも書いてあったりしますし,こちらのブログとか,ちょっと込み入ったネタならこちらのおぼえ書きとかを参考に)
んでは,そろそろ肝心の解析対象の話を始めましょう.お前はこれからいったい何の数値計算をしようとしてるんだ?って話です.簡単に言うとタイトルにも書いたようにDCモータなんですね.もう少し詳しく言うとDCモータを搭載した車両系(ロボットとか台車とか)のシミュレーションがしたいんです.モータの事を少し勉強したことがある人なら,「そんなもの特性曲線見ればおしまいじゃないか」って思われたかもしれません.そうなんですよね,定常状態だけ見て設計する分にはその情報だけで十分です.
しかし,ダイナミックな動力学な過渡応答なところを見たいなって思うとそれだけでは足りません.特性曲線は定常状態を仮定することで得られる代数方程式を図にしたものですから.実際のところ,大雑把にどんな感じだろうって当たりをつけるだけなら今から書くようなことなんて気にしないでざっくりした仮定を元に代数計算で出せたりします.なのでそういうニーズな方は残念ながらここでお別れになっちゃうんですが,折角なのでそこをもうちょっと詳しく,でも高精度にとまでは意気込まない,そんなノリで一歩踏み込んでみましょう.
早速ですが,上に示した図が解析対象を表したものとなります.DCモータの出力軸に減速ギアを介して回転粘性と慣性モーメントが存在するモデルを考えます.車両系とこのモデルは結びつかないと思われるかもしれませんが,「車輪はスリップしない」,「コーナリングは考えない(直線のみ)」と仮定すると等価的にこのモデルに帰結できます.
簡単にこのモデルについて説明しましょう.図の左半分ほどに描かれているLとRとMのマークが直列に接続された部分がモータの電気的モデルを表しています.Lは巻線インダクタンス,Rは巻線抵抗,Mはモータの回転による誘導起電力を表す電圧源であり,eは印加電圧,iは巻線電流となります.残りの右半面はモータの主軸から連なる力学的回転系を表しており,ギアで減速した後に摩擦等を表した回転粘性Cと,主軸系イナーシャ及び車体質量の等価慣性モーメントの和を表す慣性モーメントJが接続されています.
じゃあこれを数式にしておきましょう.
こうなります.k_eは誘導起電力定数,k_Tはトルク定数,ωはモータ軸での角速度です.簡潔に記述するため係数J及びCは図中で示したものではなく,ギアによる変換が成された後の値を表しています.
ちなみに,減速比をξ(>1)として,減速側に接続されたJ及びCをモータ側から見た等価慣性モーメントJ'及び等価回転粘性係数C'は
と変換されます.
また,質量Mの車両に半径rの車輪が接続されている時,車輪がスリップしないと仮定すれば,この質量を車軸周りの慣性モーメントとしてみなすことができます.先程も書きましたが,これを車体質量の等価慣性モーメントと呼ぶことにします.左の図を見ながらちょっと式変形すると出てきます.車両並進系の運動方程式
に対して,
を代入することで
となるので,この角速度の微分項に付いてる係数が等価慣性モーメントです.
もう一つ言っておくと,独立二輪車両なんかだと左右対称になるのでどちらか半分だけ考えればOKです.要は質量半分にしときましょうねってことです.
後はこの連立微分方程式を解けばおしまいなんですけど,解析的に解くのはちょっと面倒そうです.ルンゲクッタなんかで数値的に解くのがよさげですが,CとかC#とかPythonとか?でコード書くのもやっぱり面倒くさいし(実は簡単なんですけどね),MATLAB使うほどでもないし,ってことで登場するのがLTspiceな訳です.ちょっと何言ってんのか分かんない...って言わないでね...
さて,これをLTspiceで解こうとすると問題になるのは運動方程式の方ですね.モータの等価回路の部分はそのまま回路ですから,そのまま回路書けばおしまいですが,運動方程式の方はこれを回路で表現する必要があります.微分方程式をちょっと見ればすぐ分かりますが,運動方程式も回路方程式も数学的には同じ形式です.ということは運動方程式を回路方程式だとみなせば簡単に回路図で表現できちゃうんですね.即ち,運動方程式の慣性項は,J[H]のインダクタにω[A]の電流が流れている時の両端電圧となり,粘性項はC[Ω]の抵抗にω[A]の電流が流れている時の両端電圧ということです.
この考え方で先ほどの微分方程式をLTspice上で回路として表現すればこうなります.ただし,モータの係数にはロボコンでよく使われているmaxon社のコアレスモータRE40の定格電圧24V品を用いています.左側のループが回路方程式,右側のループが運動方程式を表しています.
ちょっと解説しておくと,「.tran 0 1 0」は0秒で1秒まで計算してそれを0秒から記録するという意味,「.param hogehoge hoobar」は定数の定義,「.IC I(hogehoge)」はhogehoge要素の電流初期条件の設定,「idt(a,b)」は変数aを初期値bで時間積分するコマンド,「{hogehoge}」は定義した定数の参照,「**」は累乗コマンド,「V(hogehoge)」はノードhogehogeの電圧の参照,「I(hogehoge)」は要素hogehogeに流れる電流の参照となっています.
これを走らせてみると,ものの1秒くらいで
こういう結果が出てきます.赤色が電流[A],緑色が速度[m/s],青色が距離[m]で,横軸が時間[s],縦軸に関しては電流は右側をそれ以外は左側の電圧の方を見て下さい.それっぽい結果ですが,当たり前の結果でイマイチ面白く無いですね...(さすが左右300Wあるだけあって応答良いです)
そこで,これに速度制御を行う制御器をつけてみました.制御入力は印加電圧制限付きのPI制御で決定しています.他にもちょこちょこ変更してあります.
結果はこうなります.
赤色は速度目標[m/s],緑色は車速[m/s],青色は移動距離[m],青緑色?は車輪軸周りのトルク[N・m]となっています.見ての通り,一応台形加速をさせています.
こんな感じでおおよそのダイナミクスを制御も込みで計算できて,トルクのようなパワートレイン設計時に必要な値や,電流のようなモータドライバの仕様決定の参考になる情報も簡単に出せます.全部GUIですし,気軽なシミュレーションツールとしていかがでしょうか.
もう少し改良するなら,タイヤと路面間のクーロン摩擦のモデルなんかを組み込むとかがありますね.
コメントを表示