1. 程式人生 > >無刷電調基礎知識以及BLHeli韌體燒錄和引數調整

無刷電調基礎知識以及BLHeli韌體燒錄和引數調整

--- 標題: 無刷電調基礎知識以及BLHeli韌體燒錄和引數調整 作者: 夢幻之心星 [email protected] 標籤: [#基礎知識,#電調,#BLHeli,#韌體,#燒錄,#調參] 目錄: [電調] 日期: 2021-02-01 --- ## 基礎知識 ### 電調 - **ESC**代表**電子速度控制器**,簡稱為**電調**。電調從飛行控制器接收油門訊號,並以所需速度驅動無刷電機。 ![電調工作原理](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-00-60.jpg) #### 電調韌體 - 電調韌體是在每個電調上執行的軟體,它確定電調的效能,支援的協議以及可以使用的配置介面。電調可以使用的韌體取決於硬體。 - **SimonK**:最古老的兩種開源電調韌體之一,已經過時不再更新。 - **BLHeli**:最古老的兩種開源電調韌體之一,由於其廣泛的功能和友好的使用者介面而變得流行。 - **BLHeli_S**:BLHeli韌體的第二代。專門為具有*Busybee*處理器的電調開發。 - **BLHeli_32**:第三代和最新一代BLHeli韌體。專門為32位電調編寫,不再開源。 #### 電調處理器 - 市場上大多數電調使用ATMEL、Silabs和ARM的處理器。不同的處理器具有不同的規格和功能,並且受不同的韌體支援。 - **ATMEL 8位**:支援SimonK和BLHeli韌體。 - **SILABS 8位**:支援BLHeli或BLHeli_S韌體。 - 主要處理器是**F330**和**F39X**系列的**F390**和**F396**。 - Busybee處理器是F330和F39X的升級。有BusyBee1(EFM8BB10F8)和BusyBee2(EFM8BB21F16)兩種。 - **ARM 32位**:支援BLHeli_32韌體。 #### 電調協議 - 電調協議是飛行控制器和電調用於通訊的*語言*,決定了訊號從飛控到電調的傳送速度。 - 四軸飛行器使用的電調協議及訊號寬度 - Standard PWM :1000us – 2000us - [Oneshot125](https://oscarliang.com/oneshot125-esc-quadcopter-fpv/):125us – 250us - [Oneshot 42](http://intofpv.com/t-oneshot42-explained-kiss-esc-fc-protocol):2us – 84us - [Multishot](https://oscarliang.com/raceflight-multishot/):5us – 25us - [Dshot](https://oscarliang.com/dshot/) - Dshot150 :106.8us - Dshot300 :53.4us - Dshot600 :26.7us - [DShot1200](https://oscarliang.com/dshot1200-esc-protocol/):13.4us - [ProShot](https://oscarliang.com/proshot-esc-protocol/) ![電調協議速度比較](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-01-60.jpg) #### 電調BEC - **BEC**表示 **電池消除電路**,本質上是電壓調整器。作用是將主電池組的電壓降壓到5V輸出。 - 通常內建在電調中,消除了為5V電子裝置供電所需的單獨電池的麻煩。 ### BLHeliSuite #### 手冊 - BLHeliSuite的手冊位於**BLHeliSuite**的**Manuals**目錄 - BLHeliSuite的手冊主要檔案內容: - `BLHeli manual xx xx.pdf`:Atmel MCU和SiLabs MCU的電調的引數 - `BLHeli programming adapters.pdf`:介面卡的製作和使用 - `BLHeli supported xx ESCs.pdf`:支援的Atmel和SiLabs電調的圖片及引數 - `BLHeliSuite 4w-if interfaces pinout.pdf`:Arduino板上用於Atmel/SiLabs電調的BLHeliSuite的**4w-if**的引腳配置 - `BLHeliSuite 4w-if protocol.pdf`:用於Atmel/SiLabs電調的BLHeliSuite的**4w-if**的通訊協議 ![BLHeliSuite的Manuals目錄](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-02-60.jpg) #### 介面卡 ##### 首次重新整理電調韌體 - **SiLabs MCUs**電調支援以下介面卡 - **Arduinos**:使用`SILABS C2 (4way-if)`介面。初次使用Arduinos作為介面卡時需要對Arduinos進行程式設計燒錄。 - **SiLabs Toolstick**:使用`SILABS C2 (Toolstick)` 介面。 - **USB Flashing stick**:使用`SILABS C2 (Toolstick)` 介面。 - **BLHeli Skywalker stick**:使用`SILABS C2 (Toolstick)` 介面。 - **Atmel MCUs**電調支援以下介面卡 - **Arduinos**:使用`ATMEL ISP Interface (AVRDude)` 介面。初次使用Arduinos作為介面卡時需要對Arduinos進行程式設計燒錄。 - **USBasp**:使用`ATMEL ISP Interface (AVRDude)` 介面。 ##### 重新整理電調載入程式 - 重新整理電調載入程式為BLHeli主要有`USB/Com`和`4way-if`兩種型別的介面。 - **Arduinos(4way-if)**:使用` SILABS BLHeli Bootloader (4way-if) `或`ATMEL BLHeli Bootloader (4way-if) `介面。使用Arduinos作為介面卡時需要對Arduinos進行程式設計燒錄。 - **Arduinos(USB/UART 1-Wire bridge)**:使用` SILABS BLHeli Bootloader (USB/Com) `或`ATMEL BLHeli Bootloader (USB/Com) `介面。使用Arduinos作為介面卡時需要對Arduinos進行程式設計燒錄。 - **Favourite stick**:使用` SILABS BLHeli Bootloader (USB/Com) `或`ATMEL BLHeli Bootloader (USB/Com) `介面。 - **FTDI stick**:使用` SILABS BLHeli Bootloader (USB/Com) `或`ATMEL BLHeli Bootloader (USB/Com) `介面。 - **Multistar stick**:使用` SILABS BLHeli Bootloader (USB/Com) `或`ATMEL BLHeli Bootloader (USB/Com) `介面。 ## 背景說明 - 介面卡:Arduino Nano ATMEGA328P - 電調:主控晶片SIL F330,功率管AON6504,供電1-4S,電流20A-30A,無BEC ![電調圖片](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-03-60.jpg) ## 操作說明 ### 前期準備 1. 下載Arduino Nano所用的USB轉串列埠晶片CH340C的驅動程式[CH341SER.ZIP](http://www.wch.cn/downloads/CH341SER_ZIP.html),安裝驅動。 2. 下載[BLHeliSuite](https://www.mediafire.com/folder/dx6kfaasyo24l/BLHeliSuite),一般下載`BLHeliSuite16714902.zip`即可。 3. 根據電調外觀和資訊,查閱手冊`BLHeli supported xx ESCs.pdf` 以確定電調型號。或者根據電調PCB確定電調的主控晶片型號。 4. 根據電調的主控晶片型號,查閱手冊`BLHeli programming adapters.pdf`以確定需要用到的介面卡和介面,以及介面卡的製作方法。 5. 根據所使用的介面卡和所需操作使用的介面,查閱手冊`BLHeliSuite 4w-if interfaces pinout.pdf` 以確定引腳連線。 ### 製作介面卡 1. 連線介面卡和電腦,開啟BLHeliSuite。 2. 點選**Make interfaces**標籤頁。 3. 點選**Port**選擇*USB-SERIAL CH340* 對應的埠,點選**Arduino Board**選擇*Nano w/ ATmega328*開發板,點選**Baud**選擇*115200*波特率,點選**Arduino 4way-interface**。 ![製作介面-主介面](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-04-60.jpg) 4. 點選**OK**,選擇最後一個檔案後點擊**開啟**。 5. 點選**Yes**。 ![製作介面-確認對話方塊](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-05-60.jpg) 6. 等待燒錄Arduino,出現*Arduino flashed sucsessfully by Avrdude*表示已成功將*Arduino Nano*燒錄為介面卡。點選**OK**。 ![製作介面-燒錄成功介面](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-06-60.jpg) ### 連線電調 1. 連線介面卡和電調(VCC GND C2D C2CK)。 ![引腳連線圖](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-07-60.jpg) 2. 點選**Select ATMEL/SILABS Interface**選擇**SILABS C2 (4way-if)**介面。 ![介面選擇](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-08-60.jpg) 3. 點選**SiLabs ESC Setup**標籤頁。 4. 點選**Port**選擇*USB-SERIAL CH340* 對應的埠,點選**connect**,點選**Read setup**讀出電調引數設定。 ![連線電調](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-09-60.jpg) 5. 出現*setup read successfully*表示已成功連線到電調並讀取到電調的引數。點選**OK**。 ### 重新整理韌體 1. 點選**Flash BLHeli** 2. 在彈出的視窗中選擇韌體名稱、韌體型別(MAIN:直升機主槳;TAIL:直升機尾槳;MULTI:多槳)、韌體版本,點選**OK**。 ![重新整理韌體](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-10-60.jpg) 3. 點選**Yes**。 ![重新整理韌體-確認對話方塊](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-11-60.jpg) 4. 等待燒錄韌體,出現*sucsessfully*表示已成功將電調韌體燒錄到電調。點選**OK**。在下一個彈出的視窗中點選**Yes**。 ### 調整引數 1. 點選**ESC Setup**選擇*Save Setup to ini file* 以備份電調當前的引數。 ![備份電調設定](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-12-60.jpg) 2. 修改電調引數。降低啟動功率,降低電調輸出的PWM頻率,開啟低轉速功率保護。 ![電調引數設定](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-13-60.jpg) 3. 點選**Write setup**將引數寫入電調。 - 多軸程式設計引數表 ![多軸程式設計引數表](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-14-60.jpg) - 電調引數說明,詳見官方手冊`BLHeli manual xx xx.pdf` | 英文引數 | 中文引數 | 引數說明 | | ------------------------------------------------------------ | ------------------------------------ | ------------------------------------------------------------ | | Startup power | 啟動功率 | 啟動時允許的最大功率,實際的功率取決於油門的輸入。 | | Motor timing | 電機進角 | 通常設定中進角即適用於大部分電機,但如果電機運轉不順暢時,可以嘗試改變進角。 | | Demag compensation | 消磁補償 | 防止電機換向後消磁時間過長而引起的電機停轉。補償值越高,保護越好。但補償值太高,會降低最大功率。 | | Motor direction | 電機轉向 | 在雙向模式下,油門中點為零點,中點以上為正轉,中點以下為反轉。 | | Startup Beep Volume | 蜂鳴器音量 | 設定正常執行下蜂鳴音量。 | | Beacon/Signal Volume | 信標音量 | 設定信標的音量。如果零油門訊號的時間超過一個設定的時間,電調控制馬達發出警報聲。以便於找回丟失的飛行器。 | | Beacon delay | 信標延遲 | 設定信標開始發出之前的延時。 | | PPM Min throttle;
PPM max throttle;
PPM center throttle | 最小油門;
最大油門;
中位油門 | 設定電調的油門行程量。中位油門只用於雙向模式。正常情況下, 油門訊號值在1000us-2000us之間。 對於其他數值輸入訊號, 則需要做相應比例換算。 | | Temperature protection | 溫度保護 | 溫度保護閥值可以設定為80℃-140℃。 | | Low RPM power protect | 低轉速功率保護 | 禁用可以保證低KV電機在低電壓執行時實現全功率。但是禁用後會加劇同步丟失的風險,導致燒壞電機。 | | Brake on stop | 停車制動 | 在通電狀態,零油門時會有剎車功能。如果油門沒有零點,此項設定無效。 | | Closed Loop Mode | 閉環模式 | 設定控制環的執行速度範圍。在閉環模式下,執行時的油門值對應電機的轉速目標。關閉時將禁用控制環。 | | Closed Loop P-Gain | 閉環比例增益 | 設定轉速控制環的比例增益。控制從速度誤差到電機功率的增益。 | | Closed Loop I-Gain | 閉環積分增益 | 設定轉速控制環的積分增益。控制從積分速度誤差到電機功率的增益。 | | Motor Gain | 電機增益 | 縮放給定輸入施加到電機的功率。僅適用於PWM輸入,對PPM輸入則無效。會限制電機的最大功率。 | | PWM Output Dither | PWM輸出抖動 | 增加電機PWM關閉週期的長度。減少在PWM頻率等於電機換向頻率的諧波的轉速區域中的問題,並且可以減少達到全油門的步進。不適用於閉環模式。 | | PWM Frequency/Damped | PWM頻率/阻尼 | 設定電調輸出的PWM頻率。高PWM頻率約為20kHz,低PWM頻率約為8kHz,輕阻尼模式始終使用高pwm頻率。低頻率PWM減小了到滿功率的步進。輕阻尼模式會增加電機的損耗,從而加快減速速度。 | | Enable PWM Input | 啟用PWM輸入 | 如果禁用,則僅接受1-2ms 脈寬的PPM和 OneShot125(125-250us)作為有效輸入訊號。啟用後支援1kHz,2kHz,4kHz,8kHz和12kHz 的PWM輸入訊號。 | | Input Polarity | 輸入極性 | 用於反轉油門。與提供負PWM的接收器一起使用。使用PPM輸入時,必須將其設定為正。 | ## 注意事項 - 據說電調名稱所寫的**FVT Littlebee 20A**並不是真實型號,升級韌體可能導致電調燒燬。 - 電調在驅動電機運轉前需要執行解鎖序列以進行解鎖 1. 上電時, 電調發出3聲蜂鳴聲。 2. 當檢測到油門訊號時, 發出一聲低音。 表示解鎖訊號序列開始。 3. 當油門減小到零時, 發出一聲高音。 表示解鎖訊號序列結束。 ![電調解鎖序列](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-15-60.jpg) - SILABS電調介面標號為A、B、C、D,Atmel電調介面標號為1、2、3、4、5、X。通過介面所對應的標號,可以在**Make interfaces**介面方便快捷的得知需要製作的介面卡。 - 在使用*Arduino Nano w/ ATmega328P*作為介面卡時。如果*Arduino Nano*使用的是舊版的載入程式,*波特率*設定為*57600*;如果*Arduino Nano*使用的是新版的載入程式,*波特率*設定為*115200*。 ![Arduino Nano w/ ATmega328P 載入程式燒錄設定](https://img.skyseeker.eu.org/2021/Image_2021-02-01_01-16-60.jpg) ## 參考資料 - [FPV無人機ESC購買指南-Oscar Liang](https://oscarliang.com/choose-esc-racing-drones) - [ESC韌體和協議概述-Oscar Liang](https://oscarliang.com/esc-firmware-protocols/) - [直流無刷電機工作原理](https://blog.csdn.net/u014453443/article/details/99583176) - [無刷電機和電子調速器(ESC)是如何工作的](https://www.yiboard.com/thread-1214-1-1.html) - [PPM訊號介紹](http://nicekwell.net/blog/20161223/ppmxin-hao-jie-shao.html) - [Arduino 開發板介紹及對比](https://blog.csdn.net/m0_37738838/article/details/84985704) - [用arduino uno R3做Blheli程式設計介面卡程式設計航模電調](http://www.51hei.com/bbs/dpj-54861-1.html) - [BLHeli無刷電調韌體燒寫及調參(解決電機低速抖動及正反轉)](https://www.moz8.com/forum.php?mod=viewthread&tid=181463) - [BLHeli無刷電調 調參介紹 某寶八元電調](https://blog.csdn.net/qq_39561837/article/details/109087876) - [懶人免焊接傻瓜包會從零開始給電調刷BLHELI韌體](http://www.elvinplay.com/how-to-flash-esc-with-blheli-without-soldering/) - [MTO1804無刷電機引發的悲慘經歷之二:電調韌體重新整理與優化](https://www.cnblogs.com/sjqlwy/p/dfmotor02.html) ------ 版權宣告:本文為「[夢幻之心星](https://www.cnblogs.com/Sky-seeker)」原創,依據 [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) 許可證進行授權,轉載請附上原文出處連結及本宣告。 ------ 部落格園地址:[https://www.cnblogs.com/Sky-seeker](https://www.cnblogs.com/Sky-seeker) 微信公眾號:關注微信公眾號,獲取即時推送 ![微信名:夢幻之心星 微訊號:Sky-seeker](https://cdn.jsdelivr.net/gh/Sky-seeker/Pictrue-Bed/img/Sky-seeker_WX_300x109.jpg) -------------------------------------------