一种基于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 }

欢迎关注:

 

转载于:https://www.cnblogs.com/foxclever/p/7898338.html

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值