RPMフィルターを使用するための、ESC無料ファームウェア、BLHeli_M を使ってみよう。実際に作業した時のスクリーンショットを多数掲載していますので簡単に設定できます。
レーシングドローンのモーターから、ジャイロに入って来るノイズを除去する、Betaflight の RPMフィルターはぜひ設定したい機能です。その RPMフィルターを使用するためには、ESCのファームウェアを 「DSHOTテレメトリー」対応のものにしなくてはなりません。
「DSHOTテレメトリー」対応ファームウェアの一つ、無料で使用できる JazzMaverick版の BLHeli_s である、通称 BLHeli_M を使用するための設定ガイドです。
モーターの電力効率を上げてフライト時間を長くする、高周波PWMが利用できる最新バージョンにも対応しています。
現在BLHeli_Mは開発が止まっています。
最新の無料ESCファームウェアであるBluejayがあります。Bluejayのご利用をおススメします。
BLHeli_Mファームウエアを使用する前に
BLHeli_M のバージョン
BLHeli_M には開発初期のバージョンで、Betaflight の推薦がある バージョン16.73 と、最新版のバージョン16.9 の2種類がメインとしてあります。
RPMフィルターだけを使用したい場合は、バージョン16.73を使用してください。
バッテリーの持ちをよくするといわれる、PWM周波数 48KHz や 96KHz の恩恵を受けたい時は、
バージョン16.9を使用します。
ただし次の「バージョン16.9を使用には注意が必要」を読んでください。
バージョン16.9を使用するには注意が必要
前の項目で 「Betaflight の推薦」と記載したのは、Betaflight Wiki の 双方向DSHOTとRPMフィルターの説明ページで、「16.73バージョンは、RPMフィルタリングを適切にサポートする唯一の推奨バージョンです。」と記載されているからです。
では他のバージョンは使用できないのでしょうか?(めんどくさいので読まずに結論へジャンプ)
同じページの冒頭には、
警告! - 16.73以降のJazzMaverickの非公式ベータ版BLHeli_Sファームウェアは、
RPM Filteringと互換性がないので避けてください。
作者は望ましくない変更を行い、RPMテレメトリデータの供給速度を低下させました。
その結果、RPMフィルタリングはモーターの振動をうまく追跡できず、
フィルタリングの性能が低下し、モーターが高温になる可能性があります。
(注:DeepLによる日本語訳)
と記載されています。
これはどういうことかというと、
Betaflight は ESCにモーターの回転数を指令するデータである DSHOTを送ると、ESC側からはテレメトリーデータが帰ってきます。Betaflight のRPMフィルターは帰ってきたテレメトリーデータを使用して、リアルタイムにノイズフィルターを構成します。つまりDSHOTとテレメトリーは対になっています。
16.73 より後のバージョンでは、毎回のDSHOTごとにテレメトリーデータが帰って来ないバージョンが存在します。そのためリアルタイムにノイズフィルターを構成できない時があります。この時あまりにも過大なノイズが瞬間的に発生した場合にはノイズフィルターで除去できず、通常のジャイロデータとしてPID制御に渡され、次のモーター制御のためのDSHOTにノイズが組み込まれてしまうことになります。そのためモーターが高温になる可能性があります。
バージョン16.9では推薦バージョンである16.73と同じ仕様のモードが実装されています。そのモードを使用することで、48KHz・96KHz の高周波PWM設定が使用できるようになっています。
ではなぜ Betaflight Wikiでは16.9は推薦になっていないのでしょうか?
それは開発者である JazzMaverick氏が各バージョンで実装した機能を正しく説明する文章を出していないからです。そのためBetaflight側では評価ができずにいるのです。
現在でもバージョン16.9の機能全てを正しく理解することは難しくなっています。したがって、
バージョン16.9の機能の中で必要な部分だけを使用します。
具体的にはPWM周波数の変更だけを利用することです。
それでも推薦バージョンである16.73に48KHzや96KHzが使用できるようになりますので機能としては十分です。
専用の BLHeli Configurator をダウンロードする
BLHeli_M を使用するには専用の BLHeli Configurator を使用するのが簡単です。
これも有志の方がJazzMaverickバージョン用に作成してくれました。
以下のページへアクセスします。
一番上の最新版を選択します。

私は Windows10の64ビット版を使用していますので、BLHeli-Configurator_win64_1.2.0.beta4.zip をダウンロードしました。
ダウンロード後解凍すると、BLHeli Configurator というフォルダがあります。私は BLHeli_S版と区別するためフォルダ名を変更しておきました。

これならバージョンも分かりますね。
フォルダ内の blheli-configurator.exe を起動します。
BLHeli_M ファームウエアを更新する
ファームウエアを更新する手順です。予め Betaflight Configurator 等にUSB接続できるようになっている必要があります。使用する BLHeli_Mファームウエアのバージョンによって少し手順が違います。
BLHeli_M 16.73 を使用する場合は、
先にファームウエアファイルをダウンロードしておく必要があります。
BLHeli_M 16.9 を使用する場合はその必要はありません。 こちらから始めます
BLHeli_M 16.73 の場合は使用しているファームウェアのターゲットを調べる
ドローンをUSBケーブルでパソコンと接続し、BLHeli Configurator を起動します。ドローンにバッテリーを接続します。

