用硅温传感器进行精度测量

文章作者:Simon Bramble

电子行业要求更高的准确性和温度感测是没有例外......

电子行业要求更高的准确度和温度感测也不例外。存在许多温度传感解决方案,每个温度传感解决方案都存在它们的益处和缺点。硅温传感器,虽然是线性的,但从未提供过其他解决方案的准确性。然而,硅温感测的最近进步意味着现在可以通过硅溶液实现高分辨率和精度。

一个新的冰箱

这是2020年3月,英国即将进入锁定。在超市关闭的情况下,世界在食品上储备,未来看起来不确定。然后荆棘家庭中的冰箱停止了工作。随着肯尼罗杰斯歌曲的话说,“你选择了一个很好的时间离开我......”在我脑海中回荡,我们在网上看了一个新的替代品。

几天后,我们的新冰柜到达,前面板上的数字温度显示器,正如荆棘夫人的愿望。推荐的设定为-18°C且在一小时后,设备处于正确的温度并准备接受食物。我对温度读数的准确性持怀疑态度,但只要它冻结食物就不关心。然而,一个问题,工程思想是一种不安的心灵,经过一天的后表面鼠标数字读出来盯着我,我打破了它的自信的声明。我不得不测试这款新增厨房的准确性索赔。

温度传感器

工业应用中使用各种温度传感器,每个温度传感器都具有优点和缺点。自从许多文本详细说明各种温度传感器的操作,我在此处不重复详细信息,但在下面提供摘要。

热电偶

热电偶提供低成本,适度准确的方法来测量非常高的温度。它们依赖于在两个结之间产生的电压,每个电压在1821年被托马斯塞贝克发现的不同温度下保持的不同金属制成的电压。在K型热电偶(由合金色带制成和Alumel制成)的情况下,它输出电压约为41μV/°C,可用于测量超过1000°C的温度。尽管如此,塞贝克效应依赖于温度区别在两个结之间,因此在“热”结测量感兴趣的温度时,必须保持在已知温度的“冷”结。具有讽刺意味的是,在测量温度差的冷结处需要另一个温度传感器,并且诸如AD8494等零件提供完美的解决方案。由于热电偶物理上很小,因此热质量低,因此可以快速响应温度变化。

RTDS.

电阻式温度探测器(rtd)被广泛应用于工业中,用于测量中等温度(<500℃)。这些器件由一种电阻随温度呈正变化的金属元素组成,最常见的是铂。的确,PT-100传感器是工业中使用最广泛的RTD,它的名字来自于铂(PT),在0°C时电阻为100Ω。虽然这些设备不测量一个热电偶的高温,他们是高度线性和他们的读数是可重复的。PT100需要精确的驱动电流,在传感器上产生与温度成比例的精确电压降。PT100连接线的电阻在传感器的电阻测量中造成误差,所以开尔文传感是典型的,导致3线或4线传感器。

热敏电阻

如果需要低成本的解决方案并且温度范围为低电平,则热敏电阻经常足够。这些器件具有高度非线性,具有基于Steinhart Hart方程的特性,屈服于温度的耐抗性降低。热敏电阻的益处是,电阻的变化大,温度变化小,因此尽管其非线性,但是尽管其非线性可以实现高水平的精度。热敏电阻还具有快速热响应。单独的热敏电阻非线性定义很好,因此可以使用诸如的组件来校准它们LTC2986

二极管,无处不在的二极管,但不是(vbe)下降......

最后,为了测试家庭新成员的真实性,我选择了它们直接开箱的硅温传感器,不需要冷的结温补偿或线性化,可用于模拟和数字输出并进行预校准.尽管如此,他们只提供了适度的准确性。虽然表明电子设备的健康状况足够好,但它们从未准确地测量,例如体温,通常需要±0.1°C精度(根据ASTM E1112标准)。随着ADT7422和ADT7320硅温传感器的最近释放,可以分别测量±0.1°C和±0.2°C的分辨率,这已经改变。

硅温度传感器利用晶体管的温度依赖性Vbe,如Ebers Moll方程给出的,近似:

