一、所选主题和项目介绍
本项目设计并实现了一款基于 STM32 单片机的加热干燥箱智能温度与电流控制系统,主要用于工业或实验室小型干燥箱的恒温控制与状态监测。系统采用双板模块化架构:一块为电源与检测板(集成电源、电流检测和温度检测),另一块为专用继电器控制板(集成固态继电器 PWM 驱动和功率继电器安全切断)。系统通过 NTC 热敏电阻实时检测出风口温度,采用 ACS712 霍尔电流传感器监测加热丝工作电流,最终通过 PWM 信号控制固态继电器调节加热功率,并通过功率继电器实现紧急安全切断。
系统核心功能包括:
- 0~150℃范围内的恒温控制,控制精度 ±1℃
- 0~30A 交流电流实时监测,精度 ±0.5A
- 双重过流保护:软件过流保护 + 硬件功率继电器紧急切断
- 双重温度保护:软件恒温控制 + 超温硬件断电
- 与单片机控制板的跨板通信接口
- 预留温度校准和参数配置接口
二、使用到的所有硬件介绍
2.1 电源与检测板硬件清单
表格
元件型号 | 封装 | 数量 | 功能描述 |
|---|---|---|---|
HLK-10M05 | 直插 | 1 | 3KV 隔离型 AC-DC 电源模块,220V 转 5V/2A,为控制电路供电 |
ACS712ELCTR-30A-T-JSM | SOP-8 | 1 | 霍尔效应电流传感器,测量范围 ±30A,灵敏度 66.7mV/A |
B3950 10K(103JG1F) | 玻璃珠型 | 2 | 高速响应 NTC 热敏电阻,用于出风口温度检测 |
HB9500-9.5-3P | 直插 | 3 | 高压接线端子,用于市电输入、电流检测输出、固态继电器连接 |
HDR-TH_7P-P2.54 | 直插 | 1 | 7P 排针,用于与单片机控制板的跨板连接 |
14D471K 压敏电阻 | 直插 | 1 | 并联在 L-N 之间,吸收市电浪涌电压 |
0.1μF/275V X 电容 | C1206 | 1 | 抑制市电共模和差模干扰 |
220μF/16V 电解电容 | SMD BD6.3 | 1 | 5V 电源输出滤波 |
100nF 陶瓷电容 | C0603 | 3 | 电源去耦和信号滤波 |
1kΩ 电阻 | R0603 | 1 | ACS712 输出限流电阻 |
5.1kΩ 电阻 | R0603 | 2 | NTC 分压电阻 |
400mΩ/2W 电阻 | R2512 | 1 | 浪涌限流电阻 |
2A 慢熔保险丝 | 直插 | 1 | 电源输入过流保护 |
M4 螺丝 | 机械件 | 1 | PCB 固定螺丝 |
2.2 继电器控制板硬件清单
表格
元件型号 | 封装 | 数量 | 功能描述 |
|---|---|---|---|
EL357NC(TA)-G | SOP-4 | 2 | 高速光耦,实现控制电路与继电器驱动电路的电气隔离 |
DTC123JE1G | SOT-23 | 2 | 带阻三极管,用于驱动继电器线圈 |
HF49FD005-1H11T | 直插 | 1 | 5V 功率继电器,作为加热丝总电源开关,实现紧急切断 |
1N4007WS | SMA | 2 | 续流二极管,吸收继电器线圈断电时的反电动势 |
0805 红色 LED | 0805 | 2 | 继电器状态指示灯 |
1kΩ 电阻 | 0805 | 2 | LED 限流电阻 |
390Ω 电阻 | 0805 | 2 | 光耦输入限流电阻 |
1MΩ 电阻 | 0805 | 1 | PGND 放电电阻 |
1nF 电容 | 0805 | 1 | PGND 滤波电容 |
WJ500V-5.08-2P | 直插 | 2 | 高压接线端子,用于市电输入和加热丝输出 |
HDR-TH_5P-P2.54 | 直插 | 1 | 5P 排针,用于与单片机控制板的跨板连接 |
M4 螺丝 | 机械件 | 3 | PCB 固定螺丝 |
三、方案框图和项目设计思路介绍
3.1 系统总体方案框图
市电输入(220V AC)
│
├─ 输入保护电路(保险丝+压敏电阻+X电容)
│ │
│ ├─ HLK-10M05电源模块 → 5V DC → 控制电路供电
│ │
│ └─ 功率继电器(总开关) → 固态继电器(PWM控制) → ACS712电流传感器 → 加热丝
│
├─ 出风口NTC温度传感器 → 分压电路 → 单片机ADC
│
└─ ACS712电流传感器 → 滤波电路 → 单片机ADC
│
└─ 单片机控制板
├─ PWM信号 → 光耦隔离 → 固态继电器驱动
└─ 开关信号 → 光耦隔离 → 功率继电器驱动
3.2 设计思路
- 双板模块化设计:将高压大电流部分(继电器、电流检测)与低压控制部分分离,通过排针跨板连接,提高系统安全性和可维护性。
- 双重安全保护:采用 "固态继电器 PWM 调节 + 功率继电器总切断" 的双重控制架构。固态继电器用于精确调节加热功率,功率继电器作为安全开关,在过流、超温或系统故障时彻底切断加热丝电源。
- 三级隔离设计:
- HLK-10M05 电源模块实现市电与控制电路的 3KV 隔离
- ACS712 电流传感器实现电流回路与信号回路的 2.5KV 隔离
- EL357 光耦实现单片机控制信号与继电器驱动电路的隔离
- 大电流处理:加热丝主回路采用 2oz 铜厚、12mm 宽的大面积铺铜设计,确保 10A 额定电流下温升不超过 15℃。
- 温度检测优化:采用高速响应玻璃封装 NTC,安装在出风口中心偏下位置,通过铁氟龙管保护引线,确保测温准确和耐用。
- 完善的保护机制:设计了保险丝过流保护、压敏电阻浪涌保护、软件过流保护、软件超温保护和硬件功率继电器紧急切断五重保护机制。
四、原理图和 PCB 展示及介绍
4.1 电源与检测板原理图介绍

