ブラシレスモーターの相対変換と絶対変換,制御関係

この記事は学ロボAdventCalendar2023の21日目の記事です。 adventar.org

私はだれ

  • 学生ロボコン2022(ラゴリ)のRoboTech回路屋(回路屋長)です。2年生になったくらいからブラシレスモーターを制御したくなり,学ロボに自家製の電流制御と,それによって動く基板を導入しました。どうしてそんなにブラシレスモーターに熱くなったか,もはやわかりませんが,いろいろ心残りはあるものの勢いでいろいろできたのはいい思い出なのかもしれません。
  • 緑色の足回り基板(ホイールの上にない方)ですが,この基板はモーター制御がエラーで落ちない限り(重要),
    • 電流制御 8kHz
    • エンコーダとのUART通信 1kHz
    • EtherCATコントローラとのSPI通信 1kHz
    • 緑色の足回り基板(ホイールの上の方)とのCAN通信 1kHz
    • USBでシリアル入出力
  • をし続けることができます。根幹はやはり電流制御で,その周りの話も,自分もしてみたくなってしまいました。
  • 現在,筆者は制御系の研究室に所属しています。こんどはSTM32ではなくZynq等のSoCでモーター制御を開発しようとしています。そのため,このブログで書く内容の一部はプロにならないといけない,と少し緊張しています。
  • 重要な章は「ベクトル制御・相対変換と絶対変換・極零相殺の意味・制御遅れの影響」4つで,それ以外は大した情報量を持っていません。まあ,自分が経験したもののうちいくつかを説明しているんだ,と思ってみてくれると嬉しいです。

必要な部品,基板

  • 時間の都合上,今回はこのあたりの説明は省略します。(いつか増えるかもしれないから,残している)
  • 基板は自分で設計できるようになりましょう。Eagleであればschematicを書いてboardを書く作業ですね。私はEagleしか人生で使ってこなかったのですが,サービス終了となるため何かに移行しなければなりません。

ベクトル制御

  • ベクトル制御に関する記事は検索すればたくさん出てくると思います。(あとで編集してリンクを増やすかもしれません)ここでは,ベクトル制御がなんかよくわからない,という人のためのイントロを説明できればいいかなと思います。

座標変換をする理由

  • ブラシレスモーターのモデル化をすると,以下のようになるかなと思います。手書きなのは赦してください。
    3相モーターのモデル
  • ここからの文章ははっきり言ってただの天下りですが,3相モーターのわかりにくいところは,

  • 同じ次元量を表す変数が多いこと(相ごとに3つあるのが普通。)

  • 回転していること(定常状態が直流量でないものが多い。)

  • の2つと思われます。一方,直流モーターは電圧といえば唯一の端子電圧だけ,電流も(モーターの外側だけ見れば)1つの道しかありません。また定常状態の電圧や電流は直流量です。そこで,3相モーターを,直流モーターと同様に扱えるように仮想的な量を設定します。大事なのはここだけです。その結果がdq座標系である,といえます。

相対変換と絶対変換

dq座標変換ですが,どうせ仮想的な量であるから,決め方にも恣意性が生まれます。その結果2つの座標変換が生まれてしまいました。(自分は相対変換を使いがちのようです) - ちょっと時間がやばそうなので,昔作ったpdfをのせます。相対変換と絶対変換の違いを説明したものです。ご指摘歓迎いたします。 -

p1
-
p2

ブラシレスモーターのフィードバック制御

  • 書きたいことだけ書きます

極零相殺の意味

  • 今回は電流制御ループだけを考えます。(その外側は,PIDなどしましょう)
  • 一番有名なものは極零相殺型のものだと思います。
  • ですが,ふだんの極配置において,たとえ安定であっても極零相殺をすることは少ないのではないのでしょうか。それなのにモーターの電流制御において急にこの手法が出てきていると思います。(これは言い過ぎか...?)
  • 前提として,真の極と零点の相殺は,安定であっても不安定であっても不可能です。そのため,相殺したつもりであっても,もともとあった極の成分は必ず残ります。また,もともと存在していた極のモード(成分)が外乱からの応答で入ります。しかし,元の極($R+sL$の根)が機械的時定数よりも十分左側にある場合は問題にならないため,かつ極零相殺の結果が単純な一次遅れ系とみなせるため,極零相殺が使われているようです。ほかの極配置をした方が制御性は向上すると考えられます。

制御遅れの影響

  • このツイートに関するものです。

  • 自分も,M2006を自力で制御しようとしていました。理由は,C610が10Aまでしか流せないからです。
  • M2006の制御における特異な点は,回転の速さだと思います。
  • M2006(DJI)の説明書を示します。
  • https://rm-static.djicdn.com/tem/17348/RM%20M2006%20P36%E7%9B%B4%E6%B5%81%E6%97%A0%E5%88%B7%E5%87%8F%E9%80%9F%E7%94%B5%E6%9C%BA%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E.pdf
  • C610使用時の特性
  • これによると,C610(コントローラー)を用いた場合,無負荷時の回転数が500rpmであるそうです。M2006には36倍の減速機がついていて,また極対数は7なので,500rpmで回転するときの電圧や電流の電気角の周波数は$500\times{}36\times{}7\div{}60=2100\mathrm{Hz}$となります。
  • このため,まず制御ループにおけるむだ時間の影響が大きくなります。PWMのduty比を設定してからそれが反映するまでにかかる時間はおよそPWM1周期分くらいかなと思います。
  • 回転子に対して発生する電圧の位相が遅れる場合,d軸成分の電流が増えることとなり,(同じ電圧ベクトルの大きさのものと比べ)トルク発生につながる電流が減るため,制御遅れがない場合のモーターよりも回転が遅くなると考えられます(実質的な逆起電力定数$Li_d+\Psi^\prime$が大きくなるため,といえるのかもしれません)。また,d軸電流はホビー用ブラシレスモーターが属するSPMSM(表面永久磁石同期モーター)の場合はトルクに寄与せず熱損失となるため,モーターの発熱が大きくなります。
  • そこで,その時間をある程度決めつけておき,その時間分の位相を足した結果の電圧をduty比に使う,などの方法が対策として考えられます。
  • また,duty比もなるべく頻繁に変更させないと正弦波の位相を反映したPWMでなくなるため,なるべく高頻度でduty比を変更する必要があると考えられます。

ロボコン関係でやろうと思ってやっていないこと

  • 直接ブラシレスモーターとは関係ないです
  • ロボコンでは24Vまでの電源が許されていますが,回路内の電圧に関しては42Vまで許されています。これを利用して,24Vを40Vくらいまで昇圧してモーター制御などをできる超パワー基板を作ってみたいなぁと,半分ネタとして思っています。まあネタなので,どんなに重量があってもいいから作ってみてもいいかなぁ...wと思っています。回路内の電圧は42V以上の部分があってはいけないので,フルNチャネルの回路構成は作れませんね。まあ,いつかのお楽しみです。

さいごに

  • ブラシレスモーターの制御をすべて自分でしようとすることは,おそらく部品の知識から選定,基板(パワー回路)設計,制御理論,組み込みについているいろいろなインターフェースの習得,C/C++などによる実装とその高速化,そしてさらに上位のレイヤーと,非常に多岐にわたるスキルを身に付けることと等しいと思います。はっきり言って,終わりがないレベルで沼なのでは,とも思います。まあ,そんなメリットとかを気にするより,とりあえず自作モータードライバー楽しいからやってみよう!
  • もちろん,市販のモーター制御基板を買うのも作戦上必要なこともあるかもしれませんね。