NUCLEO-F302R8 3相BLDCモータ 6step

以下の書籍の開発キットを使用して、3相BLDCモータを回転させるプログラムを作ります。

https://shop.cqpub.co.jp/hanbai/books/48/48011.htm

前回、とりあえずモータを回転させるプログラムを作成しました。

前回: とりあえずモータを回転

今回は6step制御という方法でモータを回します。

6step制御

以下のように回転する磁界を6ステップで作ります。

ポイント

  • 反時計回りに磁界を発生させています。
  • 各ステップで1相をHigh-Z(イネーブル(EN)信号をLow)にして電流を流さないようにします。
  • 図では6stepで1回転していますが、実際には1回転ではなく、電気角の3相分に対応する機械角だけ回転します。以下の記事が分かりやすいです。

6step

3. タイミングチャート

  • 各stepの開始時にINxxとENxxの設定を行います。
  • FreeRTOSのvTaskDelayで一定時間待ってから次のstepを開始します。待ち時間が1stepの時間となり、モータの回転速度になります。
  • 使用しているモータは磁極が14極あるので、6step(U,V,Wを一周)で360度/(14/2)=51.4度回転します。1stepは51.4/6=8.57度になります。
  • 1秒間に1回転させたい場合の1stepの時間は約24msになります。

PWMのタイミングチャート

コード

https://github.com/ohmusso/NUCLEO-F302R8/blob/mortor/src/app/app.c#L56C40-L56C40

動作確認

  • 回転数に合わせてPWMのDutyを調整しています。回転数が低いときはDutyを小さくして回転磁界の大きさを小さくします。そのほうがきれいに回ってくれました。

次回

  • センサレス制御を行うために必要なAD変換を実装します。

以上