【NTC热敏电阻】NTC电阻测温电路与ADC换算
NTC电阻测温电路与ADC换算
一、电路结构
- 电源电压:3.3V
- 电阻分压结构:
3.3V --- R_fixed(10kΩ) ---●--- R_ntc(10kΩ@25℃) --- GND|ADC采样
-
说明:
- R_fixed 为固定电阻 10kΩ
- R_ntc 为 NTC 热敏电阻,阻值随温度变化
- ADC 读取的是中间节点的电压值
二、ADC换算电压
设 ADC 分辨率 = 12 位,则满量程 = 4095。
采样结果记为 adc_val
,则电压为:
Vadc=adc_val4095×3.3 (V) V_{adc} = \frac{adc\_val}{4095} \times 3.3 \, (V) Vadc=4095adc_val×3.3(V)
三、电阻计算
根据分压公式:
Vadc=RntcRfixed+Rntc×Vcc V_{adc} = \frac{R_{ntc}}{R_{fixed} + R_{ntc}} \times V_{cc} Vadc=Rfixed+RntcRntc×Vcc
整理得:
Rntc=Rfixed×VadcVcc−Vadc R_{ntc} = R_{fixed} \times \frac{V_{adc}}{V_{cc} - V_{adc}} Rntc=Rfixed×Vcc−VadcVadc
四、阻值换算温度
NTC 特性满足 Beta 模型近似:
1T=1T0+1BlnRntcR0 \frac{1}{T} = \frac{1}{T_0} + \frac{1}{B} \ln{\frac{R_{ntc}}{R_0}} T1=T01+B1lnR0Rntc
其中:
- TTT = 热敏电阻的绝对温度 (K)
- T0T_0T0 = 标称温度 (通常 25℃ = 298.15K)
- R0R_0R0 = 标称温度下阻值 (10kΩ@25℃)
- BBB = Beta 系数(典型 3435~3950K,具体看数据手册)
换算摄氏温度:
T℃=T(K)−273.15 T_{℃} = T(K) - 273.15 T℃=T(K)−273.15
五、计算流程总结
- 读取 ADC 值 → 转电压 VadcV_{adc}Vadc
- 由分压公式求 RntcR_{ntc}Rntc
- 代入 Beta 方程求温度(K)
- 转换为 ℃
六、示例代码 (以村田的型号为NCP18XH103F03RB R0603的NTC为例)
#include <math.h>#define VREF 3.3f
#define ADC_MAX 4095.0f
#define R_FIXED 10000.0f // 10kΩ 上拉电阻
#define R25 10000.0f // 25°C 阻值
#define T0 298.15f // 25°C = 298.15 K
#define BETA 3434.0f // Murata NCP18XH103F03RB (25–85°C)float NTC_GetTemperature(uint16_t adc_raw)
{// 1. 电压float v_adc = (adc_raw / ADC_MAX) * VREF;if (v_adc <= 0.0f || v_adc >= VREF) return -273.15f; // 错误保护// 2. 计算 NTC 电阻float r_ntc = R_FIXED * v_adc / (VREF - v_adc);// 3. Beta 公式求温度float tempK = 1.0f / ( (1.0f / T0) + (1.0f / BETA) * logf(r_ntc / R25) );return tempK - 273.15f; // 转为摄氏度
}
要点:
- 一定要知道 NTC 的 Beta 值(比如 B=3950K),否则换算会不准。
- 如果精度要求高,可以查厂家提供的 NTC 阻值-温度对照表,做查表+插值。
输出:
- 使用的换算值为adc[2]