• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2020-09-10 11:16:11王廬山
      內燃機與配件 2020年11期
      關鍵詞:陀螺儀

      王廬山

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

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

      0? 引言

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

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

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

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

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

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

      本款四軸飛行器的四個電機采用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進行升壓處理,得到穩(wěn)定的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都為退耦電容,用于濾除電機運行時的干擾。

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

      1.4 無線通信電路設計

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

      1.5 九軸陀螺儀電路設計

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

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

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

      2.1 四軸飛行器主程序設計

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

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

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

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

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

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

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

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

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

      PID、四元數(shù)數(shù)據(jù)融合、PWM控制子程序流程圖如圖2所示。四軸飛行器的PID采用雙環(huán)控制。外環(huán)是角度,內環(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ù)進行轉換,因為我們加速度的量程為±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/度

      ③四元數(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ā)來的橫滾微調數(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

      ⑦計算內環(huán)誤差。

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

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

      if(YM > 30)ERRORX_In += gy;//內環(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控制四軸飛機的電機。

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

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

      2.4 無線通訊子程序設計

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

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

      參考文獻:

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

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

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

      猜你喜歡
      陀螺儀
      基于Allan方差分析的陀螺儀漂移誤差辨識與仿真復現(xiàn)
      基于EMD的MEMS陀螺儀隨機漂移分析方法
      基于陀螺儀輸出誤差觀測的冗余INS標定方法
      一種單目相機/三軸陀螺儀/里程計緊組合導航算法
      硅微陣列陀螺儀的模態(tài)分析與實驗
      我國著名陀螺儀專家——林士諤
      陀螺儀故障數(shù)據(jù)檢測的神經網(wǎng)絡算法
      電子制作(2017年13期)2017-12-15 09:00:18
      “藍天王國”奇遇記(十一)——陀螺儀
      基于勻速率26位置法的iIMU-FSAS光纖陀螺儀標定
      微機械陀螺儀概述和發(fā)展
      巴南区| 浙江省| 大港区| 新巴尔虎右旗| 汤阴县| 延寿县| 五原县| 北京市| 聂荣县| 庄浪县| 永平县| 凉城县| 娄烦县| 乡城县| 阿尔山市| 衡东县| 宿州市| 齐河县| 开远市| 湾仔区| 商都县| 兴化市| 涟水县| 射洪县| 固镇县| 日喀则市| 东阳市| 赤城县| 章丘市| 岳池县| 靖宇县| 玉树县| 洪湖市| 洪雅县| 紫云| 榆中县| 山西省| 彭山县| 安福县| 海宁市| 集贤县|