楊文杰,張志杰,王代華,陳青青
(中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測試教育部重點(diǎn)試驗(yàn)室,太原 030051)
?
壓力傳感器動(dòng)態(tài)誤差修正方法的FPGA實(shí)現(xiàn)
楊文杰,張志杰*,王代華,陳青青
(中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測試教育部重點(diǎn)試驗(yàn)室,太原 030051)
為了實(shí)時(shí)修正由于壓力傳感器動(dòng)態(tài)特性引起的動(dòng)態(tài)誤差,提出了一種基于IIR數(shù)字補(bǔ)償濾波器的FPGA實(shí)現(xiàn)方案。該方案首先依據(jù)壓力傳感器動(dòng)態(tài)標(biāo)定時(shí)的輸入和輸出數(shù)據(jù)利用改進(jìn)的最小二乘算法建立全面描述傳感器系統(tǒng)的數(shù)學(xué)模型,繼而運(yùn)用零極點(diǎn)配置方法重新配置模型零極點(diǎn)得到最優(yōu)IIR補(bǔ)償器模型及參數(shù),其次在保證補(bǔ)償器性能無失真或失真很小的基礎(chǔ)上使用MATLAB工具量化補(bǔ)償器模型參數(shù),最后在以FPGA為控制核心的數(shù)據(jù)采集及存儲(chǔ)系統(tǒng)的基礎(chǔ)上應(yīng)用量化的IIR補(bǔ)償器模型參數(shù)設(shè)計(jì)了IIR補(bǔ)償器軟核,從而實(shí)現(xiàn)傳感器動(dòng)態(tài)誤差的實(shí)時(shí)修正。實(shí)驗(yàn)結(jié)果表明:該方案能夠?qū)崟r(shí)有效地修正傳感器動(dòng)態(tài)誤差。
壓力傳感器;動(dòng)態(tài)特性;動(dòng)態(tài)誤差;IIR濾波器;FPGA;軟核
在動(dòng)態(tài)測試中當(dāng)傳感器的工作頻帶不能有效覆蓋被測信號(hào)的各種模態(tài)及頻率分量時(shí),工作頻帶范圍外的信號(hào)頻率分量就會(huì)被“畸形化”,最終導(dǎo)致測量結(jié)果無法表征輸入信號(hào),產(chǎn)生較大的動(dòng)態(tài)誤差[1-7]。而研制動(dòng)態(tài)性能優(yōu)異的傳感器是很困難的[8],許多傳感器的動(dòng)態(tài)性能遠(yuǎn)不能滿足各種動(dòng)態(tài)測試的要求,因而研究傳感器動(dòng)態(tài)性能改進(jìn)的方法具有理論和實(shí)際意義。在眾多改進(jìn)傳感器動(dòng)態(tài)性能的方法中,采用設(shè)計(jì)動(dòng)態(tài)補(bǔ)償器的方法最為簡單直接可行。對(duì)于在線實(shí)時(shí)修正由于傳感器的動(dòng)態(tài)特性不足引起的動(dòng)態(tài)誤差需要設(shè)計(jì)廣泛應(yīng)用于數(shù)字信號(hào)處理領(lǐng)域的數(shù)字補(bǔ)償濾波器[9]。FPGA(現(xiàn)場可編程門陣列)擁有良好的并行運(yùn)算能力,以及可配置、可擴(kuò)展等優(yōu)點(diǎn),且基于FPGA設(shè)計(jì)的數(shù)字濾波器成本低廉(無需更改硬件電路),且可靠性高,重復(fù)性好,在數(shù)字補(bǔ)償濾波器中得到了廣泛的應(yīng)用。
單輸入、單輸出線性定常系統(tǒng)可以用下面差分方程描述[8]
A(d-1)y(k)=B(d-1)u(k)
(1)
如果考慮噪聲,則式(1)可寫為
A(d-1)[y(k)-ey(k)]=B(d-1)[u(k)-eu(k)]
(2)
式(2)簡寫為
A(d-1)y(k)-B(d-1)u(k)=ε(k)
(3)
式中:u(k)為系統(tǒng)輸入數(shù)據(jù),y(k)為輸出數(shù)據(jù), d-1為延遲算子,ε(k)為擬合殘差,有
(4)
(5)
ε(k)=A(d-1)ey(k)-B(d-1)eu(k)
(6)
建模就是根據(jù)壓力傳感器動(dòng)態(tài)標(biāo)定實(shí)驗(yàn)的輸入、輸出序列{[u(k),y(k)]| k=1,2,…,N}確定模型階次n,并對(duì)模型參數(shù)ai,bi,i=0,1,…,n(a0=1)做出估計(jì)。
由于建模時(shí)輸入是假定的理想階躍信號(hào)序列,此時(shí)輸入端噪聲可不予以考慮。如果假定輸出端是零均值的白噪聲,式(6)可變?yōu)?/p>
ε(k)=A(d-1)ey(k)=A(d-1)e(k)
(7)
也即
e(k)=ε(k)/A(d-1)
(8)
式中:1/ A(d-1)可稱為濾波器。則式(3)可變?yōu)锳(z-1)[y(k)/A(z-1)]=B(z-1)[u(k)/A(z-1)]+e(k)
(9)
令
(10)
(11)
則式(3)可寫為
(12)
步驟2 設(shè)迭代第l次時(shí),求得
計(jì)算:
序列,對(duì)下式作最小二乘估計(jì)
(13)
步驟4 令l=l+1,回到步驟2,直到迭代收斂或者達(dá)到迭代次數(shù)為止。當(dāng)?shù)諗繒r(shí),可以得到式(14):
(14)
它將使J=∑e2(k)達(dá)到最小。
傳感器離散傳遞函數(shù)的一般形式為:
(15)
依據(jù)壓力傳感器動(dòng)態(tài)標(biāo)定時(shí)的輸入和輸出數(shù)據(jù)利用上述方法得到的壓力傳感器數(shù)學(xué)模型為
(16)
為了較直觀的檢驗(yàn)所建立模型的好壞,現(xiàn)用相同的輸入信號(hào)序列u(k)激勵(lì)模型G(z-1)得到的響應(yīng)與標(biāo)定實(shí)驗(yàn)時(shí)壓力傳感器對(duì)階躍信號(hào)的響應(yīng)如圖1所示。
圖1 傳感器響應(yīng)曲線與改進(jìn)的最小二乘擬合曲線
由圖1可知,用改進(jìn)的最小二乘算法擬合的數(shù)據(jù)曲線與壓力傳感器標(biāo)定實(shí)驗(yàn)得到的數(shù)據(jù)曲線有很高的擬合度,說明建模算法是可行的,是先進(jìn)的。與此同時(shí),傳感器系統(tǒng)階躍響應(yīng)存在超調(diào)量大,響應(yīng)時(shí)間長等不足,應(yīng)用時(shí)會(huì)產(chǎn)生較大的動(dòng)態(tài)誤差,因此需要改善傳感器的動(dòng)態(tài)性能。
傳感器的動(dòng)態(tài)特性與其傳遞函數(shù)的零極點(diǎn)尤其是極點(diǎn)位置關(guān)系密切[10]。對(duì)傳感器傳遞函數(shù)的零極點(diǎn)進(jìn)行分析,觀察它們對(duì)傳感器動(dòng)態(tài)性能的影響,然后串接一個(gè)補(bǔ)償模塊,將原來不符合要求的零極點(diǎn)消去,配以新的零極點(diǎn),使系統(tǒng)動(dòng)態(tài)特性得以改善,這便是零極點(diǎn)補(bǔ)償方法[11]。對(duì)于只有一對(duì)共軛極點(diǎn)的二階系統(tǒng)傳感器模型可直接應(yīng)用下列公式求解滿足特定要求的極點(diǎn)(高階需要研判各極點(diǎn)對(duì)動(dòng)態(tài)性能影響程度)。
(17)
(18)
式中:α為新配置極點(diǎn)的實(shí)部,β為新配置極點(diǎn)的虛部,T為采樣間隔,現(xiàn)取0.5μs,Trr為所要求響應(yīng)時(shí)間,現(xiàn)取6μs,ξe為等效系統(tǒng)的阻尼比,現(xiàn)取0.95。由式(17)與式(18)求出:
pe1,2=0.881 8±i0.036 3
由公式
(19)
(20)
其中Ge(z)為補(bǔ)償模型,be為系數(shù),p1,p2為傳感器二階模型極點(diǎn)。依據(jù)式(19),式(20)設(shè)計(jì)的補(bǔ)償濾波器為
(21)
傳感器系統(tǒng)串聯(lián)補(bǔ)償系統(tǒng)前后階躍響應(yīng)曲線如圖2所示。
圖2 串聯(lián)補(bǔ)償系統(tǒng)前后傳感器階躍響應(yīng)曲線
圖1和圖2對(duì)比表明,在原傳感器模型后面串聯(lián)一補(bǔ)償環(huán)節(jié)后傳感器的動(dòng)態(tài)性能得到很大程度的改善,也直接表明補(bǔ)償方法是可取的。上述補(bǔ)償器的設(shè)計(jì)方法特別容易在計(jì)算機(jī)上編程實(shí)現(xiàn),尤其在MATLAB上編程實(shí)現(xiàn),這也是選擇上述補(bǔ)償器設(shè)計(jì)方法的一個(gè)重要原因。
在IIR濾波器的FPGA實(shí)現(xiàn)過程中,由于該濾波器是一個(gè)有反饋環(huán)節(jié)的閉環(huán)系統(tǒng),且中間過程存在除法運(yùn)算,所以在運(yùn)算過程中無法做到全精度運(yùn)算[12],即使實(shí)現(xiàn)了全精度運(yùn)算,運(yùn)算過程中需要的寄存器字長是難以接受的,因此在進(jìn)行FPGA實(shí)現(xiàn)之前,有必要確定濾波器系數(shù)字長。在MATLAB命令窗口輸入下列命令
m=max(max(abs(a),abs(b)));
Qm=floor(log2(m/a(1)));
if Qm Qm=Qm+1; end Qm=2^Qm; Qa=round(a/Qm*(2^(n-1)-1)); Qb=round(b/Qm*(2^(n-1)-1)); 其中,a,b,Qa,Qb分別為量化前后濾波器系數(shù),n為帶符號(hào)位的量化字長。 由于即使是常系數(shù)的除法運(yùn)算在FPGA實(shí)現(xiàn)也是十分耗費(fèi)資源的,但當(dāng)除數(shù)是2的整數(shù)冪次方時(shí),可根據(jù)二進(jìn)制的特點(diǎn)直接采用移位的方法近似實(shí)現(xiàn)除法運(yùn)算。而移位運(yùn)算不僅占用的硬件資源少,且運(yùn)算速度快。為此上述方法有意將分母系數(shù)的第1項(xiàng)設(shè)置為2的整數(shù)冪次方形式。上述濾波器系數(shù)量化字長n可依據(jù)不同字長量化后頻率特性與濾波器量化前的頻率特性對(duì)比確定。圖3是濾波器系數(shù)依據(jù)不同字長量化前后頻率特性曲線。 圖3 IIR濾波器系數(shù)量化字長效應(yīng) 由圖3可知,IIR濾波器系數(shù)量化字長小于16 bit時(shí)濾波器的性能會(huì)降低,當(dāng)量化字長大于16 bit時(shí),精度會(huì)隨著量化字長增大而提高,但FPGA消耗的內(nèi)部資源會(huì)隨著量化字長增大而顯著增多,同時(shí)處理速度會(huì)越來越低。綜合精度,資源消耗和處理速度等,現(xiàn)取系數(shù)量化字長為16 bit。 依據(jù)上述補(bǔ)償濾波器量化方法,得到所設(shè)計(jì)濾波器的差分方程為 16 384y(n)=691x(n)-993x(n-1)+688x(n-2)- [-28 134y(n-1)+12 137y(n-2)] (22) 根據(jù)式(22),求取式右邊運(yùn)算結(jié)構(gòu)后,除以16 384即完成一次完整的濾波運(yùn)算。根據(jù)FPGA的特點(diǎn),上式采用向右移14 bit的方法近似實(shí)現(xiàn)除以16 384運(yùn)算,IIR濾波器的實(shí)現(xiàn)結(jié)構(gòu)框圖如圖4所示。 圖4 IIR濾波器實(shí)現(xiàn)結(jié)構(gòu)框圖 從圖4可以看出,對(duì)于零點(diǎn)系統(tǒng)的實(shí)現(xiàn)結(jié)構(gòu)可以看做沒有反饋環(huán)路的FIR濾波器結(jié)構(gòu);系統(tǒng)極點(diǎn)的實(shí)現(xiàn)結(jié)構(gòu),即求取Y信號(hào)的過程也可以看成一個(gè)不帶反饋結(jié)構(gòu)的電路結(jié)構(gòu)。整個(gè)IIR濾波器的閉環(huán)過程只在求取S的減法器和實(shí)現(xiàn)除法運(yùn)算的移位運(yùn)算過程中完成。上述乘法器可以通過調(diào)用通用的乘法器IP核實(shí)現(xiàn)。圖5是基于上述結(jié)構(gòu)在FPGA上設(shè)計(jì)的IIR濾波器軟核RTL原理圖。圖6是在Xilinx公司提供的集成軟件環(huán)境ISE上實(shí)現(xiàn)IIR濾波器功能仿真圖。 圖5 基于FPGA的IIR濾波器軟核RTL級(jí)原理圖 圖6 基于FPGA的IIR濾波器功能仿真圖 為了驗(yàn)證所設(shè)計(jì)的IIR濾波器軟核功能是否滿足設(shè)計(jì)要求,現(xiàn)將部分圖6中輸入和輸出數(shù)據(jù)(分別為藍(lán)色和紅色部分)以及在同樣輸入數(shù)據(jù)條件下利用MATLAB工具得到的仿真輸出數(shù)據(jù)(保留兩位有效數(shù)字)繪制于表1,作一下對(duì)比。 表1 ISim仿真數(shù)據(jù)和MATLAB仿真數(shù)據(jù)對(duì)比 表1通過ISim仿真數(shù)據(jù)與MATLAB仿真數(shù)據(jù)對(duì)比表明,隨著輸入數(shù)據(jù)的增大,ISim仿真數(shù)據(jù)與真值之間的相對(duì)誤差會(huì)減小,即基于FPGA的IIR濾波器輸出精度會(huì)隨著輸入數(shù)據(jù)的增大而提高。由于現(xiàn)場測試時(shí)以FPGA為核心的采集模塊輸出數(shù)據(jù),也即所設(shè)計(jì)IIR濾波器軟核輸入數(shù)據(jù),其大小一般都成百上千,因此所設(shè)計(jì)的IIR濾波器能夠以較高的精度修正壓力傳感器由于動(dòng)態(tài)特性不足產(chǎn)生的動(dòng)態(tài)誤差。 圖7 傳感器第1次動(dòng)標(biāo)修正前后輸出數(shù)據(jù) 為了檢驗(yàn)壓力傳感器動(dòng)態(tài)誤差修正方法的FPGA實(shí)現(xiàn)性能,現(xiàn)將設(shè)計(jì)的IIR濾波器軟核應(yīng)用在以FPGA為控制核心的壓力傳感器標(biāo)定系統(tǒng)中,得到修正前后的部分?jǐn)?shù)據(jù)曲線如圖7、圖8所示。 圖8 傳感器第2次動(dòng)標(biāo)修正前后輸出數(shù)據(jù) 圖7、圖8表明,處理后壓力傳感器階躍響應(yīng)的超調(diào)量得到明顯減小,響應(yīng)時(shí)間得到明顯縮短。即壓力傳感器由于動(dòng)態(tài)特性不足產(chǎn)生的動(dòng)態(tài)誤差得到了很大程度地修正。 本文在以FPGA為控制核心的數(shù)據(jù)采集及存儲(chǔ)系統(tǒng)的基礎(chǔ)上,提出了一種壓力傳感器動(dòng)態(tài)誤差實(shí)時(shí)修正方法的實(shí)現(xiàn)方案。壓力傳感器動(dòng)態(tài)標(biāo)定實(shí)驗(yàn)表明:該方案可以顯著修正由傳感器系統(tǒng)特性引起的動(dòng)態(tài)誤差。同時(shí)該方案具有條理清晰,易于實(shí)現(xiàn),效果明顯等優(yōu)點(diǎn)。綜上,該方案可以應(yīng)用在修正壓力傳感器動(dòng)態(tài)誤差的測試試驗(yàn)中。 [1] 劉清,殷曹國華.模型參考和誤差白化的傳感器動(dòng)態(tài)補(bǔ)償算法[J]. 控制理論與應(yīng)用,2009,26(3):256-260. [2] 吳健,張志杰,王文廉.傳感器動(dòng)態(tài)誤差高速并行修正方法及其FPGA實(shí)現(xiàn)[J]. 傳感技術(shù)學(xué)報(bào),2012,25(1):67-71. [3] 吳建. 傳感器動(dòng)態(tài)補(bǔ)償濾波器及其硬件實(shí)現(xiàn)方式研究[D]. 中北大學(xué),2012. [4] 李悅,鐘新躍.一種傳感器動(dòng)態(tài)誤差實(shí)時(shí)修正方法及其FPGA實(shí)現(xiàn)[J]. 核電子學(xué)與探測技術(shù),2012,32(9):1112-1115. [5] 黃曉敏. 傳感器動(dòng)態(tài)特性補(bǔ)償方法研究及其FPGA實(shí)現(xiàn)[D]. 中北大學(xué),2015. [6] 張海龍,劉一江,馬鐵華,等. 基于DSP和IIR的傳感器動(dòng)態(tài)特性改善單元[J]. 傳感技術(shù)學(xué)報(bào),2013,26(9):1254-1257. [7] 禹東川. 壓力傳感器動(dòng)態(tài)性能分析與動(dòng)態(tài)補(bǔ)償[J]. 中國儀器儀表,2003(7):9-11. [8] 黃俊欽. 測試系統(tǒng)動(dòng)力學(xué)[M]. 北京:國防工業(yè)出版社,2013. [9] 羅海. 基于FPGA的高速IIR數(shù)字濾波器設(shè)計(jì)與實(shí)現(xiàn)[D]. 電子科技大學(xué),2007. [10] 賴富文,張志杰,張建宇,等. 基于動(dòng)態(tài)特性補(bǔ)償?shù)臎_擊波測試數(shù)據(jù)處理方法[J]. 爆炸與沖擊,2015,35(6):872-873. [11] 楊文杰,張志杰,趙晨陽,等. 基于零極點(diǎn)配置理論的壓力傳感器動(dòng)態(tài)特性補(bǔ)償[J]. 科學(xué)技術(shù)與工程,2016,16(2):78-82. [12] 杜勇. 數(shù)字濾波器的MATLAB與FPGA實(shí)現(xiàn)[M]. 北京:電子工業(yè)出版社,2014. 楊文杰(1990-),男,河南駐馬店人,碩士研究生,主要從事動(dòng)態(tài)測試系統(tǒng)搭建,信號(hào)獲取,存儲(chǔ)與處理以及智能儀器開發(fā),1210921680@qq.com; 張志杰(1965-),男,山西五臺(tái)人,現(xiàn)任中北大學(xué)教授、博導(dǎo),儀器科學(xué)與技術(shù)學(xué)科帶頭人之一,主要從事動(dòng)態(tài)測試?yán)碚?、技術(shù)與應(yīng)用,信號(hào)處理理論與技術(shù)的研究,zhangzhijie@nuc.edu.cn。 Realization of Dynamic Error Correction Method of Pressure Sensor by FPGA YANGWenjie,ZHANGZhijie*,WANGDaihua,CHENQingqing (Key Laboratory for Instrumentation Science and Dynamic Measurement,Ministry of Education,North University of China,Taiyuan 030051,China) In order to correct the dynamic error caused by the dynamic characteristics of the pressure sensor in real time,a FPGA implementation scheme based on IIR digital compensation filter was proposed. Firstly,on the basis of the input and output data of the dynamic calibration for pressure sensor,a mathematical model describing the sensor system comprehensively was established by using the improved least squares algorithm,and then the optimal IIR compensator model and parameters were obtained by using the pole-zero configuration method to reconfigure the pole-zero of the model. Secondly,in order to guarantee the compensator performance without distortion or low distortion,the compensator model parameters were quantified by using MATLAB. Finally,the IIR compensator soft core was designed by using the quantized parameters of the IIR compensator model in the data acquisition and storage system with the FPGA as the control core so as to realize the real-time correction of transducer’s dynamic error. The experimental results show that the proposed scheme can correct the dynamic errors of sensors in real time. pressure sensor;dynamic characteristic;dynamic error;IIR filter;FPGA;soft core 2016-08-31 修改日期:2016-11-09 TP274 A 1004-1699(2017)03-0402-05 C:7230 10.3969/j.issn.1004-1699.2017.03.0124 基于FPGA的IIR濾波器軟核設(shè)計(jì)
5 結(jié)論