Betaflight 4.1 でRPMフィルターを設定する

Betaflight
この記事は約8分で読めます。
スポンサーリンク

Betaflight 4.0 から導入された双方向DSHOTの機能を使用するRPMフィルターは、モーター由来のノイズを大幅に取り除くことができ、スムーズなフライトにつながります。Betaflight 4.1 ではRPMフィルターの設定が簡単になりました。この記事ではRPMフィルターを設定してみます。

はじめに

この項目はしくみを出来るだけわかりやすくしたつもりですが、RPMフィルターを使用するのに理解する必要はありません。次の項目「 双方向DSHOTを使用するには 」まで読み飛ばしてかまいません。

双方向DSHOT

RPMフィルターは、双方向DSHOT(Bidirectional DSHOT)という機能を使用します。DSHOTはFCとESCがデジタルデータで通信をします。通常はFCからESCへモーターを「これだけ回せ」とデータが流れるだけですが、双方向DSHOTは名前の通りESCからFCへ(逆方向)にもデータが流れます。別の言い方をするとESCのテレメトリーが取得できるという事です。これによりESCから得られるリアルタイムのモーターのRPM(回転速度)を使用してよりきめ細やかな制御が可能となります。

双方向DSHOTでは既存のシグナル線を使用するので、新たに配線する必要はなく、専用にURAT(シリアルポート)も必要ありません。ただ対応しているファームウェアに更新するだけで使用できます。

RPMフィルター

モーターの高周波ノイズの除去には「ここからここまでのノイズを除去しろ」というノッチフィルターを使用します。通常は「ここからここまで」の幅をノイズが多い範囲に設定しますが、モーターのノイズは回転数によって周波数が変化しますので、「ここからここまで」が広くなるためにフィルター処理による遅延が大きくなります。

双方向DSHOTにより、リアルタイムのモーターRPMが得られるので、フィルターで除去するべきノイズの周波数もリアルタイムで分かります。 そのためノッチフィルター は現在のノイズ周波数に合わせて「ここからここまで」の幅を狭くできます。  (2019年11月10日:上の表記を下の青線のように変更しました。)

RPMフィルターによりモーター由来のノイズが完全に除去されるので、ノッチフィルターはモーターノイズを考慮する必要が無くなりました。そのためノッチフィルターの可動範囲を狭くでき、その結果フィルター処理による遅延が少なくなり飛行特性が向上します。

ただし、通常より各種処理が増えるのでCPUの負荷が大きくなります。

スポンサーリンク

双方向DSHOTを使用するには

まずESCのファームウェアを双方向DSHOTに対応したバージョンに更新する必要があります。

現在 BLHeli_32 と BLHeli_S のファームウェアを使用しているESCで双方向DSHOTが使用できます。

お使いESCがどのタイプかはESCの仕様書を確認する必要があります。

BLHeli_32

お使いのESCのファームウェアが、BLHeli_32 なら バージョン32.7.0 に更新します。更新方法は下の記事を参考にしてください。

BLHeli_S

使用しているファームウェアが、BLHeli_S でしたら、JESCという有料のファームウェアを購入して更新します。JESCは jflight.net から入手可能です。専用の jesc-configuratorをダウンロードして使用します。

私はまだ JESC を使用したことがありませんので、jesc のインストール方法を参照してください。

JESCを使用してRPMフィルターを使用できるようにする記事は下記にあります。

Betaflight 4.1.0 以降にバージョンアップ

双方向DSHOTは Betaflight 4.0 と 4.1 で仕様が異なります。Betaflight 4.1 を使用してください。

Betaflight 4.1 と対応した Betaflight Configurator 10.6.0 はこちらの記事を参考にしてください。

双方向DSHOTを有効にする

ONにする

双方向DSHOTを有効にするには、Betaflight Configurator 10.6.0 の基本設定タブで、下図のように「モーター極数」を入力後、「双方向Dshot」をONにするだけです。これでRPMフィルターも有効になります。

モーター極数とは、モーターのベル(外側部分)の内側に貼り付けてある磁石の数です。5インチ機などで使用される2206とか2307などのモーターは14個あります。3インチ機以下で使用するモーターは12個が多いです。

