三次樣條插值在稱重儀表誤差補償中的應(yīng)用
摘要:介紹了采用三次樣條曲線插值方法對稱重儀表的非線性誤差進行修正的方法,該修正方法對于線性誤差較大的傳感器有很好的補償效果,在某些測量精度較高的場合采用三次樣條曲線插值可以獲得比流行的多段折線線性補償方法更高的精度。通過對一款5位半儀表采用三種誤差處理方法比較,驗證了三次樣條曲線插值誤差補償方法對傳感器誤差的補償效果。該方法對于其他的數(shù)據(jù)采集系統(tǒng)精度提升有一定的借鑒意義。
關(guān)鍵詞:三次樣條插值;力敏傳感器;非線性誤差;誤差補償
一般而言,稱重儀表首先接受力敏傳感器的輸出信號,然后對該輸出信號作放大、濾波等處理后進行AD轉(zhuǎn)換,然后AD轉(zhuǎn)換值送CPU(MCU)處理,儀表根據(jù)CPU處理結(jié)果執(zhí)行相應(yīng)的功能。對于力敏傳感器,包括絕大多數(shù)類型的傳感器在使用過程中一般作為線性傳感器來使用,而傳感器從輸入輸出關(guān)系來說實際上都是非線性的,而將非線性的傳感器作為線性來處理自然帶來一定的非線性誤差,而對于一款儀表而言,當設(shè)計的硬件電路較為合理時,儀表的系統(tǒng)誤差主要取決于傳感器的誤差。這種將非線性的傳感器按照線性處理的方法帶來的結(jié)果便是:在數(shù)據(jù)采集系統(tǒng)中采集到的數(shù)據(jù)和實際的被測量之間存在著不一致的現(xiàn)象,不一致現(xiàn)象越嚴重則數(shù)據(jù)采集系統(tǒng)的誤差就越大,這對于數(shù)據(jù)采集系統(tǒng)尤其是高精度的數(shù)據(jù)采集系統(tǒng)是要竭力避免的。
1 傳感器輸入輸出模型
通常情況下,傳感器在使用時將輸入輸出關(guān)系近似認為是線性關(guān)系,這樣做的優(yōu)點為:
1)可大大簡化傳感器的理論分析和設(shè)計計算;
2)為標定和數(shù)據(jù)處理帶來很大方便,只要知道傳感器的輸入輸出特性曲線上的兩點(如零點和滿程)就可以確定其他點的輸入輸出對應(yīng)關(guān)系;
3)避免了非線性補償環(huán)節(jié),減少了數(shù)據(jù)采集系統(tǒng)的軟硬件復(fù)雜度。
但是,傳感器輸入輸出的實際模型為:
式中:a0——傳感器的零點輸出;a1——傳感器的線性靈敏度;a2…an——傳感器的非線性系數(shù);y——傳感器的輸出。
由式(1)可知,由于傳感器的輸入輸出關(guān)系遵循非線性關(guān)系,當不論采用何種線性擬合的方式,從原理上來說任何擬合直線都不能真實地反映傳感器的實際輸入輸出關(guān)系,在某些場合下,尤其是高精度的數(shù)據(jù)采集系統(tǒng),采用的傳感器線性度不高時,采用直線擬合帶來的誤差難以忽略。當數(shù)據(jù)采集精度要求高時,尋求盡可能反映傳感器的輸入輸出關(guān)系曲線即對傳感器進行誤差補償就非常重要。根據(jù)傳感器在實際標定時采用的方法(將滿量程等分為若干點進行標定),采用樣條曲線插值是一種較為行之有效的方法。
2 稱重儀表的基本系統(tǒng)結(jié)構(gòu)
儀表的硬件系統(tǒng)結(jié)構(gòu)基本上如圖1所示。首先由信號調(diào)理模塊對傳感器的輸出信號進行放大、濾波等處理后送AD轉(zhuǎn)換器進行AD轉(zhuǎn)換,CPU對AD轉(zhuǎn)換的結(jié)果進行相應(yīng)的處理后根據(jù)處理的結(jié)果來控制相應(yīng)的模塊。通常情況下,在對傳感器的信號進行處理時,如前文所述,傳感器的輸入輸出關(guān)系基本上按照線性來處理,而傳感器的輸入輸出關(guān)系實際上是非線性關(guān)系,如何盡可能降低非線性因素對系統(tǒng)精度的影響,對于高精度的數(shù)據(jù)采集系統(tǒng)而言,簡單的線性處理是不夠的。一般的稱重儀表內(nèi)部的硬件結(jié)構(gòu)示意圖如圖1所示。
3 樣條曲線插位方法
3.1 三次樣條插值函數(shù)
當插值節(jié)點很多時,使用高次多項式插值并不能得到好的結(jié)果,因而一般采用分段插值法,即將插值區(qū)間分成若干個小區(qū)間,然后在每個小區(qū)間上使用次數(shù)較低的多項式進行插值。一般的分段插值法有一個嚴重的缺點,就是會導(dǎo)致插值函數(shù)在子區(qū)間的端點處不光滑,而樣條曲線插值就不存在這個問題。三次樣條插值由分段三次曲線連接而成,在連接點處有二階連續(xù)導(dǎo)數(shù),從而可以保證在連接點處光滑連接。
設(shè)函數(shù)f(x)在區(qū)間[a,b]上給定n+1個插值節(jié)點:a=x0<x1<…<xn=b及其在插值節(jié)點的值f(x0),f(x1)…f(xn).若函數(shù)S(x)滿足:
1)S(x)在每個小區(qū)間[xj,xj+1]上是三次多項式j(luò)=0,1…,n-1;
2)S(x)在每個小區(qū)間[a,b]上具有連續(xù)二階導(dǎo)數(shù);
3)S(xj)=f(xj),j=0,1…n(2)則S(x)為函數(shù)f(x)的三次樣條插值函數(shù)。
3.2 三次樣條插值函數(shù)求法
記S"(xj)=Mj,S(xj)=yi,hj=xj+1-xj,由三次樣條插值函數(shù)定義知,三次樣條函數(shù)的二階導(dǎo)數(shù)S"(xj)在每個小區(qū)間[xj,xj+1]是一次線性函數(shù),如果已知在小區(qū)間兩個端點的值,則S"(x)的在小區(qū)間[xj,xj+1]表達式可表示為:
其中的f[xj,xj+1]是關(guān)于節(jié)點xj,xj+1的一階差商。對于各個區(qū)間內(nèi)的三次樣條插值函數(shù)可以通過采用追趕法對三彎矩方程組求得樣條函數(shù)的系數(shù)Mj,然后將系數(shù)Mj代入公式(4)求得,具體介紹可參看參考文獻。
4 稱重儀表的三次樣條插值誤差補償
4.1 基于三次樣條插值的誤差補償方法
對儀表進行三次樣條插值誤差補償?shù)姆椒ê筒襟E為:
1)首先將傳感器的滿量程劃分為若干段(一般為等間距劃分),確定插值節(jié)點;
2)給傳感器在各個插值節(jié)點處施加標準載荷,記錄此時的ADC轉(zhuǎn)換值和實際顯示值,根據(jù)理想的顯示值和實際顯示值求得一偏移量和ADC轉(zhuǎn)換值求代數(shù)和,將此值作為該插值節(jié)點的輸入值xj;
3)將各個插值節(jié)點處的儀表應(yīng)該顯示的值(理想顯示值)作為輸出值yj;
4)根據(jù)各節(jié)點處的xj和yj求得各個區(qū)間上的三次樣條插值函數(shù)Sj(x);判斷ADC的實時轉(zhuǎn)換值x所處的具體區(qū)間,按照該區(qū)間的三次樣條插值函數(shù)計算儀表的實際顯示值即實時載荷值;
4. 2 實驗數(shù)據(jù)處理和分析
采用一款已經(jīng)研制完成的五位半精度的儀表對傳感器的信號進行分析和驗證。
本款儀表采用高精度的24位AD轉(zhuǎn)換器AD7190對傳感器信號進行數(shù)模轉(zhuǎn)換,MCU采用TI公司的MSP430F149。
AD7190是ADI公司最新推出的具有業(yè)內(nèi)最高精度之一的∑—△型AD轉(zhuǎn)換器,其非線性誤差最低僅為0.000 5%,峰值轉(zhuǎn)換速率可達到4.8 kHz,且具有極低的溫漂和轉(zhuǎn)換噪聲等性能。當內(nèi)部PGA為1時可以達到高達22.5bit的無噪聲輸出,實際設(shè)計時,選取19位有效位(已經(jīng)超出5位半顯示精度要求)。同時AD7190內(nèi)部自帶有零點校準功能和增益校準功能,通過軟件編程可方便地根據(jù)實際情況對內(nèi)部的零點校準寄存器和增益校準寄存器進行操作。
傳感器輸出的差動信號首先經(jīng)過高精密雙運放OP2177實現(xiàn)倍數(shù)為64倍的差動放大,AD7190的內(nèi)部PGA設(shè)為2,這樣可以實現(xiàn)對傳感器輸出信號實現(xiàn)具有極低噪聲的128倍放大,選取19位有效位時可以實現(xiàn)不跳碼的AD轉(zhuǎn)換字輸出,而這是實現(xiàn)高精度誤差補償非常關(guān)鍵的要素。儀表內(nèi)部具有軟件集成的三次樣條插值非線性補償模塊。實際使用時,只要打開該補償模塊,給傳感器分別施加若干個標準重量,再通過相應(yīng)的儀表操作便可以實現(xiàn)對傳感器的非線性誤差修正。
MSP430F149是TI公司生產(chǎn)的高性能的基于RISC體系結(jié)構(gòu)的混合信號16位單片機,具有較強的數(shù)據(jù)處理運算能力,32 kB的FLASH和2 kB的SRAM保證了足夠的代碼空間和數(shù)據(jù)存儲空間。
儀表內(nèi)部信號調(diào)理模塊結(jié)構(gòu)示意圖如圖2。
稱重儀表三次樣條插值非線性補償?shù)木唧w的工作原理和工作過程見前文所述。
為方便和簡化數(shù)據(jù)處理和分析過程,選取一量程為9公斤的力敏傳感器,在給傳感器施加載荷前先進行儀表的零點校準和系統(tǒng)校準(即對AD7190進行偏移和增益校準),使得空載時為0,滿程時為90 000。依次對傳感器施加1公斤的標準砝碼(即將傳感器的滿量程等分為9個區(qū)間),將實時的ADC轉(zhuǎn)換器的轉(zhuǎn)換值直接讀出,得到的一組數(shù)據(jù)如表1。
對表1的數(shù)據(jù)分別采用不補償、分段線性補償(通常的儀表內(nèi)部的折線功能)、三次樣條插值補償方法進行處理,然后對傳感器施加載荷,由于對儀表采用三次樣條插值和分段線性插值補償后,在插值節(jié)點處的誤差為零,所以選取載荷為各個分段區(qū)間的中間值,得到的數(shù)據(jù)如表2所示。
其中的分段線性補償是目前儀表較為流行的一種誤差補償方法,其思想和三次樣條插值誤差補償?shù)乃枷牖疽粯?,兩者的差別是分段線性補償在各個分段區(qū)間內(nèi)進行線性計算,而三次樣條插值誤差補償在各個分段區(qū)間內(nèi)進行非線性計算。分段線性補償處理方法相對簡單,對傳感器的非線性誤差有一定的補償作用,但對于高精度的數(shù)據(jù)采集系統(tǒng)該方法有時難以達到精度要求。
三種處理方法誤差曲線分布如圖3所示。
由表2和圖3可得:
1)未補償時,該儀表的滿量程非線性誤差為:119/90000=0.13%FS;其絕對誤差在2 Kg處達到最大值119,在1 Kg處的相對誤差達剄最大值0.8%;
2)采用分段線性補償時,該儀表的滿量程非線性誤差為:40/90000=0.044%FS;其絕對誤差在2.5 Kg處達到最大值40,0.5 Kg處的相對誤差達到最大值0.18%;
3)采用三次樣條插值補償時,該儀表的滿量程非線性誤差為:13/90000=0.014%;其中絕對誤差在7.5 Kg處達到最大值13,在0.5 Kg處達到相對誤差最大值0.08%;
5 結(jié)論
通過三次祥條插值函數(shù)對儀表進行補償可以得到較高的精度,滿量程非線性誤差、滿量程內(nèi)最大相對誤差和最大誤差都得到很好的改善,即使是傳感器在低端呈現(xiàn)凹形特征和高端呈現(xiàn)凸形特征較為嚴重的情況下依然可以得到較高的精度,相比于分段線性補償,其補償?shù)木纫泊鬄樘岣摺.敳逯迭c較少時,三次樣條插值誤差補償?shù)木纫确侄尉€性插值的誤差要小得多。采用三次樣條插值函效對儀表或其他的數(shù)據(jù)采集系統(tǒng)的誤差進行補償,除了可似很大程度上減少傳感器非線性對精度的影響,還可以降低信號調(diào)理電路和AD轉(zhuǎn)換器對系統(tǒng)精度的影響。
同時應(yīng)注意到,對于有較高精度要求的數(shù)據(jù)采集系統(tǒng),為獲得較好的三次樣條插值誤差補償效果,高精度的信號調(diào)理電路、AD轉(zhuǎn)換器的穩(wěn)定性是至關(guān)重要的。
另外適當選取插值節(jié)點數(shù)也非常關(guān)鍵,節(jié)點數(shù)選擇過少,達不到較好的補償效果,節(jié)點數(shù)過多不但造成計算量加大,還有可能造成在某些分段區(qū)間誤差過大,從而達不到很好的補償效果。一般的插值節(jié)點數(shù)選擇在10~25個左右為宜。