前言
NTC 负温度系数热敏电阻,核心特性为电阻随温度升高而降低。工程上常采用B 值模型估算温度,利用厂商给定的 B 值、25℃标称电阻(R_{25}),通过 ADC 采集分压电路算出 NTC 实时电阻,代入 B 值公式,即可反推当前温度。
B 值公式基于指数近似,计算量小,适合单片机嵌入式场景,无需存储大量 R-T 表格,代码实现简单。但 B 值仅在有限温度区间精度良好,属于近似算法;宽温、高精度测温场景,推荐采用厂家 R-T 对照表查表法,减少模型误差。
一、先说说:为什么推荐查表法?
NTC 上拉供电与 ADC 基准是同一电源,绝大部分 MCU 都支持供电为 ADC 基准。这样即使是供电 2.5~5.5V,不用 LDO 对 ADC 值没有影响。
表格里放 ADC 值,MCU 计算量极小。二分查表法 + 阶段线性,存储空间占用小,精度高,计算快。
这套方案非常适合低价芯片,-20~120℃ 宽温区、精度 0.1。
核心优势:
- 上拉供电与 ADC 基准同源,供电波动不影响 ADC 值
- 表格存 ADC 值,MCU 计算量极小
- 二分查表 + 分段线性,存储小、精度高、速度快
- 适合低价芯片,资源有限
避坑提醒:
网上我看到很多画蛇添足 NTC 上并联电容,虽然在 MCU_VCC 稳定时没啥影响,但 MCU_VCC 波动时会使分压比不符合实际情形,造成测量不准。去除该电容明显效果更好,还省点成本。
ADC 位数处理:
很多 MCU 是达不到 16bit 的,查表前 ADC 值要右移:10bit ADC 右移 6 位,12bit ADC 右移 4 位。
二、B 值公式:基础中的基础
2.1 公式

2.2 符号含义
| 符号 | 含义 |
|---|---|
| R2 | NTC 在参考温度 T2 下的电阻;图中 NTC 是 10K-3950,T2=25℃,R2=10kΩ |
| T1、T2 | 必须是开尔文温度,不是摄氏度!T(K)=t(℃)+273.15 |
| B | B 值,图中 NTC:B3950,(B=3950K) |
| R1 | 温度 T1 时 NTC 实际电阻 |
2.3 举例:25℃ 算 20℃ 电阻

和表格 (20℃) NTC 电阻 12.535k 基本对上,微小差异来自 B 值模型本身是近似模型。
三、变形公式:已知 NTC 电阻,反求温度
对应硬件电路
电路:上拉电阻 (R1=10K),NTC 接地,(R2=3.3K) 保护电阻。
R2 会分压! 软件计算 NTC 阻值的时候,不能忽略这个 3.3K,很多人直接套用标准 B 公式,温度算出来全错。
NTC_IO 的 ADC 采样电压:是 NTC 与 R2 串联之后,再和 R1 分压。
B 值公式计算法 :代码调用 exp()、log() 数字库函数;
缺点:MCU 的 math 库消耗 Flash,浮点运算耗时。
四、总结
几种方式对比:
| 方案 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| B 值法 | 简单,1 个参数 | 宽温区误差大 | 窄温区、低成本 |
| S-H 拟合法 | 宽温区精度高 | 运算量大,占 Flash | 工业、BMS、医疗 |
| 查表 + 线性插值 | 快、小、无浮点 | 需预生成表格 | 量产、低价 MCU、硬实时 |