热敏电阻测温轻松上手:Arduino 分步实战教程
什么是热敏电阻?
热敏电阻 是一种电阻值随温度变化的传感器,分两类:
- PTC (正温度系数):温度升高,电阻增大
- NTC (负温度系数):温度升高,电阻减小 —— 本教程使用此类
核心原理:B 参数方程
仅适用于 NTC 热敏电阻:
RT = R0 × exp[ B × (1/T - 1/T0) ]
RT:温度 T 时的电阻 (Ω)R0:参考温度 T0 (通常 25°C = 298.15 K) 时的标称电阻B:材料常数 (K),数据手册给出T:绝对温度 (Kelvin),计算全程必须用开尔文
电路:分压电路测电阻
将热敏电阻 (RT) 与定值电阻 (R = 10 kΩ) 串联跨接 5V,中点接 Arduino A0:
VRT = ADC 读数 × (5.0 / 1023.0)
VR = 5.0 - VRT
RT = VRT / (VR / R)
温度计算流程
- 读取 ADC → 换算电压 VRT
- 根据分压公式得 RT
- 代入 B 参数方程求 T (Kelvin)
- T(°C) = T(K) - 273.15
- 可选:换算华氏度 °F = °C × 1.8 + 32
实测效果
完整 Arduino 代码
// Thermometer with NTC thermistor
// 热敏电阻参数 (请按实物数据手册修改)
#define RT0 10000 // Ω @ 25°C
#define B 3977 // K
#define VCC 5.0 // 供电电压
#define R 10000 // 分压电阻 10kΩ
float RT, VR, ln, TX, T0, VRT;
void setup() {
Serial.begin(9600);
T0 = 25 + 273.15; // 参考温度转开尔文
}
void loop() {
VRT = analogRead(A0);
VRT = (VCC / 1023.0) * VRT; // ADC -> 电压
VR = VCC - VRT;
RT = VRT / (VR / R); // 热敏电阻当前阻值
ln = log(RT / RT0);
TX = 1 / ((ln / B) + (1 / T0)); // 开尔文温度
TX = TX - 273.15; // 摄氏度
Serial.print("Temperature:\t");
Serial.print(TX); Serial.print("°C\t\t");
Serial.print(TX + 273.15); Serial.print("K\t\t");
Serial.print((TX * 1.8) + 32); Serial.println("°F");
delay(500);
}
原理图
进阶提示
- 若精度要求高,可用 Steinhart-Hart 方程 (三阶多项式) 替代 B 参数方程
- 自热效应:大电流会加热热敏电阻,建议降低采样频率或用更大分压电阻
- 长导线引入干扰,可在 ADC 引脚并联 0.1 µF 陶瓷电容滤波
制造工艺