李新,喬愛民
(蚌埠學院機電系,安徽蚌埠233000)
一般而言,稱重儀表首先接受力敏傳感器的輸出信號,然后對該輸出信號作放大、濾波等處理后進行AD轉換,然后AD轉換值送CPU(MCU)處理,儀表根據CPU處理結果執行相應的功能。對于力敏傳感器,包括絕大多數類型的傳感器在使用過程中一般作為線性傳感器來使用,而傳感器從輸入輸出關系來說實際上都是非線性的,而將非線性的傳感器作為線性來處理自然帶來一定的非線性誤差,而對于一款儀表而言,當設計的硬件電路較為合理時,儀表的系統誤差主要取決于傳感器的誤差。這種將非線性的傳感器按照線性處理的方法帶來的結果便是:在數據采集系統中采集到的數據和實際的被測量之間存在著不一致的現象,不一致現象越嚴重則數據采集系統的誤差就越大,這對于數據采集系統尤其是高精度的數據采集系統是要竭力避免的。
通常情況下,傳感器在使用時將輸入輸出關系近似認為是線性關系,這樣做的優點為:
1)可大大簡化傳感器的理論分析和設計計算;
2)為標定和數據處理帶來很大方便,只要知道傳感器的輸入輸出特性曲線上的兩點(如零點和滿程)就可以確定其他點的輸入輸出對應關系;
3)避免了非線性補償環節,減少了數據采集系統的軟硬件復雜度。
但是,傳感器輸入輸出的實際模型為:

式中:a0——傳感器的零點輸出;a1——傳感器的線性靈敏度;a2…an——傳感器的非線性系數;y——傳感器的輸出。
由式(1)可知,由于傳感器的輸入輸出關系遵循非線性關系,當不論采用何種線性擬合的方式,從原理上來說任何擬合直線都不能真實地反映傳感器的實際輸入輸出關系,在某些場合下,尤其是高精度的數據采集系統,采用的傳感器線性度不高時,采用直線擬合帶來的誤差難以忽略。當數據采集精度要求高時,尋求盡可能反映傳感器的輸入輸出關系曲線即對傳感器進行誤差補償就非常重要。根據傳感器在實際標定時采用的方法(將滿量程等分為若干點進行標定),采用樣條曲線插值是一種較為行之有效的方法。
儀表的硬件系統結構基本上如圖1所示。首先由信號調理模塊對傳感器的輸出信號進行放大、濾波等處理后送AD轉換器進行AD轉換,CPU對AD轉換的結果進行相應的處理后根據處理的結果來控制相應的模塊。通常情況下,在對傳感器的信號進行處理時,如前文所述,傳感器的輸入輸出關系基本上按照線性來處理,而傳感器的輸入輸出關系實際上是非線性關系,如何盡可能降低非線性因素對系統精度的影響,對于高精度的數據采集系統而言,簡單的線性處理是不夠的。一般的稱重儀表內部的硬件結構示意圖如圖1所示。

圖1 儀表內部基本硬件結構Fig.1Digital instruments internal hardware structure
當插值節點很多時,使用高次多項式插值并不能得到好的結果,因而一般采用分段插值法,即將插值區間分成若干個小區間,然后在每個小區間上使用次數較低的多項式進行插值。一般的分段插值法有一個嚴重的缺點,就是會導致插值函數在子區間的端點處不光滑,而樣條曲線插值就不存在這個問題。三次樣條插值由分段三次曲線連接而成,在連接點處有二階連續導數,從而可以保證在連接點處光滑連接。
設函數f(x)在區間[a,b]上給定n+1個插值節點:a=x0<x1<…<xn=b及其在插值節點的值f(x0),f(x1)…f(xn).若函數S(x)滿足:
1)S(x)在每個小區間[xj,xj+1]上是三次多項式,j=0,1…,n-1;
2)S(x)在每個小區間[a,b]上具有連續二階導數;
3)S(xj)=f(xj),j=0,1…n(2)則S(x)為函數f(x)的三次樣條插值函數。
記S″(xj)=Mj,S(xj)=yi,hj=xj+1-xj,由三次樣條插值函數定義知,三次樣條函數的二階導數S″(xj)在每個小區間[xj,xj+1]是一次線性函數,如果已知在小區間兩個端點的值,則S″(x)的在小區間[xj,xj+1]表達式可表示為:

對S″(x)連續兩次積分并利用邊界條件S(xj+1)=yi+1可得:


其中的f[xj,xj+1]是關于節點xj,xj+1的一階差商。對于各個區間內的三次樣條插值函數可以通過采用追趕法對三彎矩方程組求得樣條函數的系數Mj,然后將系數Mj代入公式(4)求得,具體介紹可參看參考文獻[1]。
對儀表進行三次樣條插值誤差補償的方法和步驟為:1)首先將傳感器的滿量程劃分為若干段(一般為等間距劃分),確定插值節點;
2)給傳感器在各個插值節點處施加標準載荷,記錄此時的ADC轉換值和實際顯示值,根據理想的顯示值和實際顯示值求得一偏移量和ADC轉換值求代數和,將此值作為該插值節點的輸入值xj;
3)將各個插值節點處的儀表應該顯示的值(理想顯示值)作為輸出值yj;
4)根據各節點處的xj和yj求得各個區間上的三次樣條插值函數Sj(x);判斷ADC的實時轉換值x所處的具體區間,按照該區間的三次樣條插值函數計算儀表的實際顯示值即實時載荷值;
采用一款已經研制完成的五位半精度的儀表對傳感器的信號進行分析和驗證。
本款儀表采用高精度的24位AD轉換器AD7190對傳感器信號進行數模轉換,MCU采用TI公司的MSP430F149。
AD7190是ADI公司最新推出的具有業內最高精度之一的Σ-Δ型AD轉換器,其非線性誤差最低僅為0.000 5%,峰值轉換速率可達到4.8 kHz,且具有極低的溫漂和轉換噪聲等性能。當內部PGA為1時可以達到高達22.5 bit的無噪聲輸出,實際設計時,選取19位有效位(已經超出5位半顯示精度要求)。同時AD7190內部自帶有零點校準功能和增益校準功能,通過軟件編程可方便地根據實際情況對內部的零點校準寄存器和增益校準寄存器進行操作。
傳感器輸出的差動信號首先經過高精密雙運放OP2177實現倍數為64倍的差動放大,AD7190的內部PGA設為2,這樣可以實現對傳感器輸出信號實現具有極低噪聲的128倍放大,選取19位有效位時可以實現不跳碼的AD轉換字輸出,而這是實現高精度誤差補償非常關鍵的要素。儀表內部具有軟件集成的三次樣條插值非線性補償模塊。實際使用時,只要打開該補償模塊,給傳感器分別施加若干個標準重量,再通過相應的儀表操作便可以實現對傳感器的非線性誤差修正。
MSP430F149是TI公司生產的高性能的基于RISC體系結構的混合信號16位單片機,具有較強的數據處理運算能力,32 kB的FLASH和2 kB的SRAM保證了足夠的代碼空間和數據存儲空間。
儀表內部信號調理模塊結構示意圖如圖2。

圖2 五位半儀表內部的信號調理示意圖Fig.2Signal sonditioning module for one 5 1/2weighing instrument
稱重儀表三次樣條插值非線性補償的具體的工作原理和工作過程見前文所述。
為方便和簡化數據處理和分析過程,選取一量程為9公斤的力敏傳感器,在給傳感器施加載荷前先進行儀表的零點校準和系統校準(即對AD7190進行偏移和增益校準),使得空載時為0,滿程時為90 000。依次對傳感器施加1公斤的標準砝碼(即將傳感器的滿量程等分為9個區間),將實時的ADC轉換器的轉換值直接讀出,得到的一組數據如表1。

表1 用五位半表測得的數據Tab.1The data being get from one 5 1/2weighing instrument
對表1的數據分別采用不補償、分段線性補償(通常的儀表內部的折線功能)、三次樣條插值補償方法進行處理,然后對傳感器施加載荷,由于對儀表采用三次樣條插值和分段線性插值補償后,在插值節點處的誤差為零,所以選取載荷為各個分段區間的中間值,得到的數據如表2所示。

