孫銘,王锏,張耀軍
(西安電子科技大學(xué) 電子工程學(xué)院,西安710071)
?
CC3200和MPU6050的迷你四軸飛行器控制原理
孫銘,王锏,張耀軍
(西安電子科技大學(xué) 電子工程學(xué)院,西安710071)
摘要:多旋翼飛行器具有較好的發(fā)展前景,也是近年來的熱門研究方向。本文討論的四軸飛行器是一種四旋翼飛行器。首先介紹四軸飛行器的飛行控制原理;其次逐個(gè)闡述了基于CC3200單片機(jī)和MPU6050加速度計(jì)/陀螺儀的迷你四軸飛行器的各個(gè)關(guān)鍵模塊,從軟件和硬件的角度分別描述了各模塊的實(shí)現(xiàn)和整合;最后,分析了該四軸飛行器的試飛結(jié)果以及該飛行器的一些不足。
關(guān)鍵詞:四軸飛行器;WLAN;加速度計(jì);陀螺儀;CC3200;MPU6050
引言
本文主要介紹了一種迷你四軸飛行器的控制原理,不同于市面上的大多數(shù)四軸飛行器,本文所討論的四軸飛行器以WiFi網(wǎng)絡(luò)作為控制器與飛行器的通信媒介,這將使四軸飛行器的易用性得到提高。
1四軸飛行器原理簡(jiǎn)介
四軸飛行器,又稱四旋翼飛行器、四旋翼直升機(jī),是一種多旋翼飛行器。四軸飛行器的4個(gè)螺旋槳都是電機(jī)直連的簡(jiǎn)單機(jī)構(gòu),十字形的布局允許飛行器通過改變電機(jī)轉(zhuǎn)速獲得旋轉(zhuǎn)機(jī)身的力,從而調(diào)整自身姿態(tài)。四軸飛行器可以完成垂直運(yùn)動(dòng)、俯仰運(yùn)動(dòng)、滾轉(zhuǎn)運(yùn)動(dòng)、平移運(yùn)動(dòng)、偏航運(yùn)動(dòng)等動(dòng)作。
1.1垂直運(yùn)動(dòng)
圖1 平衡姿態(tài)
四軸飛行器的每個(gè)電機(jī)驅(qū)動(dòng)一只旋翼,如圖1所示,4只電機(jī)用圓形表示,機(jī)身框架由圖中的十字結(jié)構(gòu)表示。圖1中,因有兩對(duì)電機(jī)轉(zhuǎn)向相反,可以平衡其對(duì)機(jī)身的反扭矩,當(dāng)同時(shí)增加4個(gè)電機(jī)的輸出功率,旋翼轉(zhuǎn)速增加使得總的拉力增大,當(dāng)總拉力足以克服整機(jī)的重量時(shí),四軸飛行器便離地垂直上升;反之,同時(shí)減小4個(gè)電機(jī)的輸出功率,四軸飛行器則垂直下降,直至平衡落地,實(shí)現(xiàn)了沿z軸的垂直運(yùn)動(dòng)。當(dāng)外界擾動(dòng)量為零時(shí),旋翼產(chǎn)生的升力等于飛行器的自重時(shí),飛行器便保持懸停狀態(tài)。保證4個(gè)旋翼轉(zhuǎn)速同步增加或減小是保持垂直運(yùn)動(dòng)的關(guān)鍵。
1.2俯仰運(yùn)動(dòng)、滾轉(zhuǎn)運(yùn)動(dòng)
圖2 傾斜姿態(tài)
傾斜姿態(tài)如圖2所示,電機(jī)1、電機(jī)2的轉(zhuǎn)速上升,電機(jī)3、電機(jī)4的轉(zhuǎn)速下降。為了不因?yàn)樾磙D(zhuǎn)速的改變引起四軸飛行器整體扭矩及總拉力改變,旋翼1與旋翼3轉(zhuǎn)速改變量的大小應(yīng)相等,旋翼2與旋翼4轉(zhuǎn)速改變量的大小應(yīng)相等。由于旋翼1、旋翼2的升力上升,旋翼3、旋翼4的升力下降,產(chǎn)生的不平衡力矩使機(jī)身繞y軸旋轉(zhuǎn),發(fā)生俯仰運(yùn)動(dòng)。同理,當(dāng)電機(jī)1、電機(jī)4的轉(zhuǎn)速下降,電機(jī)2、電機(jī)3的轉(zhuǎn)速上升時(shí),機(jī)身便繞x軸向旋轉(zhuǎn),實(shí)現(xiàn)飛行器的滾轉(zhuǎn)運(yùn)動(dòng)。
1.3平移運(yùn)動(dòng)
四軸飛行器在作出俯仰、滾轉(zhuǎn)運(yùn)動(dòng)時(shí),由于機(jī)體傾斜,旋翼提供的升力將產(chǎn)生水平分量,使得機(jī)體可以作出前、后、左、右平移運(yùn)動(dòng)。
1.4偏航運(yùn)動(dòng)
偏航運(yùn)動(dòng)如圖3所示。四軸飛行器偏航運(yùn)動(dòng)可以借助旋翼產(chǎn)生的反扭矩來實(shí)現(xiàn)。旋翼轉(zhuǎn)動(dòng)過程中由于空氣阻力作用會(huì)形成與轉(zhuǎn)動(dòng)方向相反的反扭矩,為了克服反扭矩影響,可使4個(gè)旋翼中的2個(gè)正轉(zhuǎn)、2個(gè)反轉(zhuǎn),且對(duì)角線上的各個(gè)旋翼轉(zhuǎn)動(dòng)方向相同。
圖3 偏航運(yùn)動(dòng)
反扭矩的大小與旋翼轉(zhuǎn)速有關(guān),當(dāng)4個(gè)電機(jī)轉(zhuǎn)速相同時(shí),4個(gè)旋翼產(chǎn)生的反扭矩則相互平衡,則四軸飛行器不發(fā)生轉(zhuǎn)動(dòng);當(dāng)4個(gè)電機(jī)轉(zhuǎn)速不完全相同時(shí),不平衡的反扭矩會(huì)引起四軸飛行器轉(zhuǎn)動(dòng)。在圖3中,當(dāng)電機(jī)1和電機(jī)3的轉(zhuǎn)速上升、電機(jī)2和電機(jī)4的轉(zhuǎn)速下降時(shí),旋翼1和旋翼3對(duì)機(jī)身的反扭矩大于旋翼2和旋翼4對(duì)機(jī)身的反扭矩,機(jī)身便在富余反扭矩的作用下繞z軸轉(zhuǎn)動(dòng),實(shí)現(xiàn)飛行器的偏航運(yùn)動(dòng),轉(zhuǎn)向與電機(jī)1、電機(jī)3的轉(zhuǎn)向相反。因?yàn)殡姍C(jī)的總升力不變,飛機(jī)不會(huì)發(fā)生垂直運(yùn)動(dòng)。
能夠作出以上幾種動(dòng)作,使得四軸飛行器具備了較高的靈活性和較好的操控性。
2四軸飛行器硬件設(shè)計(jì)與實(shí)現(xiàn)
本文所討論的迷你四軸飛行器以自身的PCB板為機(jī)架,由CC3200無線微控制器負(fù)責(zé)飛控算法、電機(jī)控制和無線通信,由MPU6050加速度計(jì)/陀螺儀負(fù)責(zé)獲取姿態(tài)數(shù)據(jù),由4只720空心杯電機(jī)和螺旋槳提供升力,由MOS管驅(qū)動(dòng)電機(jī),由鋰電池和LDO穩(wěn)壓器提供電源。
2.1迷你四軸飛行器總體設(shè)計(jì)
圖4 迷你四軸飛行器外觀
該飛行器PCB尺寸為10 cm×10 cm,層數(shù)為兩層。整體外觀如圖4所示。
為降低硬件開發(fā)復(fù)雜度,CC3200和MPU6050均使用成品模塊。為節(jié)約空間、降低負(fù)重,PCB上的阻容器件均采用0603封裝,其他器件采用小型貼片封裝。
2.2CC3200模塊
CC3200是TI公司推出的一款單芯片無線微控制器,為SimpleLink、WiFi和物聯(lián)網(wǎng)提供解決方案。CC3200由應(yīng)用微控制器、WiFi網(wǎng)絡(luò)處理器和電源管理子系統(tǒng)組成。
應(yīng)用微控制器采用ARM Cortex-M4內(nèi)核,運(yùn)行頻率為80 MHz,具有256 KB RAM,浮點(diǎn)運(yùn)算能力較強(qiáng),滿足飛控算法性能要求;有2個(gè)UART接口、1個(gè)I2C接口、4個(gè)通用定時(shí)器,通道支持16位脈寬調(diào)制 (PWM) 模式,4通道12位模/數(shù)轉(zhuǎn)換器 (ADC),多達(dá)27個(gè)獨(dú)立可編程、復(fù)用通用輸入/輸出(GPIO)引腳,硬件接口完全滿足四軸飛行器的功能需求。
WiFi網(wǎng)絡(luò)處理器子系統(tǒng)特有WiFi Internet-On-a-Chip專用ARM MCU,完全解除應(yīng)用微控制器的WiFi和互聯(lián)網(wǎng)協(xié)議處理負(fù)擔(dān)。ROM中固化有WiFi以及互聯(lián)網(wǎng)協(xié)議、802.11 b/g/n射頻、基帶、媒介訪問控制(MAC)、WiFi驅(qū)動(dòng)器和請(qǐng)求方TCP/IP堆棧。
電源管理子系統(tǒng)集成DC-DC轉(zhuǎn)換器,支持2.1~3.6V寬范圍的電源電壓,并具備高級(jí)低功耗模式。
本文所使用的CC3200模塊已集成必要的外圍電路和時(shí)鐘,擴(kuò)展出GPIO和外設(shè)接口,僅需提供電源即可運(yùn)行。PCB中引出CC3200模塊的2路UART和1路JTAG進(jìn)行調(diào)試,1路I2C總線與MPU6050傳感器通信,4路PWM用于控制電機(jī),2路GPIO控制指示燈。
2.3MPU6050模塊
MPU6050為整合性6軸運(yùn)動(dòng)處理組件,相較于多組件方案,避免了組合陀螺儀與加速器時(shí)之軸間差的問題,減少了大量的封裝空間。MPU6050的角速度全格感測(cè)范圍為±250°/sec、±500°/sec、±1 000°/sec與±2000°/sec (dps),可準(zhǔn)確追蹤快速與慢速動(dòng)作,并且,用戶可程式控制的加速器全格感測(cè)范圍為±2g、±4g、±8g與±16g,產(chǎn)品傳輸可通過最高至400 kHz的I2C總線接口實(shí)現(xiàn)。MPU6050可在不同電壓下工作,VDD供電電壓為2.5 V±5%、3.0 V±5%或3.3V±5%。MPU6050的封裝尺寸為4×4×0.9 mm3(QFN)。MPU6050還包含內(nèi)建的溫度感測(cè)器、在運(yùn)作環(huán)境中僅有±1%變動(dòng)的振蕩器。
MPU6050模塊已集成必要的外圍電路,擴(kuò)展出I2C接口,僅需提供電源并進(jìn)行配置即可使用。
2.4電機(jī)及其驅(qū)動(dòng)電路
四軸飛行器采用轉(zhuǎn)速高達(dá)45 000 r/min的720空心杯電機(jī)提供動(dòng)力。電機(jī)由SI2302場(chǎng)效應(yīng)管驅(qū)動(dòng),場(chǎng)效應(yīng)管由CC3200 PWM控制。
2.5電源設(shè)計(jì)
四軸飛行器的電源由鋰電池提供。鋰電池容量為500 mAh、放電系數(shù)為20C,最大放電電流為10 A,可支持飛行器飛行5 min。電池輸出分兩路,一路直接通過MOS管加在電機(jī)上為電機(jī)供電,另一路通過XC6206 LDO穩(wěn)壓到3.3 V,為CC3200和MPU6050供電。
2.6遙控器設(shè)計(jì)
四軸飛行器使用Android手機(jī)通過WiFi與CC3200建立連接并通信。手機(jī)端遙控APP將在3.2節(jié)介紹。
3四軸飛行器軟件設(shè)計(jì)與實(shí)現(xiàn)
3.1四軸飛行器端固件
四軸飛行器端固件主要實(shí)現(xiàn)如下功能:
① 初始化CC3200應(yīng)用控制器。
② 初始化并配置MPU6050傳感器。
③ 初始化網(wǎng)絡(luò)處理器并建立WLAN AP和TCP Server Socket,等待遙控連接。
④ 進(jìn)入主循環(huán),處理傳感器數(shù)據(jù),生成姿態(tài)數(shù)據(jù)并根據(jù)姿態(tài)和遙控指令計(jì)算出每個(gè)電機(jī)的PWM輸出值。
main()函數(shù)框架如下(略去部分代碼):
void main(){
BoardInit();//初始化CC3200
PinMuxConfig();//配置引腳
InitPWMModules();//初始化PWM
I2C_IF_Open(I2C_MASTER_MODE_FST);//初始化I2C
mpu_setup();//初始化和配置MPU6050
……
//初始化網(wǎng)絡(luò)子系統(tǒng),建立WLAN AP和TCP Server Socket
osi_TaskCreate( WlanAPMode,
(const signed char*)"wireless LAN in AP mode",
OSI_STACK_SIZE, NULL, 1, NULL );
//主循環(huán),處理傳感器數(shù)據(jù),生成姿態(tài)數(shù)據(jù)并實(shí)現(xiàn)飛控算法
osi_TaskCreate( GestureCtrl,
(const signed char*)"gesture ctrl",
OSI_STACK_SIZE, NULL, 1, NULL );
……
}
主要飛控算法函數(shù)Gesture_ctrl()框架如下(略去部分代碼):
void Gesture_ctrl(int accelerato, float offsetX, float offsetY){
MakeOut_xyz();
//根據(jù)傳感器返回的數(shù)據(jù)計(jì)算x、y、z三個(gè)軸向的傾角
UpdatePID(offsetX, offsetY);//計(jì)算調(diào)節(jié)量
//把幾個(gè)軸向的調(diào)節(jié)量加在相應(yīng)的電機(jī)上
moto1 = accelerato + pid_rol.out - pid_pit.out - pid_yaw.out;
moto2 = accelerato - pid_rol.out - pid_pit.out + pid_yaw.out;
moto3 = accelerato - pid_rol.out + pid_pit.out - pid_yaw.out;
moto4 = accelerato + pid_rol.out + pid_pit.out + pid_yaw.out;
//將運(yùn)算結(jié)果輸出給PWM控制器
UpdateDutyCycleMoto1(moto1);
UpdateDutyCycleMoto2(moto2);
UpdateDutyCycleMoto3(moto3);
UpdateDutyCycleMoto4(moto4);
}
其中,UpdatePID(offsetX, offsetY)根據(jù)傾角、遙控指令(offsetX, offsetY)和PID算法,求出x、y、z三個(gè)軸向上的調(diào)節(jié)量pid_rol.out、pid_pit.out和pid_yaw.out。offsetX、offsetY 為遙控器命令指定的目標(biāo)姿態(tài),PID算法將改變電機(jī)輸出,使機(jī)體姿態(tài)調(diào)整到目標(biāo)姿態(tài)。PID算法公式為:
其中,u為調(diào)節(jié)量;e為當(dāng)前姿態(tài)的姿態(tài)角較目標(biāo)姿態(tài)的偏差,即offsetX+x或offsetY+y(x、y為當(dāng)前姿態(tài)傾角);Kp為比例相系數(shù);Ki為積分項(xiàng)系數(shù),積分項(xiàng)為e的累加和;Kd為微分項(xiàng)系數(shù),角度的微分即角速度,所以微分項(xiàng)可由MPU6050的陀螺儀輸出直接得到。
網(wǎng)絡(luò)通信的簡(jiǎn)要代碼如下(略去部分代碼):
intBsdTcpServer(unsignedshortusPort){
……
//填充TCPServerSocket地址
sLocalAddr.sin_family=SL_AF_INET;
sLocalAddr.sin_port=sl_Htons((unsignedshort)usPort);
sLocalAddr.sin_addr.s_addr= 0;
//創(chuàng)建TCPServerSocket
iSockID=sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);
//綁定TCPsocket
sl_Bind(iSockID, (SlSockAddr_t*)&sLocalAddr,iAddrSize);
//監(jiān)聽TCP連接
sl_Listen(iSockID, 0);
//設(shè)置Socket操作為非阻塞模式
sl_SetSockOpt(iSockID,SL_SOL_SOCKET,SL_SO_NONBLOCKING,&lNonBlocking,sizeof(lNonBlocking));
iNewSockID=SL_EAGAIN;
while(iNewSockID< 0){
//接受TCP連接請(qǐng)求
iNewSockID=sl_Accept(iSockID, (structSlSockAddr_t*)&sAddr,(SlSocklen_t*)&iAddrSize);
}
returniNewSockID;
}
voidTcpLoopRecive(void*pvParameters){
……
while(1){
//接收TCP包
sl_Recv(iNewSockID,g_cBsdBuf, 16, 0);
//解析遙控指令
if(g_cBsdBuf[0] == 0xAA){
accelerato=g_cBsdBuf[1] + ((int)g_cBsdBuf[2] << 8);
memcpy(&offsetX,g_cBsdBuf+ 3, 4);
memcpy(&offsetY,g_cBsdBuf+ 7, 4);
}
}
}
3.2遙控器端APP設(shè)計(jì)
遙控器APP運(yùn)行在Android手機(jī)系統(tǒng)中,主要功能是建立與CC3200的TCP連接,為用戶提供操作界面,獲取用戶輸入,并通過TCPSeruerSocket將輸入傳給CC3200。用戶界面如圖5所示,該界面能夠獲取用戶的“方向”和“油門”輸入。
圖5 遙控APP界面
結(jié)語
參考文獻(xiàn)
[1] 滿紅,梁迎春,冀勇鋼,等.自動(dòng)控制原理[M].北京:清華大學(xué)出版社,2011:152-153.
[2] Texas Instruments.CC3200 User Manual,2014.
[3] InvenSense .MPU-6000 and MPU-6050 Product Specification Revision 3.4,2013.
孫銘(研究生),主要研究方向?yàn)镻owerPC嵌入式系統(tǒng)、ARM核微控制器;王锏(研究生),主要研究方向?yàn)镻owerPC嵌入式系統(tǒng)、網(wǎng)絡(luò)通信;張耀軍(研究生),主要研究方向?yàn)楦咚俅鎯?chǔ)技術(shù)。
Mini Four-axis Aircraft Based on CC3200 and MPU6050
Sun Ming,Wang Jian,Zhang Yaojun
(School of Electronic Engineering,Xidian University,Xi`an 710071,China)
Abstract:The multi-rotor aircraft has better prospect for development,so it is a hot research direction.This article discusses the four-axis aircraft is a four-rotor aircraft.This paper introduces the principle of four-axis flight control of the aircraft firstly,then the key modules of the mini quadrocopter based on CC3200 MCU and MPU6050 accelerometer/gyroscope are described,and the implementation and integration of each module from software and hardware point of view is described also.Finally,the test result of the four-axis aircraft and some deficiencies of the aircraft are discussed.
Key words:four-axis aircraft;WLAN;accelerometer;gyroscope;CC3200;MPU6050
收稿日期:(責(zé)任編輯:楊迪娜2015-08-03)
中圖分類號(hào):TP23
文獻(xiàn)標(biāo)識(shí)碼:A