50日後にセンサレスベクトル制御してみたい俺 (前編)
HomeMadeGarbage Advent Calendar 2022 |6日目
これまで弊ブログにて ブラシレスモータ駆動への道 と題してブラシレスモータの回転制御に関する勉強をやってきました。
- センサレス クローズドループ矩形波制御
- オープンループ正弦波駆動
- クローズドループ正弦波駆動
ベクトル制御も勉強したいなと思いつつ なんか難しそうだしと敬遠する自分がいたので “50日後にセンサレスベクトル制御してみたい俺” と銘打って毎日少しずつ勉強することにしました。
毎日少しでもモータのことを考えれば少しは理解も深まるだろうと思った次第です。
ここでは前後編に分けて私のこの50日間について記載します。
目次
構成と思想
回路構成は以下の通りです。
クローズドループ正弦波駆動の時の構成に電流センサを追加したのみです。
変数調整用にと可変抵抗を繋げていますがここでは使用せず、BlynkレガシーアプリでBLEで変数調整しました。
部品
- ESP32 評価ボード
- プリドライバ IR2302
- ドライバ NMOS 2SK4017
- ブラシレスモータ ポール数:14
- 磁気エンコーダ AS5048
- 電流センサ ACS712
取り組むための思想
“50日後にセンサレスベクトル制御してみたい俺”に取り組む際に意識した点についてまとめます。
- 専用評価キットや専用コントローラは使用しない
これは原理を理解するために”ブラシレスモータ駆動への道”から決めている掟です。
専用のものは高いですし、それを使って回しても私の場合は理解につながらないため。 - 制御ループを一定で管理しない
これはESP32を採用した弊害とも言えるかもしれないのですが、仮にモータを自由に制御できるようになったとしてコントローラをモータ専用で使用する機会は私の人生においてないであろうと考えこの思想に至りました。
モータを回しつつ何かを実行することになるだろうし無線で何かしらしたいであろう。
ここではESP32を用いて制御ループ時間は一定管理せず2コアで一方でセンシング、他方で駆動で実験を進めました。
3相->2相変換
モータ回転時の3相電流をセンシングして2相変換する手法を学びます。
50日後にセンサレスベクトル制御してみたい俺
1日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/PvPLBRKwE5— HomeMadeGarbage (@H0meMadeGarbage) October 17, 2022
電流は2個のセンサを用いて測定し、Iwは3相平衡が成立していると考えて Iu + Iv +Iw = 0 から導出しました。
またモータは正弦波駆動で回転させています。
50日後にセンサレスベクトル制御してみたい俺
2日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/kisZyoQ7TI— HomeMadeGarbage (@H0meMadeGarbage) October 18, 2022
Iα, Iβ算出 (Clarke変換)
50日後にセンサレスベクトル制御してみたい俺
3日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/ONIeVPAhrr— HomeMadeGarbage (@H0meMadeGarbage) October 19, 2022
Id, Iq算出 (Park変換)
50日後にセンサレスベクトル制御してみたい俺
4日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/hemWNh3fZb— HomeMadeGarbage (@H0meMadeGarbage) October 20, 2022
電流の2相変換の理解のために色々な記事・書籍を参考にしました。
50日後にセンサレスベクトル制御してみたい俺
5日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/vQp4lcjYmZ— HomeMadeGarbage (@H0meMadeGarbage) October 21, 2022
ここまでは特に以下が参考になりました。
- Clarke-Park 変換(クラーク・パーク変換)
- STマイコンで始めるブラシレス・モータ制御
正弦波駆動にて正弦波の周期を変えてId, Iqを観測
50日後にセンサレスベクトル制御してみたい俺
6日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/fJb70EX20q— HomeMadeGarbage (@H0meMadeGarbage) October 22, 2022
正弦波駆動にて正弦波の振幅を変えてId, Iqを観測
50日後にセンサレスベクトル制御してみたい俺
7日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/pb80wecp7J— HomeMadeGarbage (@H0meMadeGarbage) October 23, 2022
振幅を変えるとモータに流れる電流が変わりIqが大きく変化する様子が観測できました。
3相電流から直接 Id, Iq算出
50日後にセンサレスベクトル制御してみたい俺
8日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/A13kWs87Bi— HomeMadeGarbage (@H0meMadeGarbage) October 24, 2022
以下を参考に直接Id, Iqを算出してClarke変換、Park変換して算出した値と比較しましたが違いはありませんでした。
以後は3相電流から直接 Id, Iqを算出して使用します。
磁気エンコーダで回転検出
磁気エンコーダ AS5048を1周 (機械角) 0~512の値を出力するようにして観測しました。
モータは正弦波駆動で回しています。
50日後にセンサレスベクトル制御してみたい俺
9日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/8b8RbQvBIS— HomeMadeGarbage (@H0meMadeGarbage) October 25, 2022
50日後にセンサレスベクトル制御してみたい俺
10日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/JADmHWH57g— HomeMadeGarbage (@H0meMadeGarbage) October 26, 2022
モータを正弦波駆動で1周自由回転させて止まった地点のエンコーダ値をゼロとオフセットをかけるようにしました。
50日後にセンサレスベクトル制御してみたい俺
11日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/W6vwsjNOkR— HomeMadeGarbage (@H0meMadeGarbage) October 27, 2022
機械角から電気角を算出。14極 (7ペア)のモータを使用しており電気角は機械角の1/7となり値が荒くなってしまった。。
50日後にセンサレスベクトル制御してみたい俺
12日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/6GSBi8lwVY— HomeMadeGarbage (@H0meMadeGarbage) October 28, 2022
これまではESP32のコアを1つで実験してきました。
以下は2コア用いてcore0でエンコーダ検知とシリアル出力実施してcore1で電流 センシング&モータ正弦波駆動。
コア倍でエンコーダ検出及びシリアル出力処理が早くなった。
50日後にセンサレスベクトル制御してみたい俺
13日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/uu5kUVA0Ge— HomeMadeGarbage (@H0meMadeGarbage) October 29, 2022
50日後にセンサレスベクトル制御してみたい俺
15日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/E5KzFBAqEe— HomeMadeGarbage (@H0meMadeGarbage) October 31, 2022
メガドライブミニ2をやらなくてはいけないのでサボったよね。(16日目も同様)
50日後にセンサレスベクトル制御してみたい俺
14日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/FawmkgoB0C— HomeMadeGarbage (@H0meMadeGarbage) October 30, 2022
50日後にセンサレスベクトル制御してみたい俺
16日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/vJUYZlrDob— HomeMadeGarbage (@H0meMadeGarbage) November 1, 2022
こちらの書籍も非常に参考になりました。
ベクトル制御にむけて準備
電流センスと磁気エンコーダによる回転検出が確認できましたので、更にベクトル制御にむけて調査を進めます。
Iqを指定して実測値と差分をとってPI制御によって正弦波駆動の振幅を制御してみた。
50日後にセンサレスベクトル制御してみたい俺
17日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/rV2CtUt6Mi— HomeMadeGarbage (@H0meMadeGarbage) November 2, 2022
エンコーダ値から回転速度算出[rpm]。
50日後にセンサレスベクトル制御してみたい俺
18日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/TCrcr7kvUs— HomeMadeGarbage (@H0meMadeGarbage) November 3, 2022
ラジオ収録で忙しくてサボり
50日後にセンサレスベクトル制御してみたい俺
19日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/1K7Lute9Tx— HomeMadeGarbage (@H0meMadeGarbage) November 4, 2022
回転速度を指定して実測値と差分をとってPI制御によって正弦波駆動の周期を制御してみた。
50日後にセンサレスベクトル制御してみたい俺
20日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/1DY5jMDBzk— HomeMadeGarbage (@H0meMadeGarbage) November 5, 2022
正弦波駆動の位相をエンコーダによる電気角にして、Iq指定のPI制御で正弦波駆動の振幅を制御するがうまく回らず。。
50日後にセンサレスベクトル制御してみたい俺
21日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/1B811LezJG— HomeMadeGarbage (@H0meMadeGarbage) November 6, 2022
しかし低速回転ではうまくいきました。
50日後にセンサレスベクトル制御してみたい俺
22日目#ブラシレスモータ駆動への道 #50daysBLDC pic.twitter.com/znBeCkkDuK— HomeMadeGarbage (@H0meMadeGarbage) November 7, 2022
おわりに
ここまでで電流センスによる3相-2相変換と磁気エンコーダによる回転検出が確認できました。
更に低速ではありますが正弦波駆動の位相をエンコーダによる電気角にして、Iqを指定してPI制御で正弦波駆動の振幅を制御する方法でのモータ回転を確認できました。
徐々に機能と原理を確認しつつベクトル制御の準備を進め、実現に向けての機運も高まってまいりました。
しかし、この先には非常に険しい道が待っていたのでした。
後半につづく