熱電偶和熱電阻溫度變送器是工業(yè)上常用的溫度測(cè)量設(shè)備,對(duì)其在通用性、精確度和成本方面的研究和改進(jìn)具有很大的現(xiàn)實(shí)意義。本文所依托的硬件采用通用型的數(shù)據(jù)接口,基于熱電偶和熱電阻溫度傳感器相應(yīng)的轉(zhuǎn)化為電勢(shì)/電阻和溫度之間的非線性關(guān)系的物理特性,采用通用型的數(shù)據(jù)接口有利于產(chǎn)業(yè)標(biāo)準(zhǔn)化和降低成本。此次算法優(yōu)化是考慮到儀表智能化趨勢(shì),利用牛頓迭代法和Horner算法等提高測(cè)量精度,同時(shí)降低空間復(fù)雜度,節(jié)約存儲(chǔ)空間。本文通過函數(shù)計(jì)算實(shí)現(xiàn)熱電偶、銅電阻和鉑電阻的高精度測(cè)量,程序中涉及的系統(tǒng)常量存儲(chǔ)于智能溫度變送器RAM中,具有很高的可移植性。
1、軟件流程方案
本文方案基于C語言,并且在軟件設(shè)計(jì)上盡量減少其與硬件的關(guān)聯(lián)性,增強(qiáng)可移植性,有利于此類算法的推廣應(yīng)用。在程序執(zhí)行中,處理傳感器采集的數(shù)據(jù)需要調(diào)用大量的常量數(shù)據(jù),以數(shù)組的形式存儲(chǔ),是實(shí)現(xiàn)高精度非線性擬合所必不可少的。
此次智能溫度變送器設(shè)計(jì)相對(duì)于溫度傳感器來說通用型的,首先要在接受到傳感器溫度轉(zhuǎn)換請(qǐng)求之后辨別其類型,然后才能根據(jù)其型號(hào)進(jìn)行數(shù)據(jù)信號(hào)的處理。若傳感器類型為熱電阻,則轉(zhuǎn)入根據(jù)電阻與溫度之間的非線性關(guān)系求溫度的程序中,此時(shí)利用牛頓迭代法對(duì)非線性曲線進(jìn)行分段擬合,進(jìn)而處理采集數(shù)據(jù)求出溫度值并顯示;如傳感器類型為熱電偶,則一般要進(jìn)行冷端溫度補(bǔ)償,冷端電阻根據(jù)溫度反求補(bǔ)償電動(dòng)勢(shì)?;诶涠藴囟认鄬?duì)穩(wěn)定和環(huán)境的可控性,根據(jù)熱電阻所反求的補(bǔ)償電動(dòng)勢(shì)精度在允許范圍內(nèi)。冷端溫度測(cè)定傳感器程序調(diào)用軟件中固有的熱電阻測(cè)溫子程序,降低了通用型溫度變送器的程序復(fù)雜度。
2、熱電阻傳感器算法
本文以銅電阻和鉑電阻為例進(jìn)行分析,如若電阻型號(hào)不一致,只需重新載入?yún)?shù)和電阻分度號(hào),其算法是一致的。首先通過strcmp()函數(shù)確定電阻分度號(hào),示例如下:
Strcmp(category,″pt10″)==0;//category[]是電阻類型數(shù)組。
確定熱電阻傳感器類型之后,根據(jù)不同的溫度區(qū)間賦予數(shù)組para[]不同的數(shù)組參數(shù)并確定其數(shù)組長(zhǎng)度。
牛頓迭代法是最常用的將非線性方程線性化求解的方法之一。在非線性化的擬合中,用牛頓迭代法在算法設(shè)計(jì)中對(duì)熱電阻分段經(jīng)驗(yàn)方程即非線性方程f(t)=0進(jìn)行求解,算式為t1=t0-[f(t0)/f′(t0)]。若滿足|t1-t0|<X,則輸出滿足精度X的根t1;否則將t1賦值給t0,繼續(xù)迭代計(jì)算t1,直到滿足要求的解t1為止。但是考慮到空間復(fù)雜度和時(shí)間復(fù)雜度,一般應(yīng)用中不會(huì)超過兩次迭代。
程序設(shè)計(jì)中利用傳感器熱電阻的相關(guān)標(biāo)準(zhǔn)參數(shù)和分段經(jīng)驗(yàn)方程作為算法應(yīng)用的基礎(chǔ)。算法時(shí)間復(fù)雜度為(3n),n為迭代次數(shù)。算法中程序的空間復(fù)雜度為30Byte。
3、熱電偶冷端補(bǔ)償算法
熱電偶測(cè)溫需要冷端補(bǔ)償,因?yàn)閷犭娕祭涠吮3?℃附近缺乏實(shí)際的可操作性。本算法設(shè)計(jì)通過熱電阻測(cè)溫法確定冷端溫度,然后根據(jù)其非線性特性反求出熱電偶補(bǔ)償電勢(shì)。熱電偶冷端補(bǔ)償電動(dòng)勢(shì)由獨(dú)立子程序來求,參數(shù)為冷端溫度值和冷端電阻類型,冷端溫度值由以上所述的熱電阻傳感器求溫程序得到,冷端電阻類型為預(yù)先設(shè)定的函數(shù)常量。被測(cè)冷端溫度設(shè)定在現(xiàn)實(shí)環(huán)境下的取值范圍為-50~100℃,完全符合現(xiàn)實(shí)情況并留出了足夠的余量。
Horner算法是計(jì)算多項(xiàng)式函數(shù)值的標(biāo)準(zhǔn)化算法,程序設(shè)計(jì)中由冷端溫度值推算出冷端補(bǔ)償電勢(shì)的過程中,使用Horner規(guī)則節(jié)省多項(xiàng)式的計(jì)算量。
4、熱電偶傳感器綜合算法
熱電偶類型傳感器測(cè)溫首先應(yīng)根據(jù)冷端溫度和智能溫度變送器所需要的測(cè)量精度來確定是否需要冷端電勢(shì)補(bǔ)償。若得到需要補(bǔ)償?shù)膮?shù)確認(rèn),則調(diào)用冷端補(bǔ)償程序以冷端溫度值和熱電偶分度號(hào)為參數(shù)反求補(bǔ)償電動(dòng)勢(shì),聯(lián)合熱電偶電動(dòng)勢(shì)參數(shù)獲得補(bǔ)償后的電動(dòng)勢(shì),否則可直接調(diào)用熱電偶電動(dòng)勢(shì)作為形參導(dǎo)入。系統(tǒng)工作順序流程如圖1所示。
圖1 熱電偶傳感器系統(tǒng)流程圖
由于熱電偶傳感器根據(jù)分度號(hào)的不同,其熱電勢(shì)和溫度間的非線性曲線有相當(dāng)大的差異,所以對(duì)不同分度號(hào)的熱電偶傳感器要分別進(jìn)行非線性擬合,其線性化算法是一致的。在函數(shù)文件中應(yīng)導(dǎo)入大量的數(shù)據(jù)常量,可以在頭文件中進(jìn)行聲明,相應(yīng)地,對(duì)其每種分度號(hào)的經(jīng)驗(yàn)標(biāo)準(zhǔn)函數(shù)公式也是程序算法運(yùn)算的基礎(chǔ),必須清晰而準(zhǔn)確。基于某一種特定的分度號(hào)熱電偶傳感器非線性化特性的不同特點(diǎn),為了準(zhǔn)確擬合,需要根據(jù)精確度的要求進(jìn)行分段線性化,以達(dá)到本設(shè)計(jì)所期望的精確度和時(shí)間空間復(fù)雜度。熱電偶測(cè)溫總調(diào)用程序示例如下:
If(compensate==1)
{
Ctemp=resistanceTemp(ccategory,rcvalue);
Cpotential=coldCompensate(ctemp,ccatego-ry);
Value+=cpotential;
}
Temp=(float)couple2Temp(category,value);
Returntemp;
算法亦采用Horner規(guī)則節(jié)省多項(xiàng)式運(yùn)算的計(jì)算量,時(shí)間復(fù)雜度為O(n),其中n為系數(shù)的長(zhǎng)度。系統(tǒng)基于以上算法同時(shí)節(jié)省了存儲(chǔ)空間,在空間復(fù)雜度上系統(tǒng)所占用的空間統(tǒng)計(jì)如表1所示。
表1 空間統(tǒng)計(jì)
輸入信號(hào)類型 |
系數(shù)個(gè)數(shù) |
占用空間/Byte |
R |
11+10+6+5=32 |
256 |
S |
10+10+6+5=31 |
248 |
B |
9+9=18 |
144 |
J |
9+8+6=23 |
184 |
T |
8+7=15 |
120 |
E |
9+10=19 |
152 |
K |
9+10+7=26 |
208 |
N |
10+8+6=24 |
192 |
合計(jì) |
188 |
1504 |
5、結(jié)束語
本文智能溫度變送器方案兼容熱電偶和熱電阻兩種傳感器,顯著提高了其通用性和可移植性。在算法優(yōu)化設(shè)計(jì)中使用了牛頓迭代法和Horner算法等被廣泛應(yīng)用的算法技巧,在原有條件下提高了測(cè)量精度并降低其時(shí)間/空間復(fù)雜度。文件函數(shù)包包含兩個(gè)文件con-vert2Temp.h和convert2Temp.c文件。Con-vert2Temp.h文件為頭文件,聲明了實(shí)現(xiàn)高精度溫度測(cè)量的常量和所需要的子函數(shù)。Convert2Temp.c文件為C語言的源代碼文件,包含了在Covert2Temp.h中聲明的所有函數(shù)的實(shí)現(xiàn)。本算法實(shí)現(xiàn)只是一種途徑,重點(diǎn)在于對(duì)算法的不斷改進(jìn)以及通用性和可移植性不斷探索。
在實(shí)際的智能溫度變送器中,誤差不僅僅來源于數(shù)據(jù)處理線性化擬合所帶來的誤差,接線阻值的影響、電源電壓的影響、電子元器件噪聲的影響等各種誤差因素疊加在一起,綜合表現(xiàn)為系統(tǒng)測(cè)量誤差。所以,在實(shí)際的工業(yè)應(yīng)用中,考慮成本及穩(wěn)定性、反應(yīng)時(shí)間等,以把數(shù)據(jù)處理的線性化誤差降到對(duì)系統(tǒng)整體誤差而言可以忽略的程度為最終標(biāo)準(zhǔn)。
《智能溫度變送器信號(hào)處理軟件算法與軟件設(shè)計(jì)》作者上海理工大學(xué)光電信息與計(jì)算機(jī)工程學(xué)院 歐陽玉東,男,碩士研究生,研究方向:智能儀表