2014年2月16日 星期日

新手的Multiwii 四軸飛行器 III 什麼都要刷!電變 BLHeli

我使用的Multiwii SE 2.5大家都知道其實就是一片Arduino Pro,所以飛控板本身就是韌體整天刷來刷去,但我沒想到電變本身也可以刷!
BLHeli支援很多電變,相容列表在此,我使用的天行者40A也剛好在支援列表,根據對岸說法,刷了BLHeli,可以讓你$40 RMB的電變效能提升到$200 RMB等級的電變,這有如購物頻道的催眠術語,我怎受的了!!刷~~(刷掉後無法復原回原廠)

需要準備以下工具
1.一個AVRSP
2.一片Arduino Nano 3.0
3.BLHeli tool 軟體
首先用AVRSP把Arduino nano boot loader刷掉,讓Arduino nano變成一個stick,我會這樣做是因為我依照BLHeli的教學,用他本身tool我一直無法讓我的Nano變成stick,所以我用這種比較極端的作法。
用AVRSP跟Nano的ICSP接在一起,使用以下指令在Windows DOS視窗把Nano變成stick

avrdude -p m328p -c usbasp -U flash:w:Arduino_Nano__16_PB3PB4v111.hex -U lock:w:0x0f:m

Update:
avrdude.exe在 Interfaces\AVRDude可以找到
hex檔案可以在 Interfaces\Silabs\Arduino裡面找到
有時候每一版本目錄結構會有變化,可以用檔案搜尋找一下。

我的Nano是3.0(ATMega 328p),所以參數-p 使用m328p,Arduino_Nano__16_PB3PB4v111.hex這檔案在BLHeli tool目錄裡的Arduino目錄就有。
2014-02-1513.43.45-2014-02-16-00-44.jpg
把Nano 3.0變成stick後,接下來先把線路搞定。因為要把電變刷掉,所以從電變必須拉出三條線,這些接點就在電變背後,用雕刻刀輕輕劃開一個小洞即可,不用破壞整個熱縮膜。
接點位置大概在背面用手觸摸上方三個凸起的第二個下方,這地方會有四個接點,我只用最上面兩個接點(下圖紅白兩圈點),另一個GND我直接用訊號線的黑色地線。
2014-02-15_13_39_22-2014-02-16-00-44.png fdsfsdf-2014-02-16-00-44.png

Update:有一些強國貨的Nano上面ICSP腳位順序不太一樣,所以要請注意一下。
我的如下圖最右下角為Pin1,一般pin1會做上記號,如下圖有一個小白色倒三角形或者會寫上數字1

電變的最上面第一個白圈點對應到下圖Nano的C2D(white),紅圈對應到下圖的中間線C2CK(red),電變的GND可以用第四個接點(上圖黑圈)拉出或者我剛剛提到的訊號線黑線接到Nano的ICSP GND(下圖上面第一條線)。GND我個人建議用訊號線,因為訊號接頭是現成的,方便直接插入固定,多出來的手可以專心用手拿電線直接去碰觸白紅兩圈點。碰觸紅白兩點請注意,誤觸旁邊會燒掉電變。
owsilprog-arduino-nano-setup-02-02-wp1-300x200-2014-02-16-00-44.jpg

BHLeli有一個選項要選擇SILABS Serial Interface


線路接好後,把Nano接到電腦,電變也上電(不用接馬達),打開BLHeli tool,點選下方的Flash BLHeli,緊接著就會出現下下一張圖,選擇你的電變(例如我的是Skywalker 40A),我是多軸,所以另一個欄位我要選擇”Multi”,按下OK大概五秒就刷完了。
如果你沒有出現這些畫面,請再次確認接點是否有正確接好,請注意不要碰觸其他接點,這有可能會讓電變燒掉!
Windows_7__1__-_Parallels_Desktop-2014-02-16-00-44.png
Windows_7__1__-_Parallels_Desktop2-2014-02-16-00-44.png

刷完之後,建議做一次油門校正,可以使用MWC本身的程式去調整,在config.h裡面找到一行
#define ESC_CALIB_CANNOT_FLY
把前面反斜線刪除然後上傳程式,*****把槳從馬達上移除*****
上電後,飛控板會自動把油門推到最大值偵測一次油門行程,所以建議把槳移除。
也有人說找條線把飛機固定起來,不用移除槳...這就由你自行決定要哪一種方法

