四軸飛行器,又稱四旋翼飛行器,簡稱四軸、四旋翼。四軸飛行器的四個螺旋槳與電機直接相連,通過改變電機轉速獲得旋轉機身的力,從而調整自身姿態。
四軸的葉片轉速極高,有一定的危險性,一般不能在室內飛,特別是在調試過程中更加不穩定,輕則炸雞撞壞物品,重則傷到人。
我做四軸的主要目的是為了學習飛控算法,這個過程肯定少不了調試,為了安全,我選擇做一個小一點的,手掌那么大的四軸,葉片的威力比較小,價格也便宜,即使摔壞也不心疼。
這種小四軸一般采用PCB做機架,用720空心杯電機代替無刷電機,用MOS管代替電調,電池采用3.7v鋰聚合物電池(尺寸跟手機電池差不多,但是放電電流要大很多),遙控用2.4G無線模塊,或者用藍牙連接手機,成本100左右,續航時間大概6-7分鐘,遙控距離在10米以內。
選擇零件
四軸上最重要的就是飛控,所以第一步:選擇飛控。
市面上有許多現成飛控,也可以自己用電子元件做一個分控。有很多有名的開源飛控,例如KK,QQ,匿名,MultiWii/MWC,APM/PIX等。
KK、QQ飛控功能較少,只有基本的四軸飛行功能,甚至不支持GPS。
匿名飛控是國內新出現的飛控,功能比以上兩個要多,價格也要貴很多。
MultiWii/MWC飛控是基于arduino的,支持GPS,能路線規劃,在線調試。
APM也是基于arduino的,功能更為齊全,硬件也更為復雜,飛控中有兩塊單片機,分別執行不同功能。APM已將arduino的性能開發到極限,于是有了升級版PIX,從arduino轉到了STM32,處理速度提升了10倍,同樣用了兩塊不同型號的STM32協同運作,是目前已知的最好的開源飛控。
·
我打算自制飛控,選用我比較熟悉的arduino作為主控芯片。APM硬件結構太復雜,因此選擇了MWC飛控。
這里說一句后話,如果打算學習飛控算法,還是選擇簡單的開源飛控比較好,MWC和APM/PIX都太復雜了,初學者并不能看懂這些代碼,另外推薦用STM32芯片,arduino的標準庫中并沒有時間中斷,要實現飛控的功能需要了解arduino更底層的知識,不會比想象中更簡單。
搜索各種MWC的資料,查找需要的零件:
包括備用件總共120元,比買現成的小四軸要稍貴一些,畢竟量產能降低成本。
我選用了arduino nano作為主控,體型還是有點偏大,用arduino mini更好。選擇nano是因為其帶自身帶有USB接口,可以直接用USB接口下程序,而mini要用下載器。
事后發現更好的選擇是mini Leonardo,nano和mini的芯片型號都是ATMEGA328P,只有一個串口,nano的USB是用另一塊芯片轉串口,不能跟串口同時使用,下載程序時要把跟串口相接的元件斷開,而Leonardo的芯片型號是ATMEGA32U4,自身帶有USB和串口,互不干擾。官方的Leonardo板型是跟UNO一樣的,國內的廠家則把Leonardo做成了mini的板型,而且帶有USB接口。值得注意的是,不確定飛控是否支持Leonardo,因為Leonardo的串口名是Serial1,而nano的串口名是Serial,可能需要修改代碼。
不要用低功耗的藍牙4.0模塊,低功耗的藍牙的傳輸速率不夠,數據會阻塞,有很大的延遲。
HC-05 與 HC-06的區別是 HC-05 可以做主機,也就是可以用 HC-05 連接其他的藍牙模塊,而 HC-06 只能作從機。四軸上的藍牙只做從機,HC-05 和 HC-06都可以用。
機架用的是淘寶已經做好的PCB,上面不能貼元件。
電機是7mm*20mm的空心杯電機:
代碼編譯
選完零件后,MWC如何用呢?MWC不僅支持四軸,還支持六軸,還支持三軸,該如何把MWC配置成四軸模式,并且是空心杯四軸?這是MWC的官網:http://www.multiwii.com/這是MWC的中文網:http://www.multiwii.cn/
然而把這個網站看完之后,并不非常明白如何使用,胡亂摸索之后總結如下:首先去googlecode下載源代碼:https://code.google.com/p/multiwii/(需要翻墻)或者去github下載源代碼:https://github.com/multiwii/multiwii-firmware在googlecode下載的文件里除了源代碼還有電腦端的上位機,github只有源代碼。
下完源代碼之后,會看到一堆文件,初學者肯定會被嚇一跳,其實,只需看config.h這個文件,通過注釋或取消注釋其中的代碼配置飛控的模式。
config.h里全是英文說明,沒過四級的同學要頭大了,還好有萬能的網友已經翻譯了。
這里面的代碼也非常多,如果只做空心杯小四軸的話就看我提取的關鍵點吧。(行數是原配置文件的行數)。
行數 | 代碼 | 解釋 |
39 | define QUADX | 設置成x四軸模式 |
72 | define MINCOMMAND 1000 | 電機最小命令,如果解鎖后電機轉速太快,減小這個值 |
76 | define I2C_SPEED 400000L | 設置I2C速率為400K,用于mpu6050 |
80 | //#define INTERNAL_I2C_PULLUPS | I2C內部上拉,gy系列自帶上拉,保持默認注釋 |
136 | define GY_521 | 啟用GY_521傳感器 |
204~206 | define FORCE_ACC_ORIENTATION(X, Y, Z) | 設置傳感器方向,如果傳感器的安裝方向跟四軸方向不同則需要設置 |
226 | define PID_CONTROLLER 2 | 選擇PID算法,1是老算法,2是新算法 |
232 | define ONLYARMWHENFLAT | 阻止飛行器傾斜時解鎖 |
237 | define ALLOW_ARM_DISARM_VIA_TX_YAW | 設定解鎖方式,默認YAW解鎖,另一種是ROLL解鎖 |
500~503 | define SERIAL0_COM_SPEED 115200 | 調整串口速率,一般默認 |
520~526 | define GYRO_LPF_256HZ | 低通濾波器的頻率,保持默認 |
559 | define THROTTLE_ANGLE_CORRECTION 40 | 油門隨著角度補償,防止傾斜時高度下降 |
562 | define HEADFREE | 無頭模式,要給四軸配上指南針,四軸的前方保持為四軸到手機的連線方向 |
578 | define GYROCALIBRATIONFAILSAFE | 連續的陀螺儀校準,如果在校準時被移動會自動重校準 |
592~603 | define FAILSAFE | 失控保護設置,啟用 |
640 | define INFLIGHT_ACC_CALIBRATION | 飛行時加速度計校準,能讓四軸穩定在一定區域內 |
652 | define DEADBAND 6 | 在搖桿中點周圍引入一個死區 |
878~885 | define BUZZER | 蜂鳴器設置,沒有添加蜂鳴器,保持注釋 |
877~911 | battery voltage monitoring | 電池電壓監控,我沒有用這個功能,跳過 |
999 | define EXT_MOTOR_RANGE | 用于空心杯電機,要啟用 |
1020 | define MOTOR_STOP | 當油門命令在低位時電機停轉,按個人需要配置 |
配置完后,用arduino IDE打開 MultiWii.ino ,將程序上傳到arduino nano。
電路測試
各元件與arduino nano的連接:
名稱 | 針腳 |
左前電機 | PWM3 |
右前電機 | PWM10 |
左后電機 | PWM11 |
右后電機 | PWM9 |
THROTTLE/PPM | D2 |
ROLL | D4 |
PITCH | D5 |
YAW | D6 |
MODE | D7 |
功率針腳 | A2 |
電壓檢測 | A3 |
蜂鳴針腳 | D8 |
SDA | A4 |
SCL | A5 |
D2、D4、D5、D6、D7是PWM遙控器針腳,我是用藍牙接手機遙控,所以不需要接。arduino nano的硬件資料:http://kb.open.eefocus.com/index.php?title=Arduino_Nano
在面包板上連接電路測試:
我只接了nano、mpu6050和藍牙,電機用四個LED代替。
如何用手機遙控四軸?
下載手機端軟件,MWC只有安卓端的軟件,從這個網站下載:http://www.multiwii.com/wiki/index.php?title=Mods用安卓遙控需要用到的軟件是MultiWii EZ-GUI,要android4.4以上的系統,這個軟件要到google play storm下載,一般國產手機沒有google play storm,如何下載google play storm自行百度。
EZ-GUI如何用?
打開軟件后第一頁是四軸的儀表盤,能檢測四軸的各項數據
第二頁是對四軸的各種設置
第三頁是對EZ-GUI的設置
用手機的藍牙連接HC-06或HC-05后,到EZ-GUI第三頁進入【設置】,【SELECT BT DEVICE】選擇藍牙模塊,然后點紅箭頭,后面的默認紅箭頭。
然后到首頁點右上角的【連接】,注意MPU6050要連上arduino nano,不然連接后會報錯。顯示連接成功后,把飛行器放在水平地面,到第二頁進入【校準】,點擊【加速度計標定】,等待校準完成。如果有磁力計還要磁力計標定。
之后就可以遙控起飛了。到第三頁,進入高級設置,進入【MODEL CONTROL】
然后就會看到這樣的界面:
右上角設置,可設置各滑塊的功能,THROTTLE是油門的意思
四軸一開始在鎖定狀態,把油門調到最低,YAW到最右,保持一會兒就會解鎖,然后就能飛了;把油門調到最低,YAW最左,將會上鎖。(在網上某些地方把飛機可以飛的時候稱為”鎖定”,不能飛的時候稱為”解鎖”,不知是翻譯錯誤還是國外的思維方式不一樣)
我把各種元件插在面包板上,用LED代替電機測試,解鎖后,LED由滅變成亮,通過控制油門或方向,可以看到LED的亮度會發生變化。
硬件制作
這些是要用到的元件,以洞洞板作為基板固定所有的元件,然后用螺釘把洞洞板與機架連接。(當然洞洞板需要裁剪,只用一小塊)
空心杯電機驅動電路:
SI2302的內部電路圖:
這幅圖是crazyflie飛控板的電機驅動電路原理圖,同樣適用MWC飛控,肖吉特二極管BAT54用ss34替換(只要滿足電壓和電流以及通斷時間就行,ss34遠遠大于需求,只是因為跟MOS管在同一家店所以買了-_-),場效應管pmv31xn用SI2302替換。因為忘記買貼片電阻,只好用普通電阻代替,這占了很大一部分面積。
場效應管是用電壓控制電流,作用跟三級管類似(三極管是用電流控制電流),相比于三極管,場效應管體積更小功率更大。
肖吉特二極管的作用是續流。電機是電感元件,有阻礙電流變化的特性,控制電機轉速的方法是用PWM信號控制場效應管的通斷,當場效應管斷開時,電機兩端會產生極高的感應電壓擊穿場效應管,加上二極管后,電機的電流會通過二極管保持流通,防止電機產生過高的感應電壓。
為了防止電機引起的電流波動干擾到arduino,我在arduino的電源處接了一個220uF的鉭電容。(其實沒什么卵用!)
下圖是焊接完后的背面,白色的是控制線,黑色和紅色的是接電機的線。電機驅動電源部分要接一個撥動開關,防止arduino nano上電時不受控制的轉,也用于失控時給電機斷電。
這是焊接完后的效果。不用在意MPU6050的方向,飛控里有一段代碼,可以配置任意方向的陀螺儀、加速度計和指南針。(槳買錯了,應該一黑色正槳一黑色反槳,一紅色反槳一紅色正槳,通過顏色區分四軸的前后)
飛控板與機架的連接,在洞洞板上打了兩孔用螺絲固定在機架上,用兩個螺母把洞洞板墊高。
這是背面,電池將貼在這里。藍牙模塊并沒有焊在洞洞板上,而是由那根灰色的線單獨接出,并用可拆卸連接頭(例如杜邦頭或其他)連接藍牙模塊,這是因為藍牙會占用COM口,影響上傳程序。電源供電是將3.7V的電壓直接接在arduino的5V端口上,實驗證明可以正常運行。
電機用焊錫跟機架焊上,為了加固,我又在電機背面打了一層熱熔膠。
這時還不能飛,因為MPU6050的方向不是正確方向,需要修正方向。
取消config.h中204~206行的注釋,將程序上傳到arduino,打開MultiWiiConf.exe看陀螺儀和加速度的值,然后根據情況替換ROLL、PITCH、YAW或改變正負。左下角的ACC是加速度,GYRO是陀螺儀,MAG是指南針。
按下圖所示的方向旋轉四軸,加速度計相應的值會增大,陀螺儀的值為正數。(后來再看這圖總感覺不對,Yaw,Roll,Pitch總得符合左手或右手定律吧,但是當時測出來就是這樣。)
為了防止看不懂圖,再用語言說一遍:
使四軸的前方與你的前方一致;
當四軸水平放置,ACC的Z值最大;
當四軸向右翻滾90度,右側朝下,ACC的ROLL最大;
當四軸向前翻滾90度,頭朝下,ACC的PITCH最大;
當四軸水平順時針旋轉,GYRO的YAW為正數;
當四軸向右翻滾,GYRO的ROLL為正數;
當四軸向前翻滾,GYRO的PITCH為正數;
指南針我沒用,所以不調。
每調整一次,重新上傳一次程序,再觀察是否正確。全部調完后,看MultiWiiConf中右下的四軸仿真圖,如果仿真圖的轉動方向跟實際方向一致并反應迅速,則全部正確;如果轉動方向跟實際方向不同,則GYRO的調整存在錯誤;如果轉動方向跟實際方向一致,但是四軸靜止時,仿真圖仍在緩慢轉動,則ACC調整錯誤。
試飛
終于,將要迎來起飛的時刻!
但是,把四軸解鎖,電機開始轉,提高油門后四軸就失控了,電機一直狂轉,跟手機的連接也斷開了,還好加了開關和失控保護,電機轉了一會就自動停了。
也許是電機干擾了藍牙通信,不得而知。
而且感覺四軸有點太重了,用稱不太精確的測了測重量,總重量70克。不知道這個重量是否能飛,比淘寶買的四軸要重很多。
總結:
槳的顏色是用來區分四軸的前后的,所以要紅色各一正槳反槳,黑色各一正槳反槳。
一定要注意電源濾波,只加一個鉭電容并沒什么卵用,要學學電源濾波的知識。
要注意電池的重量,加大電池容量不一定會提升續航,畢竟電池重量也增加了,而且有可能飛不起來。
arduino最好選用leonardo的mini版型,leonardo自帶USB接口,所以有兩個串口,藍牙和上傳程序互不干擾。
arduino要選用3.3v的版型。
用洞洞板做四軸不太靠譜,太難焊接,而且焊錫走線增加了太多重量。洞洞板與機架固定用的螺絲也占了很大重量,不如直接做成機架與飛控一體的。
-
電機
+關注
關注
142文章
9001瀏覽量
145339 -
飛行器
+關注
關注
13文章
722瀏覽量
45499 -
四軸
+關注
關注
0文章
39瀏覽量
13489
原文標題:從入門到放棄,我的自制小四軸之路......
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論