ブラシレスモータを自作してみる(FEMMでsim編)

前回の続きです。

順番が前後してる気もしますが、今回製作したモータの特性をシミュレーションしてみます。
実機の特性もまじめに測定しているので、sim結果と比較すればお互いの確からしさも雰囲気がつかめるのではないかと思っています。

電磁界シミュレータはFEMMというフリーのツールを使用しました。ほかのツールは使ったことがないですが、フリーなものの中ではメジャーみたいです。

simする項目は実機評価に合わせて以下の2つ
・トルク定数(分布)
・コギングトルク(分布)

コイル抵抗はターン数、線径から容易に計算可能なため別途求めておきます。(simは線径、ターン数が分かっていればOK)

simの流れ

FEMMを用いた電磁界シミュレーションの流れは
形状の作成→材料の割り当て→マグネット/コイルの設定→解析→領域選択→結果取得
となります。
これでとある1条件での解が得られるので、角度に対する分布が欲しい場合はちょっとずつ角度を変えた形状を作成して順次simしていくことになります。

形状の作成

FEMMを起動し、File→Import DXFからヨーク、マグネット、コイルの形状を読み込みます。
回転中心を座標0,0に合わせないとトルクが計算できないので注意です。

材料の割り当て

Properties→Material Libraryで使用する材料を読み込みます。
マグネット、ヨーク、コイル、空気あたりが必要です。

次に閉じた領域すべてに材料を割り当てます。
Operation→Blockで選択モードを切り替え、左クリックで閉じた領域に点を打ちます。
右クリックで点を選択し、スペースでblockのプロパティを開きます。
Block typeで任意の材料を選択すれば設定完了です。マグネットは磁束の方向を角度で指定します。 次にコイルの回路を設定します。
Properties→Circuits→Add Propertyから設定しますが、3相分 x 通電方向正負で6つ必要です。
今回は1相のみ定電流で通電した際のトルク分布からトルク定数を求めるため、circuit1=1A、circuit1-=-1A、他=0Aとしておきます。
Circuit1,1-も0にするとコギングトルクのみ得ることもできます。 コイルの領域もヨーク、マグネットと同様にBlockを設定します。これでsimの準備は完了です。

解析/結果の確認

run alanysysで解析を実行します。
自分の環境(i7 1360P)で20分ぐらいかかります。
終了後View Resultを押すと結果が表示されます。

Operation→Areaで選択モードを切り替え、トルクを取得したい領域を選択します。(今回はステータ)
Block Integral→Torque Via Weighted Stress Tensorを選択すると座標0,0まわりのトルクが表示されます。 これで1stepの解析は完了です。
この後ステータを少し回転させて解析していけばトルク分布を計算できますが、実際は解析実行以降の操作をスクリプト化しています。

github.com

解析結果/実測比較

単相トルク定数分布

simのほうが20%程度大きく出ています。歪み方の特徴がsimにも表れています。

q軸トルク定数分布

q軸で見ると単相での歪がトルク定数の脈動として表れている様子がよくわかります。 コギングトルクもsimのほうが大きく出ていますが、スケール感としてはそれなりに見れてるんではないでしょうか。

まとめと感想

ブラシレスモータのsim、製作、評価の流れを一通りやってみました。手作りでもそれなりに回る程度なら簡単に作れそうです。
ただ、ここから性能の向上(コギングの低減、トルク定数up)を狙おうとすると個別のノウハウ的な要素が多くなってくるような気がしており、厳しそうです。モータは作るより買うほうがいいのかも。

ブラシレスモータを自作してみる(制御・評価編)

前回のつづきです。

制御

今回製作したモータはロボットの関節に使うような想定なので、低速かつ過渡的な状態で動作します。
センサレスは厳しいと思われるため、絶対角が測れる磁気エンコーダを用いて電気角を測ります。磁気エンコーダの角度情報はFOCによる励磁だけでなく、PIDによる角度サーボにも使います。
また電流のフィードバックは行いません。 回路はnucleoの上に3相ハーフブリッジ(BOOSTXL-3PHGANINV)が乗っただけの簡単な構成です。 こちらのコントローラでそこそこの動作ができるところまで確認できました。

評価

次作る時の参考にするため、基本的な特性を測っておきます。

自分の用途で気になる項目は以下の通りです。
・相抵抗
・トルク定数(分布)
・コギングトルク(分布)

トルク定数やコギングを測るにはトルクメータが欲しくなりますが、個人で買うには勇気がいる価格です(50万円ぐらい)。
今回はトルクメータを使わず、オシロスコープだけで測定します。

相抵抗

こちらは普通にテスターで測ります。
1.5 Ω(各相 12直列)でした。

トルク定数

軸を外部から回転させた際の逆起電圧から計算します。
測定位置はスター結線の中性点-端子間とします。(UVWの3相分)
中性点は特別に線だしが必要ですが、中性点をGNDとしてプロービングすることでシングルエンドの一般的なオシロでも3相同時に測定できます。
また回転速度を得るために、絶対角を電圧として出力する磁気エンコーダを取り付けます。角度信号もオシロで同時に測定し、後処理で微分することで逆起波形に同期した速度信号を得ます。今回はAS5600を使用しました。
あとは各相の逆起電圧を速度で割ることで逆起電圧定数(=トルク定数)を求めることができます。
今回はオシロのcavデータを処理するスクリプトを作成し、トルク定数分布を計算しました。
測定結果は0.33Nm/A(dq軸上)ですが、各相の波形が歪んでいるためトルクリップルが大きいようです。

