1. 项目概述:当传统中药遇上智能温控
去年帮家中老人煎药时,发现市面上的煎药器要么温度控制不精准,要么操作复杂得让老年人望而却步。这促使我萌生了用STM32开发一套智能温控系统的想法——既能精确维持药液最佳煎煮温度(通常98±2℃),又能通过手机APP远程监控。这个系统最核心的创新点在于将PID算法与中药煎煮工艺特性相结合,比如针对不同药材类型预设升温曲线,避免传统设备"一锅煮"导致的药效流失问题。
2. 系统架构设计
2.1 硬件选型与关键器件
主控选用STM32F103C8T6,这款Cortex-M3内核芯片的12位ADC和4个定时器完美适配多路温度采集和PWM输出需求。温度传感器对比了DS18B20和PT100后,最终选择MAX31865+PT100方案——虽然成本高出30%,但测量范围-200℃~+850℃和±0.5℃的精度更适合可能接触高温金属锅体的场景。
加热执行部分采用固态继电器(SSR)驱动1500W石英加热管,通过PWM占空比调节功率。这里有个细节:在PCB布局时特意将SSR驱动电路远离STM32的ADC输入通道,实测可降低约60%的温度采样噪声。
2.2 软件框架设计
系统采用前后台架构:前台是FreeRTOS实时任务(温度采集、PID计算、PWM输出等),后台通过ESP8266的AT指令与腾讯云IoT平台通信。特别设计了双看门狗机制——硬件看门狗监控整个系统,软件看门狗监测网络通信线程,在连续3次心跳包丢失后自动切换为本地存储模式。
3. 核心算法实现
3.1 自适应PID参数整定
传统PID在煎药这种大滞后系统表现不佳,我们改进为分段式PID:
c复制typedef struct {
float Kp, Ki, Kd;
uint16_t temp_threshold;
} PID_Segment;
PID_Segment segments[] = {
{8.0, 0.05, 2.0, 50}, // 低温段快速升温
{5.0, 0.1, 1.5, 80}, // 中温段防超调
{3.0, 0.2, 0.5, 100} // 高温段精细控制
};
实测显示,这种设置使温度超调量从常规PID的±5℃降低到±1.2℃。针对不同药材类型,还预设了"解表类"(快速升温)、"滋补类"(文火慢煎)等6种模式。
3.2 温度采样滤波优化
由于电磁炉环境干扰严重,采用滑动均值滤波+卡尔曼滤波的组合算法:
c复制float Kalman_Filter(float input) {
static float Q = 0.0001, R = 0.01; // 过程噪声与观测噪声
static float x_hat = 0, P = 1.0;
float K = P / (P + R);
x_hat = x_hat + K * (input - x_hat);
P = (1 - K) * P + Q;
return x_hat;
}
配合硬件上的RC低通滤波(截止频率10Hz),将采样波动从±3℃降至±0.3℃。
4. 安全防护机制
4.1 三级过热保护
- 软件层:持续30秒超温105℃触发报警
- 硬件层:双K型热电偶+比较器电路,超温立即切断SSR
- 机械层:熔断式温度保险丝(192℃动作)
4.2 防干烧检测
通过测量加热管两端电压相位差来判断水位:有水时相位差约15°,干烧时增大到60°以上。这个方法比传统电极式检测更可靠,避免了电极腐蚀问题。
5. 云平台对接实战
使用腾讯云IoT Explorer平台时,遇到最棘手的问题是MQTT断线重连机制。我们的解决方案是:
- 设置心跳间隔为60秒(默认120秒太长)
- 实现"渐进式重试":首次断线立即重连,后续每次间隔增加5秒直至120秒上限
- 本地缓存最近100条温控记录,网络恢复后自动同步
APP界面特别设计了"老人模式",将复杂参数设置隐藏在二级菜单,主界面仅保留"开始/暂停"和温度大字体显示。
6. 实测性能数据
在25℃环境温度下测试:
- 升温到98℃平均耗时8分23秒
- 恒温阶段波动范围:97.1~98.9℃
- 待机功耗:2.8W(WiFi连接时)
- 温度均匀性测试(锅内9点测量):最大温差1.4℃
7. 常见问题排查
7.1 温度采样跳变
现象:采样值偶尔出现±10℃突变
排查步骤:
- 检查PT100三线制接线是否等长
- 测量MAX31865的REFIN引脚电压(应为3.3V±1%)
- 在ADC输入脚加0.1μF去耦电容
7.2 WiFi频繁断开
解决方案:
- 修改ESP8266固件AT指令超时为5000ms
- 在PCB天线周围做净空处理
- 添加以下重连代码逻辑:
c复制void wifi_reconnect() {
for(int i=0; i<3; i++) {
if(AT_CWJAP() == SUCCESS) break;
osDelay(5000 * (i+1)); // 递增延时
}
}
8. 生产注意事项
- 电磁兼容整改:
- 在SSR控制端并联TVS二极管(SMBJ15CA)
- 电源输入端加装共模电感(额定电流3A以上)
- 防水设计:
- 所有接插件选用IP67等级
- 电路板喷涂三防漆(尤其温度采样区域)
- 老化测试方案:
- 连续72小时高温高湿运行(85℃/85%RH)
- 1000次通断电循环测试
这个项目最让我意外的是,原本为老人设计的系统,后来收到不少年轻用户反馈——他们喜欢用"保温模式"来热中药代茶饮。于是在V2.0版本中,我们增加了"奶茶保温"、"养生茶煮制"等场景模式,通过一个硬件平台满足不同需求,这或许就是嵌入式开发的魅力所在。