国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于STC15單片機(jī)的四軸飛行器系統(tǒng)設(shè)計(jì)

2020-09-10 11:16:11王廬山
內(nèi)燃機(jī)與配件 2020年11期
關(guān)鍵詞:陀螺儀

王廬山

摘要:選用STC單片機(jī)作為主控芯片,采用MPU6050九軸陀螺儀作用四軸飛行器的姿態(tài)傳感器,飛控主板與遙控器的通訊采用2.4G無線模塊。電機(jī)驅(qū)動采用場效應(yīng)管,同時(shí)利用STC15單片機(jī)內(nèi)部自帶的硬件PWM控制飛機(jī)電機(jī)的轉(zhuǎn)速,電源部分采用一節(jié)3.7V鋰電池供電,經(jīng)過升壓為5V,再經(jīng)過降為3.3V。與其它外圍電路一起構(gòu)成四軸飛行器的硬件系統(tǒng)。軟件部分采用C語言模塊化編程,提高開發(fā)效率。四軸飛行器在遙控器的控制下能夠完成一鍵起飛、無線遙控、手動控制等功能。同時(shí)電腦上位機(jī)可實(shí)時(shí)顯示四軸的飛行姿態(tài)。

關(guān)鍵詞:STC15單片機(jī);四軸飛行器;PWM控制;無線遙控;陀螺儀

0? 引言

飛行器設(shè)計(jì)與制作越來越受學(xué)生的喜愛。但由于飛行技術(shù)涉及專業(yè)領(lǐng)域較多,致使他們望而卻步。該四軸飛行器基于STC15微控制器,是中國宏晶公司自主研發(fā)的一款高性能微控制器,在全國大學(xué)生電子設(shè)計(jì)大賽中多有采用。本款四軸飛行器采用2.4G無線遙控器和WIFI控制,能一鍵起飛,彈射拋飛,還能夠向上位機(jī)實(shí)時(shí)傳回飛機(jī)的姿態(tài),采用先進(jìn)的飛控算法,PID控制,PWM調(diào)速功能。

同時(shí)學(xué)生既可以練習(xí)電子產(chǎn)品裝配與調(diào)試技術(shù),又可以學(xué)習(xí)STC15單片機(jī)技術(shù),是典型的軟硬件都可以學(xué)習(xí)的教學(xué)實(shí)訓(xùn)好載體。因此我們設(shè)計(jì)了這款四軸飛行器。讓學(xué)生在玩中學(xué),在學(xué)中玩。因此設(shè)計(jì)一款STC15微控制器為核心的四軸飛行器,市場前景看好。

1? 四軸飛行器硬件系統(tǒng)設(shè)計(jì)

1.1 系統(tǒng)的總體設(shè)計(jì)

四軸飛行器主要由單片機(jī)最小系統(tǒng)電路、電源電路、電機(jī)驅(qū)動電路、2.4G無線通訊模塊、九軸陀螺儀電路、超聲波定高模塊和串口通信模塊六個(gè)部分組成。

傳統(tǒng)51單片機(jī)是目前使用量最多的單片機(jī),但其片內(nèi)資源較少,而且A/D轉(zhuǎn)換時(shí)需要外接芯片,并且沒有PWM功能,而STC15W4K48S4單片機(jī)是高速、低功耗、超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍,內(nèi)部集成6路硬件PWM單元,8路高速10位A/D轉(zhuǎn)換,針對強(qiáng)干擾場合。由于四軸飛行器器需要4路硬件PWM調(diào)速控制單元和4路A/D采集系統(tǒng),因此四軸飛行器的CPU采用STC15W4K48S4單片機(jī)作為主控制芯片,該CPU完全兼容傳統(tǒng)的51單片機(jī),學(xué)習(xí)起來非常熟悉,參考資料多,降低了設(shè)計(jì)難度,便于學(xué)生開發(fā)。

本款四軸飛行器的四個(gè)電機(jī)采用MOS管驅(qū)動。利用STC內(nèi)部自帶的四路硬件PWM,P3.7、P2.1、P2.2、P2.3四個(gè)引腳分別為PWM2、PWM3、PWM4、PWM5。九軸陀螺儀MPU6050通過IIC總線與CPU的P3.4、P3.5相連。2.4G無線模塊通過SPI總線接在CPU的P2.4、P2.5、P2.6、P2.7、P0.1。超聲波定高模塊接在P3.2和P3.4口,WIFI模塊和程序下載接在P3.0和P3.1口。

