RPM 濾波 (RPM filter)是從 BetaFlight 4.0 開始引進的新型濾波器。在機子飛行的過程中,馬達震動是最大的噪聲來源。雖然動態濾波器可以有效的過濾馬達噪聲,它同時會產生系統延遲。其實,如果我們可以透過電變回傳,精確的知道馬達轉速,震動的頻率是可以確實知道的。因爲這個計算是直接得到,不需要分析陀螺儀數據,大幅降低了飛控的計算量,使我們可以設定更複雜的濾波設定,這就是 RPM 濾波的基本原理。當啓動 RPM 濾波功能時,系統預設會計算每個馬達(共有4個馬達)在 Roll / Pitch / Yaw 3 個軸上的震動頻率,而且除了震動基頻以外,還加入了2次和3次共振頻率。所以,飛控在任何時候都精確的計算了 36 個 (3 軸 x 4 馬達 x 3 共振頻率)限波濾波器(Notch filter)。相較於動態濾波器只有兩個,是不是先進很多呢?

雖然 BF 4.0 就有 RPM filter 的功能,BetaFlight 并不建議用戶使用,而且在 Configurator 裏找不到相關設定(必須進入 CLI 手動設定),原因是 RPM 濾波裏最重要的電變回傳部分,BLHeli 正在研發中,必須使用測試版靭體,穩定性不良,有導致電變爆衝或燒毀的危險,所以 RPM filter 只能算是個測試功能。到了 BetaFlight 4.1.0,BetaFlight 正式把 RPM Filter 的功能加到了最新版的 BetaFlight Configurator 10.6.0,用戶可以直接設定,並鼓勵大家使用。這裏,我就介紹一下怎麽設定 RPM filter 吧。

 

設定電變韌體

設定 RPM filter 的第一步,也是最重要的一步,就是更新 BLHeli 的版本。根據電變的種類,步驟不同

 

1. BLHeli32 電變

BLHeli32 的·電變比較好處理,直接刷最新的 v.32.7 就可以了。這一版直接有 RPM filter 需要的 Bi-directional DShot 回傳功能。

 

2. BLHeli-S 電變

在 BetaFlight 4.0,BLHeli-S 電變完全不支援 Bi-directional Dshot 的功能,如果要用 RPM filter 的功能,目前有兩個解決方案:JESC 或 BLHeli 16.72 (JazzMaverick 版),以下是安裝方式。

2.1 JESC 外挂軟體

到了 BetaBetaFlight 4.1,透過 JESC 升級 BLHeli 韌體之後,BLHeli-S 電變也可以支援 Bi-diretional DShot 及 RPM filter。不過,這個解決方案並不是所用 BLHeli-S 電變都適用的,必須是基於 efm8bb21 晶片的電變才適用。要瞭解你的電變能不能升級,最簡單的方法就是將電變連綫上 BLHeli 的調參軟體,BLHeli Suite 或 BLHeli Configurator,確認韌體名稱中間包含了 "H",例如 "S-H-50", 那就沒問題了。另外,JESC 是付費軟體,而且一旦安裝之後,無法轉移或卸載,還好,它的價錢不是很貴(單一電變 1.99美金,四合一電變需要 4 份,套裝價 4.99美金)。

* 2020/03/25 補充:

1. JESC 也有“L“電變可用的版本了。

2. 基本版的 JESC 是免費的,可是沒有回傳功能,不支援 RPM filter。如果需要使用 RPM filter,必須付費買回傳功能(Telemetry)的使用權(license)。

BLHeli Configurator_0.png

