孫銘,王锏,張耀軍
(西安電子科技大學 電子工程學院,西安710071)
?
CC3200和MPU6050的迷你四軸飛行器控制原理
孫銘,王锏,張耀軍
(西安電子科技大學 電子工程學院,西安710071)
摘要:多旋翼飛行器具有較好的發展前景,也是近年來的熱門研究方向。本文討論的四軸飛行器是一種四旋翼飛行器。首先介紹四軸飛行器的飛行控制原理;其次逐個闡述了基于CC3200單片機和MPU6050加速度計/陀螺儀的迷你四軸飛行器的各個關鍵模塊,從軟件和硬件的角度分別描述了各模塊的實現和整合;最后,分析了該四軸飛行器的試飛結果以及該飛行器的一些不足。
關鍵詞:四軸飛行器;WLAN;加速度計;陀螺儀;CC3200;MPU6050
引言
本文主要介紹了一種迷你四軸飛行器的控制原理,不同于市面上的大多數四軸飛行器,本文所討論的四軸飛行器以WiFi網絡作為控制器與飛行器的通信媒介,這將使四軸飛行器的易用性得到提高。
1四軸飛行器原理簡介
四軸飛行器,又稱四旋翼飛行器、四旋翼直升機,是一種多旋翼飛行器。四軸飛行器的4個螺旋槳都是電機直連的簡單機構,十字形的布局允許飛行器通過改變電機轉速獲得旋轉機身的力,從而調整自身姿態。四軸飛行器可以完成垂直運動、俯仰運動、滾轉運動、平移運動、偏航運動等動作。
1.1垂直運動

圖1 平衡姿態
四軸飛行器的每個電機驅動一只旋翼,如圖1所示,4只電機用圓形表示,機身框架由圖中的十字結構表示。圖1中,因有兩對電機轉向相反,可以平衡其對機身的反扭矩,當同時增加4個電機的輸出功率,旋翼轉速增加使得總的拉力增大,當總拉力足以克服整機的重量時,四軸飛行器便離地垂直上升;反之,同時減小4個電機的輸出功率,四軸飛行器則垂直下降,直至平衡落地,實現了沿z軸的垂直運動。當外界擾動量為零時,旋翼產生的升力等于飛行器的自重時,飛行器便保持懸停狀態。保證4個旋翼轉速同步增加或減小是保持垂直運動的關鍵。
1.2俯仰運動、滾轉運動

圖2 傾斜姿態
傾斜姿態如圖2所示,電機1、電機2的轉速上升,電機3、電機4的轉速下降。為了不因為旋翼轉速的改變引起四軸飛行器整體扭矩及總拉力改變,旋翼1與旋翼3轉速改變量的大小應相等,旋翼2與旋翼4轉速改變量的大小應相等。由于旋翼1、旋翼2的升力上升,旋翼3、旋翼4的升力下降,產生的不平衡力矩使機身繞y軸旋轉,發生俯仰運動。同理,當電機1、電機4的轉速下降,電機2、電機3的轉速上升時,機身便繞x軸向旋轉,實現飛行器的滾轉運動。
1.3平移運動
四軸飛行器在作出俯仰、滾轉運動時,由于機體傾斜,旋翼提供的升力將產生水平分量,使得機體可以作出前、后、左、右平移運動。
1.4偏航運動
偏航運動如圖3所示。四軸飛行器偏航運動可以借助旋翼產生的反扭矩來實現。旋翼轉動過程中由于空氣阻力作用會形成與轉動方向相反的反扭矩,為了克服反扭矩影響,可使4個旋翼中的2個正轉、2個反轉,且對角線上的各個旋翼轉動方向相同。

圖3 偏航運動
反扭矩的大小與旋翼轉速有關,當4個電機轉速相同時,4個旋翼產生的反扭矩則相互平衡,則四軸飛行器不發生轉動;當4個電機轉速不完全相同時,不平衡的反扭矩會引起四軸飛行器轉動。在圖3中,當電機1和電機3的轉速上升、電機2和電機4的轉速下降時,旋翼1和旋翼3對機身的反扭矩大于旋翼2和旋翼4對機身的反扭矩,機身便在富余反扭矩的作用下繞z軸轉動,實現飛行器的偏航運動,轉向與電機1、電機3的轉向相反。因為電機的總升力不變,飛機不會發生垂直運動。
能夠作出以上幾種動作,使得四軸飛行器具備了較高的靈活性和較好的操控性。
2四軸飛行器硬件設計與實現
本文所討論的迷你四軸飛行器以自身的PCB板為機架,由CC3200無線微控制器負責飛控算法、電機控制和無線通信,由MPU6050加速度計/陀螺儀負責獲取姿態數據,由4只720空心杯電機和螺旋槳提供升力,由MOS管驅動電機,由鋰電池和LDO穩壓器提供電源。
2.1迷你四軸飛行器總體設計

圖4 迷你四軸飛行器外觀
該飛行器PCB尺寸為10 cm×10 cm,層數為兩層。整體外觀如圖4所示。
為降低硬件開發復雜度,CC3200和MPU6050均使用成品模塊。為節約空間、降低負重,PCB上的阻容器件均采用0603封裝,其他器件采用小型貼片封裝。
2.2CC3200模塊
CC3200是TI公司推出的一款單芯片無線微控制器,為SimpleLink、WiFi和物聯網提供解決方案。CC3200由應用微控制器、WiFi網絡處理器和電源管理子系統組成。
應用微控制器采用ARM Cortex-M4內核,運行頻率為80 MHz,具有256 KB RAM,浮點運算能力較強,滿足飛控算法性能要求;有2個UART接口、1個I2C接口、4個通用定時器,通道支持16位脈寬調制 (PWM) 模式,4通道12位模/數轉換器 (ADC),多達27個獨立可編程、復用通用輸入/輸出(GPIO)引腳,硬件接口完全滿足四軸飛行器的功能需求。
WiFi網絡處理器子系統特有WiFi Internet-On-a-Chip專用ARM MCU,完全解除應用微控制器的WiFi和互聯網協議處理負擔。ROM中固化有WiFi以及互聯網協議、802.11 b/g/n射頻、基帶、媒介訪問控制(MAC)、WiFi驅動器和請求方TCP/IP堆棧。
電源管理子系統集成DC-DC轉換器,支持2.1~3.6V寬范圍的電源電壓,并具備高級低功耗模式。
本文所使用的CC3200模塊已集成必要的外圍電路和時鐘,擴展出GPIO和外設接口,僅需提供電源即可運行。PCB中引出CC3200模塊的2路UART和1路JTAG進行調試,1路I2C總線與MPU6050傳感器通信,4路PWM用于控制電機,2路GPIO控制指示燈。
2.3MPU6050模塊
MPU6050為整合性6軸運動處理組件,相較于多組件方案,避免了組合陀螺儀與加速器時之軸間差的問題,減少了大量的封裝空間。MPU6050的角速度全格感測范圍為±250°/sec、±500°/sec、±1 000°/sec與±2000°/sec (dps),可準確追蹤快速與慢速動作,并且,用戶可程式控制的加速器全格感測范圍為±2g、±4g、±8g與±16g,產品傳輸可通過最高至400 kHz的I2C總線接口實現。MPU6050可在不同電壓下工作,VDD供電電壓為2.5 V±5%、3.0 V±5%或3.3V±5%。MPU6050的封裝尺寸為4×4×0.9 mm3(QFN)。MPU6050還包含內建的溫度感測器、在運作環境中僅有±1%變動的振蕩器。
MPU6050模塊已集成必要的外圍電路,擴展出I2C接口,僅需提供電源并進行配置即可使用。
2.4電機及其驅動電路
四軸飛行器采用轉速高達45 000 r/min的720空心杯電機提供動力。電機由SI2302場效應管驅動,場效應管由CC3200 PWM控制。
2.5電源設計
四軸飛行器的電源由鋰電池提供。鋰電池容量為500 mAh、放電系數為20C,最大放電電流為10 A,可支持飛行器飛行5 min。電池輸出分兩路,一路直接通過MOS管加在電機上為電機供電,另一路通過XC6206 LDO穩壓到3.3 V,為CC3200和MPU6050供電。
2.6遙控器設計
四軸飛行器使用Android手機通過WiFi與CC3200建立連接并通信。手機端遙控APP將在3.2節介紹。
3四軸飛行器軟件設計與實現
3.1四軸飛行器端固件
四軸飛行器端固件主要實現如下功能:
① 初始化CC3200應用控制器。
② 初始化并配置MPU6050傳感器。
③ 初始化網絡處理器并建立WLAN AP和TCP Server Socket,等待遙控連接。
④ 進入主循環,處理傳感器數據,生成姿態數據并根據姿態和遙控指令計算出每個電機的PWM輸出值。
main()函數框架如下(略去部分代碼):
void main(){
BoardInit();//初始化CC3200
PinMuxConfig();//配置引腳
InitPWMModules();//初始化PWM
I2C_IF_Open(I2C_MASTER_MODE_FST);//初始化I2C
mpu_setup();//初始化和配置MPU6050
……
//初始化網絡子系統,建立WLAN AP和TCP Server Socket
osi_TaskCreate( WlanAPMode,
(const signed char*)"wireless LAN in AP mode",
OSI_STACK_SIZE, NULL, 1, NULL );
//主循環,處理傳感器數據,生成姿態數據并實現飛控算法
osi_TaskCreate( GestureCtrl,
(const signed char*)"gesture ctrl",
OSI_STACK_SIZE, NULL, 1, NULL );
……
}
主要飛控算法函數Gesture_ctrl()框架如下(略去部分代碼):
void Gesture_ctrl(int accelerato, float offsetX, float offsetY){
MakeOut_xyz();
//根據傳感器返回的數據計算x、y、z三個軸向的傾角
UpdatePID(offsetX, offsetY);//計算調節量
//把幾個軸向的調節量加在相應的電機上
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;
//將運算結果輸出給PWM控制器
UpdateDutyCycleMoto1(moto1);
UpdateDutyCycleMoto2(moto2);
UpdateDutyCycleMoto3(moto3);
UpdateDutyCycleMoto4(moto4);
}
其中,UpdatePID(offsetX, offsetY)根據傾角、遙控指令(offsetX, offsetY)和PID算法,求出x、y、z三個軸向上的調節量pid_rol.out、pid_pit.out和pid_yaw.out。offsetX、offsetY 為遙控器命令指定的目標姿態,PID算法將改變電機輸出,使機體姿態調整到目標姿態。PID算法公式為:
其中,u為調節量;e為當前姿態的姿態角較目標姿態的偏差,即offsetX+x或offsetY+y(x、y為當前姿態傾角);Kp為比例相系數;Ki為積分項系數,積分項為e的累加和;Kd為微分項系數,角度的微分即角速度,所以微分項可由MPU6050的陀螺儀輸出直接得到。
網絡通信的簡要代碼如下(略去部分代碼):
intBsdTcpServer(unsignedshortusPort){
……
//填充TCPServerSocket地址
sLocalAddr.sin_family=SL_AF_INET;
sLocalAddr.sin_port=sl_Htons((unsignedshort)usPort);
sLocalAddr.sin_addr.s_addr= 0;
//創建TCPServerSocket
iSockID=sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);
//綁定TCPsocket
sl_Bind(iSockID, (SlSockAddr_t*)&sLocalAddr,iAddrSize);
//監聽TCP連接
sl_Listen(iSockID, 0);
//設置Socket操作為非阻塞模式
sl_SetSockOpt(iSockID,SL_SOL_SOCKET,SL_SO_NONBLOCKING,&lNonBlocking,sizeof(lNonBlocking));
iNewSockID=SL_EAGAIN;
while(iNewSockID< 0){
//接受TCP連接請求
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設計
遙控器APP運行在Android手機系統中,主要功能是建立與CC3200的TCP連接,為用戶提供操作界面,獲取用戶輸入,并通過TCPSeruerSocket將輸入傳給CC3200。用戶界面如圖5所示,該界面能夠獲取用戶的“方向”和“油門”輸入。

圖5 遙控APP界面
結語

參考文獻
[1] 滿紅,梁迎春,冀勇鋼,等.自動控制原理[M].北京:清華大學出版社,2011:152-153.
[2] Texas Instruments.CC3200 User Manual,2014.
[3] InvenSense .MPU-6000 and MPU-6050 Product Specification Revision 3.4,2013.
孫銘(研究生),主要研究方向為PowerPC嵌入式系統、ARM核微控制器;王锏(研究生),主要研究方向為PowerPC嵌入式系統、網絡通信;張耀軍(研究生),主要研究方向為高速存儲技術。
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
收稿日期:(責任編輯:楊迪娜2015-08-03)
中圖分類號:TP23
文獻標識碼:A