用單片機(jī)軟件實(shí)現(xiàn)傳感器溫度誤差補(bǔ)償
1 引言
本文引用地址:http://m.butianyuan.cn/article/21004.htm對(duì)高精度傳感器,溫度誤差已成為提高其性能的嚴(yán)重障礙,特別是在環(huán)境溫度變化較大的應(yīng)用場(chǎng)合更是如此。依靠傳感器本身附加一些簡(jiǎn)單的硬件補(bǔ)償措施是很困難的,目前對(duì)于一傳感器測(cè)量系統(tǒng)已大量引入了單片機(jī),實(shí)現(xiàn)自動(dòng)檢測(cè)和控制。因此用單片機(jī)自身的特點(diǎn),利用軟件來(lái)解決傳感器溫度誤差難題是一條有效途徑。
在一單片機(jī)傳感器測(cè)量系統(tǒng)中,要解決傳感器溫度誤差補(bǔ)償問(wèn)題,首先要測(cè)出傳感器點(diǎn)的溫度,該溫度信號(hào)作為多路采樣開(kāi)關(guān)采集信號(hào)的一路送入單片機(jī)。測(cè)溫元件通常是安裝在傳感器內(nèi)靠近敏感元件的地方,用來(lái)測(cè)量傳感器點(diǎn)的環(huán)境溫度,測(cè)溫元件的輸出經(jīng)放大及a/d轉(zhuǎn)換送到單片機(jī),單片機(jī)通過(guò)并行接口接收溫度數(shù)據(jù),并暫存溫度數(shù)據(jù)。信號(hào)采樣結(jié)束,單片機(jī)運(yùn)行溫度誤差補(bǔ)償程序,對(duì)傳感器信號(hào)的溫度誤差進(jìn)行補(bǔ)償。對(duì)多個(gè)傳感器,可用多個(gè)測(cè)溫元件,常用的測(cè)溫元件有半導(dǎo)體熱敏電阻、ad950測(cè)溫管、pn結(jié)二極管等。原理框圖如圖1。
2 建立溫度誤差的數(shù)學(xué)模型溫度變化給傳感器實(shí)際測(cè)量帶來(lái)誤差,表現(xiàn)在傳感器的輸入輸出特性曲線上產(chǎn)生非線性變化。為解決這樣問(wèn)題,必須使問(wèn)題簡(jiǎn)單化,找出它們間的關(guān)系,建立對(duì)應(yīng)的數(shù)學(xué)模型。
傳感器特性曲線y=f(x),如圖2所示。
我們可以把該曲線按一定要求分成若干段,在此設(shè)分成n段,然后把相鄰兩段點(diǎn)之間的曲線用直線近似,這樣可以利用線性方法求出輸入值x所對(duì)應(yīng)的輸出值,這就是線性插值法。設(shè)輸入值在(xi, xi+1)之間,則其對(duì)應(yīng)的輸出值y可由下式求得:從上式可知,只要n取得足夠大就可獲得良好的精度。
若傳感器的輸入和輸出之間的特性曲線的斜率變化很大,采用線性插值法,誤差就很大,這時(shí)可采用二次曲線插值法,即通過(guò)曲線上3個(gè)點(diǎn)a(x0、y0),b(x1、y1),c(x2、y2)做一拋物線,用此曲線代替原來(lái)的曲線,如圖3所示。曲線方程為一元二次方程,一般形式為:
y=k0+k1x+k2x2
式中k0,k1,k2為待定系數(shù),可用曲線y=f(x)的3個(gè)點(diǎn)a,b,c的二元一次方程組求解,這就需要解聯(lián)立方程組,計(jì)算較復(fù)雜,列出的程序也較復(fù)雜,因此可以用另外一種型式:
由此可見(jiàn),利用3個(gè)已知點(diǎn)a,b,c的數(shù)值求出系數(shù)m0,m1,m2后,存放在相應(yīng)的內(nèi)存單元,然后根據(jù)某點(diǎn)的x值代入式(1)即可求出被測(cè)值y。以上是對(duì)傳感器建立溫度誤差的數(shù)學(xué)模型,用此模型可實(shí)現(xiàn)傳感器溫度補(bǔ)償。
3 實(shí)現(xiàn)溫度誤差補(bǔ)償?shù)姆椒?首先給定k個(gè)溫度值(t0,t1,t2,…,tk-1),測(cè)出每個(gè)溫度點(diǎn)上傳感器靜態(tài)特性曲線在u 軸上的截距(u0,u1,…,uk),每個(gè)溫度點(diǎn)上傳感器特性曲線的數(shù)據(jù)要精確,必要時(shí)應(yīng)在恒溫箱內(nèi)進(jìn)行,這需要較大的工作量,如圖4所示。
圖中y為被測(cè)物理量,u為輸出電壓,利用最小二乘法曲線擬合求出截距u的多項(xiàng)式:將b0,b1,b2,…,bk和計(jì)算上式的子程序送入內(nèi)存,溫度值t0,t1,…,tk-1和傳感器對(duì)應(yīng)的輸出電壓值u0,u1,…, uk-1按順序分配方式存入內(nèi)存,構(gòu)成一個(gè)線性表,采集數(shù)據(jù)時(shí),cpu按線性查找對(duì)應(yīng)溫度的電壓值u,并按下式計(jì)算對(duì)應(yīng)的被測(cè)物理量y:
y =(u-u) tgα
式中u是溫度直線在坐標(biāo)上的截距,可用線性插值由輸入的t求得,α是溫度直線與縱坐標(biāo)軸u的夾角。
按圖5流程編制補(bǔ)償程序,并作為子程序與監(jiān)控程序一并使用,以便采集數(shù)據(jù)時(shí)按流程圖自動(dòng)溫度補(bǔ)償。
對(duì)溫度特性曲線斜率變化大的傳感器,一般采用分段線性插值法,在不同溫度t(i=1,2,…,k)下測(cè)出下列數(shù)值:式中: yij—溫度ti時(shí)第j次輸入傳感器的被測(cè)物理量;
uij—溫度ti時(shí)第j次測(cè)得的傳感器輸出電壓。
用擬合法求出各溫度上的傳感器靜態(tài)輸出輸出特性的擬合多項(xiàng)式:
將b0,b1,b2,…,bk和以上多項(xiàng)式的計(jì)算程序?qū)懭雰?nèi)存,數(shù)據(jù)采集過(guò)程按圖6流程圖進(jìn)行溫度補(bǔ)償,即由輸入t和u查找和計(jì)算y值,采用的分段線性插值方法,只要k足夠大,其誤差就足夠小。4 結(jié)語(yǔ)
用單片機(jī)的軟件實(shí)現(xiàn)傳感器溫度誤差補(bǔ)償,是一種簡(jiǎn)便、有效的方法。它可以大大提高傳感器的測(cè)量精度,降低測(cè)量系統(tǒng)電路的復(fù)雜程度,提高可靠性,降低成本。特別是如硅阻、應(yīng)變片、電容式等傳感器受溫度影響大,使用該方法可以提高它們測(cè)量精度。目前單片機(jī)廣泛使用在自動(dòng)檢測(cè)儀表中,使用該方法實(shí)現(xiàn)傳感器溫度誤差補(bǔ)償,是一條行之有效的途徑。
評(píng)論