在哪里集成电路是收集器电流,是晶体管的反向饱和电流,问:是电子上的电荷(1.602 x 10-19年库仑),K.是boltzmann的常数(1.38 x 10-23年),T.是绝对的温度。

上述集电极电流的表达式也适用于二极管中的电流;那么为什么每个应用电路都使用晶体管而不是二极管?实际上,二极管中的电流还包括由电子重新组合的电子重新组合的重组电流,当它们通过PN结的耗尽区,这呈现了二极管电流的非线性Vbe和温度。该电流也出现在双极晶体管中,但流入晶体管的底座,所以不会出现在集电极电流中,因此非线性较小。

重新排列以上给出的

与...相比很小集成电路,所以我们可以忽略'1'上面方程中的项。我们现在可以看到Vbe随的对数变化而线性变化集成电路.我们也可以看到它集成电路那么是恒定的Vbe随着温度的线性变化,K.问:也是恒定的。要使恒定的集电极电流施加到晶体管中并测量如何Vbe温度变化。

与晶体管的几何形状有关,并且具有强的温度依赖性。与许多硅装置一样,其值每10°C的温度均匀加倍。虽然电流变化的效果减少了ln的功能我们仍然存在绝对值的问题Vbe从晶体管到晶体管的变化,因此需要校准。因此,实用的硅温传感器使用两个相同的晶体管并强制收集器电流集成电路进入一个和10集成电路到另一个。相同的晶体管和比率精确的电流很容易在集成电路中制造,这就是为什么大多数硅传感器使用这种架构。电流的对数变化引起电流的线性变化Vbe不同的是Vbe然后测量秒。

从上面的等式,对于两个晶体管在同一温度下保持,他们之间的差异Vbe'是由

自从

我们可以看到

通过每个晶体管强制不同的电流并测量差异Vbe,我们已经删除了非线性术语,不同绝对的影响vbe以及与晶体管几何相关的所有其他非线性效应。自从K.问:LN.10都是恒定的,变化Vbe与绝对温度(PTAT)成比例。对于电流的10倍,两个差异Vbe在大约198μV/°C的温度下线性变化。实现这一点的简化电路如图1所示。


图1.测量温度的基本电路。

必须仔细选择图1中的电流。如果电流太高,则在晶体管内的内部电阻损坏结果中的显着自加热和电压下降。如果电流太低,晶体管内的漏电流增加了显着的错误。

还应注意,上述方程相关联系集电极晶体管的电流,而图1显示了常数发射器注入晶体管的电流。晶体管的设计可以使集电极和发射极的电流比率很好地确定(接近统一),因此集电极电流与发射极电流成正比。

这只是故事的开始。为了获得硅温度传感器的±0.1°C精度,需要进行广泛的表征和修剪。

它是一只鸟吗?这是一架飞机吗?

不,这是一个超级温度计。是的,他们确实存在。未替代的硅温传感器需要放入填充有硅油的浴中并用超级温度计测量的精确温度。这些设备可以测量到小数位的准确性。传感器内的保险丝被吹入以调整温度传感器的增益,从而使用等式线性化输出y = mx + c.硅油提供了一个非常均匀的温度,所以许多设备可以在一个单一的周期内校准。

ADT7422的精度为±0.1°C,在25°C至50°C的温度范围内。该温度范围围绕典型的人体温度为38°C,使ADT7422成为精确的重要标志监测。对于工业应用,ADT7320修剪得型具有±0.2°C的精度,但在-10°C至+ 85°C的更宽温度范围内。


图2. ADT7422安装在0.8mm厚的PCB上

然而,硅温度传感器的校准并不是唯一的问题。与极其精确的电压参考一样,模具上的应力会破坏传感器的准确性,PCB的热膨胀,引线框架,塑料成型和暴露的垫都需要考虑在内。焊接过程本身也有问题。焊锡回流过程将零件的温度提高到260°C,导致塑料包装软化,模具的引线框架扭曲,这样当零件冷却,塑料变硬时,机械应力锁定在模具中。模拟设备公司的工程师花费了许多人数月的精密实验,发现0.8mm的PCB厚度是完美的“甜点”,即使在焊接后也能达到±0.1°C的精度。

