溫度傳感器MAX31820在氣體渦輪流量計(jì)中的應(yīng)用
0 、引言:氣體渦輪流量計(jì)是新一代的智能型速度式流量?jī)x表,具有精度高、重復(fù)性好、量程范圍寬、體積小、結(jié)構(gòu)比較簡(jiǎn)單、運(yùn)動(dòng)部件少等優(yōu)點(diǎn)。圖 1 為氣體渦輪流量計(jì)的傳感器結(jié)構(gòu)圖。由圖可見,當(dāng)氣體通過(guò)管道時(shí),沖擊置于流體中的葉輪,對(duì)葉輪產(chǎn)生驅(qū)動(dòng)力矩,使葉輪克服摩擦力矩和流體阻力矩而旋轉(zhuǎn),在一定的流量范圍內(nèi),葉輪的旋轉(zhuǎn)頻率與氣體流速成正比。由此,氣體流速可通過(guò)測(cè)量葉輪的旋轉(zhuǎn)頻率得到,從而可以計(jì)算得到通過(guò)管道的氣體的體積流量。但是由于氣體是由大量雜亂無(wú)章運(yùn)動(dòng)著的分子組成的,分子間的距離較大,隨著溫度或壓力的變化,分子間距會(huì)發(fā)生變化,其體積與壓力成反比,與溫度成正比。因此,當(dāng)被測(cè)氣體的溫度和壓力發(fā)生變化時(shí),是無(wú)法計(jì)量和比較氣體的體積流量的,需要將其統(tǒng)一轉(zhuǎn)換為標(biāo)準(zhǔn)狀態(tài)下的體積流量。
1、氣體渦輪流量計(jì)的溫度補(bǔ)償:
渦輪流量計(jì)直接測(cè)量的是工作狀態(tài)下的實(shí)際體積流量,標(biāo)準(zhǔn)狀態(tài)和工作狀態(tài)下的體積流量將通過(guò)式(1)進(jìn)行轉(zhuǎn)換。
(1)式中 q Vn、q V——分別為標(biāo)準(zhǔn)狀態(tài)和工作狀態(tài)下的體積流量,m3/h p、T、Z——分別為工作狀態(tài)下壓力
圖 1 渦輪流量計(jì)結(jié)構(gòu)
(Pa),熱力學(xué)溫度(K)和氣體壓縮系數(shù) pn、Tn、Zn——分別為標(biāo)準(zhǔn)狀態(tài)下壓力(Pa),熱力學(xué)溫度(K)和氣體壓縮系數(shù)這里需要指出,由于被測(cè)氣體所處狀態(tài)壓力較低,且溫度大大高于臨界溫度(指氣體轉(zhuǎn)變?yōu)橐簯B(tài)的溫度),因此可以不考慮由于工作狀態(tài)變化而引起的氣體壓縮系數(shù)的變化,按理想氣體計(jì),這時(shí)氣體壓縮系數(shù)取為 1。為了能夠?qū)⒐ぷ鳡顟B(tài)下的實(shí)際體積流量轉(zhuǎn)換為標(biāo)準(zhǔn)狀態(tài)下的體積流量,除了需要測(cè)量工作狀態(tài)下的壓力外還需要測(cè)量工作狀態(tài)下被測(cè)氣體的熱力學(xué)溫度,從而完成氣體禍輪流量計(jì)的壓力補(bǔ)償和溫度補(bǔ)償。
2、溫度補(bǔ)償電路設(shè)計(jì):
2.1、溫度傳感器的選擇:
按照輸出形式分類,溫度傳感器分為模擬量輸出型和數(shù)字量輸出型。數(shù)字量輸出型溫度傳感器集感溫元件、測(cè)量電路、A/D 轉(zhuǎn)換電路于一體,輸出的是溫度對(duì)應(yīng)二進(jìn)制數(shù)值。和模擬量輸出型溫度傳感器相比,數(shù)字量輸出型溫度傳感器測(cè)量電路簡(jiǎn)單、性能穩(wěn)定、可靠性強(qiáng)、抗干擾能力強(qiáng)、成本低。基于數(shù)字量輸出型溫度傳感器的以上優(yōu)點(diǎn),氣體渦輪流量計(jì)選用數(shù)字量輸出型溫度傳感器作為溫度補(bǔ)償用傳感器。由于被測(cè)氣體的溫度低于 100℃,選用MAX31820 即可滿足要求。
MAX31820 是一種環(huán)境溫度傳感器,主要特性如下:
1)MAX31820 采用一根總線進(jìn)行通信。
2)每個(gè) MAX31820 芯片有一個(gè)的 64 位序列號(hào),該序列號(hào)存儲(chǔ)在 ROM 中??稍试S多個(gè)MAX31820 芯片通過(guò)一根數(shù)據(jù)總線與主控制器進(jìn)行數(shù)據(jù)通信,從而使得分布式溫度檢測(cè)應(yīng)用得以簡(jiǎn)化。
3)不需要外部器件。
4)該芯片的電源可由數(shù)據(jù)線本身提供,可節(jié)省外部電源。
5)測(cè)量溫度范圍從 -55℃ +125℃,等效的華氏溫度范圍是 -67。F +257。F。
6)測(cè)溫度在 +10℃ +45℃范圍時(shí),測(cè)量精度為 ±0.5℃。
7)該芯片的核心功能是數(shù)字量輸出。溫度傳感器的分辨率是用戶可配置的,9 位、10 位、11位、12 位,相應(yīng)的溫度增量分別為 0.5℃、0.25℃、0.125℃、0.0625℃。
8)750ms 內(nèi)能夠?qū)囟绒D(zhuǎn)換成 12 位數(shù)字量。
9)用戶可定義的非易失性報(bào)警設(shè)置。
10)告警搜索命令識(shí)別和尋址溫度在編定的極限之外的器件(溫度告警情況)。
2.2、溫度補(bǔ)償電路:
MAX31820 采用單總線和主控制器進(jìn)行通信。 MAX31820 的單線端口是一個(gè)開漏端口,使用時(shí)需要接上拉電阻(大約 5kΩ)。這樣,總線空閑時(shí),保持高電平。該氣體渦輪流量計(jì)的主控制器選用的是型號(hào)為 MSP430F147 的 16 位單片機(jī)。圖 2 為MSP430F147 和 MAX31820 的接口電路。
圖 2 MSP430F147 和 MAX31820 的接口電路
3、 溫度補(bǔ)償?shù)能浖O(shè)計(jì):
MSP430F147 和 MAX31820 通 過(guò) 單 總 線 進(jìn) 行數(shù)據(jù)傳輸,首先要進(jìn)行初始化操作。初始化時(shí)序包含有主控制器 MSP430F147 向從機(jī) MAX31820發(fā) 送 的 復(fù) 位 脈 沖, 之 后 是 MAX31820 返 回 的應(yīng) 答 脈 沖。MAX31820 返 回 的 應(yīng) 答 脈 沖 能 夠 讓MSP430F147 知道 MAX31820 是否已經(jīng)準(zhǔn)備好。
溫度補(bǔ)償程序如下所示。// 變量定義 //char error=0; // MAX31820 初始化錯(cuò)誤標(biāo)志int temperature=0; // 讀取的 MAX 31820 溫度值float temper=0.0; // 轉(zhuǎn)換后的檢測(cè)溫度值char temp_low=0; // 讀取的 MAX 31820 溫度值的低 8 位
char temp_high=0; | // 讀取的 MAX 31820 溫度值 | Delay(60); | |
的高 8 位 | } | ||
// 溫度檢測(cè)函數(shù) // | //MSP430F147 向 MAX31820 寫數(shù)據(jù)函數(shù) // | ||
void gettemp(void) | void write_ max31820 (char n) | ||
{ | {char i; | ||
init_ max31820(); | for(i=0;i<8;i++) | ||
if(error==1) | {P3DIR|=BIT4; | ||
{ | P3OUT&=~BIT4; | ||
init_ max31820(); | _NOP(); | ||
} | _NOP(); | ||
write_ max31820(0xCC); | if((n&0x01)==0x01) | ||
write_ max31820(0x44); | {P3OUT|=BIT4;} | ||
P3DIR|=BIT4; | else {P3OUT&=~BIT4;} | ||
P3OUT|=BIT4; | n=n>>1; | ||
Delay(60000); | Delay(4); | ||
init_ max31820(); | P3OUT|=BIT4; | ||
if(error==1) | _NOP(); | ||
{ | } | ||
init_ max31820(); | } | ||
} | //MSP430F147 讀取 MAX31820 存儲(chǔ)器中溫度值函 | ||
write_ max31820(0xCC); | 數(shù) // | ||
write_ max31820(0xBE);; | char read_max31820(void) | ||
read_ max31820(); | { | ||
temp_low= read_ max31820(); | char i; | ||
temp_high= read_ max31820(); | char temp; | ||
} | for(i=0;i<8;i++) | ||
//MAX31820 初始化函數(shù) // | { | ||
void init_max31820(void) | temp=temp>>1; | ||
{ | P3DIR|=BIT4; | ||
P3DIR|=BIT4; | P3OUT&=~BIT4; | ||
P3OUT&=~BIT4; | _NOP(); | ||
Delay(65); | P3OUT|=BIT4; | ||
P3OUT|=BIT4; | _NOP(); | ||
Delay(8); | _NOP(); | ||
P3DIR&=~BIT4; | _NOP(); | ||
if((P3IN&BIT4)==BIT4) | _NOP(); | ||
{error=1; | _NOP(); | ||
P3DIR|=BIT4; | P3DIR&=~BIT4; | ||
} | if((P3IN&BIT4)==0) | ||
else | {temp=temp&0x7f;} | ||
{error=0; | else | ||
P3DIR|=BIT4; | {temp=temp|0x80;} | ||
P3OUT|=BIT4; | Delay(4); | ||
} | P3DIR|=BIT4; |
// 利用數(shù)據(jù)處理函數(shù) //
void readtemp(void)
{
temperature=temp_high&0x0f; temperature=temperature<<8; temperature=temperature|temp_low; temper=temperature>>4;
}
存放在變量 temper 中的溫度值為工作狀態(tài)下氣體的熱力學(xué)溫度,將其代入式(1),再將用壓力傳感器測(cè)得的工作狀態(tài)下的壓力代入式(1),即可得到標(biāo)準(zhǔn)狀態(tài)下的體積流量。
P3OUT|=BIT4;
}
return temp;
}
// 延時(shí)函數(shù) //
void Delay(unsigned int nValue)
{
while(nValue–) {};
}
4、溫度值的處理:
MAX31820 輸出的溫度數(shù)字量已經(jīng)被校準(zhǔn)成攝氏溫度。溫度數(shù)字量為 16 位,其中包括符號(hào)位,符號(hào)位為 0 表示溫度值為正,符號(hào)位為 1 表示溫度值為負(fù)。如果設(shè)置的是 12 位的分辨率,寄存器中的所有位包含有效數(shù)據(jù)。如果設(shè)置的是 11 位的分辨率,第 0 位是無(wú)定義的。如果設(shè)置的是 10 位的分辨率,第 1 位和第 0 位是無(wú)定義的。如果設(shè)置的是 9 位的分辨率,第 0、1、2 位是無(wú)定義的。
溫度寄存器的格式如表 1、表 2 所示。
表 1 | 高 8 位字節(jié)格式 | ||||||
BIT15 | BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8 |
S | S | S | S | S | 26 | 25 | 24 |
表 2 低 8 位字節(jié)格式 |
5、結(jié)論:
氣體渦輪流量計(jì)采用 MAX31820 檢測(cè)工作狀態(tài)下的氣體溫度,用軟件實(shí)現(xiàn)溫度自動(dòng)補(bǔ)償。試驗(yàn)證明實(shí)驗(yàn)樣機(jī)實(shí)現(xiàn)了系統(tǒng)要求的主要技術(shù)指標(biāo)。