高精度NTC测温电路设计及其电阻值的计算

描述

什么是 NTC

NTC 是热敏电阻,其电阻值对温度变化敏感,在不同的温度下,可以呈现不同的电阻值。


热敏电阻有两类,一类是负温度系数电阻(NTC),温度增加时,电阻值降低,另一类是正温度系数电阻(PTC),温度增加时,电阻值增加。

热敏电阻的电阻值计算

NTC 的电阻值 R 与温度的关系可以近似表示为:

公式 1,电阻与温度函数关系式。其中 T 是绝对温度,数值为摄氏温度+273.15,单位为 K(开尔文)。R0 一般取温度 25℃即 298.15K 时的电阻值,对应的 T0 取 25℃,即 298.15K。B 为材料常数.不同的村料或者生产工艺都能导致 B 的数值发生变化,甚至在热敏电阻的工作范围内,B 的数值都可能发生变化,而不是严格的常数;

因为 NTC 的电阻与温度呈非线性的关系,而且存着温度的增加,温度随着温度变化的变化率越小。

所以随着温度的增加,NTC 测温的精度变化;所以比较适合于温度变化范围小的使用场景,比如环境温度(约为 -20℃-50℃)或者是水温的检测(0℃-100℃)。

搜索到的一款 NTC,按照温度为 25℃的电阻取值,可有 5KΩ,10 KΩ等不同的规格,而材料系数 B 值固定为 3950。

我们选择 10K 的规格,根据公式 1,可以得到这款 NTC 的电阻与温度的关系为:

公式 2,电阻与温度的函数关系式

通过 excel 表格的公式,在 excel 工作薄的第一列输入温度,第二列输入公式可以得到不同温度下的电阻值,比如 0℃为 33.6 KΩ

采用 excel 计算 AD 值

NTC 测温电路的设计

NTC 测温核心在于具有 ADC 功能的 MCU,电路比较简单,只需要将固定的电压经过另一个高精度的电阻分压接到 NTC 电阻,然后将分压值连接到 MCU 的 ADC 输入口。

NTC 测温电路

R1 为 1%精度的电阻,R2 为 NTC,0.1uF 的电容 C1 除了可以滤除从电源引入或者从电路板感应来的高频干扰信号,另外当 ADC 有多路 AD 输入在转换时,MCU 的 AD 模块需要通过模拟开关切换不同的通道,再进行采样转换,电容 C1 可以在 ADC 切换通道之后,迅速向采样电容充电,从而可以提到转换速度,避免因采样时间太短而导致测量不准确。

R1 上拉的电源应该和 MCU 的 ADC 的参考电源共用一个电源(在一般的设计中,MCU 的供电电源和 ADC 的参考电源共用一个电源)。

这是因为:

输入 ADC 的 AD 值为(假设为 12 位的 ADC):

AD 值计算公式

如果上拉的电源 ADC 的参考电源共用一个电源,可以得到和上位电源无关的一个公式:

AD 值计算公式

所以可以消除电源精度对测试的影响,同时减少了计算的复杂性;

NTC 测温软件的设计

我看到在一个网友的程序设计中,他直接将公式 1 取对数,通过复杂的对数运算和倒数运算得到温度值,这是不合适的,

主要是:

普通的单片机不一定提供这样的数学函数库。

普通的单片机没有浮点数运算,浮点数都是转成整弄运算的,不可避免会有舍入误差。

单片机做对数,倒数的运算,只能是近似算法,而且会耗费大量的运算时间,可能会到几百 ms 级,影响了对其它功能处理的实时性。

公式 1 只是一个近似公式,B 值也并不是一个常数,用这样具体的解析公式计算,没有办法根据实际测量值对计算值进行标定,从而提高测量精度。

我在实际的项目中,采用的是分段线性化的方法,步骤如下:

采用 excel 表格自动生成 C 语言中包含 AD 与温度的二维数组

将测温范围分若干个区间,比如在 0-100 度的范围内,分 100 个区间,每个区间范围为 1℃

计算或者实测每一个区间下限和区间上限的温度值; 比如区间 30℃-31℃,根据公式 1 计算或者实际测试出 30℃以及 31℃的 AD 值。

将这些区间表示为 2 维数组(这个 2 维数组也可以通过实际测试形成);

取出将 AD 转换并多次平均之后数值,编历分段的区间,与这些区间的 AD 上、下限进行比较,判断落在哪一个区间,

根据一次函数的公式进行区间内的插值修正:

测试温度值=区间温度下限+(区间温度上限 - 区间温度下限)/(区间 AD 上限 - 区间 AD 下限)*(AD 测量值 - 区间 AD 下限)

审核编辑 黄昊宇

 

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

全部0条评论

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

×
20
完善资料,
赚取积分