BLDC制御の道 -強制転流編-

はいどうもこんにちは!しろくま@胡瓜です。

BLDC動きました!!!!

概要

今までのBLDC記事は既製品ESCをNucleoとかArduinoで制御するというものでした。今回はまじで自作ESCでBLDCを回せました!

2021/05/24追記:短形波ではなく正しくは「矩形波」です。単純に間違えて覚えてました。指摘してくださったタキモトさんありがとうございます。

BLDCの仕組み

RCJJでBLDCを使ってるチームはほぼいないと思うので、BLDCについて知らない人も多いと思います。詳細な説明は全て省きますが、BLDCについて簡単に説明します。

BLDC(ブラシレスDCモーター)を超簡略化して書くとこのような構造になっています。

U相、V相、W相という三つの電磁石があり、それらの電磁石は真ん中で結線されています。BLDCに電源線が3本あるのはこのためですね。ここで注意して欲しいのは回転するのは電磁石ではなく永久磁石であるということです。ここが大きなDCモーターとの違いになります。

U相からV相に電流を流したとき、U相は永久磁石に対してN極になり、V相は永久磁石に対してS極になります。すると永久磁石は紫色の矢印の方向に回転します。

次にU相からW相に電流を流します。U相は永久磁石に対してN極になり、W相は永久磁石に対してS極になります。それに合わせ永久磁石も回転します。

さらにつぎはV相からW相に電流を流します。V相は永久磁石に対してN極になり、W相は永久磁石に対してS極になります。それに合わせ永久磁石がさらに回転します。

これを繰り返すことでBLDCは回っていきます。この通電方法を120°通電と言います。他にもいろいろあるらしいですがここでは取り扱わないことにします。

発展的にはなりますが、120°通電の各相の波形はこのようになっています。

自作ESC

回路は適当にNch-FETを使って作りました。

これを3つ用意して格相に接続します。

一気にすっ飛ばしますが出来上がった基板がこちらです。

強制転流とは

今さらっと回転方法について説明しましたが、この方式でうまく回転させるには回転軸の角度を知る必要があります。本来回転軸の角度に合わせて転流していく必要があるのです。これをしないと、周りから負荷がかかったとき脱調してうまく回らなくなってしまいます。

しかし、現段階ではそんなセンサを搭載するところまで開発が進んでいないので、動作確認のために強制的に転流してそれっぽく回しています。これを強制転流と言います。常に過剰な電力を供給することになるので効率は最悪ですし、振動も大きいので、あくまで動作確認です。

プログラム

今回はArduinoMEGAで動作確認しました。

プログラムはBLDCの仕組みがわかっている人がみたらお茶の子さいさいだと思います。一つ補足するとしたら、PWM周波数を約31kHzまで引き上げているというところでしょうか。

情報公開

今回の回路とソースコードをこちらのリポジトリにすべて公開しておきました

MITなので自由に使ってもらって構いませんが、試される際は自己責任でお願いします。非常に大電流を扱う関係上、発火や火傷、爆発のリスクを伴うので細心の注意が必要になります。また、僕の持っている情報が必ずしも正しいとは限らないため、試される際は事実確認をしっかりとなさった上で試してください。

僕も今回の開発に当たって寮を燃やさないために以下の安全対策を取りました。

  • 通電前にショートがないか確認する
  • 通電前に基板の配線ミスがないか何十にもチェックする
  • バッテリーと回路の間にヒューズを入れる
  • マンガン→Ni-MH→Li-Poの順で実験する

大事なことなのでもう一度言います。何度でも言います。

試される際は自己責任でお願いします。(この文章のためだけに文字をでかくして太字にして赤色にする方法を模索したというのは内緒…)

終わりに

今回は強制転流だったので次はセンサあり駆動や正弦波駆動にもチャレンジしてみたいと思います。もし時間があればセンサレス駆動とかもやってみたいです。

では今日はこの辺で。またね!

Comments