摘 要: 設(shè)計(jì)了一個(gè)DS18B20溫度傳感器校驗(yàn)平臺(tái)。將Pt100測(cè)得的溫度值作為標(biāo)準(zhǔn)溫度值,校驗(yàn)溫度傳感器是否合格。為了提高Pt100測(cè)得溫度的精準(zhǔn)性,使用格羅布斯準(zhǔn)則和算術(shù)平均值法分別消除粗大誤差和隨機(jī)誤差。以P89LPC935為核心設(shè)計(jì)了校驗(yàn)平臺(tái)的硬件和軟件,并使用Visual C++ 6.0設(shè)計(jì)了上位機(jī)顯示界面。
關(guān)鍵詞: DS18B20;Pt100;溫度傳感器;校驗(yàn)
電冰箱出廠前需要試運(yùn)行幾十分鐘甚至數(shù)小時(shí),同時(shí)檢測(cè)冷藏室、冷凍室、壓縮機(jī)進(jìn)氣口、出氣口和環(huán)境溫度、壓縮機(jī)功率等參數(shù),以判斷電冰箱是否合格。一條電冰箱檢測(cè)線少則使用數(shù)百只溫度傳感器,多則使用數(shù)千只溫度傳感器。為了準(zhǔn)確檢測(cè)溫度,曾經(jīng)采用熱電阻、AD590等模擬式溫度傳感器。由于模擬式溫度傳感器均需要檢測(cè)轉(zhuǎn)換電路與A/D轉(zhuǎn)換器,使得電冰箱檢測(cè)線的制造與維護(hù)成本很高。DS18B20的問(wèn)世給電冰箱檢測(cè)線數(shù)千點(diǎn)溫度檢測(cè)提供了極其方便的途徑。DS18B20直接輸出相應(yīng)溫度的數(shù)字量,無(wú)需轉(zhuǎn)換電路與A/D轉(zhuǎn)換器,使用極其方便,已被電冰箱生產(chǎn)廠家廣泛采用。
DS18B20采用“1-Wire”接口,測(cè)量溫度范圍為-55 ℃~+125 ℃,最高溫度分辨率為0.062 5 ℃,在-10 ℃~+85 ℃范圍內(nèi),精度為±0.5 ℃。溫度值采用12位二進(jìn)制數(shù)表示,存儲(chǔ)在DS18B20的兩個(gè)8 bit的RAM中,其中高5位為符號(hào)位,低11位為溫度值。如果測(cè)得的溫度大于等于0 ℃,高5位為0,將低11位的數(shù)值乘0.062 5即可得到實(shí)際溫度值;如果測(cè)得的溫度低于0 ℃,高5位為1,將低11位取反加1再乘0.062 5即可得到實(shí)際溫度值。
通常電冰箱冷凍室的溫度低于-20 ℃,壓縮機(jī)排氣口溫度可高達(dá)60 ℃左右,為了保證檢測(cè)線上數(shù)千只溫度傳感器測(cè)量偏差不大于±0.5 ℃,必須對(duì)DS18B20在-30 ℃~+60 ℃溫度范圍內(nèi)進(jìn)行校驗(yàn)篩選。為此,本文設(shè)計(jì)了一個(gè)DS18B20溫度傳感器校驗(yàn)平臺(tái)。
1 系統(tǒng)設(shè)計(jì)
校驗(yàn)平臺(tái)由酒精恒溫槽與傳感器校驗(yàn)系統(tǒng)構(gòu)成。酒精恒溫槽模擬不同的被測(cè)溫度。系統(tǒng)以P89LPC935單片機(jī)為核心,Pt100測(cè)溫電路為校驗(yàn)平臺(tái)提供準(zhǔn)確溫度值。DS18B20為待測(cè)溫度傳感器,校驗(yàn)平臺(tái)一次可以檢測(cè)16只傳感器。繼電器接口用來(lái)控制酒精槽制冷、制熱工作,為傳感器模擬-30 ℃~+60 ℃范圍的工作溫度。采用七位數(shù)碼管,顯示標(biāo)準(zhǔn)溫度、待測(cè)傳感器的溫度檢測(cè)值、二者偏差值等數(shù)據(jù)。
上位機(jī)可以通過(guò)串口接收、顯示各個(gè)傳感器的測(cè)量數(shù)據(jù)和校驗(yàn)結(jié)果。通過(guò)按鍵實(shí)現(xiàn)系統(tǒng)的開(kāi)始、停止等功能。
DS18B20是單總線、數(shù)字式溫度傳感器,對(duì)時(shí)序要求比較嚴(yán)格。工作時(shí)序包括初始化時(shí)序、讀時(shí)序和寫(xiě)時(shí)序。常用的基本操作有Skip Rom(跳過(guò)Rom)[CCH]、Convert Temperature(溫度轉(zhuǎn)換)[44H]和Read Scratchpad(讀暫存存儲(chǔ)器)[BEH]。測(cè)得的溫度值存儲(chǔ)在高速暫存RAM的前兩個(gè)字節(jié)中。P89LPC935通過(guò)連續(xù)兩次讀操作,可以獲得溫度值。首先讀取的是低位字節(jié)TL,接著是高位字節(jié)TH[1]。P89LPC935與DS18B20的接口電路如圖1所示。本系統(tǒng)需要一次校驗(yàn)16個(gè)DS18B20,因單片機(jī)引腳有限,故選用16選1模擬開(kāi)關(guān)CD4067。A、B、C、D為通道選擇端,INT為控制端。當(dāng)INT=1時(shí),關(guān)閉所有通道。
2 標(biāo)準(zhǔn)溫度值獲取
標(biāo)準(zhǔn)溫度值是校驗(yàn)的參考溫度,將DS18B20測(cè)得的溫度值和標(biāo)準(zhǔn)值進(jìn)行比較,以決定其是否合格。因此,標(biāo)準(zhǔn)溫度值的獲取至關(guān)重要。Pt100鉑電阻具有精度高、穩(wěn)定性好、性能可靠等特點(diǎn)。在0 ℃~650 ℃范圍內(nèi):Rt=R0(1+At+Bt2);在-200 ℃~0 ℃范圍內(nèi):Rt=R0(1+At+Bt2+C(t-100)t3)。式中,R0=100 Ω,為t=0 ℃時(shí)的電阻值,A=3.968 47×10-3,B=-5.847×10-7,C=-4.22×10-12。
Pt100是電阻式溫度傳感器,溫度變化引起電阻變化。將電阻的變化轉(zhuǎn)換成電壓信號(hào),經(jīng)放大后,再將模擬電壓信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),由單片機(jī)換算成相應(yīng)的溫度。Pt100測(cè)溫電路采用三線制接法,如圖2所示。
LM334為恒流源,外加二極管和電阻,就可以為Pt100提供恒定的電流,調(diào)節(jié)電位器R3即可改變電流大小。當(dāng)溫度改變時(shí),Pt100電阻改變,引起電壓變化。MC1403為基準(zhǔn)電壓源,提供2.5 V精密電壓,經(jīng)電位器分壓后送入運(yùn)放作為調(diào)零信號(hào)。前端測(cè)得電壓值經(jīng)過(guò)運(yùn)放OP07放大,送入A/D轉(zhuǎn)換器,轉(zhuǎn)換成數(shù)字信號(hào)后換算成溫度值,即可以實(shí)現(xiàn)溫度的測(cè)量[2-4]。
在Pt100測(cè)溫過(guò)程中,由于各種原因,測(cè)量結(jié)果和真實(shí)值之間總會(huì)存在一定的誤差,使得測(cè)量結(jié)果不能客觀地反映實(shí)際溫度。根據(jù)測(cè)量誤差的性質(zhì),可以將誤差分為系統(tǒng)誤差、隨機(jī)誤差和粗大誤差。由于Pt100測(cè)得的溫度為標(biāo)準(zhǔn)溫度值,因此,必須將它的誤差減到最小,這就需要選擇合適的誤差分析和消除方法。
為了消除Pt100測(cè)溫電路的系統(tǒng)誤差,必須調(diào)整好電路的零點(diǎn)和增益。零點(diǎn)包括運(yùn)放的零點(diǎn)和溫度的零點(diǎn)。將J_Pt100的1號(hào)腳與B點(diǎn)短接時(shí)調(diào)節(jié)運(yùn)放的調(diào)零電位器,使運(yùn)放的輸出為零;用標(biāo)準(zhǔn)電阻箱替代Pt100,將其阻值打在100 Ω上,調(diào)節(jié)R3,使A點(diǎn)電壓為0.3 V,即恒流源為3 mA,再調(diào)節(jié)R5,使B點(diǎn)電壓也為0.3 V,此時(shí)溫度顯示值為零;再將標(biāo)準(zhǔn)電阻箱打在123.24 Ω上,調(diào)節(jié)電位器R10,使C點(diǎn)電壓為P89LPC935內(nèi)部A/D參考電壓3.3 V左右,溫度顯示值為60 ℃[5]。
隨機(jī)誤差主要是由對(duì)測(cè)量值影響微小但卻互不相關(guān)的大量因素共同造成的,這些因素主要有溫度波動(dòng)、噪聲干擾、電磁場(chǎng)微變、空氣擾動(dòng)等。為減小Pt100測(cè)溫的隨機(jī)誤差,采用算術(shù)平均值作為測(cè)量結(jié)果[6,7]。
將粗大誤差剔除后,重新計(jì)算平均值x、標(biāo)準(zhǔn)差σ、G0、G1和Gn,重復(fù)上述步驟繼續(xù)進(jìn)行判斷,依此類推,直至完全消除粗大誤差[8]。格羅布斯準(zhǔn)則消除粗大誤差軟件流程如圖3所示。
3 實(shí)驗(yàn)結(jié)果
在相同條件下,進(jìn)行15次測(cè)量測(cè)量數(shù)據(jù)如表1所示。選用格羅布斯準(zhǔn)則消除粗大誤差。首先按測(cè)量值大小
通常消除粗大誤差和隨機(jī)誤差,都是采用去極值算術(shù)平均值法。在這組數(shù)據(jù)中,首先,去掉最大值20.55和最小值20.40,再求剩下數(shù)據(jù)的算術(shù)平均值,可得x=20.51。實(shí)驗(yàn)數(shù)據(jù)表明,采用格羅布斯準(zhǔn)則消除粗大誤差,要比去極值法效果更理想,更接近真實(shí)值。
利用Visual C++ 6.0設(shè)計(jì)上位機(jī)顯示界面,用來(lái)顯示標(biāo)準(zhǔn)溫度值、各個(gè)待校驗(yàn)DS18B20的溫度值、與標(biāo)準(zhǔn)溫度的差值以及最終校驗(yàn)結(jié)果[9,10]。
為了保證電冰箱檢測(cè)線數(shù)千只DS18B20溫度傳感器,在-30 ℃~+60 ℃溫度范圍內(nèi),測(cè)量偏差均不大于±0.5 ℃,本文以P89LPC935為核心設(shè)計(jì)了DS18B20溫度傳感器校驗(yàn)平臺(tái)。用Visual C++ 6.0設(shè)計(jì)了上位機(jī)校驗(yàn)結(jié)果顯示界面。采用Pt100熱電阻作為標(biāo)準(zhǔn)溫度傳感器。為了提高Pt100熱電阻的檢測(cè)精度,設(shè)計(jì)了恒流三線制Pt100熱電阻溫度轉(zhuǎn)換電路,采用算術(shù)平均值法、格羅布斯準(zhǔn)則分別減小隨機(jī)誤差和粗大誤差。實(shí)驗(yàn)結(jié)果表明,該校驗(yàn)平臺(tái)設(shè)計(jì)合理,判斷準(zhǔn)確、使用方便。篩選后的傳感器完全符合用戶的要求。
參考文獻(xiàn)
[1] 雷建龍.數(shù)字溫度傳感器DS18B20讀出數(shù)據(jù)錯(cuò)誤分析[J].電子器件,2007,30(6):2183-2185.
[2] 張志勇,辛長(zhǎng)宇,朱玉龍,等.Pt100溫度傳感器非線性的補(bǔ)償方法與電路實(shí)現(xiàn)[J].電子器件,2007,30(6):2189-2191.
[3] 王龍.基于鉑電阻Pt100的高精度溫度測(cè)控系統(tǒng)設(shè)計(jì)[J]. 吉首大學(xué)學(xué)報(bào),2009,30(3):70-73.
[4] ALAN T.Improving the accuracy of temperature measurements[J].Sensor Review,2009,21(3):193-198.
[5] 潘雄,付宗堂,范曉明.一種處理系統(tǒng)誤差的新方法[J].儀器儀表學(xué)報(bào),2007,28(4):630-634.
[6] 費(fèi)業(yè)泰.誤差理論與數(shù)據(jù)處理[M].北京:機(jī)械工業(yè)出版社,2005.
[7] Tao Chongde,Wang Guanglin,Shao Dongxiang.New method on rigidity measurement of precision elastic elements[J].
Journal of Harbin Institute of Technology,1995,12(1):34-36.
[8] 隋文濤,張丹.測(cè)試數(shù)據(jù)中粗大誤差的判定技術(shù)及其軟件實(shí)現(xiàn)[J].電測(cè)及儀表,2006,43(11):61-63.
[9] 龔建偉,熊光明.Visual C++/ Turbo C串口通信編程實(shí)踐[M].北京:電子工業(yè)出版社,2007.
[10] 王中訓(xùn),徐超,王德法.基于VC++ 6.0的多串口通信方法[J].計(jì)算機(jī)應(yīng)用,2008,28(6):254-256.