提高DS1620的温度分辨率

描述

DS1620数字温度计和恒温器提供9位温度读数,指示器件温度。该温度以 0.5°C 为增量表示,提供 0.5°C 分辨率。在0°C至+70°C范围内,该器件的精度也高达0.5°C。在-40°C至0°C范围以及+70°C至+85°C范围内,DS1620的精度在1°C以内。 该器件将温度范围进一步扩展至-55°C至-40°C和+85°C至+125°C,精度在2°C以内。

就温度传感器而言,这些精度非常好,但在某些情况下,0.5°C的分辨率是不够的。在绝对温度不如温度趋势那么重要的比例控制系统中,可能需要更高的分辨率。

对DS1620使用一些未记录的测试模式,用户可以在DS1620和一些架空软件上提供0.1°C的分辨率。虽然这不会提高器件的精度,但它可以通过具有更精细的温度分辨率来更好地控制某些系统。

操作测量温度

DS1620通过使用板载专有的温度测量技术来测量温度。温度测量电路的框图如图1所示。

DS1620通过计算低温度系数振荡器在由高温度系数振荡器确定的栅极周期内经过的时钟周期数来测量温度。计数器预设了对应于-55°C的基数。 如果计数器在栅极周期结束前达到零,则温度寄存器(也预设为-55°C值)将递增,表示温度高于-55°C。

同时,计数器被预设为由斜率累加器电路确定的值。需要该电路来补偿振荡器在整个温度范围内的抛物线行为。然后再次计时计数器,直到它达到零。如果门期仍未完成,则重复此过程。

斜率累加器用于补偿振荡器随温度变化的非线性行为,从而产生高分辨率的温度测量值。这是通过更改计数器在温度中每个增量度数所需的计数数来完成的。因此,为了获得所需的分辨率,必须知道计数器的值和给定温度下每摄氏度的计数数(斜率累加器的值)。

在内部,该计算在DS1620内部完成,以提供0.5°C分辨率。注意,DS1620的温度以1/2°C LSB表示,9位格式如下:

振荡器


通过读取温度并从读取值截断0.5°C位(LSB)可以获得更高的分辨率。此值为 TEMP_READ。然后可以读取计数器中留下的值。此值是门期结束后剩余的计数 (COUNT_REMAIN)。通过将斜率累加器的值加载到计数寄存器中,可以读取该值,从而在该温度下产生每摄氏度(COUNT_PER_C)的计数数。然后,用户可以使用以下内容计算实际温度:

振荡器


图1.温度测量电路

使用DS1620获得0.1°C分辨率

以下步骤描述了从DS1620获得0.1°C分辨率所需的过程。如果DS1620尚未处于ONESHOT模式,则发送带有适当写入数据的WRITE CONFIG协议。有关该协议和模式设置的更多信息,请参见DS1620数据资料。

设置ONESHOT和CPU模式的协议:
0C 03(十六进制)

仅设置单脉冲模式的协议:
0C 01(十六进制)

上面列出的第一种协议通常是使用计算机控制DS1620时所需的模式设置。

向零件发出“开始转换”命令(EE 十六进制)。

发出READ CONFIG命令(交流十六进制)从DS1620读取配置寄存器数据。重复此命令,直到寄存器的最高有效位(即 DONE 位)为“1”。这意味着温度转换已完成。使用 C 语言命名法对该条件的逻辑描述是:

(config & 0x80) = = 0x80

发出读取温度命令,如数据手册中所述,该命令为 AA 十六进制。从读取值中截断 1/2 度位,并将其转换为有符号整数。修改后的值TEMP_READ。

发出读取计数器命令,该命令未记录在数据手册中。该协议的工作方式与读取恒温器设置的协议相同。首先,发送协议,即 A0 十六进制。然后从部件中读回一个 9 位值。此值为 COUNT_REMAIN。

发出负载斜率命令,该命令也没有记录在数据手册中。该协议为 41 十六进制,不需要读取或写入数据。此命令将斜率值加载到计数器中。

再次发出读取计数器命令,如上面的步骤 5 中所述。读取的值为 COUNT_PER_C。

使用以下公式计算实际温度,再次使用 C 命名法:

温度=TEMP_READ - 0.25
+ (COUNT_PER_C - COUNT_REMAIN) /
COUNT_PER_C

根据需要重复步骤 2 到 8。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分