本文主要是介绍NTC热敏电阻测温C程序设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1 、NTC热敏电阻简介
此次测温使用的NTC热敏电阻随着温度的升高而降低阻值(即负温度系数)。阻值即为NTC的标称阻值,大多数情况下即华氏25℃时的阻值,例如10K的NTC热敏电阻,即它在25℃时阻值为10KΩ,当然也有些特殊的阻值是以其它温度为标称的;B值是材料常数,其由制成它的陶瓷材料确定,并描述在两个温度点之间的特定温度范围内的电阻(R/T)曲线的梯度。每种热敏电阻材料将具有不同的材料常数,因此具有不同的阻值与温度曲线、温度与阻值表。
NTC热敏电阻的电气参数主要关注:封装、B值、温度、NTC阻值、阻值公差(例如:0805 3950K 25℃ 10KΩ ±1% );根据使用用途不同选用不同封装、B值、NTC阻值、阻值公差的NTC热敏电阻。
属性 | 参数值 | |
---|---|---|
商品目录 | NTC热敏电阻 | |
阻值(25℃) | 10kΩ | |
电阻精度 | ±1% | |
B值(25℃/50℃) | 3950K | |
B值(25℃/75℃) | - | |
B值(25℃/85℃) | - | |
B值(25℃/100℃) | - | |
功率 | 200mW | |
B值精度 | ±1% | |
最大稳态电流(25℃) | 440uA | |
工作温度 | -55℃~+125℃ |
截图来自深圳市敏创电子有限公司 (thermistors.cn)
通过上图曲线可以看出NTC阻值与温度相关但不是呈线性关系,与Rt=R*EXP(B*(1/T1-1/T2))相关,处理器取得的ADC数据想要转换成对应实际温度,就必须对数据进行处理。
方法1:可以将对应温度的NTC阻值,通过计算ADC值写到数组中去,然后通过查表方式得到温度值;
方法2:可以通过热敏电阻Rt=R*EXP(B*(1/T1-1/T2))计算方式得到。
2、电路应用原理图
若ADC端口处电流过小,单片机或者FPGA等处理器无法有效采集,建议加电压跟随器电路 ;预防ESD,建议ADC的处理器IO口增加ESD管。NTC热敏电阻可上拉或者下拉,即NTC与RES位置互换(计算分压或者ADC数据时需要根据实际电路)。
3、温度与阻值表
100K MF58系列 热敏电阻 在0°C至200°C范围内±1°C 100KOhm@25°C| @ 25°C时100000欧姆| 基于FENWALL CURVE 16 | B值曲线为3950K
温度与阻值表
温度(℃) | 阻值(Ω) | 温度(℃) | 阻值(Ω) | 温度(℃) | 阻值(Ω) | 温度(℃) | 阻值(Ω) |
-40 | 3273083.3 | 21 | 119189.1 | 82 | 11914.2 | 143 | 2143.5 |
-39 | 3062660.6 | 22 | 114027.7 | 83 | 11537.8 | 144 | 2091.6 |
-38 | 2867207.8 | 23 | 109118 | 84 | 11175 | 145 | 2041.1 |
-37 | 2685561 | 24 | 104446.4 | 85 | 10825.3 | 146 | 1992 |
-36 | 2516657 | 25 | 100000 | 86 | 10488 | 147 | 1944.3 |
-35 | 2359518.6 | 26 | 95766.9 | 87 | 10162.8 | 148 | 1897.9 |
-34 | 2213250.5 | 27 | 91735.8 | 88 | 9849.1 | 149 | 1852.8 |
-33 | 2077032.2 | 28 | 87895.9 | 89 | 9546.5 | 150 | 1808.9 |
-32 | 1950107.9 | 29 | 84237.3 | 90 | 9254.6 | 151 | 1766.3 |
-31 | 1831784.7 | 30 | 80750.4 | 91 | 8972.9 | 152 | 1724.8 |
-30 | 1721425.5 | 31 | 77426.4 | 92 | 8701 | 153 | 1684.5 |
-29 | 1618444.2 | 32 | 74256.8 | 93 | 8438.5 | 154 | 1645.2 |
-28 | 1522300.9 | 33 | 71233.6 | 94 | 8185.1 | 155 | 1607 |
-27 | 1432499.1 | 34 | 68349.4 | 95 | 7940.4 | 156 | 1569.9 |
-26 | 1348580.9 | 35 | 65597.1 | 96 | 7704.2 | 157 | 1533.8 |
-25 | 1270124.3 | 36 | 62970 | 97 | 7476 | 158 | 1498.6 |
-24 | 1196740.1 | 37 | 60461.8 | 98 | 7255.5 | 159 | 1464.3 |
-23 | 1128069.1 | 38 | 58066.4 | 99 | 7042.5 | 160 | 1431 |
-22 | 1063779.7 | 39 | 55778.4 | 100 | 6836.7 | 161 | 1398.6 |
-21 | 1003565.7 | 40 | 53592.3 | 101 | 6637.8 | 162 | 1367 |
-20 | 947143.9 | 41 | 51503.1 | 102 | 6445.5 | 163 | 1336.3 |
-19 | 894252.4 | 42 | 49506 | 103 | 6259.7 | 164 | 1306.3 |
-18 | 844649.2 | 43 | 47596.6 | 104 | 6080 | 165 | 1277.2 |
-17 | 798109.9 | 44 | 45770.5 | 105 | 5906.2 | 166 | 1248.8 |
-16 | 754426.9 | 45 | 44023.8 | 106 | 5738.1 | 167 | 1221.2 |
-15 | 713408 | 46 | 42352.5 | 107 | 5575.6 | 168 | 1194.2 |
-14 | 674874.9 | 47 | 40753.1 | 108 | 5418.3 | 169 | 1168 |
-13 | 638662 | 48 | 39222.2 | 109 | 5266.1 | 170 | 1142.4 |
-12 | 604616.3 | 49 | 37756.4 | 110 | 5118.9 | 171 | 1117.5 |
-11 | 572594.9 | 50 | 36352.7 | 111 | 4976.4 | 172 | 1093.2 |
-10 | 542466 | 51 | 35008.2 | 112 | 4838.4 | 173 | 1069.6 |
-9 | 514106.5 | 52 | 33720.1 | 113 | 4704.9 | 174 | 1046.5 |
-8 | 487402.3 | 53 | 32485.8 | 114 | 4575.6 | 175 | 1024 |
-7 | 462247.1 | 54 | 31302.7 | 115 | 4450.4 | 176 | 1002.1 |
-6 | 438542.3 | 55 | 30168.6 | 116 | 4329.2 | 177 | 980.8 |
-5 | 416195.7 | 56 | 29081.1 | 117 | 4211.7 | 178 | 960 |
-4 | 395121.9 | 57 | 28038.1 | 118 | 4098 | 179 | 939.6 |
-3 | 375241.1 | 58 | 27037.6 | 119 | 3987.8 | 180 | 919.8 |
-2 | 356479 | 59 | 26077.6 | 120 | 3881 | 181 | 900.5 |
-1 | 338766.3 | 60 | 25156.4 | 121 | 3777.5 | 182 | 881.7 |
0 | 322038.4 | 61 | 24272.2 | 122 | 3677.2 | 183 | 863.3 |
1 | 306235 | 62 | 23423.3 | 123 | 3579.9 | 184 | 845.4 |
2 | 291299.9 | 63 | 22608.2 | 124 | 3485.7 | 185 | 827.9 |
3 | 277180.4 | 64 | 21825.4 | 125 | 3394.3 | 186 | 810.9 |
4 | 263827.6 | 65 | 21073.4 | 126 | 3305.7 | 187 | 794.2 |
5 | 251195.5 | 66 | 20350.9 | 127 | 3219.7 | 188 | 778 |
6 | 239241.3 | 67 | 19656.5 | 128 | 3136.3 | 189 | 762.1 |
7 | 227924.9 | 68 | 18989.2 | 129 | 3055.5 | 190 | 746.7 |
8 | 217208.7 | 69 | 18347.7 | 130 | 2977 | 191 | 731.6 |
9 | 207057.6 | 70 | 17730.8 | 131 | 2900.9 | 192 | 716.8 |
10 | 197438.9 | 71 | 17137.6 | 132 | 2827 | 193 | 702.4 |
11 | 188321.6 | 72 | 16567.1 | 133 | 2755.3 | 194 | 688.4 |
12 | 179676.9 | 73 | 16018.1 | 134 | 2685.7 | 195 | 674.7 |
13 | 171477.9 | 74 | 15489.9 | 135 | 2618.2 | 196 | 661.3 |
14 | 163699 | 75 | 14981.6 | 136 | 2552.6 | 197 | 648.2 |
15 | 156316.6 | 76 | 14492.3 | 137 | 2488.9 | 198 | 635.4 |
16 | 149308.3 | 77 | 14021.3 | 138 | 2427.1 | 199 | 622.9 |
17 | 142653.3 | 78 | 13567.7 | 139 | 2367.1 | 200 | 610.8 |
18 | 136331.7 | 79 | 13130.9 | 140 | 2308.7 | ||
19 | 130325.2 | 80 | 12710.2 | 141 | 2252.1 | ||
20 | 124616.5 | 81 | 12304.8 | 142 | 2197 |
4、热敏电阻测温C程序设计
#include <stdio.h>
#include <math.h>typedef struct
{double sys_vol; /* System Voltage */double pudo_res; /* Pull-down resistor */unsigned int ntc_res; /* Thermistor nominal resistance value */unsigned int hex_x; /* The ADC resolution -12Bit_4096 10Bit_1025 8Bit_256 */unsigned int b_x; /* B value of thermistor */
}ntc_val_t;void ntc_init(ntc_val_t *val,double sys_vol,double pudo_res,unsigned int ntc_res,unsigned int hex_x,unsigned int b_x)
{val->sys_vol=sys_vol;val->pudo_res=pudo_res;val->ntc_res=ntc_res;val->hex_x=hex_x;val->b_x=b_x;
}/*** This function converts the ADC value to a temperature value.* Rt=R*EXP(B*(1/T1-1/T2))** @param NTC initializes the structure.* @param ADC values** @return NTC temperature*/
double algorithm_ntc(ntc_val_t *val,unsigned int adc_val)
{double v_x; /* Measured voltage value */double rt_x; /* Measure the resistance */double temp_x; /* Measure the temperature */v_x = val->sys_vol - ((double)adc_val / val->hex_x * val->sys_vol);rt_x = (val->pudo_res * v_x) / (val->sys_vol - v_x);printf("NTC阻值:%.2fKΩ\n",rt_x);temp_x = ( 1 / (log(rt_x / val->ntc_res) / val->b_x + (1 / 298.15) ) ) - 273.15;return temp_x;
}int main(void) {ntc_val_t val;double temp_adc;unsigned int adc_value=494;ntc_init(&val,3.3,15,100,4096,3950);temp_adc=algorithm_ntc(&val,adc_value);printf("温度:%.2f℃\n",temp_adc);return 0;
}
开始运行...
NTC阻值:109.34KΩ
温度:23.00℃
运行结束。
这篇关于NTC热敏电阻测温C程序设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!