Connect をクリックしESCと接続します。

Read Setup をクリックしESCから設定内容を読み込みます。(バッテリーが接続されていないと読み込めません)


上の図では、ESC 1: S-H-50, 16.76 と表示されています。
真ん中の S-H-50 がファームウエアのターゲット名になりますのでメモしておきます。その右はバージョンです。
このターゲット名に適合するファームウエアをダウンロードしておく必要があります。
一度 BLHeli Configurator を切断し、ドローンもUSBケーブルを抜いておきます。
BLHeli_M 16.73 ファームウエアをダウンロードする
下記のサイトを開きます。
下の画像の BLHeli_S SiLabs をクリックします。


同じように Hex files 16.73 をクリックします。


先ほど調べたファームウエアのターゲット名を探してクリックします。
この例では、S-H-50でしたので、S_H_50_REV16_73.HEX をクリックします。


開いたページの右側にある Raw を右クリックします。


「名前を付けてリンク先を保存」を選択してダウンロードフォルダ等に保存します。
この時ファイルの拡張子は、.hex になるようにしてください。


ここまでは、BLHeli_M 16.73 バージョンを使用する時の準備です。次からは16.9 バージョンも共通です。
ファームウエアの更新
ドローンをUSBケーブルでパソコンと接続し、BLHeli Configurator を起動します。バッテリーを接続します。
Read Setup をクリックして設定内容を読み込みます。



Flash All をクリックします。


ESC の欄が正しいターゲット名が選択されていることを確認します。
16.9 の場合は、Version で 16.9 [Blheli_M Offcial] を選択し、Flash をクリックします。


16.73 の場合は、Select File Manually をクリックして、ダウンロードしておいたファームウエアのファイルを選択します。


ファームウェアの書き込みが始まりますので、4つのESC全てが終了するまで待ちます。


書き込み途中に左側に赤色で警告のような物が出ますが、4つのESCの内容が違うからであり、すべて書き込みが終われば出なくなります。


書き込みが終わりました。BLHeli_M 16.73 の場合はこれで終了です。
DSHOTテレメトリーが有効になりましたので、RPMフィルターが使用できます。


BLHeli_M 16.9 ファームウエアの設定
BLHeli_M 16.9 を使用する場合はいくつかのオプションが利用可能です。


一番使用したいオプションはこれでしょう。
PWM Frequency PWM周波数
小型のモーターほどPWM周波数が高くなると電力効率が良くなりバッテリーの持ちが良くなります。このオプションでは、24KHz、48KHz、96KHz の3種類から選択できます。


一般的によく使われる周波数は、4インチ・5インチ機以上は 24KHzを、3インチ以下では48KHzを使用します。96KHz は0803以下のモーターに使用されています。
以下デフォルトを推薦
(Async-PWM と OFF)
次のオプションの CE (Commutation Enhancement) はさらに電力効率を上げます。しかし、設定を誤るとESCを破壊しますので、まず Async-PWM を選択してください。Async-PWM を選択すると16.73バージョン相当の機能となります。
この CE を変更する場合は小さい値から始めてください。そして必ずESCが高温になっていないか確認してください。モーターではなくESCです。


次オプションの ESC FF {Acceleration/Breake) は入力されたDSHOT命令に対して比例した出力をせず、非線形に出力します。ESC FF の FF は FeedForward の事です。Betaflight でRC入力で使用されているのと同じ効果をスロットルに作り出します。実に先進的な取り組みです。ただし、まだ実証数が少ないので初めはOFFで使用してください。
PWM周波数を48KHz以上に上げた時に、スロットルOFF時のブレーキが弱い(フワフワ感とか)と感じることがある場合は少しずつ設定してみてもいいかもしれません。自己責任でお願いしますね。
他のオプションはオリジナル版のBLHeli_Sと同じです。
最後に
BLHeli_M ファームウエアは独自の機能が搭載されたこと、作者が詳しく仕様の説明をしていないこともありコミュニティーの中では少々混乱しています。冒頭に記したように Betaflight の警告が出ているバージョンもあります。また性能的にも有料のJESCより若干ノイズが多いという報告もあります。
しかし無料で使用でき、48KHzが使用できる BLHeli ファームウエアは BLHeli_M 16.9 しかありません。DSHOTテレメトリーによってRPMフィルターやダイナミックアイドルが使用できる恩恵も大きい物です。
したがって当面の間、BLHeli_M 16.9 を使用する場合は PWM周波数の変更のみにしておくのが良いかもしれませんね。早く安心して全機能が使えるようになって欲しい物です。
現在、私は小型フープ機に BLHeli_M 16.9 の48KHz を使用しています。ノーマルより30%くらいフライト時間が伸びるのは大変魅力的です。各開発者さんたちに感謝したいと思います。