单片机测温,用NTC,那个NTC表格是怎么得出来的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机测温,用NTC,那个NTC表格是怎么得出来的?相关的知识,希望对你有一定的参考价值。
参考技术A1.将TEMPerNTC连接到手机或者电脑上。
2.有光盘的直接插光盘,没有的再到www.pcsensor.com官网中拉倒最下方的software选项选择相应选项,下载第一个版本。
3.如下所示操作软件界面。
参考技术B NTC负温度系数热敏电阻专业术语零功率电阻值 RT(Ω)
RT指在规定温度 T 时,采用引起电阻值变化相对于总的测量误差来说可以忽略不计的测量功率测得的电阻值。
电阻值和温度变化的关系式为:
RT = RN expB(1/T – 1/TN)
RT : 在温度 T ( K )时的 NTC 热敏电阻阻值。
RN : 在额定温度 TN ( K )时的 NTC 热敏电阻阻值。
T : 规定温度( K )。
B : NTC 热敏电阻的材料常数,又叫热敏指数。
exp: 以自然数 e 为底的指数( e = 2.71828 …)。
该关系式是经验公式,只在额定温度 TN 或额定电阻阻值 RN 的有限范围内才具有一定的精确度,因为材料常数B 本身也是温度 T 的函数。
额定零功率电阻值 R25 (Ω)
上面是百度百科里关于NTC的一部分,计算的方法很简单,根据:
RT = RN expB(1/T – 1/TN)
上面的公式,用Excel表格进行计算就行了,如果你告诉我你不会Excel表格,那么,就要去学习,身为电子工程师,Excel一定要好。
另外,注意这句话:
该关系式是经验公式,只在额定温度 TN 或额定电阻阻值 RN 的有限范围内才具有一定的精确度,因为材料常数B 本身也是温度 T 的函数。
由这句话,我们得知,其实这个公式算的并不是非常准确,我测试过,用公式算出来的,我的NTC是 -30---110摄氏度的,当温度在 5---60度的时候,温度差了大概不到1摄氏度,在范围之外,温度差的比较大。
以25度为中心,越往两边,误差越大,当到达90度时,用公式算出来的已经与标准差了近3摄氏度。
我的表格是用实际测试出来的,我专门做了一个测试NTC用的,借助3个DS18B20、冰箱和蜡烛,测试从-5---100度时NTC的变化,至于 -30--(-5),我是根据供应商提供的数据进行一些平滑处理得到的。本回答被提问者采纳
一种基于NTC的控温电路及软件实现
NTC(Negative Temperature Coefficient)是一种随温度上升时,电阻值呈指数关系减小的热敏电阻。应用广泛,最近我们就采用了NTC来控制加热并测温,并达到了预期的效果。
1、硬件设计
我们使用三极管作为加热元件,通过NTC来控制通过三极管的电流,以起到控制温度的作用,至于温度控制到多少,可以通过调节电位器来控制。同时使用另一个NTC来测量当前的温度。电路图如下:
上图中我们通过一个电桥来采集NTC电阻的变化,因为电阻的变化会引起C17两端电压的变化。温度越高NTC电阻越小,C17两端电压差就越大,反之越小。我们采用了25摄氏度时,阻值为10K的NTC。不难推断出输出电压与NTC电阻值得关系。当输出电压为0V时,电阻约25K,查表可知唯独为5摄氏度左右。当输出电压为5V时,电阻值接近0,查表可知在100摄氏度以上。职业便是这个电路的理论测量范围。
2、软件设计
前面我们设计了测量电路,也分析了检测电压与NTC电阻制的关系。接下来我们主要讨论一下软件设计。软件的设计我们采用了公式法和查表法两种方式来获取温度值。
(1)公式法
我们前面已经提到过,NTC是一种随温度上升时,电阻值呈指数关系减小的热敏电阻。而这种指数关系具体如下:
其中,B是NTC的常数,每种为固定值。Rt是NTC的电阻,R为标称25摄氏度时的电阻。T1是Rt对应的开氏温度,T2是标称的开氏温度。于是我们就可以推导出有电阻计算温度的公式:
根据以上公式我们可以实现:
1 /*公式法计算NTC温度值*/ 2 static float FormulaNTCTemperature(float resistance) 3 { 4 float temp; 5 float result=0.0; 6 7 result=resistance/NTC_NOMINAL_RESISTANCE; 8 result=(log(result)/NTC_NOMINAL_CONSTANT)+(1/(NTC_NOMINAL_TEMPERATURE+KELVIN_CONSTANT)); 9 temp=1/result-KELVIN_CONSTANT; 10 11 return temp; 12 }
(2)查表法
查表法顾名思义就是通过电阻分度表来获取温度区间,再做拟合。首先我们需要建立相应的表我们定义为数组。有了分度表实现也就简单了,但需要注意两端极限位置的处理。具体实现如下:
1 /*查表法计算NTC温度值*/ 2 static float LookupNTCTemperature(float resistance) 3 { 4 float temp; 5 uint16_t index=NTC_TABLE_LENGTH+10; 6 7 index=FindTargetLocation(resistance); 8 9 if(index<=0) 10 { 11 temp=ntcValueTable[0][0]; 12 } 13 else if(index>=NTC_TABLE_LENGTH) 14 { 15 temp=ntcValueTable[0][NTC_TABLE_LENGTH-1]; 16 } 17 else 18 { 19 float lowT=ntcValueTable[0][index-1]; 20 float lowR=ntcValueTable[1][index-1]; 21 float highR=ntcValueTable[1][index]; 22 23 temp=((resistance-lowR)*0.5)/(highR-lowR)+lowT; 24 } 25 26 return temp; 27 } 28 29 /*查找目标位置*/ 30 static uint16_t FindTargetLocation(float resistance) 31 { 32 uint16_t position=0; 33 while(ntcValueTable[1][position]>resistance) 34 { 35 if(position<NTC_TABLE_LENGTH-1) 36 { 37 position++; 38 } 39 else 40 { 41 position++; 42 break; 43 } 44 } 45 46 return position; 47 }
欢迎关注:
以上是关于单片机测温,用NTC,那个NTC表格是怎么得出来的?的主要内容,如果未能解决你的问题,请参考以下文章