电子说

热敏电阻模块对环境温度很敏感,一般用来检测周围环境的温度,采用NTC热敏电阻传感器,灵敏度好。该热敏检测模块同时提供了数字和模拟接口,数字引脚输出热敏状态,通过电位器可以调整热敏检测的阈值,当温度到达设定阈值,指示灯亮,输出数字0。低于设定阈值,指示灯灭,输出数字1。在输出模拟值(在一定的范围内变化)的时候,温度越高,模拟值越小。该传感器集成了B值为3950的10K热敏电阻。
NTC特性:负温度系数热敏电阻(NTC)阻值随温度升高而降低,其阻值-温度关系由B值公式描述:
分压电路:模块通过热敏电阻与参考电阻(10KΩ)组成分压电路,输出电压与温度成反比。
其中 R0为参考温度 T0(单位:开尔文)下的阻值,B值为材料常数。

连接说明:
| 热敏电阻模块 | ESP32S3开发板 |
|---|---|
| GND | GND |
| VCC | 3V3 |
| DO | GPIO4 |
| AO | GPIO5 |
以下示例将使用串口同时输出热敏传感器检测到的模拟值换算成实际温度和数字引脚输出的热敏状态。
#define THERMISTOR_PIN 5 // NTC热敏电阻连接的模拟引脚
#define DIGITAL_PIN 4 // 比较器输出连接的数字引脚
#define R_REF 10000.0 // 分压电阻10KΩ
#define R0 10000.0 // NTC在25°C时的阻值
#define B_VALUE 3950.0 // B参数
#define T0 298.15 // 25°C的Kelvin温度
void setup() {
Serial.begin(115200);
analogReadResolution(12); // 设置12位ADC(0-4095)
pinMode(DIGITAL_PIN, INPUT); // 设置数字引脚为输入模式
}
void loop() {
int adcValue = analogRead(THERMISTOR_PIN);
float voltage = adcValue * (3.3 / 4095.0);
// 计算NTC电阻(若NTC在下端)
float r_ntc = (voltage * R_REF) / (3.3 - voltage);
// 使用Steinhart-Hart方程将电阻值转换为温度,精度高于简单B值近似法。
float t_kelvin = 1 / (log(r_ntc / R0) / B_VALUE + 1 / T0);
float t_celsius = t_kelvin - 273.15;
// 读取数字接口状态
int digitalState = digitalRead(DIGITAL_PIN);
Serial.printf("ADC: %4d | Temp: %.2f°C | Digital State: %dn", adcValue, t_celsius, digitalState);
delay(1000);
}

校准与精度提升
多点校准:在不同温度下测量实际阻值,修正B值和R0。
查表法:预存温度-ADC值对应表,减少实时计算量。
通过以上实验,获知了如何通过分压测量热敏电阻的电压推算出阻值后进而计算出热敏电阻周围的温度值。
全部0条评论
快来发表一下你的评论吧 !