どうもこんにちは。さばねっこです。
今回は製作した自作モーターをいい感じに制御する記事(tekitou)です。
前回はこちら
まあとはいってもやることは一般的な同期モーターのベクトル制御の実装なのでさほど目新しい内容はないよう(激ウマギャグ)。
ドライバ基板
とりあえず、ベクトル制御しようにも回路が無いとどうにもならないので適当に基板を設計します。
マイコンはSTM32F303を採用。デバッグ用にUSB type-Cも載せておきました。
今見るとパワー部分のGNDがちょっとキモいかも。まあ問題なく動いてたのでヨシ!
ちなみに、この時はじめてkicad7使いましたが結構いいですね。まあ自動配線機能とか使ってないのでほとんどkicad6として動かしてるわけですが…。
基板のデータはこちらにアップロードしてあります。参考になるかは知りませんがしてください。
そして基板をJLCPCBに発注して着弾
特に目新しいことはやってないので問題なく動いてくれました。
とりあえず正弦波で強制転流 pic.twitter.com/s0yNqLdQlK
— さばねっこ🐟 (@sabanekko1) 2023年3月26日
制御実装
ここからベクトル制御を実装していくわけですが、現在のローター角度を取得する必要があるので適当な磁気エンコーダーを使います。センサレスなんもわからん
一応基板の裏にAS5048を乗せられるようにしているのですが、高いので取り合えずアマゾンで売ってた安い奴(AS5600)を使ってみます。
https://www.amazon.co.jp/dp/B0BLSHGNNL/
これで無事に角度を取得してベクトル制御できましたバンザイ!!、とはなりませんでしたありがとうございます。
そもそもAS5048はSPI通信なのに対してこいつはI2C通信なんですよね。なのでこんな感じのカス違法建築で無理矢理接続してます。
そして無事接続できたはいいもののどうにも安定しない。僕の送ってるコマンドが悪いのかもしれませんが、定期的に角度値が一定値にへばりついてしまい、まともに角度を取得できませんでした。
しょうがないのでクソ高いAS5048を購入。
ついでにドライバ基板とモーターを合体させます。
見た目は割と気に入ってる。
ドライバ基板の裏にこんな感じでAS5048を乗せています。わかりずらいけど。
これでようやくベクトル制御~~と思ったらなぜかまたうまくいかない。現在の3相電流をdq電流に変換しようとしても、なぜかpark変換が思うようにできないんですよね。
原因が全く分からずに色々試行錯誤していたのですが、全然わかりませんでした。というわけでtwitterに投下
三相波形(u,v,w)をclarke変換→park変換かけたら入力波形の半周期のdq波形出てくるんだけどこれ正しいの?
— さばねっこ🐟 (@sabanekko1) 2023年5月4日
間違ってる気しかしないんだけど pic.twitter.com/O6HKuQF3df
いまその部分を修正して動かしてみたらちゃんとdqが直流で出てきました
— さばねっこ🐟 (@sabanekko1) 2023年5月4日
ありがとうございます!! pic.twitter.com/ubvoeThXsQ
一瞬で解決してしまいました。つよい方々本当にありがとうございます!!!!!
原因としては3相交流を生成するところで位相を逆向きにずらしていたという話でした。要は符号ミスですゴミカスウンチ
自作モーターのベクトル制御(定トルク制御)できた〜〜!
— さばねっこ🐟 (@sabanekko1) 2023年5月5日
青がd軸電流、紫がq軸電流
高速回転時のエグみノイズは見ないで() pic.twitter.com/pnu1PcGaZa
何はともあれ無事にベクトル制御(dq軸電流制御)できました。よかったよかった。
ソフトは全てここに公開してあります。
まあ構造がキモくなってしまったのであんまり見るとこないです。コメントもほとんど書いてないのでやさしくない。あ、CMSIS-DSPライブラリを使っているので使う人がいたら注意(?)してください。
僕のコードを見たいもの好きはCore/driverフォルダ内とCore/Src/main.cppを見てください。他は自動生成なので。
いやーここまで長かった。基板が届いてから動かせるようになるまで1か月はかかり過ぎでは。まあほとんどエンコーダー周りなんですけどね。これもすべて学ロボが悪い。
次はモーター本体の構造に関する考察的な記事を書く(書くとは言っていない)ので需要があるか知らないけどお楽しみに。
参考にした記事
基礎的な内容がまとまっているので定期的に見てた
やっぱり実装例を見るとわかりやすい。
このGIFが無ければ理解まで5倍ぐらい時間かかったかも。ビジュアライズは正義
本買いたいけどお金あんまりないんだよなあ…