彭焮成, 王素娟, 劉玉縣, 陳 婷, 湯 麗
(1.江西理工大學 機電工程學院,江西 贛州 341000; 2.廣東順德創新設計研究院,廣東 佛山 528300)
微機電系統(MEMS)陀螺儀具有體積小、功耗低、成本低,抗過載能力強、動態范圍大、可集成化等優點在工業控制、航空航天、汽車、消費電子、軍事等領域中得到廣泛應用[1]。陀螺是一種測量角速度的力學傳感器,其工作前提是驅動模態能穩定振蕩起來,需要合適的驅動環路。相對于采用模擬電路,數字電路閉環控制具有精確、對環境有效變化易于控制、容易對算法調整和優化的特點,并且由于現場可編程門陣列(field programmable gate array,FPGA)并行處理快速方式、硬件描述語言、模塊化設計等優點,許多陀螺的數字電路設計方法搭建在FPGA平臺上[2,3]。
本文使用了CORDIC算法[3]產生驅動信號和解調信號,相比于直接頻率合成[4](direct frequency synthesis,DDS)方法節省了大量的只讀存儲器(read only memory,ROM)資源。因為直接頻率合成是將信號正余弦波的幅值存入查找表中(look up table,LUT),要達到高的精度將占用大量內存資源[5]。信號解調采用了工業上廣泛應用的正交解調,相比于最小均方(least mean square,LMS)自適應濾波[6]要簡單,并且不需要考慮濾波的權重系數。再經過低通濾波濾除由于解調產生的高頻信號。參考幅值和相位可以由掃頻方法[8]和振動測試方法[9]求得。陀螺的驅動模態是非線性系統,采用模糊控制具有優越的非線性控制能力使陀螺能夠在諧振頻率處穩定工作,得到最大的信噪比。
如圖1所示,MEMS陀螺驅動模態的運動學方程可以等效成二階質量—彈簧—阻尼系統。

圖1 MEMS陀螺儀簡化模型[7]
設驅動模態的彈簧系數kd,阻尼系數cd,質量塊的位移量為x,驅動電極上施加的靜電,則驅動模態的動力學方程為
(1)
求解輸出位移信號
Adsin(ωt-ψd)
(2)
穩態振幅
(3)
穩態相位
(4)

總相移為
ψphase_ref=ψd+ψe
(5)
式中Ψe為電路中元器件的相移,ψd為陀螺工作在諧振頻率處的相移,由于溫度或者其他環境的影響,驅動模態的諧振頻率會發生變化,通過跟蹤ψphase_ref能檢測信號的變化。ψe可以看作不變的量,只要控制ψphase_ref不變,就能保證陀螺工作在諧振頻率處,再用模糊控制保證頻率在諧振頻率處,能基本保持恒幅振動。
由動力學方程推導:可知位移響應包含了2項之和,前一項是瞬態響應,后一項是穩態響應。可分為振動測試和掃頻測試的方法,振動測試是基于時域的測試方法而掃頻測試則是基于頻域的測試方法。這兩種方法可以計算陀螺在諧振頻率處的參考幅值和參考相位[7]。

圖2 數字閉環驅動示意
CORDIC算法[3]即坐標旋轉數字計算方法,主要用于三角函數等的計算,這里通過相位的不斷增加逐步計算出相位正余弦,由相位增加的速度(頻率控制字)來控制輸出頻率的大小,提供了驅動信號和解調信號。

圖3 坐標旋轉示意
在xy坐標平面上,將點(x1,y1)旋轉θ角度到(x2,y2)的標準方法
x2=x1cosθ-y1sinθ,y2=x1sinθ+y1cosθ
(6)
寫成矩陣形式
(7)
式中R為旋轉矩
(8)
令tanθi=2-i,這樣乘正切值變成了移位操作,方便了數字電路的處理。轉換因子Ki=(1+2-2i)-1/2得到CORDIC算法的一般表達式
(9)
這里引入第三個方程,稱為角度累加器,用來在每次迭代過程中追蹤累加的旋轉角度。在FPGA中使用了高速全流水線結構的方式,通過基本的加減法和移位運算代替了乘法運算,再使用迭代的方法不斷計算所給及的角度的正弦和余弦值。
閉環控制的目的是為了給驅動模態一個恒定的正弦波。正交解調[10]是分離幅值和相位信息,使其能得到有效的控制。假設ADC采集到的信號是A·sin(ωnt+ψ),再由CORDIC模塊產生和采集信號頻率一樣的正交解調信號sinωnt和cosωnt。頻率確定就可以求解幅值和相位。解調過程如下
sI(t)=A·sin(ωnt+ψ)·cosωnt
sQ(t)=A·sin(ωnt+ψ)·sinωnt
(10)
經過低通濾波器濾除的高頻信號2ωn,結果為
(11)
經過正交解調可以求得幅值和相位,方便后面的比例積分微分(proportion-integration-differentiation,PID)調節和Fuzzy控制算法的調節
(12)
模糊控制是一種非線性控制[11],據模糊控制器設計的理論可知,模糊控制系統的設計中所選的模糊控制器的維數越高,系統的控制精度也就越高,在建立模糊控制規則時就變的比較困難,同時計算機實現起來也比較麻煩。因此,本文主要采用設計的通用方法,采用雙輸入單輸出的二維模糊控制器的設計,如圖4所示。

