
市販のESCなどを経由せずにブラシレスDCモーター(BLDCモーター)の回転制御を検討していきます。
概要
BLDCモーターをマイコンなどから駆動するときには、RCやドローンなどで使用している市販のESC(Electronic Speed Controller)を経由して駆動するのが簡単で便利です。ただESCもそれなりに高価。ESCに変わる回路を自作して制御している方もちらほらいますので、自分でもできないかとチャレンジしてみることにしました。まずは基本となりそうな矩形波でArduinoからBLDCモータを駆動してみたいと思います。
回転の仕組み
BLDCモーターの動作原理です。矩形波駆動について調べたことざっくりですがまとめておきます。

コイルに流れる電流の向きをスイッチで順番に切り替えて回転させます。このスイッチ部分の切り替え制御をArduinoで変わりに行います。
矩形波駆動
矩形波駆動は一応もっとも簡単な駆動方法だそう。まず今回はこの方法でトライしていきたいと思います。
角度 | 0° | 60° | 120° | 180° | 240° | 300° |
u | 1 | 1 | 1 | 0 | 0 | 0 |
v | 0 | 0 | 1 | 1 | 1 | 0 |
w | 1 | 0 | 0 | 0 | 1 | 1 |
1周360°で3つのスイッチを120°毎にずらしてON/OFFを切り替えます。000、111無しの6パターンの電流方向の切り替えで回転させます。調べるところによってはこのようにON/OFF(1,0)だけの場合や、スイッチの組合せにオープンも加えて説明しているところなどもありそこら辺は消化不足です。
スター結線の場合

スター結線のコイル電流方向と回転のイメージです。あってるか不安ですが恐らくこんな感じかと。オープンのタイミングがあった方がしっくりくるような感じもしますがここら辺も消化不足。
デルタ結線の場合

所有しているBLDCモーターが、スターかデルタなのかはよくわかっていないので理解を深めるためにこちらも記載。
Arduinoで矩形波駆動
回路
ざっくりですが廻し方が分かったのでArduinoで準備していきます。スイッチ部分となるハーフブリッジ回路はモータードライバー(DRV8835)で代用します。

DRV8835は1個でHブリッジを2組(ハーフブリッジ4組)搭載しているのですが、Hi側同時ONができないのでDRV8835を2個使ってハーフブリッジ3回路分にしてます。
in1 | in2 | out1 | out2 |
0 | 1 | -ON | +ON |
1 | 1 | -ON | -ON |
1 | 0 | +ON | -ON |
0 | 0 | Hi-Z | H-iZ |
Arduinoからの入力は3線で、入力をそのまま出力にしたかったので上二つの組合せで使用。「in2」はVcc接続(HIGH)で、「in1」で出力制御。なのでout2側をモーターに繋いでます。入力6線で制御すればオープンも使用できたと思うのですがなんか大変だったので3線にしてます。
プログラム
//2025/03/23 矩形波駆動テスト //imo Lab. //https://garchiving.com void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); } uint16_t t = 10; void loop() { motorDrive(1, 0, 1); motorDrive(1, 0, 0); motorDrive(1, 1, 0); motorDrive(0, 1, 0); motorDrive(0, 1, 1); motorDrive(0, 0, 1); } void motorDrive(bool u, bool v, bool w) { digitalWrite(2, u); digitalWrite(3, v); digitalWrite(4, w); delay(t); }
2,3,4番ピンを6ステート分の組合せで順番にON/OFF。delayを挟んで敢えて低速回転になるようにしてます。
出力テスト

さっそくプログラム書き込んでブレッドボードで回路テスト。出力波形確認するためにPicoも繋います

10msインターバルで6ステートなので周期60msとほぼ命令通りの出力。位相も120°ずれてるので問題なさそうです。
モーターのテスト駆動
モーター繋いで回転テストしてみました。以前、ドローン自作するときの検討に購入したBLDCモーターを使ってます。確認したら8年も前に購入したもの。月日の経つのが早い。

先ほどのプログラムのままで回転テスト。思いのほかスムーズです。モーター電圧は別電源から供給してます。

1周期⇒6sまで遅くしてみました。少しカクツキがありまずがとりあえず回転はしてます。
単純に回転させるだけなら思いのほか簡単にできました。次は正弦波駆動、正逆転制御などと検討していく予定です。
▼参考▼
コメント