Heater PID closed-loop on PB12 (HEAT_EN) with safety protections

This commit is contained in:
2026-10-10 10:04:48 +08:00
parent 6246a87c3c
commit 30540d884d
8 changed files with 276 additions and 40 deletions
+13 -4
View File
@@ -69,8 +69,15 @@
- **命令协议 v1.0 定稿**(权威定义见根目录 `protocols.md`,帧 hex 全部脚本生成):
- M1 查温度 / M2 查上报状态 / M2S<ms> 上报间隔+开关(M2S0 停)/ M3 加热开关
(M3S1/M3S0/M3 查询)/ M4 目标温度(M4S<temp>/M4 查询)/ M888 / M999 / M9999
- M3/M4 为**预留**:仅维护软件状态(ack+可回读),真实加热硬件执行体待接入
(`command.c` 的 `heater_apply()` 桩);GUI 可先行全量联调协议
- **加热驱动 + PID 闭环实装**(`heat.h/heat.c`,PB12=HEAT_EN):
- 执行器:慢 PWM(载波 1s、占空 10% 步进 → 脉宽恒 >=100ms、开关频率恒 1Hz,
满足 2N7002K→VBE2412 PMOS 驱动电路 <=10Hz 约束)
- PID:500ms 周期(NTC 采样 100ms),位置式 + 积分限幅 + 输出量化 10% 档;
参数 Kp=8/Ki=0.05/Kd=0(初值,宏在 board_config.h,待整定)
- 安全:上电默认关;NTC 故障(OPEN/SHRT)强制关断;过温 150℃ 滞回保护;
未使能关断;使能切换/故障时复位 PID 积分
- 实测 30℃ 闭环(NTC 贴 PTC 鳍片):30s 爬升、超调 1.4℃(7%)、60s 收敛中
- M3/M4 已从软件桩切到 heat 模块(协议帧不变)
- 协议要点:全幂等(ack 丢可重发)、响应超时建议 300ms×3 次、温度一律 ASCII
- **专用 GUI 上位机 v0.1.0 完成**(`GUI/`,参照 DLPilot 分层:协议模块纯标准库 +
PySide6-Fluent 界面 + 自检 + PyInstaller):
@@ -107,8 +114,10 @@
- [x] **NTC 测温上板验证**:NTC 支路修复后读数正常(23.6~25.9℃ 稳定)。
- [ ] **B 值确认**:温度计对照实测定 `NTC_B_VALUE`(3950/3435 二选一)。
- [ ] **适配器更换**:换可靠的 USB-RS485 适配器(当前自动方向切换间歇丢响应)。
- [ ] **加热驱动**:加热功率器件驱动与控制(MOS/PWM/继电器方案待定),
接入 `command.c` 的 `heater_apply()` 桩;随后控温闭环(PID)。
- [x] **加热驱动 + PID 闭环**(PB12 慢 PWM 1s/10% 步进 + PID 500ms 周期,
安全保护齐全;实测 30℃ 闭环通过:30s 爬升、超调 1.4℃、60s 收敛中)。
- [ ] **PID 参数整定**:初值 Kp=8/Ki=0.05/Kd=0(board_config.h 宏),按真实
工况温度(80~120℃)与负载重新整定,抑制 ~7% 超调。
- [x] **专用 GUI 上位机 v0.1.0**:`GUI/` 已完成并通过 COM5 真机全链路验证
(协议按 `protocols.md`;遗留见其 README"已知事项":应用图标、加热硬件
接入后的闭环联调、固件 M3/M4 硬件执行体实现)。