圖4 常規模糊控制器結構
模糊語言變量用5個元素的集合(X,T(X),U,G,M)表示,其中,X為語言變量名;T(X)為語言變量名的集合, 且每個值都在U上定義的模糊數Xi;U為語言變量X的論域;G為產生X數值名的語言值規則,是用于產生語言變量值的;M為與每個語言變量含義相聯系的算法規則。如圖5所示。

圖5 隸屬度函數
根據模糊控制結構圖可知,模糊控制主要分為三部分:模糊化、模糊推理、清晰化。
輸入和輸出變量E,EC和ΔVn的模糊子集均為{nb,nm,ns,ze,ps,pm,pb},即為{負大,負中,負小,零,正小,正中,正大},它們量化的論域取[-3,3],取7個模糊檔{-3,-2,-1,0,1,2,3},這個量化的過程就是將E,EC模糊化。由于是需要將ΔVn存入內存中,通過查找表的地址來讀取ΔVn的值,在內存中分別用4位二進制表示E和EC,對地址進行編碼的主要由兩部分組成,分別為E和EC。
E和EC分別有7個模糊子集,即有了49條規則。模糊規則表是模糊控制器的核心,根據人的經驗去設計。其中核心的思想在于:判斷E和EC屬于哪個論域,來調整ΔVn來快速降低誤差。如果E為pb并且EC也為pb時,則ΔVn為nb,其它的設置類似。根據模糊規則表和Mamdani算法,可由式(13)計算控制表
(13)
E'和EC'為普通輸入變量,Ei,ECi和ΔVni是模糊規則中的49條規則。最后,用重心法去模糊化,將模糊控制器的輸出ΔV'n轉化成量化ΔVn。

表1 模糊規則表
在整個控制過程中,模糊控制表可以使用MATLAB中的模糊(fuzzy)工具可以方便的求得ΔVn的值,再作為LUT存儲于FPGA硬件中。但FPGA的查找表中不能存儲小數,可以乘2n(即向左n位)變為整數再存儲在查找表中,輸出時再除2n還原。
傳統的二維模糊控制算法可以描述為
Vn=Vn-1+ΔVn=Vn-1+fuzzy(kpE,kdEC)
(14)
式中E和EC分別為最近一次的控制誤差和控制誤差變化率ΔVn,kp和kd分別為權重因子,相位控制增量主要由Fuzzy控制器決定[9]。由于缺乏積分環節,為消除靜差,提高控制器精度,提出改進的方法
Vn=Vn-1+ΔVn=Vn-1+fuzzy(kpE,kdEC)+kiE
(15)
改進后模糊控制是傳統模糊控制和PID的結合體,對控制對象有較高的控制精度。
實驗使用的陀螺是由北京大學自主設計的采用雙解耦結構,Q值(標度因子)980,諧振頻率9 432.12 Hz。
圖6是驅動模態質量塊恒幅振動下測試1 h的幅值。振幅的有效值約為0.812 46 V。

圖6 改進前與改進后的模糊控制器幅值變化
圖6(a)由于缺少積分環節,無法消除控制器的靜態誤差,隨著時間的變化幅值變化很明顯,波動幅度為62 μV,驅動幅值抖動精度為76×10-6。圖6(b)是改進的模糊控制器實驗結果。
新的控制器加入了積分環節,能有效地消除陀螺靜態誤差,波動幅度42 μV,驅動幅值抖動精度51×10-6。獲得較快的控制能力、較高的控制精度以及較強的魯棒性。
本文提出一種基于模糊控制算法的MEMS陀螺驅動閉環設計方法,并應用于FPGA平臺上。區別于經典PID控制理論,該方法則是基于人類的經驗設計而成,屬于智能控制方法的一種,具有非線性系統的控制能力。模糊控制器可以通過對陀螺幅值的控制,從而使陀螺保持在諧振狀態下,獲得恒定幅值和較高的信噪比。