1.2 電源電路設(shè)計(jì)

四軸的電源,我們采用3.7V的鋰電池來供電。首先電池的3.7V電壓送到BL8530進(jìn)行升壓處理,得到穩(wěn)定的5V電壓,5V電壓主要供給STC15單片機(jī)、程序下載電路、MPU6050,超聲波定高模塊和磁場模塊。5V的電壓再經(jīng) ME6219進(jìn)行降壓,降到3.3V,供2.4G無線模塊使用,電容C5、C6是退耦電容,起到抗干擾的作用。電容C14、C15、C16是濾波電容。L1、D6和U3一起作為開關(guān)電源,起到把3.7V電壓升到5V的作用。D5是防電源插座防反接作用。CON2是3.7V鋰粒子電池接口。

1.3 四軸飛行器電機(jī)驅(qū)動電路設(shè)計(jì)

STC15單片機(jī)I/O口,是不能直接驅(qū)動大電路器件的,本設(shè)計(jì)采用NMOS管SI2302來驅(qū)動電機(jī),電路如圖1所示。該MOS管的驅(qū)動電路可達(dá)3A,完全滿足我們的設(shè)計(jì)需求。C9、C10、C11、C12都為退耦電容,用于濾除電機(jī)運(yùn)行時(shí)的干擾。

當(dāng)單片機(jī)發(fā)出PWM控制信號時(shí),對于N溝道的MOS管來說,高電平導(dǎo)通,低電平截止。需要注意的是,在飛行器的電機(jī)驅(qū)動電路中,驅(qū)動電路的電源直接用電池的電源。

1.4 無線通信電路設(shè)計(jì)

無線通信采用NRF24L01模塊,通過SPI總線與單片機(jī)通訊,接收遙控器發(fā)來信號,單片機(jī)收到控制信號后,做出相應(yīng)的飛控動作。需要注意的是,無線模塊采用3.3V供電。

1.5 九軸陀螺儀電路設(shè)計(jì)

飛控的姿態(tài)數(shù)據(jù)采集用陀螺儀 MPU6050,這部分的電路圖比較簡單,單片機(jī)通過IIC總線與陀螺儀電路相連,讀取飛行器的姿態(tài)數(shù)據(jù),然后進(jìn)行數(shù)據(jù)融合或四元數(shù)轉(zhuǎn)換,再經(jīng)過PID運(yùn)算,PWM輸出控制飛行器的電機(jī)動作。

2? 四軸飛行器軟件系統(tǒng)設(shè)計(jì)

四軸飛行器主控系統(tǒng)軟件分為主程序、MPU6050飛行器姿態(tài)讀取子程序、PID數(shù)據(jù)融合與PWM子程序、無線通信子程序、超聲波定高子程序五部分。

2.1 四軸飛行器主程序設(shè)計(jì)

在主程序中,首先對飛控用到的模塊和端口初始化。初始化PWM、ADC轉(zhuǎn)換功能、九軸陀螺儀MPU6050、2.4G無線通訊模塊、定時(shí)器T0等。

NRF24L01先設(shè)定為發(fā)送狀態(tài),并發(fā)送飛控的姿態(tài)數(shù)據(jù)給上位機(jī),然后設(shè)定無線模塊為接收狀態(tài),接收遙控器發(fā)來的數(shù)據(jù)。

判斷飛機(jī)是否失聯(lián),如果失聯(lián),則降低油門,歸中航向、橫滾、俯昂角,迫使飛機(jī)降落下來。當(dāng)飛機(jī)未失聯(lián)時(shí),判斷飛機(jī)是否解鎖。

當(dāng)處于解鎖狀態(tài)時(shí),點(diǎn)亮流動狀態(tài)燈,指示飛機(jī)處于正常狀態(tài),并且每2毫秒讀取陀螺儀數(shù)據(jù),超聲波數(shù)據(jù),進(jìn)行數(shù)據(jù)融合,四元數(shù)據(jù)解算,PID運(yùn)算和PWM控制,使得飛機(jī)的飛行狀態(tài)在人的操作下,穩(wěn)定的飛行。

2.2 MPU6050飛行器姿態(tài)讀取子程序設(shè)計(jì)

單片機(jī)通過IIC總線讀出陀螺儀的三軸加速度和三軸陀螺儀的數(shù)據(jù),然后進(jìn)行數(shù)據(jù)的處理。

