磁気エンコーダでBLDCの角度を求める
おはようございます!
このブログも久しぶり!
今回は磁気エンコーダででBLDCの角度を求めていきます!
脱・強制転流制御=FOC 目指して、頑張っていきます!
注意事項
- 今回算出するのは機械角であり電気格ではありません。
算出することもできますが、磁気エンコーダのテストであるため、直感的である機械角を求めるようにしています。
動画
百聞は一見に如かず という言葉の通り、まずはみてみましょう。
磁気エンコーダのテスト! pic.twitter.com/l9J1dshJdN
— そらの技術垢 (@sora81_tech) October 26, 2025
略語解説
BLDC・・・ブラシレスDCモーター(Brushless DC Motor)の略。
一般的なDCモーターと異なり、ブラシ(電流を切り替えるもの)がないことが特徴です。
角度を求める必要性
「市販ESC」や「ドローンコントローラー」と呼ばれるものは一般的に強制転流という方式でBLDCを回転させています。
しかし、強制転流という方式は安定しているとは言えません。
BLDCはDCモーターとは異なり、ブラシが存在ないため、電流の流れる方向をこちら側で切り替えてあげる必要があります。
そこで用いられるのがFOCや距形波駆動という制御方法です。
これらを使用するためには磁気エンコーダという部品が必要になります。
磁気エンコーダって?
磁気エンコーダとはN極とS極のある磁石を素子の上にかざすことで角度を検出することができるセンサです。
今回の目的にぴったりなセンサーであることが理解できると思います。
用途もわかってきたところで、やってみましょう。
今回はSwitch Scienceさんでこちらを購入しました。
基板制作も考えたのですが、既製品で動作確認をまずすべきだと判断したため、こちらを購入しています。
制作
1. 磁石の配置
まずBLDCに磁石と磁気エンコーダを設置しなくてはなりません。
これはめちゃくちゃ簡単で、回っている部分につければいいです。
今回は裏側に設置しました。

2. 固定具の設計
固定具を制作するにあたり、磁石とICの距離を考える必要があります。
以下の図によると、0.5~3mmが望ましいそうです。
今回は2mmで設計しました。
引用: Grove - 12ビット磁気回転位置センサー/エンコーダ(AS5600) | seeed Studio
制作手順
-
購入した基板をノギスなどで計測し、3DCAD上で設計する

-
BLDCや磁石などを入れて、計測しながら固定具をモデリング

-
完成!

今回はこれを3Dプリントしました。
そこまで大きいものでもないので5分で終わりました。
3. 固定具の設置
あとはスペーサーやナットを入れて設置するだけです。

4. マイコンと接続
今回はI2C接続するので、以下のピンをXHコネクタを介してマイコンに接続しました。
- 電源: (+5V or +3V3) + GND
- SCL
- SDA
今回はNucleo F446REを使用しました。
角度を取得
いよいよ角度を取得していきましょう!
サンプルコードは商品ページの説明欄にありました。
これを少し改変したものを使用します。
(末尾にGitHubのリンクを貼っておきます)
このコードで得られるRawAngleですが、0~4096の間の数値なので、これを機械角に変換する必要があります。
60分法で治すためには以下のようにすれば良いです。
float angle_deg = (RawAngle * 360.0) / 4096.0;
終わりに
今回は角度を取得しただけですが、この後はこの角度を元にしたBLDCの制御を行うために頑張るので、応援していただけると助かります!
情報公開
今回のプログラムは一応GitHubにCC BY-NC-ND 4.0を適用してアップロードしてあります。
ライセンスの元、ご自由にお使いください。
ロボカッパーの方は、「ロボットを自身のチームだけで作成する」というルールに違反しないようにしてください。
Comments