stm32通过NTC采集温度,二分法查表,精度0.1℃

您所在的位置:网站首页 温度表表格 stm32通过NTC采集温度,二分法查表,精度0.1℃

stm32通过NTC采集温度,二分法查表,精度0.1℃

2024-07-13 13:35| 来源: 网络整理| 查看: 265

NTC是指负温度系数的电阻器,电阻值会随着温度上升而减少,我们可以利用该特性,对温度进行采集和计算。

下面是NTC的规格和温度阻值表

标称阻值:10kΩ @ 25℃

精度公差:±1%

B值:3435K at 25/85℃

B值公差:±1%

我用的是查表法,所以在计算中不使用B值,B值直接忽略,只关心精度和温度阻值表。

我们先看看电路

STM32的ADC是12位的,我们根据电路图可以得到公式

 我们把温度阻值表代入公式,可借助EXCEL计算,可以得到温度对应的ADC值大小,然后定义数组,用于查表计算温度。

温度阻值表快速转化为C语言数组的方法如下链接:

NTC温度传感器R-T表格数据批量转换成C语言数组-CSDN博客

我选取的温度范围是-20℃~120℃,生成下列数组。

#ifndef _NTC_H #define _NTC_H #include "user_define.h" #define NTC_HIGH_PRECISION 1//1=0.1℃ 0=1℃ #define NUM 141 //-20℃~120℃ static sc16 NTC3435_10K[NUM]= { 3581,3559,3535,3511,3486,3461,3435,3408,3381,3353, 3324,3295,3266,3234,3203,3171,3138,3105,3072,3037, 3003, //0 2968,2932,2896,2859,2823,2785,2748,2710,2672,2633, 2595,2556,2517,2478,2438,2399,2360,2321,2281,2242, 2203,2164,2125,2086,2048,2009,1971,1933,1896,1858, 1822,1785,1749,1713,1678,1643,1608,1574,1540,1507, 1475,1436,1411,1380,1349,1319,1289,1260,1231,1203, 1176,1149,1122,1096,1070,1045,1021,997,974,951, 928,906,885,864,843,823,803,784,766,747, 729,712,695,678,662,646,631,616,601,587, 573,559,546,533,520,508,496,484,473,462, 451,440,430,420,410,400,391,382,373,365, 356,348,340,332,325,317,310,303,296,290, 283,277,271,265,259,253,247,242,237,231, }; extern s16 Read_NTC_Temperature(sc16 *list,u16 rADC,s16 BaseValue); #endif

二分法查表,可以用循环的方法或者递归函数查找,我采用的是循环的方法,查找出ADC在列表中的位置,就可以知道对应的索引号,进而计算温度值,代码如下:

//输入参数:ADC值表 ADC值 //返回值:查表后的索引号 u16 NTC_Lookup(sc16 *list,u16 data) { u16 middle=0; u16 indexL=0; u16 indexR=NUM-1; if(data>=*(list+0)) return 0; if(data1) { middle=(indexL+indexR)>>1; if(data==*(list+middle)) return middle; else if(data>*(list+middle)) indexR=middle; else if(data=list[0]) return BaseValue; if(rADC


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3