赤矢印の磁石の個数がモーター極数になる

以上で終了です。

と言いたいところですが、前述のように双方向DSHOT は FC の処理を多くし、CPU の負荷が増えます。したがって一部設定を変更して負荷を下げます。

設定を変更する

負荷を下げるために以下の項目を変更すします。

  • ESC/モータープロトコルを「DSHOT300」にする
  • 「ジャイロ演算周波数」と「PIDループ演算周波数」をそれぞれ 4KHz / 4KHz にする
  • 動的ノッチフィルターの幅を狭くしてフィルター処理量を減らす

これらをまとめて設定するためのCLIコマンドがあります。ここにアクセスします。

(2019年11月10日:上記リンク先と下記画像を変更しました。以前と一部コマンドが変更になっていますので再度CLIで設定したほうがいいようです。)

リンク先まで行くのがめんどくさい時は下記をコピペしてCLIで入力してください。

set gyro_sync_denom = 2
set pid_process_denom = 1
set motor_pwm_protocol=DSHOT300
set scheduler_optimize_rate=on
set dshot_burst=off
set dshot_bidir=on
set debug_mode=gyro_scaled
set dyn_notch_range = medium
set dyn_notch_width_percent = 0
set dyn_notch_q = 250
save

コマンドをコピーしてCLIに貼り付けEnterキー。saveで保存します。

このコマンド内にはブラックボックスのログとして、フィルターされる前の生のジャイロデータを記録するように設定してあります。(set debug_mode=gyro_scaled)これにより後で効果を検証できます。

また、Dshotビーコンを使用している場合は、双方向DSHOTに干渉するかもしれないとのことですのでOFFにします。

確認する

FC と ESC とを再起動します。Betaflight Configurator 10.6.0 でCLIタブを開きます。

dshot_telemetry_info

と入力してEnterキーを押します。

まだESCにバッテリーを繋いでないので、Dshot reads: は 0 です。

Betaflight Configurator 10.6.0 のモータータブを開きます。

1~4までのモーターの下にR:E: が表示されています。まだESCに電源が入っていないので、E:(エラー)100%になっています。

注意

ここより必ずプロペラは外して作業をしてください。実際にモーターを回します。

バッテリーを繋いでESCに通電します。モーターを回すために右下の「リスクを認識し…」のスイッチをONにてごく低速でモーターを回転させます。

モーターの下の数値が変わりました。R: が回転数で E: はエラーです。

モーターを回転させたままでCLIタブを開きます。

コマンドラインに先ほどと同じコマンドを入力します。

dshot_telemetry_info

DSHOTテレメトリーが表示されました。現在のモーター回転数はRPMですね。Invalid の数値が1%を越えないことを確認してください。

また、Configurator の一番下のステータスバーのCPU使用率も注意してください。60%を越えるようならオーバークロックする必要があるかもしれません。

EXITと入力して終了します。(モーターの回転も同時に止まります。)

以上で終了です。

設定を戻すには

双方向DSHOTをOFFにしてRPMフィルターを停止するにはフィルター設定も同時に戻す必要があります。

CLIで下記のコマンドを入力して保存してください。

# ジャイロとPIDループを8KHz/8KHzにします.
set gyro_sync_denom = 1

# 双方向DSHOTをOFFにします.
set dshot_bidir = OFF

# モータープロトコルをDSHOT600にします.
set motor_pwm_protocol = DSHOT600

# 動的ノッチフィルターをデフォルトに戻します.
set dyn_notch_width_percent = 8
set dyn_notch_q = 120

save


注意

実際フライトする際ですが、何か設定を変更した時の最初のフライトは短時間にして、モーターの温度を確認するようにするといいでしょう。例えば極端ですがフィルターをほとんど有効でない値にしてしまった時、ノイズを除去できずにモーターを過熱させ焼き切ってしまうでしょう。フライト後モーターを触って思わず「熱い!」ってなるようなときは躊躇なく設定を元に戻してください。

関連記事

0
タイトルとURLをコピーしました