温度传感器MAX31820在气体涡轮流量计中的应用

摘    要:介绍了温度传感器 MAX31820 在气体涡轮流量计温度补偿中的应用。在分析了温度对体积流量的影响之后,详细介绍了温度补偿的方法、MAX31820 的特性、系统硬件和软件的设计方法。

0 、引言:气体涡轮流量计是新一代的智能型速度式流量仪表,具有精度高、重复性好、量程范围宽、体积小、结构比较简单、运动部件少等优点。图 1 为气体涡轮流量计的传感器结构图。由图可见,当气体通过管道时,冲击置于流体中的叶轮,对叶轮产生驱动力矩,使叶轮克服摩擦力矩和流体阻力矩而旋转,在一定的流量范围内,叶轮的旋转频率与气体流速成正比。由此,气体流速可通过测量叶轮的旋转频率得到,从而可以计算得到通过管道的气体的体积流量。但是由于气体是由大量杂乱无章运动着的分子组成的,分子间的距离较大,随着温度或压力的变化,分子间距会发生变化,其体积与压力成反比,与温度成正比。因此,当被测气体的温度和压力发生变化时,是无法计量和比较气体的体积流量的,需要将其统一转换为标准状态下的体积流量。

1、气体涡轮流量计的温度补偿:
  涡轮流量计直接测量的是工作状态下的实际体积流量,标准状态和工作状态下的体积流量将通过式(1)进行转换。
(1)式中    q Vn、q V——分别为标准状态和工作状态下的体积流量,m3/h    p、T、Z——分别为工作状态下压力
图 1  涡轮流量计结构

图 1  涡轮流量计结构
(Pa),热力学温度(K)和气体压缩系数    pn、Tn、Zn——分别为标准状态下压力(Pa),热力学温度(K)和气体压缩系数这里需要指出,由于被测气体所处状态压力较低,且温度大大高于临界温度(指气体转变为液态的温度),因此可以不考虑由于工作状态变化而引起的气体压缩系数的变化,按理想气体计,这时气体压缩系数取为 1。为了能够将工作状态下的实际体积流量转换为标准状态下的体积流量,除了需要测量工作状态下的压力外还需要测量工作状态下被测气体的热力学温度,从而完成气体祸轮流量计的压力补偿和温度补偿。

2、温度补偿电路设计:
2.1、温度传感器的选择:

  按照输出形式分类,温度传感器分为模拟量输出型和数字量输出型。数字量输出型温度传感器集感温元件、测量电路、A/D 转换电路于一体,输出的是温度对应二进制数值。和模拟量输出型温度传感器相比,数字量输出型温度传感器测量电路简单、性能稳定、可靠性强、抗干扰能力强、成本低。基于数字量输出型温度传感器的以上优点,气体涡轮流量计选用数字量输出型温度传感器作为温度补偿用传感器。由于被测气体的温度低于 100℃,选用MAX31820 即可满足要求。
MAX31820 是一种环境温度传感器,主要特性如下:
1)MAX31820 采用一根总线进行通信。
2)每个 MAX31820 芯片有一个的 64 位序列号,该序列号存储在 ROM 中。可允许多个MAX31820 芯片通过一根数据总线与主控制器进行数据通信,从而使得分布式温度检测应用得以简化。
3)不需要外部器件。
4)该芯片的电源可由数据线本身提供,可节省外部电源。
5)测量温度范围从 -55℃ +125℃,等效的华氏温度范围是 -67。F +257。F。
6)测温度在 +10℃ +45℃范围时,测量精度为 ±0.5℃。
7)该芯片的核心功能是数字量输出。温度传感器的分辨率是用户可配置的,9 位、10 位、11位、12 位,相应的温度增量分别为 0.5℃、0.25℃、0.125℃、0.0625℃。
8)750ms 内能够将温度转换成 12 位数字量。
9)用户可定义的非易失性报警设置。
10)告警搜索命令识别和寻址温度在编定的极限之外的器件(温度告警情况)。

2.2、温度补偿电路:
  MAX31820 采用单总线和主控制器进行通信。 MAX31820 的单线端口是一个开漏端口,使用时需要接上拉电阻(大约 5kΩ)。这样,总线空闲时,保持高电平。该气体涡轮流量计的主控制器选用的是型号为 MSP430F147 的 16 位单片机。图 2 为MSP430F147 和 MAX31820 的接口电路。
