最近使用使用到了NTC电阻,在网上找温度的计算方式,发现资料比较乱,想想,自己写一个得了。通过NTC阻值来计算温度的方式主要有两种,查表法和公式法,本文主要介绍公式法。
实例:
//实际应用
int main(void)
{
unsigned short t;
ntc_typedef ntc;
ntc.B = 3950;//NTC常数,NTC规格书里面有
ntc.T0 = 47;//NTC常温下的阻值
ntc.ad = 2048;//ADC采集的电压值
t = calculate_ntc_temp(&ntc);//实际温度值需要除以100
}
下面是具体函数:
typedef struct
{
unsigned short ad;//ADC通道采集回来的AD值
unsigned short B;//B常数
unsigned char T0;//25摄氏度的阻值(千欧)
}ntc_typedef;
定义一个结构体,这三个参数是必须要的,第一个是ADC NTC对应通道采集回来了的ADC值,第二个是B常数,NTC的规格书上面有,第三个就是标准温度下的NTC阻值,单位是千欧;
unsigned short calculate_ntc_temp(ntc_typedef *ntc)
{
float Temp = 0;
float n_log = 0;
float r;
unsigned short t;
r = (((ntc->T0) * 4096) / (ntc->ad)) - (ntc->T0);
Temp = 298.15 * (ntc->B);
n_log = log(r) - log((ntc->T0));
Temp = Temp / ((ntc->B) + 298.15 * n_log);
Temp = Temp - 273.15;
t = (unsigned short)(Temp * 100);
return t;
}
这个函数返回的温度放大了100倍,精确到小数点后两位。