NTC测温中 经典温度查表算法--二分查找法

  1. 说明: 
  2.  
  3. 二分查找法的优点:查找速度快 1024个长度的表最长只需10次查表就能得出结果 
  4. 在用NTC测试温度的方案中,NTC的温度表的长度一般是100-200 有些达到400-500的长度 
  5. 在这种情况下如果用逐个查表比较的方法来查温度 会导致查表的时间过长,影响程序的 
  6. 执行效率 这里推出一个优秀的算法来取代这种最笨的做法 
  7.  
  8. 应用实例如下: 
  9.  
  10. #define TempSize  100 //定义表长度 
  11. //温度值对应的AD值的表的定义 
  12. const int16 TabNtc_100K[TempSize]={0xf00,0xe00,oxd00,......}; 
  13.  
  14. int16 *pTmp ; //定义一个字长的指针 
  15.      
  16. pTmp = TabNtc_100K ; //指向要温度表的地址 
  17. CuTemp = FineTab(pTmp,TempSize,R_NTCAD); //查表得出温度 R_NTCAD为NTC分压得出的AD值 
  18.  
  19.  
  20. ********************************************/
    1. //*************************************  
    2. // 函数名称:FineTab  二分查找算法 ->查温度表  
    3. // 函数功能:查找数据在表中对应的位置 表中数据从大到小  
    4. // 入口参数:表地址、表长度、要查找的数据  
    5. // 出口参数:无  
    6. // 返 回 值:数据在表中的位置  
    7. //*************************************  
    8. uint8 FineTab(uint16 *a,uint8 TabLong,uint16 data)//表中数据从大到小  
    9. {  
    10.     uint8 st,ed,m ;  
    11.     uint8 i ;  
    12.   
    13.     st = 0 ;  
    14.     ed = TabLong-1 ;  
    15.     i = 0  ;  
    16.   
    17.     if(data >= a[st]) return st ;  
    18.     else if(data <= a[ed]) return ed ;  
    19.   
    20.     while(st < ed)  
    21.     {  
    22.         m = (st+ed)/2 ;  
    23.   
    24.         if(data == a[m] ) break ;  
    25.         if(data < a[m] && data > a[m+1]) break ;  
    26.           
    27.           
    28.         if(data > a[m])  ed = m ;                      
    29.         else st = m ;     
    30.           
    31.         if(i++ > TabLong) break ;  
    32.     }  
    33.   
    34.     if(st > ed ) return 0 ;   
    35.   
    36.     return m ;  
    37. }  
    38.   
    39.   
    40. //*************************************  
    41. // 函数名称:FineTab  二分查找算法 ->查温度表  
    42. // 函数功能:查找数据在表中对应的位置    表中数据从小到大  
    43. // 入口参数:表地址、表长度、要查找的数据  
    44. // 出口参数:无  
    45. // 返 回 值:数据在表中的位置  
    46. //***************************************  
    47.   
    48. uint8 FineTab(uint16 *a,uint8 TabLong,uint16 dat)//表中数据从小到大  
    49. {  
    50.         uint8 st,ed,m ;  
    51.         uint8 i ;  
    52.       
    53.         st = 0 ;  
    54.         ed = TabLong-1 ;  
    55.         i = 0  ;  
    56.       
    57.         if(dat >= a[ed]) return ed ;  
    58.         else if(dat <= a[st]) return st ;  
    59.       
    60.         while(st < ed)  
    61.         {  
    62.             m = (st+ed)/2 ;  
    63.       
    64.             if(dat == a[m] ) break ;  
    65.             if(dat < a[m+1] && dat > a[m]) break ;  
    66.               
    67.               
    68.             if(dat > a[m]) st = m ;  //ed = m ;                    
    69.             else ed = m ;//st = m ;   
    70.               
    71.             if(i++ > TabLong) break ;  
    72.         }  
    73.       
    74.         if(st > ed ) return 0 ;   
    75.       
    76.         return m ;  
    77.   
    78. }  
  • 5
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: NTC(Negative Temperature Coefficient)是一种负温度系数热敏电阻,在测量温度方面具有广泛应用。为了获取准确的温度信息,需要进行数据采集和插值查表的过程。 首先,需要进行数据采集。通过N个温度点,测量NTC电阻的实际电阻值。这些温度点可以遍布整个温度范围,以确保有足够的数据点进行后续的查表和插值计算。 接下来,将采集到的温度和相应的电阻值记录在表格。这个表格被称为NTC温度-电阻特性曲线表或查表表格。这个表格包含了不同温度下的电阻值,可以作为后续插值计算的基础。 当需要测量某个温度时,可以通过查表的方式来获取对应温度下的电阻值。如果所需的温度点在已有的数据点之间,可以使用插值的方来计算出该温度下的电阻值。插值算法通常使用线性插值、拉格朗日插值或牛顿插值等方,根据已有数据点的位置和数值,来推算出目标温度对应的电阻值。 通过采集温度和进行插值查表,可以更准确地获取NTC电阻在不同温度下的电阻值,从而计算出对应的温度值。这种方温度测量方面被广泛使用,具有简单、快速和准确的优点。 ### 回答2: NTC(Negative Temperature Coefficient)是一种负温度系数热敏电阻,其电阻值随温度变化而改变。为了准确测量温度,我们可以使用NTC来采集温度数据,并通过插值查表的方式来获取实际温度值。 NTC温度插值查表的方是基于已知温度-电阻值对的数据表。通常,这个数据表由厂家根据NTC的特性进行实验测定,并提供给用户使用。 当我们需要测量温度时,首先需要将NTC安装在要测量的物体表面或者近距离接触到物体NTC的电阻值将受到物体的温度影响而改变。然后,我们将读取NTC的电阻值,这个值将作为输入。 接下来,我们可以使用数据表来进行插值计算。我们首先找到两个最接近的已知温度-电阻值对,然后通过线性插值的方计算出我们所需的温度值。 线性插值的公式为: 温度 = (电阻值 - R₁) × (温度₂ - 温度₁) ÷ (R₂ - R₁) + 温度₁ 其,R₁和R₂分别是离目标电阻值最近的两个已知电阻值,温度₁和温度₂分别是对应的已知温度。 通过这种方式,我们可以根据NTC的电阻值获取相应的温度值。这种方虽然有一定的误差,但在实际应用通常可以提供足够的精度来满足需求。 总的来说,NTC采集温度插值查表是一种常用的方,通过将NTC的电阻值与已知温度值进行插值计算,可以得到准确的温度值。这种方简单有效,特别适用于温度测量和控制领域。 ### 回答3: NTC采集温度插值查表是一种常见的温度测量方NTC(Negative Temperature Coefficient)热敏电阻是一种电阻值随温度变化呈负相关关系的元件,常用于测量温度。而NTC的电阻-温度特性是非线性的,故无直接通过测量电阻值来准确获得温度信息。 为了解决这个问题,人们通常会在预先测量一系列已知温度下的NTC电阻值,并将其制作成一张查表。这张表能够通过对已知的NTC电阻值进行插值,来预测未知温度值。 使用NTC采集温度插值查表的步骤如下: 首先,将NTC热敏电阻与电路相连。当电阻与环境温度接触时,它的电阻值会发生变化。 然后,通过电阻测量装置测量NTC的电阻值。 接下来,使用这个测量到的NTC电阻值,在查表找到离测量值最近的两个已知温度对应的电阻值。 然后,通过对这两个电阻值进行插值运算,根据已知温度与电阻值的关系,计算出未知温度的估计值。 最后,根据查表得到的估计温度值,以及相应的插值误差,来进行相应的校准和调整。 总之,NTC采集温度插值查表是一种通过测量NTC电阻值来预测温度的方。通过建立一个电阻值与温度值的对应关系查表,可以用已知的电阻值来推测未知的温度值,并提供温度测量的准确性和稳定性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值