里面的软件

系统的软件的大部分涉及从ADT7320格式化数据并在LCD上显示它。从ADT7320获取数据是微不足道的。当处理器初始化时,CS和SCLK线都设置为高,并且在转换之间的SCLK线路闲置高。然后将CS线路缩小以启动数据事务。使用SPI,数据在SCLK线的上升沿和下降沿读取到ADT7320。下面的代码详细说明了初始化例程。

要重置串行接口,CS线截取为低电平,截取线路高,SCLK振荡40次。然后将CS线保持高。该时钟40'1位于ADT7320中,重置串行接口。复位SPI总线后,需要至少500us的延迟。

下一个代码块向ADT7320发送命令字节,告诉它是否是读取或写入,并且寄存到地址。线路

数据= 0b00001000;

指示ADT7320写入注册0x01。然后将ADT7320编程以使用该行将数据输出到16位分辨率

data = 0 b10000000;

DOUT行被预先设置为“0”,如果MSB为“1”,则询问数据字节的MSB,并将DOUT行设置为高。将SCLK线抬高,将数据录入ADT7320。

void reset_adt7320(void) /*初始化ADT7320 */ {unsigned char n, data;/*复位串行接口*/ clearbit(PORTA, CS);setbit(门,DOUT);为(n = 40;n > 0;n—){clearbit(PORTA, SCLK);setbit(门,SCLK);} setbit(门,CS);delay_10ms ();/*重置后必须等待>500us */ /*设置为16位模式*/ clearbit(PORTA, CS); data = 0b00001000; /* clear bit 6 (write), reg #001 */ /* send command byte */ for(n=8; n>0; n--) { clearbit(PORTA, SCLK); clearbit(PORTA, DOUT); /* precondition DOUT */ if checkbit(data, (n-1)) { setbit(PORTA, DOUT); } setbit(PORTA, SCLK); /* clock data in on rising SCLK */ } data = 0b10000000; /* continuous conversion, 16 bits */ /* send data byte */ for(n=8; n>0; n--) { clearbit(PORTA, SCLK); clearbit(PORTA, DOUT); /* precondition DOUT */ if checkbit(data, (n-1)) { setbit(PORTA, DOUT); } setbit(PORTA, SCLK); } setbit(PORTA, CS); }

获取温度数据的函数调用如下所示。线路

数据= 0b01010000;

告诉ADT7320读取寄存器2的16位数据。

然后,代码等待ADT7320至少240ms以执行温度转换。然后将16位温度数据延出,然后将CS线设置为高。

Clearbit(Porta,CS);/ *数据=命令字节* / data = 0b01010000;/ *读取模式,寄存器2 * // *读取ADT7320 * / for(n = 8; n> 0; n--){clearbit(porta,sclk);clearbit(门,DOUT);/*前置条件DOUT */ if checkbit(data, (n-1)) {setbit(PORTA, DOUT);} setbit(门,SCLK);delay_150ms();/ *温度转换* / delay_150ms();/ *读取温度数据* / for(n = 16; n> 0; n--){clearbit(porta,sclk);如果校验栏(porta,din){etbit(temp,(n-1)); } setbit(PORTA, SCLK); } setbit(PORTA, CS);

完整的代码集是可用的这里

那么我的香肠是多么寒冷?

ADT7320留在冰箱内约30分钟,看看我们的新购买落户的温度。

图3显示了含冷温度至-18.83°C。


图3.冷冻机的温度-18.83°C

我认为这令人印象深刻地准确,因为食物不需要将食物存放到这种温度精度。然后我在英国的夏季测量了我办公室的温度。22.87°C如图4所示。


图4.我办公室的温度在22.87°C

结论

硅温传感器已经走了很长的路,变得非常精确,使得能够实现生命的迹象,以实现高度的准确性。虽然它们内的技术基于良好的原则,但需要将它们置于次级精度水平的修剪需要大量努力。即使实现了这种精度水平,也可以容易地擦除从校准时间擦除所获得的增长。

- Simon Bramble是Analog Devices的员工应用工程师

发表评论