于秀萍, 呂淑平, 劉 濤, 張耀坤
(哈爾濱工程大學(xué) 自動化學(xué)院,哈爾濱 150001)
課程設(shè)計是專業(yè)實踐環(huán)節(jié)的必修課,是課堂教學(xué)的延伸和發(fā)展,是理論知識與工程實踐之間的銜接。通過課程設(shè)計使學(xué)生加深理解飛行器慣性器件、制導(dǎo)與控制系統(tǒng)等專業(yè)核心課程課堂教學(xué)的理論內(nèi)容,學(xué)會綜合運用專業(yè)基礎(chǔ)理論,培養(yǎng)分析問題和解決問題的能力,在專業(yè)知識與研究方法方面為后續(xù)的畢業(yè)設(shè)計及工作奠定良好的基礎(chǔ)[1]?;赟TM32的飛行姿態(tài)運動模擬器設(shè)計即是專業(yè)課設(shè)題目之一,該模擬器以飛行姿態(tài)控制為主要教學(xué)內(nèi)容,要求學(xué)生實現(xiàn)模擬飛行姿態(tài)運動的程序控制,掌握MEMS傳感器MPU6050的應(yīng)用方法,掌握STM32控制器的應(yīng)用、脈沖寬度調(diào)制(PWM)信號控制舵機的方法,探索2自由度云臺運動姿態(tài)控制系統(tǒng)設(shè)計與應(yīng)用方法,深化學(xué)生對專業(yè)知識的理解[2]。
飛行姿態(tài)運動模擬器設(shè)計包括硬件系統(tǒng)和軟件設(shè)計與實現(xiàn)兩大部分。設(shè)計產(chǎn)品需要調(diào)試與功能測試,需要應(yīng)用Matlab軟件包對二軸轉(zhuǎn)臺飛行姿態(tài)數(shù)據(jù)進行仿真分析驗證,設(shè)計要求2周完成。本設(shè)計可鍛煉并檢驗學(xué)生綜合運用專業(yè)基礎(chǔ)理論知識及進行制導(dǎo)與控制系統(tǒng)分析、設(shè)計與仿真的能力;培養(yǎng)了學(xué)生對實際系統(tǒng)進行設(shè)計、調(diào)試、分析與解決問題的科學(xué)素質(zhì)[1-2]。
硬件主要包括數(shù)字控制器、電源系統(tǒng)、角度測量傳感器、執(zhí)行機構(gòu)等部分,通過對各部分進行合理的器件選型和方案制定,對STM32控制器最小系統(tǒng)、電源系統(tǒng)、光電隔離等各個模塊分別進行具體的設(shè)計。
數(shù)字控制器是硬件系統(tǒng)的關(guān)鍵組成部分,通過對其編程可以實現(xiàn)復(fù)雜的控制算法,控制執(zhí)行機構(gòu)動作,進而實現(xiàn)系統(tǒng)功能,因此控制器的選取在一定程度上決定硬件系統(tǒng)的性能。控制器的選取一般應(yīng)考慮其運行速度、外設(shè)資源、開發(fā)的難易程度等方面。實驗室為學(xué)生準(zhǔn)備了51單片機、STM32及Arduino Uno控制器。其中,STM32F103系列單片機代表具有高性能、低成本、低功耗、便于低電壓操作等優(yōu)點,嵌入式應(yīng)用專門設(shè)計的ARM Cortex-M3內(nèi)核,32 Byte字長,時鐘頻率達到72 MHz。內(nèi)部自帶12位ADC單元,6通道DMA,多達8個定時器,以及強大靈活的特定控制接口??刂坪陀嬎愎δ苁謴姶?,是同類產(chǎn)品中性價比較高的產(chǎn)品,但系統(tǒng)開發(fā)需要有較強的編程能力和微機硬件基礎(chǔ)。為了達到更好的控制效果,選用STM32F103單片機作為控制器,通過軟件編程實現(xiàn)控制算法,達到姿態(tài)角控制的目的。
為了簡化系統(tǒng)設(shè)計,使用STM32F103C8T6最小系統(tǒng)模塊和配套下載仿真器J-link-OB模塊。其中最小系統(tǒng)模塊使用3.3 V直流電壓供電,外接8 MHz晶振和硬件復(fù)位電路,并通過排針引出所有I/O口。根據(jù)STM32F103C8T6的芯片手冊[3-6]并結(jié)合系統(tǒng)硬件資源的需求,分配片上硬件資源情況如表1所示。
表1 STM32片上硬件資源分配
電源主要功能是為硬件系統(tǒng)中的其他部分提供合適的供電電壓。
由于該飛行姿態(tài)運動模擬器僅用于原理驗證說明,功耗低,體積小,考慮成本和使用范圍等方面因素,本設(shè)計使用220 V交流電作為系統(tǒng)總的電源輸入,通過AC-DC轉(zhuǎn)換模塊得到需要的較高電壓的直流電源,再通過DC-DC穩(wěn)壓模塊分別得到其他任意值的直流電壓。該供電方式適用于固定的設(shè)備,輸出電流大,負載能力強。
系統(tǒng)總電源使用220 V交流輸入,通過開關(guān)穩(wěn)壓電源分別轉(zhuǎn)化為12 V/1 A直流電源作為控制電源輸入;5 V/3 A直流電源作為舵機動力電源輸入。由于控制器和傳感器模塊分別使用5 V和3.3 V供電,因此,通過DC-DC降壓模塊LM2596,將12 V電壓轉(zhuǎn)化為5 V電壓,進一步使用DC-DC降壓芯片MIC5219將5 V電壓轉(zhuǎn)化為3.3 V電壓。整個電源系統(tǒng)的結(jié)構(gòu)圖如圖1所示。
光電隔離通常將電子信號轉(zhuǎn)換為光信號,在另一邊再將光信號轉(zhuǎn)換回電子信號。如此兩邊電路互相隔離開來,從而防止驅(qū)動電路的高電壓、脈動電流對微控電路的影響。由于要通過信號的頻率為50 Hz,因此選用低速光耦TLP521。
圖1 電源系統(tǒng)結(jié)構(gòu)圖
陀螺儀作為慣性器件的一種,常用來測量角速度和角度,而MEMS陀螺由于成本較低,在對角度精度要求不高的工業(yè)和民用產(chǎn)品中最常使用。按照題目要求選用MPU6050作為角度測量的傳感器。
MPU6050是一種利用MEMS技術(shù)集成三軸陀螺儀,三軸加速度計的運動處理組件,通過I2C總線通信,輸出測量的各個軸向的角速度和加速度的ADC值,通過對其輸出值的解算,可以得到其相對于慣性空間的姿態(tài)角度。由于MPU6050的解算涉及到較復(fù)雜的導(dǎo)航解算算法,不在本題目設(shè)計要求范圍內(nèi),因此選用已解算好角度,通過串口通信輸出數(shù)據(jù)的MPU6050模塊,直接通過串口讀入角度信息實現(xiàn)本系統(tǒng)的角度測量反饋。
執(zhí)行機構(gòu)通常包括電動機和相關(guān)的機械結(jié)構(gòu),其作用于被控對象(安裝小飛行器模型的二軸平臺),實現(xiàn)控制作用。執(zhí)行機構(gòu)選取時??紤]負載的大小,實現(xiàn)的難易程度,成本等因素。因此選取了兩個電動舵機,通過一定的機械連接實現(xiàn)兩個方向的旋轉(zhuǎn)控制,可控制模擬飛機的俯仰和航向運動。電動舵機使用PWM信號驅(qū)動,內(nèi)部通過電位器反饋,實現(xiàn)信號脈寬和旋轉(zhuǎn)角度的一一對應(yīng),操作簡單,響應(yīng)迅速,常用于對角度的控制。
綜合上面對系統(tǒng)各個部分實現(xiàn)方案的選擇,STM32控制器可通過串口通信方式向PC機發(fā)送被控對象當(dāng)前的姿態(tài)角信息,在PC機串口助手的上位機軟件中可實時查看并保存姿態(tài)角數(shù)據(jù),用于分析。
綜合以上各部分硬件設(shè)計,繪出硬件系統(tǒng)簡要電氣連接圖,如圖2所示。
圖2 硬件系統(tǒng)電氣連接
飛行姿態(tài)運動模擬器實時控制軟件的基本結(jié)構(gòu)采用主程序加中斷服務(wù)程序的形式,并將程序分為主函數(shù),姿態(tài)角數(shù)據(jù)采集與處理,角度控制算法等部分,其中姿態(tài)角數(shù)據(jù)采集與處理程序在DMA中斷中進行,角度控制程序在定時器中斷中進行[7]。程序總框架圖3所示。根據(jù)軟件設(shè)計思路,在MDK4.29編程環(huán)境下,對各部分進行編程實現(xiàn)。給出系統(tǒng)中較為關(guān)鍵的 PWM信號輸出配置程序,角度數(shù)據(jù)解算程序,數(shù)字PID控制程序,中斷服務(wù)程序等功能函數(shù)。
主函數(shù)主要完成全部硬件資源的初始化配置和向上位機輸出角度信息的功能。主函數(shù)程序流程圖如圖4所示。
圖3 程序總體框架圖
圖4 主函數(shù)程序流程圖
在中斷中完成至關(guān)重要的角度信息解算和控制量輸出的任務(wù)。其中角度解算是在串口DMA傳輸完成中斷中執(zhí)行,控制量輸出是在定時器中斷中執(zhí)行。
串口數(shù)據(jù)DMA傳輸完成中斷在一組完整的數(shù)據(jù)包傳輸完成時產(chǎn)生。MPU6050發(fā)送數(shù)據(jù)的頻率為100 Hz,因此DMA中斷的頻率大約為100 Hz。當(dāng)中斷發(fā)生時,先對數(shù)據(jù)的正確性進行校驗,若數(shù)據(jù)正確,則直接執(zhí)行角度解算函數(shù)。
定時器中斷頻率是500 Hz,即基本定時時間是2 ms。通過中斷程序里定義計時變量累加實現(xiàn)更長時間的定時周期。由于舵機的時間常數(shù)一般在幾十ms左右,因此控制周期設(shè)置為4 ms,即控制周期250 Hz;同時設(shè)定LED指示燈的閃爍頻率為2 Hz。
(1)姿態(tài)角度數(shù)據(jù)包的解算算法。MPU6050模塊通過串口輸出二軸轉(zhuǎn)臺相對于慣性空間的角速度、角度、加速度等信息,因此只需要配置好串口通信程序,接收數(shù)據(jù)即可得到該系統(tǒng)需要的姿態(tài)角。為了保證傳輸過程中數(shù)據(jù)的準(zhǔn)確性,數(shù)據(jù)經(jīng)過特殊通信協(xié)議的處理加工,因此得到的數(shù)據(jù)需要經(jīng)過相反的解碼過程才能夠得到想要的角度信息。串口通信的協(xié)議分為3個數(shù)據(jù)包,其中角度數(shù)據(jù)包協(xié)議內(nèi)容[8-9]如表2所示。
表2 角度數(shù)據(jù)包協(xié)議
根據(jù)協(xié)議規(guī)定,編寫角度解算程序。為了避免系統(tǒng)上電時載體抖動或者放置不平等因素帶來的角度誤差,3個軸向的角度分別采集100次,做算術(shù)均值濾波后作為載體啟動時的角度初始值,并在以后的角度解算中統(tǒng)一減去,從而保證3個軸向的姿態(tài)角均是以0為初值。另外,由于三軸是耦合的,只有在小角度時才會表現(xiàn)出獨立性,在大角度時姿態(tài)角度會耦合變化,比如當(dāng)X軸接近90°時,即使姿態(tài)只繞X軸轉(zhuǎn)動,Y軸的角度也會跟著有較大的變化,這是歐拉角表示姿態(tài)的固有問題。因此為了減小該現(xiàn)象的影響,將兩個軸向的姿態(tài)角均限制在約-60°~+60°之間。
(2)姿態(tài)角數(shù)據(jù)采集與處理。姿態(tài)角數(shù)據(jù)是通過串口接收原始數(shù)據(jù),在串口接收中斷里對數(shù)據(jù)進行辨識,找到數(shù)據(jù)幀頭后開啟DMA傳輸,直接將數(shù)據(jù)保存到內(nèi)存,一組數(shù)據(jù)包傳輸完成后觸發(fā)中斷,在中斷中對數(shù)據(jù)進行校驗,若數(shù)據(jù)正確無誤則對其進行解算,最終得到角度信息。姿態(tài)角數(shù)據(jù)采集與處理程序的流程圖如圖5所示。
在定時器中斷中執(zhí)行角度的PID控制,并輸出控制量,改變PWM信號的脈寬,達到控制舵機的目的。角度控制程序流程圖如圖6所示。
(1) 數(shù)字PID控制算法[10-11]。離散的位置式PID算法:
(1)
增量式為:
(2)
增量式可以寫為位置式:
u(k)=u(k-1)+Δu(k)
(3)
圖5 姿態(tài)角數(shù)據(jù)采集與處理程序流程圖
圖6 角度控制程序流程圖
根據(jù)式(1)~(3)編寫PID算法函數(shù)。
(2) PWM信號輸出配置程序。PWM把恒定的直流電壓調(diào)制成頻率一定、脈沖寬度(占空比)可變的電壓信號。STM32上自帶PWM信號發(fā)生單元,基本原理是利用高速時鐘的周期T0為基本時間單元,通過設(shè)定周期寄存器和比較寄存器輸出PWM。假設(shè)周期寄存器設(shè)定的值為N,則PWM波的周期T=NT0。當(dāng)啟動PWM單元工作后,對應(yīng)定時器工作,當(dāng)定時器的計數(shù)值與比較寄存器相等時,對應(yīng)輸出管腳的電平發(fā)生翻轉(zhuǎn),當(dāng)計數(shù)結(jié)束又從新開始,周而復(fù)始,生成PWM波。用中斷模擬的方式要占用CPU的資源,因此使用STM32自帶的PWM發(fā)生單元產(chǎn)生PWM波信號。
由于舵機的控制信號是周期20 ms,脈寬0.5~2.5 ms的PWM波信號,因此程序中配置的PWM波輸出頻率是50 Hz,比較裝載值設(shè)為60 000時,對應(yīng)的脈寬等效值范圍為1 500~7 500。對于量程是180°的舵機,若1.5 ms脈寬的PWM信號對應(yīng)機械零位,則通過調(diào)節(jié)PWM信號的脈寬,可以控制舵機在-90°~+90°絕對角度范圍內(nèi)的旋轉(zhuǎn),從而控制載體的姿態(tài)角。考慮機械安裝的誤差,為了使載體上電初始位置是水平的,應(yīng)先調(diào)節(jié)舵機角度,找到對應(yīng)載體水平時的脈寬,作為中值零位脈寬。另外,由于陀螺儀大角度下各軸角度耦合變化,因此,將雙軸舵機的旋轉(zhuǎn)角度均要使用軟件限位。
(1) PID參數(shù)整定。在硬件與軟件完成的基礎(chǔ)上,通過對PID參數(shù)的整定[12-13],反復(fù)調(diào)節(jié)使系統(tǒng)有良好的性能。舵機的電壓輸出與角度輸出近似成一級慣性環(huán)節(jié),因此采用PI控制規(guī)律。PID調(diào)試參數(shù)中Td設(shè)為0,只需反復(fù)調(diào)節(jié)Kp和Ti,直到達到很好的控制性能。
由于2自由度云臺兩個軸向的運動姿態(tài)是相互獨立的,為了使調(diào)試更加簡單,先固定1個軸向的角度不予控制,只調(diào)節(jié)另1個軸向的角度控制參數(shù),然后用同樣的方法調(diào)試第2個軸向的參數(shù)。最后將兩個軸向的控制量同時加上,再根據(jù)系統(tǒng)性能微調(diào)PID參數(shù)。
(2) 二軸轉(zhuǎn)臺模擬飛行性能測試與數(shù)據(jù)分析。在PC機監(jiān)控調(diào)試過程中,通過串口將需要的角度信息發(fā)送到PC機,在PC機上使用串口助手軟件接收顯示數(shù)據(jù)。因為數(shù)據(jù)發(fā)送是在DMA中斷里數(shù)據(jù)解算完成后即發(fā)送的,因此發(fā)送的頻率略小于系統(tǒng)采樣頻率100 Hz。將接收到的俯仰角與偏航角數(shù)據(jù)(Pitch,Yaw)保存到Text文件后,導(dǎo)入到MATLAB軟件中進行分析,并繪制出系統(tǒng)在不同輸入值(Pitch,Yaw)下的階躍響應(yīng)曲線[14-15]。通過上述方法得到二軸轉(zhuǎn)臺模擬俯仰與偏航角運動階躍響應(yīng)曲線如圖7所示。由圖7可見,Pitch角在第20個采樣點后穩(wěn)定在10°的位置,即調(diào)節(jié)時間約為0.2 s,穩(wěn)態(tài)誤差在2%左右,說明系統(tǒng)的穩(wěn)態(tài)性能很好。同時看到曲線在第10個采樣點,即0.1 s時達到第1個峰值13°,隨后經(jīng)過一次波動達到穩(wěn)定狀態(tài),可知系統(tǒng)的響應(yīng)速度很快,但超調(diào)量有些大。對于姿態(tài)控制系統(tǒng)來說,要求系統(tǒng)的響應(yīng)快,精確度高,超調(diào)量在可接受范圍內(nèi)即可,因此該參數(shù)對應(yīng)下的系統(tǒng)是可用的,還可以進一步調(diào)節(jié),達到更好的性能指標(biāo)。
圖7 轉(zhuǎn)臺俯仰與偏航角運動階躍響應(yīng)曲線
(3) 二軸轉(zhuǎn)臺程控指令功能測試。進一步程序發(fā)出俯仰與偏航兩個軸向的角度設(shè)定值指令,按照一定時間改變設(shè)定值(Pitch,Yaw)的變化,模擬飛機的起飛、航行和降落過程。程序變化指令序列為(0,0);(0,10);(0,20);(0,30);(0,0);(10,0);(20,0);(30,0);(0,0);(10,10);(20,20);(30,30);(0,0);(10,-10);(0,0);(-30,-30);(0,0),得到二軸轉(zhuǎn)臺角度的實時響應(yīng)曲線如圖8所示。
圖8 在程控指令(Pitch,Yaw)序列作用下,二軸飛行模擬器俯仰與偏航角運動階躍響應(yīng)
從圖8可以看出,飛行姿態(tài)模擬器的動態(tài)響應(yīng)迅速和穩(wěn)態(tài)誤差很小,俯仰和偏航角運動能穩(wěn)定響應(yīng)程控給定指令,性能指標(biāo)均符合設(shè)計要求。因此該程控二軸云臺姿態(tài)角模擬器設(shè)計任務(wù)完成。程控姿態(tài)模擬器實物如圖9所示。
圖9 程控姿態(tài)模擬器實物圖
本設(shè)計的實踐教學(xué)效果是從學(xué)生設(shè)計的程控飛行姿態(tài)運動模擬器實物演示與提交的課設(shè)報告數(shù)據(jù)仿真分析得到的。該模擬器以二軸云臺為研究對象,實現(xiàn)了飛機的俯仰和偏航運動,采用STM32為控制器控制轉(zhuǎn)臺的運動姿態(tài),采用基于新型MEMS傳感器MPU6050作為檢測元件,同時利用MPU6050內(nèi)部數(shù)據(jù)處理器得到完整的融合演算數(shù)據(jù),準(zhǔn)確檢測轉(zhuǎn)臺的運動姿態(tài)。轉(zhuǎn)臺姿態(tài)控制與轉(zhuǎn)臺姿態(tài)檢測兩者相互融合,形成一個完整的簡易飛行姿態(tài)運動模擬器。通過系統(tǒng)調(diào)試與數(shù)據(jù)分析,進一步驗證了程控二軸飛行轉(zhuǎn)臺能穩(wěn)定跟蹤給定姿態(tài)角。實踐證明,學(xué)習(xí)態(tài)度認真、專業(yè)基礎(chǔ)知識扎實、對課設(shè)題目感興趣、肯于專研的學(xué)生能在2周內(nèi)完成課程設(shè)計任務(wù)。本設(shè)計不足之處是電源體積較大不靈活,可改用可充電電池供電。
該課程設(shè)計,既提高了學(xué)生實踐動手能力,又增加了學(xué)生對專業(yè)理論知識的感性認識,為學(xué)生創(chuàng)新能力鍛煉提供了良好基礎(chǔ),這對于培養(yǎng)學(xué)生的創(chuàng)新能力和工程實踐能力具有重要意義。