升級的第一步,是要到 GitHub (https://github.com/jflight-public/jesc-configurator/releases)下載並安裝JESC Configurator 軟體。完成安裝後啓動軟體,將機子連綫(記得要先卸槳,然後機子上電,不然電變不會啓動),按右下角的 Read Setup,就可以讀到電變的資訊了。

JESC Configrator_01.JPG

在刷寫 JESC 韌體之前,先要取得 JESC 的 license,按下 License all(授權所有電變)後,畫面中央部分會變成 JFlight 網店的網頁。如果先前在 JFlight(https://jflight.net/)登錄了賬戶並購買了 license,在登錄之後就可以按 Flash all 先升級電變韌體,完成之後還要按 Flash All Telemetry 來刷寫 bi-directional DShot 需要的回傳功能。

JESC Configrator_02_license.JPG

如果電變韌體和回傳韌體都升級成功,電變資訊的部分會顯示 activated 和 licensed。恭喜,設定 RPM filter 的第一步完成。

JESC Configrator_03_activated.png

 

 

2.2 BLHeli 16.72(JazzMaverick 版)

飛友 JazzMaverick 近日發表了新版的 BLHeli 軟體,16.72 版(2020/03/25 補充:目前最新版是 16.8-RC3),裏面加入了 bi-directional DShot 的功能。雖然目前還不是正式版,不過幾位飛友的測試結果表現不錯。這裏我也介紹一下安裝方式吧。

由於這是屬於 BLHeli 官方版本的部分,首先就是要下載 BLHeliSuite 的軟體。請先到 BLHeliSuite 的 Google drive 去下載 "BLHeliSuite16714901"。

 

BLHeliSuite.jpg

BLHeliSuite download.jpg

 

下載完成解壓縮,進到目錄裏面,直接執行 "BLHeliSuite.exe"。

將飛控接上電腦 USB 接口,由於 BetaFlight 有 passthrough 的功能,選取正確的 Comm port(就是飛控連接的 port),按 Connect,成功連綫之後,再按 Check,就可以可看到 ESC 的設定資訊。在這邊,要特別注意電變韌體名稱。以這個例子來説,就是 "G_H_15",這個就是以後我們升級時要選擇的韌體名稱。注意,多數的電變要接上電池,才能反應。

 

BLHeli-02.jpg

BLHeliSuite 啓動完成,請到 BLHeli 的 GitHub 下載 16.72 版 BLHeli 軟體。(* 已更新載入點)

https://github.com/bitdump/BLHeli/tree/master/BLHeli_S%20SiLabs/Hex%20files%20%2016.72

BLHeli-GitHub-02.JPG

BLHeli-GitHub-03.JPG

點擊需要的韌體版本,會看到韌體的原始碼(source code)。這是要用滑鼠右鍵點擊 "RAW", 然後選 "Save link as..."。BlHeli 的韌體下載完成。

回到 BLHeliSuite,在視窗的上方可以看到韌體名稱 G-H-15 和版本 16.7。點選 Flash BLHeli 開始刷寫設定。

BLHeli-04.jpg

 

因爲我們要安裝的 16.72 是測試版,無法直接在右上角勾選,正確的步驟是點選視窗下方的 "Ignore the list, pick a file..." ,手動選取剛剛下載的 BlHeli 16.72。 軟體確認刷寫版本(16.72)正確後,就可以按 Yes 開始刷寫。

 

BLHeli-05.jpg

BLHeli-06.jpg

BLHeli-07.jpg

刷寫成功,系統會詢問是不是要把目前的設定從新寫入。由於不同版本之間參數不一定相同,建議選 No,完成全部刷寫過程後,再從新設定馬達轉向。

要注意,這裏每個電變都要選一次,BLHeliSuite 不會自動把同一個檔案安裝到所有的 ESC。

BLHeli-08.jpg

看到上面的電變資訊,版本已經是 16.72,就可以進行下一步了。

 

設定 Bidirectional DShot

設定好電變,接下來就要設定 RPM 濾波的功能了。在之前的 BF 4.0 版和 4.1.0 RC 版,這個部分必須使用 CLI 命令,相當麻煩。在 4.1.0 正式版中,啓動 RPM filter 功能的界面已經包含在 BetaFlight Configurator 10.6.0 裏,可以直接啓動了。 

首先,切到 BetaFlight Configurator 的 Configuration 那頁。在右側最上面一區,設定 ESC/Motor 那邊,把 "Bidirectional DShot" 打開。這樣,BF 就知道可以用這個功能了。然而,透過馬達控制綫回傳來的並不是真實的 RPM 轉速,而是 eRPM,必須再乘上轉子上的磁極數(number of motor poles),才是真正的馬達轉速,所以下一行就是要用戶輸入馬達的轉子極數。

BF_turn on bi-directional DShot.png

怎麽知道轉子極數呢?一般來説,如果手上有馬達的技術資料,應該可以直接找到這個數據。例如銀燕 RS2306 馬達技術資料如下,其中 14P 代表的就是轉子上有 14 個磁極,所以 Motor poles 就是 14。如果找不到技術資料表呢?那就只有自己算了,仔細看看 RS2306 馬達轉子内側是不是有一圈磁鐵?是不是有 14 個?那就是 Motor poles 了。兩種方法都可以得到轉子磁極數。這樣 BetaFlight 就可以知道每一個馬達任何時間的確實轉速。知道了轉速,就知道馬達產生的振動頻率了。

EMAX 2306 spec.png

EMAX 2306 photo.png

 

 

測試 RPM 轉速回傳

轉速回傳設好了,到底有沒有作用呢?我們可以來測試一下。機子上電後,跳到 Motors 那頁,是不是發現在每一個馬達的長條圖下面多了 R,E,T 3 行?這就是 bidiretional DShot 從每個馬達回傳得到的轉速,誤差和溫度數據。如果我們開啓 “I understand the risks...”並把馬達轉速控制略微升,直到馬達開始轉動。這時,R 會出現非0 的數字,表示飛控確實得到轉速資訊。特別要留意的是 E 必須是 0。如果不是,代表飛控計算能力不足,要把 PID loop 的頻率從 8k/8k,降到 4k/4k,並吧電變協定從 DShot 600,降到 DShot 300。

motor test.png

 

 

啓動 RPM filter

切換到 PID Tuning 頁面,點選 Filter Settings,將畫面往下捲動,就會發現 Gyro RPM Filter。把它打開(啓動 Bidirectional Dshot 的時候,預設應該已經開了),參數就用預設值,RPM filter 的設定就完成了。

filter settings 1.png

filter settings 2.png

 

 

後續設定

RPM filter 雖然計算簡單,不過飛控必須同時計算 36 個限波濾波器,計算量相當的大。如果只是直接加入額外的 RPM 濾波,不但對飛行沒有幫助,更增加了系統延遲,得不償失。由於 RPM filter 優於動態濾波及其他濾波,很多的功能可以關掉或簡化。BetaFlight 官方就建議按照下圖簡化動態濾波的設定。

首先,因爲啓動了 RPM 濾波,動態濾波範圍(Dynamic Notch Filter Range)改成 Low,降低他的貢獻。然後,Dynamic Notch Width Percent 降到 0,强迫動態濾波器只用一個濾波(預設是 2 個,分離這個寬度比率)。Q 值提高到 200,讓動態濾波器的寬度變窄。然後頻率範圍降低到 90Hz。這樣一來,減輕動態濾波,就可以降低系統負荷及延遲,讓飛控把更多的力量放在 RPM filter 的計算。

* 2020/03/25 補充:根據 BetaFlight 官方 GitHub 網頁説明文件的建議,Dynamic Notch Filter 建議設成 Midum / 0 / 250 / 150。

filter settings 3.png

根據國外大神們的説法,RPM filter 的能力不止於此,如果機子的震動不大,其他的濾波設定也可以減輕或取消,這方面,BF 4.1.0 也有新的做法。BetaFlight 不再建議用戶自行調整參數,改為拉動設定條(slide bar)的方式調整更强烈的濾波(more filtering),或是降低濾波(less filterig),系統會自行調整相關細節,用戶不需自行調整。隨然設定條分別有 Gyro 和 D-Term,建議大家同步調整。 

filter settings 4.png

 

到此,RPM 濾波的設定全部完成,至於它是不是又這麽神奇?我也沒有答案,只知道它的理論實在是太炫了,不用可惜。實際如何?那就留給大家自己ping'pan了。

arrow
arrow

    Wayne Lin 發表在 痞客邦 留言(1) 人氣()