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

評(píng)論