图 2  MSP430F147 和 MAX31820 的接口电路
图 2  MSP430F147 和 MAX31820 的接口电路

3、 温度补偿的软件设计:
  MSP430F147 和 MAX31820 通 过 单 总 线 进 行数据传输,首先要进行初始化操作。初始化时序包含有主控制器 MSP430F147 向从机 MAX31820发 送 的 复 位 脉 冲, 之 后 是 MAX31820 返 回 的应 答 脉 冲。MAX31820 返 回 的 应 答 脉 冲 能 够 让MSP430F147 知道 MAX31820 是否已经准备好。

  MSP430F147 检 测 到 MAX31820 发 送 的应 答 脉 冲 之 后, 会 向 其 发 送 一 个 ROM 命 令。MAX31820 共有 5 个 ROM 命令,每个命令都是 8位长度。这些命令包括:Search ROM(F0h)、Read ROM(33h)、Match ROM(55h)、Skip ROM(CCh)、Alarm Seach(ECh)。 主 控 制 器 可 以 使 用 Skip ROM(CCh) 这个命令来同时处理总线上的所有设备,而不需要发送出任何 ROM 代码信息。例如,主控制器可以通过先向从机发送跳过 ROM 命令,然后发送一个温度转换命令 [44H] 命令,这样可以使总线上的所有设备同时进行温度转换。
  完成 12 位数字量温度转换需要 750ms。转换后,产生的热数据存储在 2 个字节的温度寄存器中,此温度寄存器位于高速暂存存储器。如果总线上只有一个从机,发送完跳过 ROM 命令之后,跟着发送读取暂存器命令 [BEH],这样就可以将温度值读取出来。在这种情况下,主机读取从机不需要发送设备的 64 位 ROM 代码,节省了时间。

温度补偿程序如下所示。// 变量定义 //char   error=0;         // MAX31820 初始化错误标志int    temperature=0;   // 读取的 MAX 31820 温度值float  temper=0.0;      // 转换后的检测温度值char   temp_low=0;    // 读取的 MAX 31820 温度值的低 8 位

char  temp_high=0; // 读取的 MAX 31820 温度值 Delay(60);
的高 8 位   }
// 温度检测函数 //   //MSP430F147 向 MAX31820 写数据函数 //
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 存储器中温度值函
write_ max31820(0xCC); 数 //
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 初始化函数 // {
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;

// 利用数据处理函数 //
 
void readtemp(void)
 
{
 
temperature=temp_high&0x0f; temperature=temperature<<8; temperature=temperature|temp_low; temper=temperature>>4;
 
}
 
  存放在变量 temper 中的温度值为工作状态下气体的热力学温度,将其代入式(1),再将用压力传感器测得的工作状态下的压力代入式(1),即可得到标准状态下的体积流量。
  P3OUT|=BIT4;
 
}
 
return temp;
 
}
 
// 延时函数 //
 
void  Delay(unsigned int nValue)
 
{
 
while(nValue–) {};
 
}
 
4、温度值的处理:
 
MAX31820 输出的温度数字量已经被校准成摄氏温度。温度数字量为 16 位,其中包括符号位,符号位为 0 表示温度值为正,符号位为 1 表示温度值为负。如果设置的是 12 位的分辨率,寄存器中的所有位包含有效数据。如果设置的是 11 位的分辨率,第 0 位是无定义的。如果设置的是 10 位的分辨率,第 1 位和第 0 位是无定义的。如果设置的是 9 位的分辨率,第 0、1、2 位是无定义的。
 温度寄存器的格式如表 1、表 2 所示。
 

    表 1 高 8 位字节格式    
               
BIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8
               
S S S S S 26 25 24
    表 2 低 8 位字节格式    

5、结论:
  气体涡轮流量计采用 MAX31820 检测工作状态下的气体温度,用软件实现温度自动补偿。试验证明实验样机实现了系统要求的主要技术指标。

相关新闻

返回顶部
0517-8699 6066 欢迎来电咨询
Hello. Add your message here.