Pages

2013年6月22日 星期六

四軸飛行器整理開源



從零開始做了一年的成果
花了很多的時間,也噴了很多錢
但結果很值得


目前四軸飛行器可以達到平衡→就是不會摔下來
但無法保持懸停→沒辦法保持在原點不動,會自己飛來飛去的

簡單的講解一下

一個可以操作的四軸飛行器有以下部分:
.機架 → 放置電池、馬達、飛行控制器 ... 等等。... 使用450機架
.電池 → 供電給整個系統。... 使用 2200mAh 25C 鋰電池
.馬達 → 使用無刷馬達,用來提供升力。... 使用 2212 980KV 無刷馬達
.螺旋槳 → 採用正反槳,用來提供升力。... 使用 1045 碳纖混槳
.遙控器 → 操做四軸飛行器及顯示回傳資料。... 自製遙控器
.電子調速器 → 簡稱電調,用來驅動無刷馬達。... 好盈 40A 電調
.飛行控制器 → 簡稱飛控板,做平衡及無線傳輸。... 自製飛控板

遙控器:
.控制器:STM32F407VG
.顯示器:4.3吋屏,SSD1963
.無線傳輸:nRF24L01P + PA + LNA

飛控板:
.控制器:STM32F405RG
.感測器:L3G4200 + LSM303
.無線傳輸:nRF24L01P + PA + LNA

大致的流程:
.MCU的韌體與軟體初始化
.感測器的初始校正 → 電子羅盤使用橢圓擬合
.讀取感測器 → 感測器包含了加速度計、陀螺儀、電子羅盤
.將讀到的資料作濾波 → 使用加權移動平均與互補濾波
.計算當下姿態 → 計算頻率400Hz,採用四元數
.平衡控制 → 計算頻率400Hz,使用PID的PD控制

     ↓自己做的飛行控制器,買現成的模組&自己洗的MCU,焊在洞洞板上

     ↓自己做的遙控器,主畫面,右邊是油門

     ↓顯示的是3D的DEMO程式

     ↓示波器功能,把飛行器上傳回來的資料顯示出來

更多的相片
PICASA 四軸飛行器相簿

GitHub
GitHub Quadcopter-V1.0

