999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于STC15單片機的四軸飛行器系統設計

2020-09-10 11:16:11王廬山
內燃機與配件 2020年11期

王廬山

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

關鍵詞:STC15單片機;四軸飛行器;PWM控制;無線遙控;陀螺儀

0? 引言

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

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

1? 四軸飛行器硬件系統設計

1.1 系統的總體設計

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

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

本款四軸飛行器的四個電機采用MOS管驅動。利用STC內部自帶的四路硬件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 電源電路設計

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

1.3 四軸飛行器電機驅動電路設計

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

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

1.4 無線通信電路設計

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

1.5 九軸陀螺儀電路設計

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

2? 四軸飛行器軟件系統設計

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

2.1 四軸飛行器主程序設計

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

NRF24L01先設定為發送狀態,并發送飛控的姿態數據給上位機,然后設定無線模塊為接收狀態,接收遙控器發來的數據。

判斷飛機是否失聯,如果失聯,則降低油門,歸中航向、橫滾、俯昂角,迫使飛機降落下來。當飛機未失聯時,判斷飛機是否解鎖。

當處于解鎖狀態時,點亮流動狀態燈,指示飛機處于正常狀態,并且每2毫秒讀取陀螺儀數據,超聲波數據,進行數據融合,四元數據解算,PID運算和PWM控制,使得飛機的飛行狀態在人的操作下,穩定的飛行。

2.2 MPU6050飛行器姿態讀取子程序設計

單片機通過IIC總線讀出陀螺儀的三軸加速度和三軸陀螺儀的數據,然后進行數據的處理。

MPU6050集成了三軸的陀螺儀和三軸加速度。角速度范圍為±250、±500、±1000與±2000。MPU6050帶有三軸陀螺儀,每個陀螺儀各自負責檢測相應軸的轉動速度,也就是檢測圍繞各個軸轉動的速度。

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

2.3 PID、四元數數據融合、PWM控制子程序設計

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

①讀取MPU6050飛控制的姿態數據,即三軸加速度和三軸陀螺儀數據。

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

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

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

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

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

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

②根據選擇的量程對陀螺儀和加速度數據進行轉換,因為我們加速度的量程為±4g/S,所以要除以8192,陀螺儀的量程為±500度/S,所以要除以65.5。

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

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

Angle_ay=(Accel_y)/8192;? //轉換關系? ?8192LSB/g

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

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

Angle_gz=(Gyro_z)/65.5;? ? //轉換關系65.5LSB/度

③四元數解算出歐拉解。

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

④計算外環的誤差。

Ax=-FR1+a_x-AngleX; 其中FR1為遙控器發來的橫滾搖桿數據,ax為遙控器發來的橫滾微調數據,AngleX為俯昂角。

⑤外環誤差積分與限幅。

ERRORX_Out += Ax; //外環積分

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

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

⑥算出外環的PID。

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

⑦計算內環誤差。

gy=PID_Output-Angle_gy;PID_Outpu為外環的輸出,作為內環的輸入,Angle_gy為Y軸的陀螺儀值。

⑧內環誤差積分與限幅。

if(YM > 30)ERRORX_In += gy;//內環積分(油門小于某個值時不積分)

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

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

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

⑨算出總環的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控制四軸飛機的電機。

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

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

2.4 無線通訊子程序設計

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

NRF24L01模塊每個數據幀為11個字節,這11個字節的功能依次為:失聯變量、解鎖或上鎖命令值、油門變量、高低字節、航向變量、橫滾變量、俯仰變量、設置參數變量、橫滾微調值、俯昂微調值、航向微調值。單片機就是根據無線模塊發來的數據,對飛行器進行控制。

參考文獻:

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

[2]趙鶴,王喆垚.基于UKF的MEMS傳感器姿態測量系統[J].傳感技術學報,2011(05).

[3]周江華,苗育紅.四元數在剛體姿態仿真中的應用研究[J].飛行力學,2000(04).

主站蜘蛛池模板: 久久夜色撩人精品国产| 亚洲中文在线视频| 国产成人91精品| 亚洲aaa视频| 看看一级毛片| 尤物在线观看乱码| 国产成年无码AⅤ片在线| 蜜桃视频一区二区三区| 国产AV毛片| 国产精品网址在线观看你懂的| 一级毛片免费播放视频| 无码又爽又刺激的高潮视频| 亚洲一区毛片| 国产白浆视频| 亚洲 欧美 日韩综合一区| 欧美啪啪视频免码| 中文字幕av一区二区三区欲色| 狠狠色综合久久狠狠色综合| 98精品全国免费观看视频| 97在线视频免费观看| 激情午夜婷婷| 2020最新国产精品视频| 又猛又黄又爽无遮挡的视频网站| 亚洲AV无码久久天堂| 99一级毛片| 日本高清有码人妻| 国产女人水多毛片18| 免费国产小视频在线观看| 91小视频在线| 九九久久精品免费观看| 日本AⅤ精品一区二区三区日| 美女裸体18禁网站| 亚洲国产看片基地久久1024| 亚洲侵犯无码网址在线观看| 久久中文字幕2021精品| 亚洲综合色区在线播放2019| 亚洲免费福利视频| 国产va在线观看| 欧美午夜小视频| 丁香婷婷久久| 人妻精品全国免费视频| 美女被操黄色视频网站| 国产精品免费福利久久播放 | 六月婷婷精品视频在线观看 | 亚洲不卡网| 精品1区2区3区| 波多野吉衣一区二区三区av| 国产亚洲高清在线精品99| 成人综合在线观看| 一级在线毛片| 国产凹凸视频在线观看| 久久国产乱子伦视频无卡顿| 久久久久夜色精品波多野结衣| 免费黄色国产视频| 国产99在线| 2022国产91精品久久久久久| 日韩国产高清无码| 国产精品免费久久久久影院无码| 六月婷婷综合| 日本成人在线不卡视频| 99热这里只有精品国产99| 麻豆国产精品视频| 国产精品对白刺激| 精品久久久久久久久久久| 亚洲有无码中文网| 久久毛片免费基地| 54pao国产成人免费视频| 好吊色妇女免费视频免费| 妇女自拍偷自拍亚洲精品| 久久99久久无码毛片一区二区| 在线观看免费AV网| 伊人久久精品亚洲午夜| 久久五月天综合| 国产色图在线观看| 亚洲欧美日韩成人在线| 77777亚洲午夜久久多人| 免费无码AV片在线观看中文| 国产成人区在线观看视频| a毛片基地免费大全| 日本a级免费| 岛国精品一区免费视频在线观看| 丁香六月激情综合|