NTC温度算法代码实现
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:函数返回的计算出的实际温度