高精度NTC测温电路设计及电阻值计算
时间:2022-09-08 14:00:00
什么是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℃电阻值个电阻值KΩ,10 KΩ材料系数B值固定数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切换通道后,快速向采样电容充电,以提高转换速度,避免采样时间过短导致测量不准确。
R上拉电源应和MCU的ADC参考电源共中,MCU供电和ADC参考电源共用一个电源)。
这是因为:
输入ADC的AD(假设为12位)ADC):
AD值计算公式
若上拉电源ADC参考电源共用一个电源,可以得到一个与上无关的公式:
AD值计算公式
因此,可以消除电源精度对测试的影响,降低计算的复杂性;
NTC温度测量软件的设计
在网友的程序设计中,他直接将公式1取对数,通过复杂的对数操作和倒数操作获得温度值,这是不合适的,
主要是:
普通单片机不一定提供这样的数学函数库。
普通单片机没有浮点数运算,浮点数转为整弄运算,难免会有舍入误差。
单片机做对数,倒数操作,只能是近似算法,会花费大量的操作时间,可能会达到几百ms级,影响了对其它功能处理的实时性。
公式1只是一个近似公式,B值不是常数。没有办法根据实际测量值来校准计算值,从而提高测量精度。
在实际项目中,我采用了分段线性化的方法,步骤如下:
采用excelC语言中的表格自动生成AD二维数组的温度
测温范围分为0-100度范围内的100个范围,每个范围分为100个范围℃
计算或测量每个区间下限和区间上限的温度值; 比如区间30℃-31℃,30根据公式1计算或实际测试℃以及31℃的AD值。
将这些区间表示为2维数组(这个2维数组也可以通过实际测试形成);
取出将AD转换和多次平均值后,编历分段的范围,以及这些范围AD比较上下限,判断落在哪个区间,
区间内的插值修正按一次函数公式进行:
测试温度值=区间温度下限 (间隔温度上限-间隔温度下限)/AD上限-区间AD下限)*(AD测量值-区间AD下限)
最后,提供我使用的分段线性化程序: