ドローンが搭載しているジャイロにモーターからのノイズ信号が混入すると、ドローンの制御を難しくします。そのために通常はフィルターを使用してノイズ成分を取り除いた信号を制御回路(PIDコントローラ)に送っていますが、フィルター処理は負荷が高く遅延も発生します。 Betaflight 4.0 から導入された RPMフィルターは、モーターとFCが通信してモーターからのノイズを大幅に取り除くことができます。Betaflight 4.1 になりさらに強化されたと同時に、導入も簡単になりました。その結果フィルター処理が簡潔になり飛行特性が向上します。
RPMフィルターを使用するにはFCとESCが通信する必要があります。それを実現するのが 双方向DSHOT(Bidirectional DSHOT)という技術です。文字通りFCからESCへの信号だけでなく、ESCからFCへも信号が流れます。この双方向DSHOTを使用できるようにするには、ESCのファームウェアを対応するものに更新しなければなりません。
ESCのファームウェアが BLHli_32 ならすぐにでもファームウェアを更新して使用できます。しかしファームウェアが BLHeli_s の場合は対応するファームウェアが有償でファームウェアの更新方法も特別です。そこで今回はこの BLHeli_s のファームウェアを更新して、RPMフィルターを使用できるようにしてみましょう。
なおファームウェアが BLHeli_32 の場合の更新方法はこちらの記事をご覧下さい。
ESCのファームウェアを確認する
ファームウェアの種類の確認
使用するESCの説明書や購入したサイトの製品ページ等でESCのファームウェアを確認します。BLHeli_32 の場合は当ブログの関連記事を見て更新してください。残念ながら BLHeli_32 ではなかった場合は次に JESC が対応しているか調べます。
ファームウェアのターゲットの確認
ここで言うターゲットとは、実際に使用されているファームウェアの名前です。製品ページなどでは、
Factory firmware: S_H_50_REV16_7.Hex
などと記載されてることもありますが、何も表記されていないことの方が多いです。そこで BLHeli Configurator で実際にESCに接続して確かめます。
BLHeli Configurator はこちらからダウンロードできます。
しかし JESC を使用するときにも専用の Configurator をダウンロードして使用するので初めからこちらをダウンロードしてもかまいません。ただしファームウェアのターゲットが対応していなかったら無駄になりますが・・・
JESC の対応数が多そうなので今回は初めから専用Configuratorを使用する方法で行ってみます。今回RPMフィルターを使用するのは、Whoop用FCの Crazybee F4 PRO V3.0 です。
Whoop用のFC&ESC一体型です。この製品ページには Blheli_S 10A 2-4S Brushless ESC と記載されています。ファームウェアのターゲットも Factory firmware: F_H_40_REV16_5.HEX と記載されています。このターゲット名のなかの、F_H_40 というようにHがあるファームウェアがJESCが対応している物です。
JESC Configurator をダウンロードする
JESCのホームページを開きます。下記をクリックするとブラウザの新しいタブで開きます。
何やらページ下部にESCの写真が並んでいますが、ライセンス料です。ESC1個に付きライセンスも1個必要です。例えば4in1のESCではライセンスが4個いることになります。つまり$5.94です・・・
ちなみに私はライセンス20個の一番右のを購入しました。
まだ購入しないで下さい。まだファームウェアが対応しているか調べていないのでw
ページ左のメニューの「Install Instructions」をクリックします。インストール方法ですね。
次に赤枠部分のhere をクリックして JESC Configurator のダウンロードページを開きます。
最新版をダウンロードします。ダウンロードリンクが見えない時は図のように「Assets」をクリックすると見えるようになります。
ここでは JESC-Configurator_win64_1.2.4.zip をダウンロードしました。
ダウンロードしたZIPファイルを展開すると JESC_Configurator フォルダがありますの、フォルダ内の、jesc-configurator.exe を実行します。
起動しました。
FCにUSBケーブルでパソコンと接続します。機体にバッテリーを接続します。JESC Configurator の右上の接続先COMポートを確認して(FCに接続する時と同じです。)Connect をクリックします。接続できましたら「Read Setup」をクリックして現在のファームウェアの設定内容を読み込みます。
設定内容が読み込まれ表示されたらファームウェアのターゲット名を確認します。下図では赤枠部分に
ESC 1: BLHELIS-F-H-40 (16.7) - unlicensed
と表示されています。
ファームウェアの種類が BLHELIS(BLHeli_s)でターゲットが F-H-40 になります。カッコ内の16.7がバージョン番号ですね。無事にターゲット名に中に H がありましたので JESC が対応していることが分かりました。
もしHが無かったら・・・残念です。
次に赤矢印の「License All」をクリックします。するとJESCのホームページが表示されますのでアカウントを作成します。
JESCを使用できるようにアカウントを作成する
JESC を使用するにはまずアカウントを作成します。先ほど JESC Configurator 内に表示されたページ内の「New Customer」をクリックします。次ページ以降で必要事項を入力してアカウントを作成してください。なおアカウントはConfigurator内ではなく直接ホームページからでも作成できます。その場合は「Returning Customer」からログインします。
アカウントが作成出来たら(ログイン出来たら)メニューの「My ESCs」の「ESC licenses」をクリックしてみます。
まだライセンスを購入していないので、購入してくださいと表示されています。家のマークのホームページボタンをクリックしてライセンスをカートに入れて購入します。
支払方法はペイパルかクレジットカードが使用できます。
支払いが完了したら再びホームページメニューの「My ESCs」の「ESC licenses」をクリックしてみます。
20ライセンスを購入したので、20 licenses are Available と表示されています。下部には接続しているESCには4ライセンス必要と表示されています。
「Activate ESCs」をクリックします。
再びESCの画面になり、unlicensed から licensed に変わりました。
JESCファームウェアに更新する
「Flash All」をクリックします。ターゲット選択画面が出ますので、ESCの欄はそのままで、Version 欄で最新のものを選択します。
Versionを選択後「Flash」をクリックします。ESC 1 から順番に更新されていきます。
更新が完了すると「activated」の文字が追加されています。
すべて更新が完了後、今度はDSHOTテレメトリー機能をインストールします。
「Flash All Telemetry」をクリックします。
Version欄で、「Dshot Telemetry Service」を選択します。そして「Flash」をクリックします。
DSHOTテレメトリー機能が使用できるようになりました。
以上でJESCの導入は完了です。右上の「Disconnect」をクリックして切断し、JESC Configurator は閉じてかまいません。
RPMフィルターを使用できるようにする
ESCが双方向DSHOTを使用できるようになりましたので、RPMフィルターを使用できるようになりました。
設定方法は以下の当ブログ記事に記載されていますが、ここでも簡単に設定してみましょう。
Betaflight Configurator 10.6.0 以降でFCに接続します。
基本設定タブを開きます。以下の赤矢印のところを変更します。
モータープロトコルをDSHOT300
双方向DshotをONに
モーター極数はモーター内の磁石の数を入力
ジャイロとPIDループの周波数を4kHzに
DSHOT300と4kHzループにするのはCPU負荷を下げるためです。F7のボードの場合はDSHOT600と8kHZループが使用できます。
次にRPMフィルターにより、リアルタイムでモーターによるノイズ信号の周波数が分かり除去できるようになったため、ダイナミックノッチフィルターの適用範囲を狭くして負荷を減らします。これにより応答性が増すことになります。下図の赤枠のように設定します。
双方向DSHOTが実行されているか確認してみましょう。すべてのプロペラを外して、モータータブを開きます。バッテリーを接続してマスタースライダーを少し上げて回転させます。
下図のように回転数が表示されていれば成功です。
以上でRPMフィルターが使用できるようになりました。お疲れ様でした。
ブラックボックスが無いFCの場合はOSD画面にデバッグ情報を表示してフライト中に確認することができます。下記の図ではブラックボックスタブでデバッグ情報を DSHOT_RPM_ERRORSに設定しました。もしCPU処理が間に合わなかったりしたらOSD画面に表示されるはずです。その他にも表示項目がありますので適宜選択してみてください。