表2 三種處理方法結果Tab.2Results of three kinds of ways
其中的分段線性補償是目前儀表較為流行的一種誤差補償方法,其思想和三次樣條插值誤差補償的思想基本一樣,兩者的差別是分段線性補償在各個分段區間內進行線性計算,而三次樣條插值誤差補償在各個分段區間內進行非線性計算。分段線性補償處理方法相對簡單,對傳感器的非線性誤差有一定的補償作用,但對于高精度的數據采集系統該方法有時難以達到精度要求。
三種處理方法誤差曲線分布如圖3所示。
由表2和圖3可得:

圖3 三種處理方法的誤差分布圖Fig.3Error distribution picture
1)未補償時,該儀表的滿量程非線性誤差為:119/90 000=0.13%FS;其絕對誤差在2 Kg處達到最大值119,在1 Kg處的相對誤差達到最大值0.8%;
2)采用分段線性補償時,該儀表的滿量程非線性誤差為:40/90 000=0.044%FS;其絕對誤差在2.5 Kg處達到最大值40,0.5 Kg處的相對誤差達到最大值0.18%;
3)采用三次樣條插值補償時,該儀表的滿量程非線性誤差為:13/90 000=0.014%;其中絕對誤差在7.5 Kg處達到最大值13,在0.5 Kg處達到相對誤差最大值0.08%;
通過三次樣條插值函數對儀表進行補償可以得到較高的精度,滿量程非線性誤差、滿量程內最大相對誤差和最大誤差都得到很好的改善,即使是傳感器在低端呈現凹形特征和高端呈現凸形特征較為嚴重的情況下依然可以得到較高的精度,相比于分段線性補償,其補償的精度也大為提高。當插值點較少時,三次樣條插值誤差補償的精度要比分段線性插值的誤差要小得多。采用三次樣條插值函數對儀表或其他的數據采集系統的誤差進行補償,除了可以很大程度上減少傳感器非線性對精度的影響,還可以降低信號調理電路和AD轉換器對系統精度的影響。
同時應注意到,對于有較高精度要求的數據采集系統,為獲得較好的三次樣條插值誤差補償效果,高精度的信號調理電路、AD轉換器的穩定性是至關重要的。
另外適當選取插值節點數也非常關鍵,節點數選擇過少,達不到較好的補償效果,節點數過多不但造成計算量加大,還有可能造成在某些分段區間誤差過大,從而達不到很好的補償效果。一般的插值節點數選擇在10~25個左右為宜。
[1]孫志忠,袁慰平,聞震初.數值分析[M].南京:東南大學出版社,2001
[2]曲國福.壓阻式壓力傳感器在線綜合補償[J].傳感器技術,2003,22(8),45-46.QU Guo-fu.On-line comprehensive compensation of piezoresistive pressure sensor[J].Journal of Transducer Technology,2003,22(8):45-46.
[3]樊尚春,張秋利,秦杰.基于樣條曲線插值的壓力傳感器的溫度補償[J].北京航空航天大學學報,2006,32(6),684-686.FAN Shang-Chun,ZHANG Qiu-Li,QIN Jie.Tempetatue compensation of pressure sensor based on the interpolation of splines[J].Journal of Benjing University of Aeronautics and Astronautics,2006,32(6),684-686
[4]于亞婷,杜平安,廖雅琴,等.基于BP神經網絡的電渦流傳感器非線性補償[J].傳感器與微系統,2007,26(10),54-55.YU Ya-ting,DU Ping-an,LIAO Ya-qin,et al.Nolinear compensation for eddy current sensor based on BP neural networks[J].Transducer and Microsystem Technologies,2007,26(10),54-55.
[5]賈民平,張洪亭.測試技術[M].北京:高等教育出版社,2008.
[6]張妤,謝永華,穆麗新,等.基于支持向量機的電容式傳感器溫度補償研究[J].傳感器與微系統,2009,28(6),40-42.ZHANG Yu,XIE Yong-hua,MU Li-xin.Study on temperature compensation for capacitance sensor based on suppout vector machine[J].Transducer and Microsystem Technologies,2009,28(6),40-42.
[7]AD7190 datasheet[EB/OL].[2010-10-20].http://www.analog.com/static/imported-files/data_sheets/AD7190.pdf