MPU6050集成了三軸的陀螺儀和三軸加速度。角速度范圍為±250、±500、±1000與±2000。MPU6050帶有三軸陀螺儀,每個(gè)陀螺儀各自負(fù)責(zé)檢測相應(yīng)軸的轉(zhuǎn)動速度,也就是檢測圍繞各個(gè)軸轉(zhuǎn)動的速度。

通過I2C接口讀出來的轉(zhuǎn)換結(jié)果ADC值,并不是以度/每秒為單位。一般按以下公式進(jìn)行轉(zhuǎn)換:轉(zhuǎn)換結(jié)果= ADC值/靈敏度。以量程為±1000°/s為例說明。假設(shè)讀取x軸的ADC值為200,而在±1000°/s下的靈敏度為32.8LSB/(°/s)。根據(jù)上面的公式:轉(zhuǎn)換結(jié)果=200/32.8=6.09756°/s。這就是說,MPU6050檢測到模塊正在以約6度每秒的速度繞X軸旋轉(zhuǎn)。ADC值并不都是正的,當(dāng)出現(xiàn)負(fù)數(shù)時(shí),意味著該設(shè)備從現(xiàn)有的正方向相反的方向旋轉(zhuǎn)。

2.3 PID、四元數(shù)數(shù)據(jù)融合、PWM控制子程序設(shè)計(jì)

PID、四元數(shù)數(shù)據(jù)融合、PWM控制子程序流程圖如圖2所示。四軸飛行器的PID采用雙環(huán)控制。外環(huán)是角度,內(nèi)環(huán)是陀螺儀。以X軸的PID為例說明操作過程。

①讀取MPU6050飛控制的姿態(tài)數(shù)據(jù),即三軸加速度和三軸陀螺儀數(shù)據(jù)。

Gyro_x=GetData(GYRO_XOUT_H);//讀出X軸陀螺儀數(shù)據(jù)

Gyro_y=GetData(GYRO_YOUT_H);//讀出 Y軸陀螺儀數(shù)據(jù)

Gyro_z=GetData(GYRO_ZOUT_H);//讀出 Z軸陀螺儀數(shù)據(jù)

Accel_y=GetData(ACCEL_YOUT_H);//讀出 X軸加速度數(shù)據(jù)

Accel_x=GetData(ACCEL_XOUT_H);//讀出 Y軸陀螺儀數(shù)據(jù)

Accel_z=GetData(ACCEL_ZOUT_H);//讀出 Z軸加速度數(shù)據(jù)

②根據(jù)選擇的量程對陀螺儀和加速度數(shù)據(jù)進(jìn)行轉(zhuǎn)換,因?yàn)槲覀兗铀俣鹊牧砍虨椤?g/S,所以要除以8192,陀螺儀的量程為±500度/S,所以要除以65.5。

Angle_ax=(Accel_x)/8192;? //加速度處理

Angle_az=(Accel_z)/8192;? //加速度量程±4g/S

Angle_ay=(Accel_y)/8192;? //轉(zhuǎn)換關(guān)系? ?8192LSB/g

Angle_gx=(Gyro_x)/65.5;? ? //陀螺儀處理

Angle_gy=(Gyro_y)/65.5;? ? //陀螺儀量程±500度/S

Angle_gz=(Gyro_z)/65.5;? ? //轉(zhuǎn)換關(guān)系65.5LSB/度

③四元數(shù)解算出歐拉解。

IMUupdate(Angle_gx*0.0174533,Angle_gy*0.0174533,Angle_gz*0.0174533,Angle_ax,Angle_ay,Angle_az);得到俯昂角AngleX和橫滾角AngleY。

④計(jì)算外環(huán)的誤差。

Ax=-FR1+a_x-AngleX; 其中FR1為遙控器發(fā)來的橫滾搖桿數(shù)據(jù),ax為遙控器發(fā)來的橫滾微調(diào)數(shù)據(jù),AngleX為俯昂角。

⑤外環(huán)誤差積分與限幅。

ERRORX_Out += Ax; //外環(huán)積分

if(ERRORX_Out >? ERR_MAX)ERRORX_Out =? ERR_MAX;//積分限幅

else if(ERRORX_Out < -ERR_MAX)ERRORX_Out = -ERR_MAX;//積分限幅

⑥算出外環(huán)的PID。

PID_Output = Ax*Out_XP + ERRORX_Out*Out_XI+(Ax-Last_Ax)*Out_XD; //外環(huán)PID

⑦計(jì)算內(nèi)環(huán)誤差。

gy=PID_Output-Angle_gy;PID_Outpu為外環(huán)的輸出,作為內(nèi)環(huán)的輸入,Angle_gy為Y軸的陀螺儀值。

⑧內(nèi)環(huán)誤差積分與限幅。

if(YM > 30)ERRORX_In += gy;//內(nèi)環(huán)積分(油門小于某個(gè)值時(shí)不積分)

else ERRORX_In? = 0; //油門小于定值時(shí)清除積分值

if(ERRORX_In >? ERR_MAX) ERRORX_In =? ERR_MAX;

else if(ERRORX_In < -ERR_MAX) ERRORX_In = -ERR_MAX;//積分限幅

⑨算出總環(huán)的PID及限幅。

PID_Output = gy*In_XP + ERRORX_In*In_XI + (gy-Last_gy)*In_XD;

if(PID_Output >? 1000) PID_Output =? 1000;//輸出量限幅

if(PID_Output < -1000) PID_Output = -1000;

⑩PWM控制四軸飛機(jī)的電機(jī)。

speed0 = 0 + PID_Output;speed1 = 0 - PID_Output;

speed3 = 0 + PID_Output;speed2 = 0 - PID_Output;

2.4 無線通訊子程序設(shè)計(jì)

主程序上電,通過SPI總線初始化NRF24L01,并配置為接收方式,當(dāng)NRF24L01模塊接收到數(shù)據(jù)后傳遞給主控制器,由主控制器進(jìn)行數(shù)據(jù)處理。

NRF24L01模塊每個(gè)數(shù)據(jù)幀為11個(gè)字節(jié),這11個(gè)字節(jié)的功能依次為:失聯(lián)變量、解鎖或上鎖命令值、油門變量、高低字節(jié)、航向變量、橫滾變量、俯仰變量、設(shè)置參數(shù)變量、橫滾微調(diào)值、俯昂微調(diào)值、航向微調(diào)值。單片機(jī)就是根據(jù)無線模塊發(fā)來的數(shù)據(jù),對飛行器進(jìn)行控制。

參考文獻(xiàn):

[1]劉乾,孫志鋒.基于ARM的四旋翼無人飛行器控制系統(tǒng)[J].機(jī)電工程,2011(10).

[2]趙鶴,王喆垚.基于UKF的MEMS傳感器姿態(tài)測量系統(tǒng)[J].傳感技術(shù)學(xué)報(bào),2011(05).

[3]周江華,苗育紅.四元數(shù)在剛體姿態(tài)仿真中的應(yīng)用研究[J].飛行力學(xué),2000(04).

猜你喜歡
陀螺儀
基于Allan方差分析的陀螺儀漂移誤差辨識與仿真復(fù)現(xiàn)
基于EMD的MEMS陀螺儀隨機(jī)漂移分析方法
基于陀螺儀輸出誤差觀測的冗余INS標(biāo)定方法
一種單目相機(jī)/三軸陀螺儀/里程計(jì)緊組合導(dǎo)航算法
硅微陣列陀螺儀的模態(tài)分析與實(shí)驗(yàn)
我國著名陀螺儀專家——林士諤
陀螺儀故障數(shù)據(jù)檢測的神經(jīng)網(wǎng)絡(luò)算法
電子制作(2017年13期)2017-12-15 09:00:18
“藍(lán)天王國”奇遇記(十一)——陀螺儀
基于勻速率26位置法的iIMU-FSAS光纖陀螺儀標(biāo)定
微機(jī)械陀螺儀概述和發(fā)展
龙南县| 大方县| 清河县| 洛川县| 安溪县| 九龙城区| 长寿区| 饶河县| 称多县| 慈溪市| 梁河县| 寿宁县| 乐都县| 曲沃县| 句容市| 萍乡市| 宜良县| 齐齐哈尔市| 吴堡县| 女性| 平潭县| 兰考县| 德清县| 布尔津县| 龙陵县| 汤原县| 沙田区| 建宁县| 蒙自县| 曲阜市| 黄骅市| 昌宁县| 河北省| 醴陵市| 会宁县| 遂川县| 息烽县| 宜君县| 德昌县| 道孚县| 蓬安县|