24 則留言:

  1. 嗨!學長你好
    我是中原大學電機的學生
    電機二乙 黃博晧
    我現在大二升大三
    我的專題也想做關於四軸飛行器的東西!
    我想請問學長
    飛行器主體我大概有想法知道該怎麼做
    我比較有疑問的是遙控器!
    請問學長
    你的遙控器是怎麼個想法的!?
    就那個液晶那一塊!
    還有我想改用手機控制
    不知道在製作上會不會有更難的障礙!

    回覆刪除
    回覆
    1. 你的遙控器是怎麼個想法的!?
      就那個液晶那一塊!
      -->你說的想法是指怎麼做的嗎?
      -->若打算使用8051 or arduino的話
      -->不太建議使用這種螢幕(TFT)
      -->可以使用簡單的LCD1602等等螢幕, 或是不要螢幕

      還有我想改用手機控制
      不知道在製作上會不會有更難的障礙!
      -->如果只是簡單的控制方向和油門的話, 手機是可以做到的
      -->通常是透過藍芽傳輸+手機App來達到效果
      -->如果會寫android或iPhone的話, 應該不難

      刪除
    2. -->你說的想法是指怎麼做的嗎?
      -->若打算使用8051 or arduino的話
      -->-->恩!我是有想要用arduino做!
      -->-->老實說!對於這個四軸飛行器!我實在不知道該怎麼下手==!
      -->-->我目前知道的是 飛機的本體大概是由飛控板 無刷馬達 電子變速器 等控制!
      -->-->而且我找的專題老師是張政元教授!他要求如果要做能做出什麼不一樣的東西
      -->-->我想了想以後!我想說可以將四軸飛行器加上一個類似自動駕駛的功能!
      -->-->這大概是我粗略的想法
      -->-->由於我本人在美國~所以很多事情要等到9月回台灣才能開始!現在只能多找資料~擬定一些計劃
      -->-->還有請學長是否能跟我分享一下!你是怎麼從無到有~做出這個四軸飛行器的><

      -->如果只是簡單的控制方向和油門的話, 手機是可以做到的
      -->通常是透過藍芽傳輸+手機App來達到效果
      -->如果會寫android或iPhone的話, 應該不難
      -->-->我不會寫android或iPhone的程式!
      -->-->頂多會大一所學的C跟C++!這是我現在的程式能力~
      -->-->我想我應該會放棄這一步!先讓我做出能控制的四軸飛行器再說><
      -->-->謝謝學長給我這方面的建議!

      不好意思學長!我這麼慢回><
      謝謝你耐心地回答我!

      刪除
    3. 而且我找的專題老師是張政元教授!他要求如果要做能做出什麼不一樣的東西
      我想了想以後!我想說可以將四軸飛行器加上一個類似自動駕駛的功能!
      -->若"不一樣的東西"是建立在四軸可以穩定的平衡下
      -->我覺得專題的時間應該是做不到的
      -->畢竟四軸的平衡和濾波本身就是很重要的課題
      -->不僅僅只是程式, 還有演算法的撰寫
      -->所以若想做出不一樣的東西, 像是自動駕駛
      -->建議直接從現有的四軸, 繼續做
      -->(( 現有的四軸:建議可以試試看開源的小四軸, Google自己找看看, 不過就不能用arduino開發了
      -->重點應該放在自動駕駛等等的功能上

      -->需要注意的
      -->大四軸這個專題, 若是自費的話, 開銷是不少的
      -->無刷馬達約300~500((需要四個
      -->電子調速器約300~400((需要四個
      -->四軸結構約200~400
      -->若飛控板自己做的話
      -->感測器約200~800
      -->無線模組約80~400
      -->鋰電池約300~800
      -->若要自動駕駛的話, 應該是需要加裝GPS
      -->GPS模組約600~1000
      -->所平均下來約4000~6000左右
      -->當然, 若是老師願意支出的話倒是沒有甚麼問題

      由於我本人在美國~所以很多事情要等到9月回台灣才能開始!現在只能多找資料~擬定一些計劃
      還有請學長是否能跟我分享一下!你是怎麼從無到有~做出這個四軸飛行器的><
      -->1. 可以控制電子調速器(使用PWM)來讓馬達旋轉, 要可以調速
      -->2. 製作飛控板, 整合四軸硬體
      -->3. 無線傳輸撰寫(( 若是直接購買市面上的遙控器的話, 則需要撰寫PPM
      -->4. 讀取感測器並做濾波, 可以得到正確的資料
      -->5. 以上皆完成後, 撰寫姿態的演算法(若是使用MPU6050這個感測器, 會有DMP功能, 可以直接輸出姿態
      --> 這裡的姿態是指飛行器座標與地理座標三軸的夾角
      -->6. 有正確的姿態後, 就是平衡(PID)
      -->7. 之後就是一直重複5&6步驟, 來達到更穩定

      我不會寫android或iPhone的程式!
      頂多會大一所學的C跟C++!這是我現在的程式能力~
      我想我應該會放棄這一步!先讓我做出能控制的四軸飛行器再說><
      -->不管如何, 還是需要一個可以控制的裝置, 不管是買的還是自己做的
      -->畢竟大四軸並不是一個玩具, 是具有危險性的
      -->若沒有一可以操作的裝置是很不安全的

      這裡目前也不太常用
      所以有問題可以寄EMAIL
      Hom19910422@gmail.com

      刪除
  2. 您好:
    最近我也在研究四軸飛行器
    我是用arduino mega 2560來做我的飛控主板
    因此程式都是要自己來撰寫(雖然網路上有些外國人所寫的程式code)
    目前我的進度:
    使用mpu6050陀螺儀/加速度來偵測角度
    然後經過運算後角度便可算出來了
    http://aurorax.cn/merging-mpu6050-data-on-arduino-and-kalmen-filter/

    接下來就是做雙軸馬達的平衡,如影片的效果一樣
    http://youtu.be/HpMMxo5pEcw

    使用的PID公式為
    http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/

    我將程式下去RUN後發現很難平衡
    請問有沒有什麼方法或是程式撰寫的方向可以提供給我呢?

    回覆刪除
    回覆
    1. 影片的效果一樣
      -->影片是實際拍攝的嗎?
      -->還是是別人的?

      -->如果是自己實際拍攝的話
      -->調一下PID應該就可以平衡了

      -->如果不是的話
      -->建議還是拍一下實際的狀況
      -->因為這樣並不容易看出有什麼問題

      我將程式下去RUN後發現很難平衡
      -->同上, 還是建議拍一下實際的狀況

      請問有沒有什麼方法或是程式撰寫的方向可以提供給我呢?
      -->大致的流程就是:讀資料&濾波(移動平均) → 計算姿態角(四元數、互補濾波) → 平衡(PID)
      -->詳細都在附件裡,不知道還需要什麼?

      刪除
    2. 另外補充一下

      使用mpu6050陀螺儀/加速度來偵測角度
      然後經過運算後角度便可算出來了
      http://aurorax.cn/merging-mpu6050-data-on-arduino-and-kalmen-filter/
      -->文中有提到"但是得到的波形很不理想,于是就转向DMP了。"
      -->我認為上面的code並沒辦法達到濾波的效果
      -->你應該自己確認下, 計算出來的角度誤差有多大
      -->開啟馬達時, 誤差又有多大?

      刪除
  3. 請問一下身為新手應該具有那些能力才能做出四軸飛行器
    從何下手呢?!!!
    我只是一個嘉工的學生,希望能和你們一樣做出這些東西

    回覆刪除
    回覆
    1. 整個專題都是建立在單晶片的控制上
      所以至少要有使用單晶片的能力

      刪除
  4. 請問版主,四軸飛行器您建議我使用arduino的甚麼板子?

    回覆刪除
    回覆
    1. 可以試試看 MultiWii MWC
      Arduino 開源的飛控板

      刪除
  5. 那可使用arduino uno板嗎?

    回覆刪除
    回覆
    1. 可以

      可以看下 MultiWii 的官網
      http://www.multiwii.com/

      刪除
  6. 問版主,arduino uno跟MultiWii,有什麼區別。
    它們的程式語法寫法一樣嗎?
    可用一樣的開發環境嗎。

    回覆刪除
    回覆
    1. 硬體上不一樣
      arduino uno 和 MultiWii 都是 arduino 的開發板
      使用的語法和環境皆相同

      刪除
  7. 問版主,請問您是否知道有沒有那種專門教飛行器程式製作的書(簡單一點的,不是這部分的專家也看得懂的書),如果能用arduino做最好,感恩

    回覆刪除
  8. 問版主,那我應該如何學?

    回覆刪除
    回覆
    1. 不知道要學什麼??

      四軸飛行器可以做得很困難,也可以做得很簡單。

      *想要很簡單:
      就買現成的東西,裝起來,調整 PID 就可以飛了。( 或許連調也不用 )
      ....需要了解買的裝置,PID 就好

      *想要困難一點:
      買現成的開源飛控板或是自己做,自己寫飛控、寫濾波、寫平衡。
      ....要會寫程式,會電路設計,會寫相關演算法

      *想要最困難:
      什麼都自己做,遙控器自己做,電調自己做,機架自己做,程式全部自己寫。
      ....要會寫程式,會電路設計,會寫相關演算法,會結構設計

      依以上分類,需要學的東西都不一樣

      我的方式是看網路上的資料 + 相關學術文獻 + 自己的思考

      刪除
  9. 你好
    我對你的2.4ghz 很感興趣
    不知道大大可不可以教我傳輸方式

    回覆刪除
    回覆
    1. RF 部分是使用 nRF24L01
      datasheet 有詳細的說明

      刪除
  10. 你好
    不好意思可以請問一下~大大在上面提到
    -->若打算使用8051 or arduino的話
    -->不太建議使用這種螢幕(TFT)
    -->可以使用簡單的LCD1602等等螢幕, 或是不要螢幕
    請問是什麼原因呢? STM 與 ARDUINO 開發 優缺點是差別在哪~

    回覆刪除
    回覆
    1. 由於處理速度的問題,普通的 8051 or Arduino 在寫入資料至 TFT 會花比較多時間。

      兩者主要差別在於"開發難度"與"效能高低"。

      刪除