NTC温度算法
1.概述
传统的NTC检测温度,需要根据规格书去查表对应温度的电阻值,每更换一种NTC就需要重新移植NTC对应的温度电压表。
对于严格要求温度的精确度的产品建议查表进行
对于可容忍正负1摄氏度的产品建议查用算法进行计算,这样就不需要在更换NTC后进行温度表的重新抄写移植。
2.公式
NTC热敏电阻的计算公式为:
Rt = R EXP(B(1/T1-1/T2))
其中:
T1:单位为开尔文温度,T1=当前摄氏度+273.15
T2:单位为开尔文温度,T2=25+273.15
Rt:即为NTC在T1温度下的电阻值
R:热敏电阻在T2常温下的标称阻值。100K的热敏电阻25℃的值为100K(即R=100K)。此值可以查表NTC规格书
B:是热敏电阻的参数,NTC的规格书会标出
EXP:举个例子EXP(2),即为无理数e的2次方
当前已知NTC电阻值,求此时的温度,将公式进行换算得
T1 =1/(ln(Rt/R)/B+1/T2)
所求摄氏度为
C= T1-273.15
3.编程
C语音需要添加头文件
#include "math.h"
数学中的公式和c语言中有一点区别。
数学中
ln是以e为底数(lne2=2)(ln为自然对数 e=2.7182818284590452353602874713527…)
C语言中
math.h只有两个函数log和log10
其中log代表数学上的ln,函数 log10(x) 以10为底的对数,即 lg(x)。
以其它数为底的对数用换底公式来表示,此NTC温度计算公式只需要用到log这个函数即可。
4.代码示例
#include "math.h"
float BSP_Get_Temperature(float Rntc)
{
float N1,N2,N3,N4;
float BX = 3950;
float T25 = 298.15;
float R25 = 100;
N1 = (log(Rntc)-log(R25))/BX;
N2 = 1/T25 + N1;
N3 = 1/N2;
N4 = N3-273.15;
return N4;
}
其中
Bx:即查询规格书找到的材料参数B
T25 :T25=25+273.15
R25:25摄氏度下对应的NTC电阻值为100千欧,注意此处单位为千欧,因此传入的Rntc单位也要一致为千欧
Rntc:NTC的电阻值,单位为千欧
N4:函数返回的计算出的实际温度