本帖最后由 小鱼儿1045 于 2017-11-30 21:30 编辑
工具:1、800W的加热杯子 2、1L水 3、加热控制板
这个系统的核心部分就是温度的控制,其它的功能更多的是锦上添花,也是我这次参加比赛比较很感兴趣的部分。
程序温度控制部分采用PID控制(后面发现PD就可以达到要求,所以I就没有用了,系统就变成了PD系统),经过几个晚上的奋战调试,控制精度可以达到±0.5度。下面说说我的PID整个程序的调试思路~硬件部分,我采用可控硅+过零检测,加热方式为丢波,不是斩波~ 因为计算周期为5S,所以一个PID周期就对应500个正弦波,通过PID计算映射到这500个波形,决定加热的功率是多少。
软件部分,因为温度控制具有滞后性,所以采样的周期和PID计算的周期不能太快
我的程序温度采样间隔2秒钟(读取温度其实慢一点快一点无所谓,但是应该要小于PID计算周期),PID计算的周期为5S计算一次。
前期为了整定参数方便,固定设定目标温度为60度。整个系统工作时间为半个小时。所以只采样半个小时的温度值。程序为了计算方便,温度值统一扩大10倍,这样就不要进行浮点运算了。
第一步:整定比例系数Kp,令积分系数Ki和微分系Kd数为零。顺序是,先Kp 后Kd,最后Ki;那肯定有人会问,什么样的Kp系数是合适的呢?我自己的经验是,两个标准,(1)在规定时间内,能够形成振荡;(2)振荡的峰值距离目标值越近越好。这里要说一句,如果系统对响应时间有要求,那整定的时候还需要考虑系统的响应时间。按照上述两个条件。做了很多次实验,上传几张Kp整定的波形。
Y轴为温度值(X10) X轴为时间(X 2秒)
Kp = 2,Ki = 0,Kd = 0;
Kp = 4,Ki = 0,Kd = 0;
Kp = 6,Ki = 0,Kd = 0;
Kp = 8,Ki = 0,Kd = 0;
Kp = 10,Ki = 0,Kd = 0;
因为温度已经扩大了10倍,所以参数的整定,我基本都是选择整数系数,经过多次的实验,对比不同系数振荡最大值和最小值,最终选择Kp = 4;
第二步:Kp已经确定,那就开始整定Kd。Kd的整定我是参考下图的方法
依照上图,进行如下计算:
Kc = 4
Pc = 210 * 2 = 420 S(Pc振荡周期,我取的是X轴,(511—721)这一个周期 Pc = 721- 511 = 210)
Td = 0.15*Pc = 0.15 * 420 = 63
T = 5S (PID计算周期)
所以 Kd = (Kp*Td)/T = (4*63)/5 = 50.4 = 50
PD系统实验得到如下波形:
Kp = 4,Ki = 0,Kd = 50; 目标温度 60度
Kp = 4,Ki = 0,Kd = 50; 目标温度 75.5度
Kp = 4,Ki = 0,Kd = 50; 目标温度 80度
从上面的波形和实际测试到的数据来看,系统基本已经可以做到目标温度的±0.5度。所以积分I的部分,就没有添加了~还有一点时间,准备增加一个wifi模块,现在全民“互联网+”的时代,我们也要跟上时代~
|