コギングトルク

サーボ保持で微速駆動した際のdq電圧から計算します。
今回はdq軸電圧/dq軸抵抗*トルク定数=発生トルクとしてコギングトルクを得ましたが、電流が測定できるならそのほうがいいかもです。 結果は±0.4Nmで、かなりでかいです。触った感じもステッピングモータみたいです。

なお評価にあたり、測定値に対してさまざまな換算が必要になります。以下の本は網羅的かつ親切で参考になりました。
高トルク&高速応答!センサレス・モータ制御技術

次回は電磁界シミュレータFEMMを用いたsimについて書きます。

ブラシレスモータを自作してみる(製作編)

はじめに

今までモータは購入品を使うだけでしたが、徐々にモータ自体への興味がわいてきました。ついでに自分の用途にぴったり合うモータを自分で作れたらロボット作りの幅が広がりそうというのもあり、作ってみることにしました。

目標

今回作るモータは具体的な用途を決めてませんが、最終的には脚ロボットの関節にダイレクトドライブで使えるといいなと思ってます。したがって、

最高速度:数百rpmとかでOK
最大トルク:数Nm程度取り出したい
重さ:軽いほどいい
相抵抗:小さいほどいい

という感じです。

設計

上記の目標に合うように設計していきます。

モータ設計は全く素人でよくわからなかったので簡易ツールのJMAG Express Onlineを使ってみました。
所属組織のメールアドレスがあれば無料で使えます。

www.jmag-international.com

モータ形状のテンプレートを選んで相数、スロット数、線径などを振ると各性能を計算してくれます。
相抵抗、トルク定数、磁束密度を見ながら適当にパラメータを振って、それっぽい解が得られました。(1Nm/A、相抵抗2.5ohm)

具体的な設計はJMAGの開発元が書いている以下の本を足掛かりにしました。

モータ設計初心者のための永久磁石同期モータ設計入門
https://www.jmag-international.com/jp/book/

あとはJMAG Expressで作った形状を3DCADに移して構造部品を設計して完成です。

ロータはマグネットの吸引力に耐えないといけないのでしっかり目に作るのがポイントです。(1回失敗した)

製造

購入した部品と購入先は

・冷延鋼板 2.3mm (横山テクノ)
https://www.yokoyama-techno.net/detail/646.html

・マグネット 20x10x2mm N40(ネオマグ)
https://www.neomag.jp/shop/shoppingcart/itemdetail.php?itemno=NB02001000211&qty=1

・エナメル線 0.4mm (オヤイデ)
https://shop.oyaide.com/aiw0-4mm.html

・ベアリング/軸(Misumi

です。今回の仕様だと材料費は1台5000円ぐらいだと思います。

こちらの材料をなんやかんや加工してモータの形にしていきます。

ステータ製作

まずはステータ作成のための鉄板加工ですが、幸い自宅にCNCフライスがあるのでこちらを使います。

ステータは市販のモータと同じく薄い鋼板を積み重ねる形で作ります。市販モータは渦電流低減のために積層しているようですが、今回は薄板しか切削できないという製造上の都合のほうが大きいです。
そもそも渦電流低減をちゃんと狙おうとすると鋼板の絶縁処理が必要なようで、家庭だとなかなか難しそうです。

使っているCNCフライスはoriginalmindのCL200という機種で公式に鉄板が切削できる機種ではないですが、細いエンドミルを使えば何とか削れるようです。(切削条件は切り込み0.1mm、送り速度200mm/min) ただ、エンドミルの寿命が著しく短く、せいぜいステータ2枚分しか作れません。この作業が一番つらいです・・・(上が新品、下が使用後) なんとかステータを削り終えたら次は接着です。ステータに接着剤を塗って簡易治具でプレスします。 接着後はこんな感じ。ステータの位置決めもかねて3Dプリンタのハブも一緒に接着しました。 次はコイルを巻いていきます。ステータの上に直でコイルを巻くと角部でショート必至なので、3Dプリンタでキャップを作って保護します。
占積率は下がっちゃいますが、ショートよりはマシです。 次はコイル巻きです。1ティースにつき28T * 36スロットをひたすら手で巻いていきます。
ちゃんと引っ張りながら巻かないと膨らんで線が入らなくなります。巻き終わったらステータ側完成です。

ロータ製作

ロータ側はステータよりだいぶ簡単です。 まずはロータのフレームに鋼板を貼ります。本当は鉄パイプとかを使いたいところですが、ちょうどいいサイズのものが入手できなかったので、鋼板を短冊状に切って使っています。 あとはマグネットをN/S交互に貼っていくだけです。位置決め用にくし歯状の部品を3Dプリンタで作って貼ってあります。これでロータも完成。

組立

あとはステータをロータに入れるだけです。
今回みたいなサイズだと磁気吸引力が強烈なので、指を挟んでケガしないように注意が必要です。 この瞬間が一番楽しいですね。 きれいにできた・・・・

制御編、評価編もいずれ書きます。