亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2020-09-10 11:16:11王廬山
        內(nèi)燃機(jī)與配件 2020年11期

        王廬山

        摘要:選用STC單片機(jī)作為主控芯片,采用MPU6050九軸陀螺儀作用四軸飛行器的姿態(tài)傳感器,飛控主板與遙控器的通訊采用2.4G無線模塊。電機(jī)驅(qū)動采用場效應(yīng)管,同時利用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ā)效率。四軸飛行器在遙控器的控制下能夠完成一鍵起飛、無線遙控、手動控制等功能。同時電腦上位機(jī)可實(shí)時顯示四軸的飛行姿態(tài)。

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

        0? 引言

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

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

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

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

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

        傳統(tǒng)51單片機(jī)是目前使用量最多的單片機(jī),但其片內(nèi)資源較少,而且A/D轉(zhuǎn)換時需要外接芯片,并且沒有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è)計難度,便于學(xué)生開發(fā)。

        本款四軸飛行器的四個電機(jī)采用MOS管驅(qū)動。利用STC內(nèi)部自帶的四路硬件PWM,P3.7、P2.1、P2.2、P2.3四個引腳分別為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è)計

        四軸的電源,我們采用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è)計

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

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

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

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

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

        飛控的姿態(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è)計

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

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

        在主程序中,首先對飛控用到的模塊和端口初始化。初始化PWM、ADC轉(zhuǎn)換功能、九軸陀螺儀MPU6050、2.4G無線通訊模塊、定時器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)時,判斷飛機(jī)是否解鎖。

        當(dāng)處于解鎖狀態(tài)時,點(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ī)通過IIC總線讀出陀螺儀的三軸加速度和三軸陀螺儀的數(shù)據(jù),然后進(jìn)行數(shù)據(jù)的處理。

        MPU6050集成了三軸的陀螺儀和三軸加速度。角速度范圍為±250、±500、±1000與±2000。MPU6050帶有三軸陀螺儀,每個陀螺儀各自負(fù)責(zé)檢測相應(yīng)軸的轉(zhuǎn)動速度,也就是檢測圍繞各個軸轉(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è)備從現(xiàn)有的正方向相反的方向旋轉(zhuǎn)。

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

        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。

        ④計算外環(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

        ⑦計算內(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)積分(油門小于某個值時不積分)

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

        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è)計

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

        NRF24L01模塊每個數(shù)據(jù)幀為11個字節(jié),這11個字節(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é)報,2011(05).

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

        国产女同va一区二区三区| 高清国产亚洲va精品| 粉嫩的18在线观看极品精品| 国产精品日韩av一区二区| 国产精品美女久久久久av福利 | 曰韩人妻无码一区二区三区综合部| 国内少妇人妻丰满av| 手机在线中文字幕国产| 91九色国产老熟女视频| 国内女人喷潮完整视频| 国产精品久久久久久久成人午夜| 久久国产av在线观看| 一级老熟女免费黄色片| 亚洲男同gay在线观看| 免费特级黄毛片| 国产麻豆剧传媒精品国产av蜜桃| 日本一区二区视频在线| 亚洲av无码久久精品狠狠爱浪潮| 国产成人精品三级91在线影院 | 午夜AV地址发布| 扒开非洲女人大荫蒂视频| 最新国产熟女资源自拍 | 国产白浆一区二区三区性色| 国产精品v欧美精品v日韩精品 | 亚洲欧美激情在线一区| 亚洲国产精品悠悠久久琪琪| 国产成人av三级三级三级在线 | 女人被狂躁c到高潮| 奇米狠狠色| 一区二区三区少妇熟女高潮| 白嫩丰满少妇av一区二区| 国产精成人品| 久久久国产不卡一区二区| 国产成人亚洲精品91专区高清| 疯狂的欧美乱大交| 国产手机在线αⅴ片无码| 亚洲精品99久91在线| 亚洲av午夜成人片精品电影| 成人亚洲性情网站www在线观看| 99热高清亚洲无码| 精品人妻一区二区三区在线观看|