本板原理图分为四个主要模块:
- 电源输入与保护模块:包含保险丝 FH1、压敏电阻 R1、X 电容 C5 和 HLK-10M05 电源模块 U1。市电 L 经过保险丝后分为两路,一路给电源模块供电,另一路连接到继电器控制板的功率继电器输入。
- 电流检测模块:ACS712 传感器 U2 串联在固态继电器输出与加热丝之间,引脚 1 和 2 并联作为电流输入,引脚 3 和 4 并联作为电流输出。输出信号经过 R3 和 C3 组成的 RC 滤波电路后,通过 AC_CS 引脚连接到单片机 ADC。
- 温度检测模块:包含两路 NTC 测温电路,每路都由 5.1kΩ 分压电阻和 100nF 滤波电容组成。TEMP_1 和 TEMP_2_IN 引脚连接 NTC 传感器,TEMP_2_OUT 引脚为预留的第二路温度输出。
- 接口模块:7P 排针 H1 提供了 5V 电源、GND、AC_CS、TEMP_1、TEMP_2_IN、TEMP_2_OUT 和 3V3 电源接口,用于与单片机控制板的跨板连接。
4.2 电源与检测板 PCB 设计介绍

本板为第一版 PCB 设计,采用双层板结构,尺寸约为 80mm×60mm。设计要点如下:
- 大电流铺铜设计:加热丝主回路采用 2oz 铜厚、12mm 宽的大面积铺铜,确保 10A 电流下温升不超过 15℃。
- 高压隔离设计:高压区域与低压控制区域之间保持 5mm 以上的隔离距离,高压铺铜边缘做圆角处理,防止电晕放电。
- 元件布局优化:高压元件集中布局在 PCB 右侧,低压控制元件集中布局在左侧,HLK-10M05 电源模块位于高低压区域之间,起到隔离作用。
- 接地设计:采用单点接地原则,控制电路地与高压地完全隔离,保护地 (PGND) 单独连接到机箱。
4.3 设计修正记录
- 初期设计曾考虑将 ACS712 串联在零线上,后根据安全要求改为串联在火线上
- 修正了 ACS712 引脚接法,确保引脚 1+2 和 3+4 分别并联
- 增加了 X 电容和压敏电阻的输入保护电路
- 加大了大电流路径的铺铜宽度,从最初的 8mm 增加到 12mm
- 新增了功率继电器作为总电源开关,实现双重安全保护
- 在继电器驱动电路中增加了光耦隔离,提高系统抗干扰能力
五、调试软件、软件流程图和关键代码介绍
plaintext
main.c
├─ 系统初始化(时钟、GPIO、定时器、ADC、串口)
├─ 全局变量定义
├─ 主循环
│ ├─ ADC采样处理(电流、温度)
│ ├─ PID恒温控制计算
│ ├─ PWM占空比更新
│ ├─ 保护逻辑检查(过流、超温)
│ └─ 串口调试信息输出
└─ 中断服务函数
├─ ADC DMA转换完成中断
└─ 定时器更新中断(可选)
1. 主函数
int main(void) {
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM1_Init();
MX_ADC1_Init();
MX_USART2_UART_Init();
printf("Heating Dryer Control System Started\n");
printf("Target Temperature: %.1f℃\n", TEMP_SETPOINT);
// 闭合功率继电器,系统开始工作
set_power_relay(1);
HAL_Delay(1000);
while (1) {
// 读取ADC采样值
current = adc_to_current(adc_buf[0]);
temperature = adc_to_temperature(adc_buf[1]);
// PID控制计算
pwm_duty = pid_control(TEMP_SETPOINT, temperature);
set_pwm_duty(pwm_duty);
// 保护检查
protection_check();
// 串口输出调试信息(每秒1次)
static uint32_t last_print = 0;
if (HAL_GetTick() - last_print >= 1000) {
printf("Temp: %.2f℃ | Current: %.2fA | PWM: %.1f%% | Relay: %s\n",
temperature, current, pwm_duty, power_relay_state ? "ON" : "OFF");
last_print = HAL_GetTick();
}
HAL_Delay(100); // 主循环周期100ms
}
}
void Error_Handler(void) {
__disable_irq();
while (1) {
// 错误处理:闪烁LED或输出错误信息
}
}
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t *file, uint32_t line) {
}
#endif
六、硬件功能展示图及说明

