吳東艷,韓喜春,高旭東
(黑龍江工程學院 電氣與信息工程學院,黑龍江 哈爾濱150050)
溫度測量在工農業(yè)生產、醫(yī)學、環(huán)境、國防和科研等領域廣泛應用,高精度溫度測量一般采用鉑電阻溫度傳感器。由于鉑電阻溫度傳感器具有一定的非線性,使得溫度測量的精度受到限制。研制精度高、造價低、功能強、使用便捷的溫度測量儀一直是人們追求的目標。隨著半導體技術和微處理器技術的發(fā)展,已經有許多模擬與數字混合處理器可以完成此項任務。本設計采用Cypress公司生產的PSOC系列芯片進行高精度鉑電阻溫度測量。PSOC(Programmable System on Chip)作為一款新的嵌入式系統(tǒng)設計平臺,它在原8051核和ARM Cortex-M3核的基礎上,在芯片的PLD實現可配置的固件元件提供給用戶,使設計人員根據項目需求靈活選擇可配置外設與微處理器自動連接。利用PSOC提供的模擬和數字資源,設計者也可以自己定制需要的特殊元件。PSOC集成開發(fā)環(huán)境帶有100個左右的嵌入式設計中常有的外圍器件,能夠滿足大多數項目需求。特別是它提供的高精度模擬和模擬數字混合外設元件,是該器件的主要特色。采用PSOC高精度溫度測量系統(tǒng)結構如圖1所示。只使用PSOC5單芯片,就可以完成30多路溫度測量[1-2](受芯片引腳限制)。
圖1 PSOC溫度測量系統(tǒng)結構
PSOC鉑電阻溫度測量的原理如圖2所示。PSOC原理圖設計非常方便,在工作空間瀏覽器中打開TopDesign.cysch文件,在元件庫中選擇元件放置到畫布,然后進行元件參數配置,需要連線的與其它器件連線,有些器件不需要連線。畫完原理圖后,打開文件*.cydwr進行引腳鎖定(分配引腳)。RTD元件的4個引腳連接到4線制連接的鉑電阻溫度傳感器的接線端子。本設計進行9路溫度檢測(模擬開關序號0~8),其中第10路作為測量基準(模擬開關序號9),校準電阻為100Ω。要測量某一路溫度時,例如序號為2,設置電流型數字到模擬轉換器IDAC電流輸出為0,控制器通過向兩個模擬開關送入9,使模擬多路開關CurrentMux與基準電阻接通,基準電阻兩端的輸出電壓通過模擬開關ADCMUX與可編程增益放大器PGA_1和PGA_2組成的差動放大器相連進行兩倍放大,PGA_3增益設置為3,PGA_4的增益設置為5,這樣總的增益為30。ADC內的PGA增益為1,電壓信號輸入到ADC后,測得基準電阻在零電流時的電壓值。將兩個模擬開關切換到序號為2,測得該路RTD在零電流時的電壓值。再將IDAC設置電流為100μA,分別測量出基準電阻和RTD的對應電壓值。用RTD測得的兩個電壓差值除以基準電阻的兩個電壓差值,就得出在該溫度下RTD的電阻值。把RTD電阻值帶入PSOC系統(tǒng)提供的高階多項式就可以計算出對應的溫度值。PSOC中的RTD是一個虛擬元件,它提供了RTD在PSOC中的配置、高階多項式的系數和溫度計算API函數,它的4個引腳分別與外部真實的4線鉑電阻RTD相連。可編程放大器PGA用于對RTD輸出電壓信號放大,可根據溫度測量范圍在運行時修改放大器增益。圖中的液晶顯示屏LCD元件用于本地顯示測量結果,配置參數選擇缺省值。通用串行接口元件UART經過Tx和Rx引腳連接到外部的RS485芯片用于與上位機進行通信。
圖2 鉑電阻溫度測量固件原理
PSOC的固件元件應用起來很靈活,大多數元件都有一些配置參數,這些參數可以在設計時配置,也可以在程序運行時修改配置,下面介紹幾個元件的配置方法和參數。
RTD的參數配置如圖3所示。設置最低溫度為-60℃,最高溫度為500℃,選擇多項式為4階。
CurrentMux和ADCMUX是同一種類模擬開關器件。它只有兩個參數,模擬通道Channels,取值范圍為0~31,選擇9;開關類型 MuxType,可以取值單端Single或差分Differential,選擇差分。
IDAC配置見圖4。IDAC是8位電流輸出型DAC,IDAC電流極性選擇為正Positive(流出),電流范圍為255μA,速度為高速,數據源為CPU或DMA,選通模式為寄存器寫。
圖4 IDAC的屬性配置
ADC的配置見圖5。PSOC5具有兩個12位SAR和1個8~20位DelSig型ADC。本設計采用DelSig型ADC。這個ADC具有4個可以單獨運行的配置,本設計只使用Config 1。轉換模式選擇多采樣,分辨率選擇20位,轉換率選擇30,輸入模式選擇差分,輸入范圍選擇±1.024V,緩沖放大增益選擇1,參考電壓為1.024V。
圖5 ADC的屬性配置
PGA的配置如圖6所示。PGA的增益可以在1~50之間選擇設置值,功率設置為高功率,參考設置為接地。
圖6 PGA的屬性配置
本設計的鉑電阻RTD[3]為Pt100,采用4線制電阻比較測量法。根據IEC 60751標準,工業(yè)級RTD的測溫范圍一般為-200~850℃:
當T>0時,
當T<0時,
在溫度大于0℃和小于0℃兩個測量范圍內,根據溫度與電阻值的對應關系,利用Matlab或其它數學工具,采用曲線擬合的方法,計算出溫度隨電阻值變化的溫度大于0和小于0兩個多項式。多項式階數越高,計算出的溫度越精確。采用5階多項式,精度可以達到0.002℃,但是需要更多的CPU執(zhí)行周期。如果在全量程-200~850℃范圍內達到0.002℃的精度,采用1個多項式擬合,需要10階以上的多項式,計算量很大。
在一般的4線 RTD測量中,Rt=Vt/It,要求所使用的電流源和ADC具有很低的失調和非線性,這很難做到,所以直接進行測量得不到高精度。采用參考電阻的方法可以克服上述難題[4-5]。參考電阻法(見圖2)使測量誤差只依賴于參考電阻(精度取0.1%或0.01%的電阻)的精度。IDAC產生的恒定電流流過參考電阻(圖2中為R_1)產生參考電壓Vref,通過Rt產生電壓Vt,則RTD電阻值為Rt=Vt/Vref。消除失調誤差采用的是相關雙采樣法(correlated double sampling,CDS),計算電阻的方程為
式中:Rt為測量出的RTD阻值,Vt和Vref為恒定電流時Rt和Rref兩端的電壓,V0為ADC輸入為0時(IDAC=0時)測量的電壓值,Rref為參考電阻。從式(3)可以看出,IDAC產生的失調電流對測量不產生影響。參考電阻的精度決定了Rt的測量精度,選擇合適阻值的高精度參考電阻要根據IDAC設置的電流值、IDAC的等效內阻,Rt在全量程范圍內的阻值變化。電流值選的較大,可能在電阻中產生熱噪聲,使電阻值發(fā)生變化影響測量精度,這里選擇電流值為100μA。參考電阻選擇100Ω,這樣Vref大約為10mV。Rt在整個量程最大值大約350Ω,Vt大約為35mV。每度大約產生40μV電壓變化。ADC的分辨率為20位,基準電壓為1.024V,得出1.024LSB/μV。選 擇 PGA 總 的 增 益 為G=1 024mV/35mV=29,ADC的增益為1,得出每度引起大約40LSB變化,能夠保證誤差在0.025℃以內。
通過以上分析和設置,就可開始進行軟件設計了。PSOC的溫度測量軟件流程如圖7所示。PSOC的突出特點就是軟件設計簡單,根本不需要知道使用的元件的構成,只需要知道一些參數即可通過系統(tǒng)提供的API函數實現對元件的控制。一般的程序只需要編寫兩類函數:中斷函數和main函數。設計好原理圖后,就可以通過編譯在工作空間瀏覽器中生成各個元件的C語言文件和頭文件。如果元件可以產生中斷,在C語言文件中就會產生中斷程序框架,只要在這個中斷子程序框架內的放置代碼提示信息位置輸入你的中斷程序代碼即可[6]。在main函數中根據你的任務流程圖編寫出整個項目的控制源代碼,在代碼中調用了許多系統(tǒng)生成的API函數實現對元件的控制,中斷和一些元件需要運行與元件相關的API函數啟動,例如ADC的啟動函數為 ADC_Start()。
圖7 PSOC的溫度測量流程
RTD(如RTD_3)編譯后生成的 RTD_3.h中包含計算電阻值的多項式的系數和溫度測量上下限的定義如下:
#define RTD_2_Min_Temp -60
#define RTD_2_Max_Temp 500
#define RTD_2_a0 0
#define RTD_2_a1 1.188 836E-09
#define RTD_2_a2 1.639 674E-07
#define RTD_2_a3 0.000 853 651 1
#define RTD_2_a4 2.378 062
#define RTD_2_a5 -246.624 2
#define RTD_2_b0 0
#define RTD_2_b1 3.682 02E-08
#define RTD_2_b2 -1.592 382E-05
#define RTD_2_b3 0.003 534 13
#define RTD_2_b4 2.182 261
#define RTD_2_b5 -241.325 6
其中a,b為多項式系數。RTD_3.c中包含計算溫度值得API函數如下:
float RTD_3_RtoT(float Res)
{
float Temp;
if(Res>100)
{
Temp= ((((RTD_3_a0 * Res+ RTD_3_a1)*Res+ RTD_3_a2)*Res+ RTD_3_a3)*Res+ RTD_3_a4)* Res+ RTD_3_a5;
}
else
{
Temp= ((((RTD_3_b0* Res+ RTD_3_b1)*Res+ RTD_3_b2)*Res+ RTD_3_b3)*Res+ RTD_3_b4)* Res+ RTD_3_b5;
}
return Temp;
}
完成PSOC溫度測量設計后,受實驗條件限制,只在室內用水和0.1℃精度的水銀溫度計在10~70℃溫度范圍進行了測試,實測溫度中小數點后第2位數字為不準確的讀數結果。測試結果如表1所示。在測試范圍內,誤差不超過0.2℃。
通過實例驗證,基于PSOC的RTD測量具有測量精度高,單一核心器件完成整個設計,與其他方案比較具有明顯的優(yōu)勢。在Creator圖形化集成開發(fā)環(huán)境支持下,利用PSOC開發(fā)計量設備,具有集成度高、造價低、開發(fā)周期短和可靠性高等特點。PSOC是嵌入式設計中很有發(fā)展前途的混合信號處理器,值得在工農業(yè)生產、教育和國防科技等領域推廣應用。
表1 溫度測試數據 ℃
[1]Cypress Semiconductor.PSoC Development kit Guide[EB/OL].http://china.cypress.com/?ID=38240@113.Feb,2011.
[2]何賓.可編程片上系統(tǒng)PSoC設計指南[M].北京:化學工業(yè)出版社,2011.
[3]Praveen Sekar.Temperature Measurement with RTDs[EB/OL].http://www.cypress.com/?rID=57546.Feb,2012.
[4]許卓,楊雷,何志偉.AD7715在多通道熱電阻精密測量中的應用[J].電測與儀表,2010,47(12):16-19.
[5]吳茂成.高精度寬范圍恒流源設計[J].電測與儀表,2011,48(1):64-66.
[6]韓喜春,高旭東,張春燕.基于PSOC的通用計數器設計[J].黑龍江工程學院學報:自然科學版,2011,25(3):48-52.