1. はじめに
私を含め、Raspberry piを買ったはいいものの、何をやったらいいかわからず、持て余している方は多いのではないでしょうか。
特に私の感覚では、「ハードウェアを動かすこと」に困っている方が多いように思います。
それに加え、私は仕事でBLモータを使ってはいるものの、BLモータが回転するメカニズムがわかっていなかったので、Raspberry piでBLモータを回転させる実験機を作ることにしました。
実験機を作りにあたり、ESCではなくインバータ(本記事ではIHM07M1)を使うことで、
より正確にBLモータが回転するメカニズムを理解できるように努めました。
2. 本記事で参考にしたサイト
本記事は以下サイトを参考にしております。作成者の方にはこの場を借りて、お礼を申し上げます。
3. 本記事のゴールと注意点
BLモータの回転に最もよく使われる方法は「ベクトル制御」だと思われ、私も当初はベクトル制御実装を目指していましたが、
Raspberry piはPWMチャンネルが2つしかなく、BLモータの3相を独立で制御することができません。
よって本記事では「センサード120°制御+電流計測」までを解説します。
4. 本記事の構成
前述の「センサード120°制御+電流計測」を全て解説すると本文が膨大となるため、タスクとに、下記のように記事を分けます。
- BLモータの絶対角計測(本記事の範囲)
- インバータ(IHM07M1)からのPWM出力
- BLモータの3相電流のAD変換と読み取り(執筆中)
- 実験機製作(執筆中)
- プログラム作成(執筆中)
前半1章~3章で必要な機能の実装方法を述べ、後半4章と5章ではどのように実験機とプログラムを作ったかを述べます。
5. BLモータの絶対角計測
5.1. 使用する機器と配線図
本記事で使用する機器を以下に示します。
機器名 | 型番 |
---|---|
角度センサ | AS5048A |
コンピュータ | Raspberry pi 4 Model B |
AS5048Aの通信仕様はSPIなので、Raspberry piと下図のように接続します。

5.2. AS5048A~Raspberry pi間の通信フロー
AS5048AとRaspberry piの通信フローを下図に示します。通信仕様はSPIであるため、CSがLowである間のみAS5048AとRaspberry piとのデータのやり取りが発生します。AS5048AはRaspberry piからRead CMDを受信した後に、Angle dataを返します。

AS5048Aのデータは14bitなので、Angle dataに下記係数を掛けるとdegreeに変換することができます。
$$
0.0219\ \text{deg/LSB}
$$
「SPI通信」と「AS5048Aの仕様」については下記をご参照ください。
5.3. 絶対角計測プログラム
著者の作成したAS5048Aのプログラムは以下Githubリンクにて公開しております。
https://github.com/hiyo-control/02_BL_motor/tree/main/Chapter1_AS5048A_program
プログラム作成では下記Githubで公開されているコードを参考しました。
https://github.com/eborghi10/AS5048A/tree/master/src