PCB光板

焊接好的PCB

继电器和加热板

焊接好的板子

主循环代码

触摸NTC电阻

读取的值在提高
七、设计中遇到的难题和解决方法
7.1 ACS712 引脚接法错误问题
问题描述:初期设计时曾错误地只连接 ACS712 的引脚 1 和 3,忽略了引脚 2 和 4 的并联要求。
解决方法:重新核对 Allegro 官方数据手册,确认 30A 版本的 ACS712 内部有两根 15A 的电流导线,必须并联使用才能承受 30A 总电流。在 PCB 设计中,将引脚 1 和 2、引脚 3 和 4 分别用大面积铺铜直接连接。
7.2 大电流 PCB 发热问题
问题描述:初期设计的大电流路径线宽为 8mm,在 10A 电流下温升超过 30℃。
解决方法:将大电流路径的铺铜宽度增加到 12mm,并采用 2oz 铜厚设计。同时,在固态继电器和 ACS712 引脚周围增加铺铜面积,增强散热。
7.3 温度测量不准确问题
问题描述:初期将 NTC 直接贴在出风口壁面上,测量值比实际温度低 5~10℃。
解决方法:采用悬挂式安装方式,将 NTC 玻璃珠完全悬空在气流中,距离加热丝 10~15cm。同时,在软件中增加辐射热补偿算法,消除加热丝直接辐射的影响。
7.4 继电器开关干扰问题
问题描述:继电器开关时会产生高频干扰,导致电流和温度测量值波动,甚至引起单片机复位。
解决方法:
- 在继电器驱动电路中增加 EL357 光耦隔离,切断干扰传导路径
- 在继电器线圈两端并联 1N4007 续流二极管,吸收反电动势
- 在电源输入端增加大容量电解电容和陶瓷电容,抑制电源干扰
- 软件上采用中值滤波 + 滑动平均的复合滤波算法
7.5 跨板连接干扰问题
问题描述:两块板子之间的跨板连接线容易引入干扰,导致信号不稳定。
解决方法:
- 采用屏蔽线连接两块板子,屏蔽层单端接地
- 在跨板接口处增加 RC 滤波电路
- 尽量缩短跨板连接线的长度
八、心得体会
8.1 设计经验总结
- 安全第一:在高压电气设计中,安全永远是第一位的。必须严格遵循电气安全规范,确保足够的隔离距离和完善的保护措施。双重保护设计(固态继电器 + 功率继电器)大大提高了系统的安全性。
- 模块化设计优势:将系统划分为电源与检测板、继电器控制板和单片机控制板三个独立模块,便于调试、维护和升级。每个模块可以单独开发和测试,提高了开发效率。
- 隔离设计的重要性:在高压与低压混合系统中,多级隔离设计是确保系统稳定和安全的关键。光耦隔离、电源隔离和传感器隔离缺一不可。
- 大电流设计要点:大电流路径应采用大面积铺铜设计,尽量短直,避免尖角和突然变窄。同时,要考虑启动电流的冲击,预留足够的余量。
- 抗干扰设计:继电器开关产生的干扰是这类系统的主要干扰源。通过光耦隔离、续流二极管、电源滤波和软件滤波等多种措施,可以有效抑制干扰。
8.2 改进建议
- 增加过温保护功能,当温度超过设定上限时自动切断功率继电器电源
- 优化滤波电路,进一步提高测量精度和抗干扰能力
- 增加 LED 指示灯,直观显示电源、加热和故障状态
- 预留 RS485 通信接口,实现远程监控和控制
- 考虑采用贴片式保险丝和压敏电阻,减小 PCB 体积
- 在功率继电器输出端增加 RC 吸收电路,进一步抑制开关干扰
通过本次项目设计,我深入掌握了高压电气设计、大电流 PCB 布局、传感器应用、继电器驱动和系统集成等方面的知识。在设计过程中,遇到了许多实际问题,通过查阅资料和反复调试,最终都得到了解决。这些经验将对我今后的硬件设计工作有很大的帮助。