前言
之前计算NTC的AD值算得很麻烦,因为51内核的单片机不支持除法运算,更别说浮点运算了。
EXCEL自动算出参数就显得很方便了。
有纰漏请指出,转载请说明。
学习交流请发邮件 1280253714@qq.com
理论基础
参考这篇文章NTC热敏电阻温度采集与adc转换_adc温度转换-CSDN博客
根据NTC的AD值算温度
//编译环境 https://c.runoob.com/compile/11/#include <stdio.h>
#define NUM_TEMP_BUFF 136
//NTC3435从-30到105,136个数据的计算值。
unsigned short tempBuff[NUM_TEMP_BUFF] = {3959,3951,3942,3934,3925,3915,3906,3895,3885,3873, //-30~-213862,3850,3837,3824,3811,3797,3782,3767,3751,3735, //-20~-113718,3701,3683,3665,3646,3626,3606,3585,3564,3542, //-10~-13520,3497,3473,3449,3424,3398,3372,3346,3319,3291, //0~93263,3234,3205,3175,3145,3115,3083,3052,3020,2988, //10~192955,2922,2888,2855,2821,2786,2752,2717,2682,2647, //20~292612,2576,2541,2505,2469,2434,2398,2362,2326,2291, //30~392255,2220,2185,2149,2114,2080,2045,2010,1976,1942, //40~491909,1875,1842,1809,1777,1745,1713,1682,1651,1620, //50~591590,1560,1530,1501,1472,1444,1416,1389,1362,1335, //60~691309,1283,1258,1233,1208,1184,1161,1137,1115,1092, //70~791070,1049,1028,1007,986,966,947,928,909,890, //80~89872,855,837,820,804,787,771,756,741,726, //90~99711,697,683,669,655,642, //100~105
};
unsigned short tempData = 2000;
short returnTemp = 0;
//返回值,-88为大于105度,-99为小于-30度
short CaclTemp(unsigned short tempData1)
{short i = 0;while (1){if (tempData1>tempBuff[0]) {return -88;} else if (tempData1<tempBuff[NUM_TEMP_BUFF-1]){return -99;}if (tempBuff[i] >= tempData1) {i++; } else {return i-31;} }
}int main()
{returnTemp = CaclTemp(tempData);printf("%d",returnTemp);return 0;
}