1. 程式人生 > >小馬哥RoboFly開源STM32F103四軸簡介

小馬哥RoboFly開源STM32F103四軸簡介

RoboFly是小馬哥團隊在2018年8月推出的一款完全開源的小四軸。

這款四軸面向的人群是電子相關專業(包括自動化、電氣自動化、電子資訊工程、計算機、測控等專業)的大學生,通過一個完整的四軸專案來學習貼片元器件的焊接、PCB設計軟體AD的使用、電路基本知識、旋翼型無人機的基本原理、STM32微控制器程式設計與基本使用、飛控演算法的實現等。

據瞭解,目前大多數高校的電子專業的課程實訓依然是焊接收音機等,微控制器課程教的也是微控制器,這已經不能滿足學生的學習了,學生畢業之後進入企業,大多接觸的是貼片元器件(功率器件除外),做產品的時候,硬體工程師必須要具備一定的除錯能力,這就對焊接貼片元件的能力提出了要求,所以我們設計了這款四軸飛行器,使用0603、0805這樣貼片元件,是練習焊接的好幫手,而且好處在於,焊接練習完了,還可以繼續學習STM32,四軸原理,直到把這個四軸飛行器飛起來,在這個過程中,我們也有交流群和學習資料,供大家學習使用。

下面是RoboFly四軸飛行器的整體框圖、原理圖、pcb、實物圖原始碼的截圖,先一睹為快,後面詳細介紹。

圖1:RoboFly四軸飛行器整體框圖

圖2:RoboFly四軸飛行器原理圖

圖3:RoboFly四軸飛行器PCB圖

圖4:RoboFly四軸飛行器PCB 3D俯圖

圖5:RoboFly四軸飛行器PCB 3D側檢視

圖6:RoboFly四軸飛行器實物圖

圖7:RoboFly四軸飛行器原始碼截圖

製作並開源這套小四軸的初衷有如下幾點;

  1. 初學者需要一款價格低廉、軟硬體資料完備、有技術支援的四軸學習平臺;
  2. 以散件形式發售,電路板佈局、元器件封裝選型要方便焊接組裝;
  3. 四軸所需元器件採購方便、靠譜,最好能提供一站式採購,避免過多郵費、採購週期長、採購到不合格元器件導致學習難以進展。
  4. 原始碼要極其精簡、方便入門者能夠方便的學習,實現自己的程式碼;
  5. 保留一定擴充套件介面、方便使用者自己進行擴充套件如定高、航跡、巡線等飛行功能。在學習完四軸飛行器之後,這個開源的四軸板子仍然可以作為一個STM32開發學習板使用;

RoboFly四軸的基本配置如下:

主控晶片:STM32F103C8T6

姿態檢測:MPU6050

氣壓計:  FBM320

無線晶片:SI24R1

供電方案:HT7750SA升壓+XC6206穩壓

燈光指示:1個電源指示LED、1個使用者程式設計LED、4個單匯流排全綵RGB燈

電池:600mAh 20C 1S鋰離子電池

電機:720空心杯

槳葉:55mm槳葉

槳葉保護罩:相鄰軸距65mm

機架:PCB一體化機架

續航時間:10分鐘

遙控距離:空曠50m

RoboFly四軸原理圖各模組簡單說明:

STM32F103C8T6是ST在2007年釋出的一款MCU,截止目前ST已經發布了速度高達400MHz的STM32H7 (這時候一定有人會說600MHz的事,我知道,不用提醒),我自己也是用STM32F1,STM32F4,STN32F7都做過各種各樣的四軸,但是這個開源的四軸我還是選擇了STM32F103C8T6,主要從三點考慮,一是封裝比較大,方便初學者焊接,二是價格低廉,學習成本比較低,三是網上有大量的資料供初學者學習使用。

姿態感測器選擇MPU6050,主要考慮的也是封裝比較大,可以直接使用烙鐵焊接,而且價格比較低,資料也很豐富。而且還自帶DMP庫,可以完成姿態結算後直接把姿態角輸出給主控晶片。2016年我們的第一款四軸就是採用DMP庫輸出姿態角的。

氣壓計使用的是FBM320,對於這款氣壓計,個人認為效能一般。但是優點就是這個封裝和BMP280、SPL06的引腳都是相容的,方便更換。但是小四軸上放氣壓計,有一個比較麻煩的地方就是要想辦法排除槳葉的風對它的干擾。可以使用海綿等其他東西進行隔離。

無線晶片用的是SI24R1,國產的,之所以用這個而不用NRF2401,是因為這個經過我測試,效能也是可以的,引腳完全相容NRF2401,無線發射可以做到7dB,在發射和接收端都採用陶瓷天線的前提下,可以達到50m的通訊距離。如果加上AP,那達到100米應該沒有問題。通過兩個低成本的0歐姆電阻對電源進行了單點接地,防止電機迴路的電流波動串進射頻迴路對射頻造成干擾。

對於供電方案中的先升壓再降壓的方案,這是我做第一款四軸飛行器的時候發現的,這種1S的鋰離子電池,在四個空心杯進行供電的時候,如果四個空心杯電機不帶槳葉,也就是說沒有負載,那啟動是沒有問題的。但是如果四個空心杯都帶上負載,瞬間提速到滿速,就會瞬間把電池輸出電壓拉低到3V以下,經過我測試甚至低到了2.8V,這時候如果不升壓,直接用電池給LDO供電,那LDO就會失效。所以通過升壓再降壓後給微控制器系統供電是一個可行的方案。另一個方案就是在電機啟動的時候採用緩慢啟動的方式,這樣電池的電壓就不會瞬間被拉低,但是這樣的一個不足之處就是無法讓這個小四軸非常暴力,飛起來不夠爽快。

四個機臂上採用的RGBLED是序列單匯流排全綵燈,也就意味著只需要佔用微控制器的一個IO埠,就可以控制這四個燈發出各種各樣的顏色。這個燈類似與WS2811,也是通過零一碼來實現資料通訊,進而控制燈的顏色的。對於初學者而言,時序往往難以理解,而這個燈可以作為學習時序最簡單的一個例程,雖然簡單,但是卻非常有趣。

因為小四軸的尺寸、重量等限制,這版四軸飛行器的電池最好不要超過600mAh,否則電池自身的重量就會成為最大的包袱。而太小的電池則不能提供較長時間的續航。總之我經過測試認為600 mAh容量應該是一個拐點。電池最好帶保護板、有一定的安全效能。否則脹飽、失效事小,嚴重點在炸機的時候可能會爆炸。

對於這個四軸最關鍵的一個組建—空心杯,說出來都是淚啊,做四軸兩年,有一年的時間都在尋找合格的空心杯電機。2017年有一款四軸飛行器因為採購的電機側向震動太大,導致槳葉轉動之後產生很大的側向震動、嚴重干擾了加速度計,使角度偏差很大,基本不能垂直飛行。一開始把問題鎖定在MOS管上、陀螺儀上、原理圖與PCB設計上都未能解決問題,後來對原始資料進行FFT變換後發現了干擾的頻率點,這才確定是電機的側向震動引起的。還有一種情況就是同一批次的電機效能差異很大,導致PID調節的輸出差異很大,最終會影響MOS管的壽命、電機壽命。空心杯電機使用SI2302這款MOS管進行驅動,這是非常常見的一款MOS管,便宜又好用。但是市面上這個管子假貨也比較多。很多人在電機驅動電路上加不加電容、加不加二極體有很大的爭議,我經過測試發現,加上電容之後效果很好,而加上二極體的效果則一般。也可能是測試方式不夠嚴謹,回頭可以一起討論這個問題。

槳葉選型一定要注意選擇平衡性好的槳葉、做工有瑕疵的可能會影響平衡性,在飛行的時候,如果不平衡就會導致側向震動。

初學者在除錯四軸的時候,摔下來、失控是很常見的,所以加上槳葉保護罩之後,可以很大程度上減小槳葉、電機報廢的概率。

如果採用飛控板和機架隔離的方式,就能從一定程度上降低震動的影響,但是這樣或許會增加重量及成本,所以我選擇了PCB機架,這也是初學者最容易實現的一個方案,但不是唯一的方案。

 [m1]小馬哥RoboFly開源STM32F103四軸全套資料