基于单片机的热水器节能控制系统设计
热水器能耗在家庭用电中占据可观比例,传统机型以固定恒温器运行,存在加热效率低、待机时间长等问题。本文设计一种以 STM32F103C8T6 单片机为核心的热水器节能控制系统,整合 DS18B20 数字温度采集、SR-01 电阻式水位检测、OLED12864 本地显示、SRD-05VDC-SL-C 继电器控制输出,并支持自动 / 手动两种工作模式,用以根据实时水位与水温自动启停加水、加热动作。
一、系统功能总览
| 功能编号 | 功能名称 | 说明 |
|---|---|---|
| F1 | 温度采集 | DS18B20 单总线数字温度 |
| F2 | 水位采集 | SR-01 + ADC 采集液位信号 |
| F3 | 本地显示 | OLED12864 显示温度、水位、模式 |
| F4 | 自动模式 | 阈值判断自动加水 / 加热 |
| F5 | 手动模式 | 按键切换加水 / 加热单独控制 |
| F6 | 继电器控制 | SRD-05VDC-SL-C 控制加水阀与加热器 |
| F7 | 报警提示 | 异常状态蜂鸣器报警 |
二、核心模块选型对比
2.1 主控模块选型
| 方案 | 型号 | 主频 | 备注 |
|---|---|---|---|
| 方案 1 | STM32F103C8T6 | 72 MHz | 资源适中、生态成熟 |
| 方案 2 | NXP LPC1768 | 120 MHz | 资源多但价格高 |
选择方案 1:综合考虑性能与开发资源,STM32 系列是首选。
2.2 温度模块选型
| 方案 | 型号 | 量程 | 输出 |
|---|---|---|---|
| 方案 1 | LM35 | -55~150 ℃ | 模拟 |
| 方案 2 | DS18B20 | -55~125 ℃ | 单总线数字 |
选择方案 2:DS18B20 单总线数字输出分辨率可达 12 位,简化布线。
2.3 水位模块选型
| 方案 | 模块 | 原理 | 量程 |
|---|---|---|---|
| 方案 1 | SR-01 电阻式 | 接触液体电阻变化 | 0~10 cm |
| 方案 2 | HSC-1000G 压力式 | 液柱压力 | 0~50 m |
选择方案 1:热水器水箱量程需求较小,SR-01 满足低成本要求。
2.4 显示模块选型
| 方案 | 模块 | 接口 |
|---|---|---|
| 方案 1 | OLED12864(I2C) | 显示清晰、占用资源少 |
| 方案 2 | ST7735 TFT | 彩色但占较多 IO |
选择方案 1:文本与图标显示清晰,且只占用两根 IO。
三、系统接线总表
| 模块 | 引脚 | 单片机端 | 备注 |
|---|---|---|---|
| DS18B20 | VCC/GND/DQ | 3.3 V / GND / PA1 | 4.7 kΩ 上拉 |
| SR-01 | VCC/GND/S | 5 V / GND / PA0(ADC) | 分压 |
| OLED12864 | VCC/GND/SCL/SDA | 3.3 V / GND / PB6/PB7 | I2C |
| 继电器 ×2 | IN/VCC/GND | PB0、PB1 / 5 V / GND | 加水阀 / 加热器 |
| 按键 ×3 | 一端/另一端 | PA3/PA4/PA5 / GND | 加水 / 加热 / 模式切换 |
| 蜂鸣器 | +/- | PB5 / GND | 三极管驱动 |
四、系统软件设计
4.1 主程序流程
int main(void)
{
SystemInit();
DS18B20_Init();
SR01_Init();
OLED_Init();
Relay_Init();
Key_Init();
Beep_Init();
while (1)
{
float temp = DS18B20_Read();
u16 level = SR01_Read();
if (Mode == AUTO)
{
if (level < LEVEL_LO) Relay_OnWater();
if (temp < TEMP_LO) Relay_OnHeat();
if (level >= LEVEL_HI) Relay_OffWater();
if (temp >= TEMP_HI) Relay_OffHeat();
}
else if (Mode == MANUAL)
{
if (Key1_Pressed()) Relay_ToggleWater();
if (Key2_Pressed()) Relay_ToggleHeat();
}
OLED_ShowAll(temp, level, Mode);
delay_ms(500);
}
}
4.2 DS18B20 单总线协议
主机拉低 480 μs → 等待 60~240 μs 响应 → 发送 0x44 启动温度转换 → 延时 750 ms → 发送 0xBE 读 12 位温度数据 → 按公式转换为摄氏度。
4.3 SR-01 水位读取
ADC 通道读取 10 次取平均,转换为百分比显示;对应水位的百分比与真实水位值成线性关系。
4.4 继电器驱动
继电器线包经 1 kΩ 限流电阻接单片机 IO,公共端 COM 接负载电源,常开端 NO 接电器设备。
五、系统实现与测试
5.1 硬件焊接与测试
完成水温、水位、OLED、继电器与蜂鸣器的接线,使用万用表验证无短路后上电。手动模式下按 K1、K2 验证继电器动作。
5.2 软件调试
Keil 5 + ST-Link,烧录后通过 OLED 与串口日志查看 DS18B20 与 SR-01 的返回值。
5.3 功能测试结果
| 测试项目 | 操作 | 结果 |
|---|---|---|
| 温度采集 | 室温与电子温度计比对 | 偏差 ≤ ±1 ℃ |
| 水位采集 | 注入 3 档水位 | 显示与实际一致 |
| 自动模式 | 水温与水位低于阈值 | 自动启动加水 / 加热 |
| 手动模式 | 按键 K1/K2 | 继电器按指令开 / 关 |
| 显示刷新 | 缓慢注水观察 | 实时变化无残影 |
六、总结
本文基于 STM32F103C8T6 设计了一种节能热水器控制系统,整合 DS18B20、SR-01、OLED 与继电器,实现了水温与水位的自动监测、控制与显示。系统具备自动 / 手动两种模式,硬件成本低、控制策略简洁,可为家庭与小型商业热水场景提供节能管理原型,同时也适合作为嵌入式物联网课程的综合实践案例。