偵測完畢後,在去config.h把剛剛那一行註解起來上傳一次程式即可
//#define ESC_CALIB_CANNOT_FLY
上槳然後上電測試看看。


刷完之後感想是,動力輸出比較線性,原本韌體的動力輸出感覺比較飄,BLHeli油門整體加速比較一致性,刷BLHeli不會讓你馬力提昇,但會讓操控性比較平順,油門隨傳隨到。我個人滿推薦直接刷掉原廠版本!

以下兩個影片是大致差異

原廠韌體

更換成BLHeli


12 則留言:

  1. 期待您接下來的大作!

    回覆刪除
  2. 大大您好,小弟也是四軸新手,有幸拜讀了您的文章,您文章有提到變電校正方式,一種是用mwc內建,一種是單一電變單獨校正,請問這二種方法在校正完結果會有差嗎?謝謝

    回覆刪除
    回覆
    1. 我覺得沒差,但大多推薦用mwc程式校正

      刪除
    2. 有差...差很多
      http://www.rctw.net/forum.php?mod=redirect&goto=findpost&ptid=230546&pid=2621414&fromuid=87082

      刪除
  3. 請問一下哦,BLHELI刷完之後,在MWC 作油門校正時,四顆馬達都有正常轉動起來嗎?
    我的會怪怪的,有時候只有一顆轉,有時候只有兩顆,就是不會四顆都轉起來,還真是奇怪。
    不過在飛行的時候,看似也還正常,搞不懂哪邊出問題了。
    還沒刷之前,沒有這種異常的現象說…

    回覆刪除
    回覆
    1. 如果用MWC校正油門,四顆馬達要可以轉,而且是全速轉動。

      刪除
    2. 所以說這就是奇怪的地方了…
      不過如果用電變直接連上接收器,用遙控器校正最大最小油門,是正常的。
      我是刷10.4版的。

      刪除
    3. 你要不要更新到最新版試試看,剛剛去看BLHELI的release notes,從10.4之後修正很多bug。我也去看MWC的程式,
      啟動油門修正的邏輯很單純,第一行就是要馬達全力運轉(出力ESC_CALIB_HIGH:預設值2000),然後再降到出力ESC_CALIB_LOW:預設值1000,其實這動作跟我們自己用遙控做是類似的,只是MWC校正有加上馬達的運轉負載。

      /******** special version of MultiWii to calibrate all attached ESCs ************/
      #if defined(ESC_CALIB_CANNOT_FLY)
      writeAllMotors(ESC_CALIB_HIGH);
      blinkLED(2,20, 2);
      delay(4000);
      writeAllMotors(ESC_CALIB_LOW);
      blinkLED(3,20, 2);
      while (1) {
      delay(5000);
      blinkLED(4,20, 2);
      #if defined(BUZZER)
      alarmArray[7] = 2;
      #endif
      }
      exit; // statement never reached
      #endif

      刪除
    4. 我看外國討論,也許你也可以嘗試做一次EEPROM Clear,把MWC的板子EEPROM清空一次。
      清除方法可參考...
      http://arduino.cc/en/Tutorial/EEPROMClear#.UxUzG0KSxPU
      清除完畢再上傳一次MWC一次

      刪除
    5. 我這幾天研究一下,最大可能是MWC的code裡面的延遲時間跟BLHeli沒搭上,所以其實用MWC去校正跟單獨針對電變校正方式差異就是上不上馬達,其實我覺得也可以直接接上馬達用電變校正XD這樣就跟MWC一樣...

      刪除
  4. 大大您好~小弟也是...在研究這塊...我想順便問問...
    變電...一定要刷?還是不刷直接mwc校正也可以直接使用?

    回覆刪除
    回覆
    1. 不一定要刷,如果只是單純要飛,原廠就可用了(但據說我用的天行者40A原廠設計不適合給多軸用:P)。刷掉相對會省電/穩定一點,你也可以透過軟體去調整更多選項,例如馬達進角/定速等等,很多可以研究。

      刪除