黃永剛
(中國鐵道科學(xué)研究院 標(biāo)準(zhǔn)計量研究所,北京 100015)
稱重傳感器被稱為電子衡器的心臟部件。隨著科學(xué)技術(shù)的飛速發(fā)展和微處理機(jī)的出現(xiàn),工業(yè)生產(chǎn)過程自動化程度的不斷提高,稱重傳感器已成為過程控制中的一種必需裝置。由稱重傳感器制作的電子衡器也已廣泛地應(yīng)用到各行各業(yè),實(shí)現(xiàn)了對物料快速、準(zhǔn)確地稱量。
電阻應(yīng)變式稱重傳感器由于具有準(zhǔn)確度高、測量范圍廣、壽命長、結(jié)構(gòu)簡單、頻響特性好、能夠在惡劣條件下工作、易于實(shí)現(xiàn)小型化整體化和品種多樣化等優(yōu)點(diǎn),成為應(yīng)用最廣泛的稱重傳感器。
它的一個缺點(diǎn)就是對于大應(yīng)變有較大的非線性,這是由多方面的原因造成的。對于數(shù)字應(yīng)變式稱重傳感器而言,由于集成了彈性元件、信號調(diào)理模塊和數(shù)據(jù)采集卡等部分,稱重傳感器各部分的非線性特性[1-3]合成了整體的非線性特性。過去,通常采用硬件電路對非線性誤差進(jìn)行補(bǔ)償[4]。隨著計算機(jī)技術(shù)的廣泛應(yīng)用,尤其是微型計算機(jī)和嵌入式微處理芯片的迅速發(fā)展,人們開始關(guān)注計算機(jī)處理數(shù)據(jù)的能力,使用軟件進(jìn)行傳感器特性的非線性補(bǔ)償。常用的方法有最小二乘法[5-6],支持向量機(jī)法[7]、神經(jīng)網(wǎng)絡(luò)法[8-9]等,尤以最小二乘法最為簡單實(shí)用。
在此,采用軟件和硬件相結(jié)合的方法校正稱重傳感器的非線性特性。稱重傳感器的輸出電壓經(jīng)過一個以單片機(jī)為核心的非線性校正環(huán)節(jié)。該環(huán)節(jié)以多項(xiàng)式為數(shù)據(jù)處理模型,在計算多項(xiàng)式的值時,采用秦九韶算法,以減少運(yùn)算次數(shù),縮短運(yùn)算時間,節(jié)約單片機(jī)的存儲空間。試驗(yàn)結(jié)果證實(shí)該方法的正確性和有效性。
稱重傳感器在正式使用前必須進(jìn)行靜態(tài)標(biāo)定(校準(zhǔn)),得到該傳感器的輸出信號與載荷的關(guān)系(輸出曲線),以此作為使用過程中的計量依據(jù)。假定,標(biāo)定過程中加載砝碼的質(zhì)量為,稱重傳感器的輸出電壓為u,稱重傳感器輸出電壓對載荷的函數(shù)關(guān)系為
在實(shí)際工作中,對載荷的測量是其逆過程,即通過測量到的電壓推算出載荷質(zhì)量,即
構(gòu)造一個函數(shù)
圖1 測量系統(tǒng)框圖Fig.1 Measurement system block diagram
由數(shù)值分析理論[10]知,任何一個初等函數(shù)均可以用一個適當(dāng)?shù)膎次多項(xiàng)式去充分逼近它,因此式(3)可由n階多項(xiàng)式表示為
式中:a0,a1,…,an為 n 次多項(xiàng)式的系數(shù);ε 為高階無窮小。標(biāo)定點(diǎn)的示值殘差的平方和函數(shù)為
式中:i=0,1,2,…,m;m=標(biāo)定點(diǎn)個數(shù)-1。
根據(jù)最小二乘法原理和多元函數(shù)求極值條件,要使標(biāo)定點(diǎn)殘差的平方和達(dá)到最小值,將函數(shù)s=v(a0,a1,a2,…,an)分別對 a0—an求偏導(dǎo),并令各偏導(dǎo)數(shù)等于零即可
聯(lián)立式(4),式(5)和式(6),整理得到正規(guī)方程組
式(7)可以寫為
則最終得到A的表達(dá)式為
由上述分析可知,用 span{1,x,x2,…,xn}上的多項(xiàng)式擬合,首先需要求解一個n+1的線性方程組。一般地,n值由所要求的精度確定。有時為了提高測量精度,可能需要增大n的取值。而當(dāng)n較大時,正規(guī)方程的系數(shù)矩陣會出現(xiàn)病態(tài)[10],可以采用其它方法求解多項(xiàng)式系數(shù),從而避免正規(guī)方程組的病態(tài)。
QR(正交三角)分解法,將矩陣分解成一個正規(guī)正交矩陣Q與上三角形矩陣R,是目前求一般矩陣全部特征值的最有效并廣泛應(yīng)用的方法[10]。它有現(xiàn)成的Matlab指令可供調(diào)用,簡單快捷,易于實(shí)現(xiàn)。利用QR分解法求解多項(xiàng)式系數(shù)的程序流程如圖2所示。
圖2 利用QR分解法求解多項(xiàng)式系數(shù)的程序流程Fig.2 Program flow chart of solving polynomial coefficients using QR decomposition method
一個計算問題如果能減少運(yùn)算次數(shù),不僅可節(jié)省計算量,還可減少舍人誤差。這是算法設(shè)計的重要原則之一,以多項(xiàng)式求值為例,設(shè)給定n次多項(xiàng)式
求ui處的值f(ui)。若直接計算每一項(xiàng)anun再相加,共需求解
次乘法,n次加法。若采用
可表示為
則bn=f(ui)即為所求。此算法稱為秦九韶算法[10]。依此計算n次多項(xiàng)式f(u)的值,只用n次乘法和n次加法,乘法次數(shù)由 O(n2)降為 O(n),且僅使用 n+2個存儲單元。這是計算多項(xiàng)式值最好的算法。該算法是我國南宋數(shù)學(xué)家秦九韶于1247年提出的,國外稱其為Hernor算法,在1819年給出,比秦九韶算法晚了500多年。
對量程為15000kg的稱重傳感器進(jìn)行加載測試,其加載砝碼質(zhì)量和稱重傳感器的輸出電壓見表1。
表1 標(biāo)定實(shí)驗(yàn)數(shù)據(jù)Tab.1 Calibration experiment data
從理論上分析,稱重傳感器載荷和輸出電壓之間的函數(shù)關(guān)系可進(jìn)行任意次多項(xiàng)式擬合。根據(jù)精度的要求,取 n=5,則式(4)為
根據(jù)表1數(shù)據(jù)及前述非線性修正算法的原理,可求得多項(xiàng)式(12)各系數(shù)a0—a5的值為
從而求得式(12)的表達(dá)式為
化為秦九韶算法的多項(xiàng)式表達(dá)式為
具有非線性校正功能的應(yīng)變式稱重傳感器的關(guān)鍵技術(shù)在于非線性校正環(huán)節(jié)的處理方法,基于最小二乘法進(jìn)行曲線擬合,建立非線性校正擬合多項(xiàng)式(式(13)),化為秦九韶算法的多項(xiàng)式表達(dá)式(式(14))后,利用編程語言將校正過程寫入單片機(jī)中。單片機(jī)與傳感器數(shù)據(jù)采集部分的輸出相連,收集前向環(huán)節(jié)的輸出數(shù)據(jù),并利用儲存的處理方法對數(shù)據(jù)進(jìn)行修正,最終輸出測量系統(tǒng)的示值。
由于應(yīng)用簡單靈活、安全穩(wěn)定、成本低和軟件復(fù)雜程度低等優(yōu)勢,具有更少引腳和存儲的8位MCU長期處于壟斷地位,在未來仍會吸引市場的注意。在智能化控制領(lǐng)域,MCU長期處于8位機(jī)時代,竭盡全力發(fā)展與物理對象相關(guān)的控制功能[11]。在此,非線性校正環(huán)節(jié)以ATMEL89C52單片機(jī)為核心,包含非線性校正環(huán)節(jié)、以數(shù)字應(yīng)變式稱重傳感器為基礎(chǔ)的測試系統(tǒng)的硬件電路框圖如圖3所示。
圖3 測量系統(tǒng)硬件框圖Fig.3 Measurement system hardware block diagram
程序設(shè)計包括主程序、按鍵中斷子程序、通信中斷子程序。其流程如圖4所示。
圖4 主程序流程Fig.4 Main program flow chart
編寫完成的軟件程序,在集成開發(fā)環(huán)境下運(yùn)行成功后,再送入仿真器內(nèi)進(jìn)行仿真調(diào)試。實(shí)現(xiàn)預(yù)期的功能后,用編程器將程序?qū)懭雴纹瑱C(jī)內(nèi)部進(jìn)行獨(dú)立運(yùn)行。
以單片機(jī)或SOC(system on chip)為核心的智能儀器儀表中,普遍采用C語言編程[12]。在Keil平臺也采用C語言進(jìn)行編程,數(shù)據(jù)變量采用float型運(yùn)算,在進(jìn)行仿真調(diào)試的過程中,將表1數(shù)據(jù)代入式(13)和式(14),分別采用常規(guī)算法和秦九韶算法求多項(xiàng)式的值,2種算法的運(yùn)算時間對比分析和秦九韶算法運(yùn)算結(jié)果及誤差見表2。
由表可知,采用秦九韶算法進(jìn)行多項(xiàng)式求值的運(yùn)算時間約縮短至常規(guī)算法的1/2。2種算法的運(yùn)算時間分布如圖5所示。
仿真調(diào)試的編譯結(jié)果還顯示,常規(guī)算法的運(yùn)算語句程序代碼占用的存儲空間為893 B,而秦九韶算法縮減至710 B。
表2 仿真調(diào)試結(jié)果Tab.2 Simulation debugging results
圖5 算法的運(yùn)算時間分布Fig.5 Operation time distribution of the algorithm
經(jīng)過非線性校正處理后,測量系統(tǒng)的示值最大偏差為19.94 kg,滿量程時相對誤差為100%=0.133%,滿足0.2%的測試要求。校正后誤差分布情況如圖6所示。
圖6 誤差分布Fig.6 Error distribution
采用最小二乘法進(jìn)行曲線擬合建立非線性校正擬合多項(xiàng)式,將校正過程存儲于單片機(jī)中,對應(yīng)變式稱重傳感器進(jìn)行非線性校正。試驗(yàn)結(jié)果表明,經(jīng)過非線性校正后,測量結(jié)果的最大絕對誤差為19.94 kg,即最大引用誤差為0.133%,滿足0.2%的測試精度要求。如果遇到標(biāo)定值的示值非線性誤差不太理想等情況,可能需要調(diào)整多項(xiàng)式的次數(shù)或者改變擬合曲線的形式,以確保測量精度滿足實(shí)際需要。
進(jìn)行多項(xiàng)式求值運(yùn)算時,秦九韶算法占用存儲空間小,運(yùn)算速度快,在單字節(jié)8位單片機(jī)中具有較高的應(yīng)用價值。
[1]劉劍平,蔡紅英,呂秀珍.稱重傳感器彈性元件結(jié)構(gòu)參數(shù)對非線性誤差的影響[J].機(jī)械工程師,2005,37(9):94-95.
[2]彭原,倪勇,左建中,等.測力傳感器非線性誤差研究[J].冶金設(shè)備,1995,17(4):6-9.
[3]魏俊波,張士勇.對傳感器非線性誤差的研究[J].大學(xué)物理實(shí)驗(yàn),2005,19(1):16-18.
[4]王瑞玲.電阻應(yīng)變式測力傳感器線性化電路的設(shè)計與分析[J].計量與測試技術(shù),2005,32(1):16-17.
[5]景婧.應(yīng)變式稱重傳感器的非線性校正[J].計算機(jī)應(yīng)用研究,2013,30(1):189-191.
[6]謝煜,楊三序,李曉偉.基于反擬合法的電容稱重傳感器非線性校正[J].儀器儀表學(xué)報,2007,28(5):923-927.
[7]WANG Xiaodong,YE Meiying.Hysteresis and nonlinearity compensation of relative humidity sensor using support vector machines[J].Sensors and Actuators B:Chemical,2008,129(1):274-284.
[8]蔡煜東,姚林聲.傳感器非線性校正的人工神經(jīng)網(wǎng)絡(luò)方法[J].儀器儀表學(xué)報,1994,15(3):299-302.
[9]PATRA J C,ANG E L,DAS A,et al.Auto-compensation of nonlinearinfluence ofenvironmentalparameterson the sensor characteristics using neural networks[J].ISA Trans,2005,44(2):165-176.
[10]李慶揚(yáng),王能超,易大義.數(shù)值分析[M].北京:清華大學(xué)出版社,2008.
[11]單片機(jī)與嵌入式系統(tǒng)應(yīng)用編輯部.8位單片機(jī)是否將被32位單片機(jī)替代[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015,15(1):1-2.
[12]吳志祥,周祥才,黃亮,等.多項(xiàng)式直接擬合在鉑電阻高精度測溫中的研究[J].自動化與儀表,2014,34(2):57-60.