智能厨电精准温控技术方案:PID算法实战
做过厨电研发的都懂,控温不是"把温度维持在设定值"那么简单。锅里有食材时热负载在变,环境温度在变,电网电压也在变。一个好的PCBA温控方案,要求单片机MCU在各种扰动下保持稳定输出。
▎PID调参的真实过程
去年做了一个智能炒菜机项目,目标温度180°C,开始用教科书上的Z-N法整定参数。结果惨不忍睹:
Kp=8, Ki=0.2, Kd=1 → 超调量32%,稳定时间280秒
Kp=5, Ki=0.1, Kd=2 → 超调量18%,稳定时间180秒
Kp=4, Ki=0.08, Kd=3 → 响应太慢,跟踪不上
后来换了个思路。因为厨电的最大特点是热负载变化不可预测——客户可能一次性倒进500g冷食材,锅体温度骤降40°C。这种情况PID如果按空载调参,响应完全跟不上。
▎最终采用的方案:分段PID + 前馈补偿
阶段一:升温期(偏差>30°C)→ 全功率加热,不经过PID。目的就是快。
阶段二:逼近期(偏差5-30°C)→ 启用一组"激进"的PID参数(Kp=6, Ki=0.15, Kd=2),目标是把温度快速拉到目标值附近。
阶段三:保持期(偏差<5°C)→ 切换到"保守"参数(Kp=3, Ki=0.05, Kd=4),目标是消除静差、抑制振荡。
前馈补偿:当检测到锅盖打开(通过光电开关信号),预判用户即将加入食材,提前将输出功率提升到80%。
▎几个踩过的坑
坑一:ADC采样噪声导致微分项震荡
NTC热敏电阻经过分压电路进ADC,采样值在±2LSB范围内跳动是常态。微分项对噪声极其敏感——12位ADC的1LSB波动,经Kd=4放大后,输出就跳了4%。解决:对采样值做8次滑动平均滤波后再进PID。
坑二:积分饱和导致"飞温"
早期版本没有做抗积分饱和,当设定温度从180°C下调到100°C时,积分项累积了巨大的正向偏差,导致加热管持续工作,实际温度冲到210°C才回落。解决:当输出达到饱和(100%或0%)时,停止对应方向的积分累加(clamping)。