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. インバータ(IHM07M1)からのPWM出力
5.1. 使用する機器と配線図
本記事で紹介する機器を以下に示します。
機器名 | 型番 |
---|---|
BLモータ | A2212 KV1000 |
インバータ | IHM07M1 |
DCDCコンバータ | AE-LTC3111 |
DCジャック | AE-DC-POWER-JACK-DIP |
ACアダプタ | M050200-A010JP |
コンピュータ | Raspberry pi 4 Model B |
上表で示した機器を下図のように接続します。

接続図にある、
- IHM07M1の印加電圧
- UVW各相へのPWM
- UVW各相へのEnable
についての補足を下記に示します。
IHM07M1の印加電圧
IHM07M1のデータシートより、J1には8V~48Vの間の電圧を印加することができます。
今回「15V」と決めたのは、手元にあったDCDCコンバータの最大出力電圧が「15V」だったからです。
UVW各相へのPWM
IHM07M1のJ2からPWMを出すには、Raspberry piからIHM07M1へPWMを加える必要があります。
Rapsberry piでPWM出力のできる端子は下記です。
- PWM Channel 0:GPIO12(32Pin)、GPIO18(12Pin)
- PWM Channel 1:GPIO13(33Pin)、GPIO19(35Pin)
※ Raspberry piのデータシートから引用
上表が示すようにRaspberry piにはPWMチャンネルが2つしかないため、独立で出力できるPWMは2つまでです。
本記事で紹介する「センサード120°制御」は1チャンネルずつPWMを指定するので問題はありませんが、「ベクトル制御」は3チャンネル独立にPWMを指定する必要があるため、Raspberry piの機能ではベクトル制御を実装することはできません。
IHM07M1の回路図より、C10_23、C10_21、C10_33にUWVのPWMを入力する必要があります。

※ 上図はIHM07M1のデータシートからの抜粋です
UVW各相へのEnable
詳しくは後述しますが、「センサード120°制御」のためにはUVW相の「どの相からどの相へ電流を流すか」を指定しなければいけません。それをするために、Enableを使います。
IHM07M1の回路図より、C7_1~V7_3とRaspberry piのGPIOを接続します。GPIOはON/OFFができればいいので、どれを選んでも問題ありません。

※ 上図はIHM07M1のデータシートからの抜粋です
5.2. IHM07M1からのPWM発生確認
IHM07M1にて、
- Enableが正常に動作するか
- J2からPWMが出力されるか
の動作確認をするために、下図の1~6を繰り返すプログラムを作成します。

※ 図はこちらのサイトから利用させていただきました。
下表のようにPWMとEnableを変化させます。
No | U相 PWM | V相 PWM | W相 PWM | U相 Enable | V相 Enable | W相 Enable |
---|---|---|---|---|---|---|
1 | Output | 0 | 0 | ON | OFF | ON |
2 | Output | 0 | 0 | ON | ON | OFF |
3 | 0 | 0 | Output | OFF | ON | ON |
4 | 0 | 0 | Output | ON | OFF | ON |
5 | 0 | Output | 0 | ON | ON | OFF |
6 | 0 | Output | 0 | OFF | ON | ON |
今回は「Enterキー」を順番に押すとNo1~No6の順に変化するプログラムを作成し、J2から意図したPWMが出力されるかを確認します。
5.3. インバータPWM発生プログラム
著者の作成したインバータPWM発生プログラムは以下Githubリンクにて公開しております。
https://github.com/hiyo-control/02_BL_motor/tree/main/Chapter2_IHM07M1_program
プログラム作成では下記Githubで公開されているコードを参考しました。
https://github.com/RR-Inyo/bldc6p
5.4. 動作の様子
J2とオシロスコープを繋ぎ、プログラムを実行するとPWMが確認できます。
また、J2とBLモータを接続し、Enterキーを押し続けるとBLモータを回転させることができます。
その様子は下記のyoutubeリンクからご覧ください。