NTC热敏电阻测温原理及查表法C语言程序(通俗易懂)

关于NTC测温原理和使用公式法计算出温度,请看本站上一节:MF52和MF58型NTC热敏电阻测温原理及公式法C语言程序

下面来看看如何使用查表法来计算出温度,要查表,首先得制作一张数据表,然后放在数组里。

制作温度ADC表

先来看看NTC的测温电路图:

NTC原理图

上图中,电阻R1和NTC R2组成串联分压电路,串联的两个电阻,电阻比等于电压比,且单片机ADC的参考电压为VCC,设单片机的ADC为10位,就可以求出NTC R2在相应温度下的阻值对应ADC值的表达式为:

ADC = R2 / ( R1+R2 ) *1024

R1为已知,一般为10K,NTC R2在不同温度下对应的阻值,厂家的数据手册上会有。以南京时恒的MF58-103F3435为例,如图:

NTC阻值表

把R1和NTC的电阻值填入EXCEL表格中,然后输入公式:=B5/($C$2+B5)*$E$2  ,下拉表格,然后点击公式,按下CTRL+ENTER就能自动计算出全部的ADC的值了,最后再用公式:="0x"&DEC2HEX(ROUND(C5,0))  ,自动计算出hex值,事半功倍。如图:

NTC EXCEL

这里附上EXCEL表格供参考,点击下载:MF58 10K

然后复制到数组里,如图:

NTC数组

二分查表法

有了上面的表,然后用单片机采集到的AD值,一个个从头开始去查找对比就能知道温度了,但这种方法存在着不足,有点浪费时间。可以采用二分法,二分查找很高效,假设数据大小是n,每次查找后数据都会缩小为原来的一半,也就是会除以2。二分法查找针对的是一个有序的数据集合(升序或降序排列)。

(1)首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。

(2)如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤(1)的操作。

看下面的图很容易明白,设要查的数位55,先折半为61,61大于55,说明要找的数在前一半,以此类推。

二分查表法原理

知道了二分查表法的原理,就能写程序了,我的代码供大家参考,实际使用还需要修改。

uint NTCADBinarySearch(uint CurrentAD)//数组排序从大到小查找
{
	
   int start=0; //数组头(标号)
   int end = 135; //数组尾(标号)
   int mid = 0;  //数组中间(标号)
   while(start<=end)
   {
      mid=(start+end)/2;//折半 取中间(标号)
			 
      if(CurrentAD==NTC_ADArray[mid]) break;  //当前AD值与数组中间值相等 说明查到
      if((CurrentAD<NTC_ADArray[mid])&&(CurrentAD>NTC_ADArray[mid+1]))  break; //在两者之间
			
      if(CurrentAD>NTC_ADArray[mid])  //当前AD值大于数组中间数值 说明要查找的数在前一半
	end = mid-1;  //前一半的数组头不变 数组尾重新分配
      else if(CurrentAD<NTC_ADArray[mid])  //当前AD值小于数组中间数值 说明要查找的数在后一半
	start = mid+1;   //前一半的数组尾不变 数组头重新分配

   }
   return mid;//返回查到的数组标号
}

因为NTC的AD值正好是表中的值概率很小,很可能查不到,但是我们可以知道落在了哪个区间,所以要处理的数据基本上在两个温度的区间,如果要显示小数,两个温度区间可以看成是线性的,通过局部线性化就可以计算出温度的值。什么是局部线性化,有网友解释的很清楚,这里直接搬过来,假如ADC采样的数字量为 0x80C,十进制是2060,对应在数据表的2048(25℃)和2095(24℃)中间,计算方式按照线性处理如下:

局部线性

代码参考如下:

ntcad=GetADCResult(1);//
temp=NTCADBinarySearch(ntcad);//搜索NTCAD温度表(得到数组标号)
searchwendu=temp-30;//计算温度整数+小数
wendu=searchwendu+(float)(NTC_ADArray[temp]-ntcad)/(float)(NTC_ADArray[temp]-NTC_ADArray[temp+1]);
wendu=wendu*10; 

完整的代码就不贴出来了,关键的就是上面贴的两段,一个查表,一个计算,实际测试效果,NTC 23.6度,红外枪24.2度。

版权声明:
作者:wawooo
链接:http://www.wawooo.com/191.html
来源:挖窝网
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录