オープンループ正弦波駆動 ーブラシレスモータ駆動への道4ー

Home > 電子工作 > オープンループ正弦波駆動 ーブラシレスモータ駆動への道4ー
すき 1
うんこ 0

これまでは矩形波駆動によるブラシレスモータ制御を勉強し
前回は回転速度指定によるセンサレス クローズドループ矩形波制御を実現しました。

センサレス クローズドループ矩形波制御 その2 ーブラシレスモータ駆動への道3ー

 

ここからはブラシレスモータの正弦波駆動について学びます。

 

 

疑似正弦波

正弦波駆動の下準備としまして、まずはESP32で正弦波出力の生成を確認しました。

正弦波を直接出力できませんので、PWMのデューティを時間で変化させて疑似的に正弦波を実現させます。

以下がESP32による疑似正弦波出力の様子です。

可変抵抗を2個接続して正弦波の周期と振幅も変えれるようにしました。

 

Arduinoコードのコア部は以下のような感じ

2個の可変抵抗で正弦波の周期 period と振幅 ampを指定して、正弦波の周期を48分割してPWMのデューティを計算してledcWriteで出力しています。

コレを位相を120°ずらして3出力にしてドライバ駆動すればモータを回せるはずです。

 

ドライバ基板作製

これまでの正弦波駆動ではパワトラ駆動にはハイサイドとローサイドの入力を指定できるプリドライバIC IR2101を採用していましたが、正弦波駆動のために1入力でハイサイドとローサイドの信号を内部でデッドタイム込みで生成してくれる IR2302 を採用いたしました。

ドライバのNMOSには 2SK4017 を用いました。

1chの構成は以下の通りです。1入力でドライバ駆動できます。

 

まずは1ch分を作製しました。

 

コレに先ほどのESP32による疑似正弦波を入力します。

 

問題なくドライバ出力が確認できましたので残りの2chも作製し、ドライバ完成です。

 

ESP32で位相を120°ずらした3信号を入力して出力を観測しました。出力は抵抗で1/3に分圧して観測しています。
問題なく疑似正弦波が出力していますが、使用したADALM2000のオシロではサンプリングが間に合わず平滑化され正弦波に観えています。

 

オープンループ正弦波駆動

ドライバもできたのでいよいよ正弦波駆動を実施します。

構成

構成は以下の通りです。

 

Arduinoコード

 

疑似正弦波を生成するためにドライバ駆動ピン(IO25~27)はledcWriteを用いて20kHz PWM出力します。分解能は10ビット(0~1023) (L. 20-28)。

可変抵抗で正弦波の周期と振幅を設定します (L. 32, 33)。

疑似正弦波を48分割して120°位相をずらして出力します (L. 37-46)。

動作

まずは振幅Maxで動作確認しました。
無事にモータの回転を確認できました。低速回転もできていますが遅すぎると停止します。

 

正弦波の振幅を小さく調整するとかなり低速でも回転できました。

 

おわりに

オープンループでのブラシレスモータ正弦波駆動を確認することができました。
矩形波駆動では出来なかった低速回転が実現され大変満足です。

以下では可変抵抗で回転位置を指定して動作させました。
センサレスなので絶対位置の精度は高くないはずですが、それなりに動いたので驚きました。

 

次回はセンサでフィードバックをかけてクローズドループでの正弦波駆動を楽しみたいと考えています。

今回は高速回転ができませんでしたが、センサ導入でできるようになるのでしょうか?
今のところ なんとなく正弦波駆動は高速回転に向かないような気がしています。
コントローラの速度にも依存するかもしれませんね。

引き続き勉強進めます。

次の記事

クローズドループ正弦波駆動 その1 ーブラシレスモータ駆動への道5ー

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください