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).

主站蜘蛛池模板: 日韩在线播放中文字幕| 亚洲有码在线播放| 啊嗯不日本网站| 国产精品亚洲а∨天堂免下载| 亚洲男人天堂久久| 2019国产在线| 亚洲丝袜中文字幕| 国产欧美日韩视频怡春院| 欧美特黄一级大黄录像| 免费人成黄页在线观看国产| 日韩A∨精品日韩精品无码| 91区国产福利在线观看午夜| 制服丝袜在线视频香蕉| 日韩精品一区二区深田咏美| 青青草原国产一区二区| 国产福利在线观看精品| 99草精品视频| 国产精品吹潮在线观看中文| 免费人成在线观看成人片| 白浆视频在线观看| 666精品国产精品亚洲| 伦精品一区二区三区视频| 性视频久久| 漂亮人妻被中出中文字幕久久| AV不卡国产在线观看| 99在线视频免费| 国产午夜看片| www.亚洲一区| 国产精品欧美日本韩免费一区二区三区不卡 | 欧美在线综合视频| 国产国模一区二区三区四区| 欧美19综合中文字幕| 国产成人精品一区二区| 日韩精品一区二区三区视频免费看| 无码一区18禁| 亚洲第一成人在线| 成年片色大黄全免费网站久久| 思思热在线视频精品| 亚洲成人播放| 青草精品视频| 国产精品中文免费福利| 日本免费精品| 国产欧美中文字幕| 亚洲人成高清| 91小视频在线观看免费版高清| 亚洲伊人天堂| 日本三级精品| 欧美国产综合色视频| 91娇喘视频| 亚洲最大在线观看| 久久综合色天堂av| 精品国产免费观看| 亚洲Av综合日韩精品久久久| 国产成人久久综合777777麻豆 | 中文字幕在线看| 一级爱做片免费观看久久| 91久久国产综合精品| 成AV人片一区二区三区久久| 福利在线不卡一区| 欧美激情一区二区三区成人| 欧美乱妇高清无乱码免费| 国产成人福利在线| 国产精品青青| 欧美激情,国产精品| 精品国产三级在线观看| 欧美日韩国产精品va| 99热这里只有精品免费| 亚洲国产精品VA在线看黑人| 久久久受www免费人成| 试看120秒男女啪啪免费| 久久黄色一级视频| 婷婷色在线视频| 久久精品欧美一区二区| 99ri精品视频在线观看播放| 视频在线观看一区二区| 色老二精品视频在线观看| 香蕉综合在线视频91| 亚洲91精品视频| 国产精品主播| 嫩草影院在线观看精品视频| yjizz视频最新网站在线| 久久免费视频6|