温控的具体实现:三

经过一段时间的调试,我对PID控制有了进一步的理解,现将其中的一些理解写在下面。

以PID控制温度为例,PID算法输入的是温度值的误差,而算法输出的是误差经过比例,微分和积分运算后得到的结果。但是我们要用这个结果来控制PWM信号的占空比,那么就需要将PID算法的输出归一化。具体怎么归一化我还没有研究很透彻,但是经过测试,我发现对于我的系统而言,乘以系数0.0004可以符合要求。

即: result = IncPIDCalc()*0.0004*50000;          //计算出输出的PWM信号占空比对应的寄存器值

if (result <= 0)
TA1CCR2 = 0; // CCR2 original PWM 0
else if(result <=50000)
TA1CCR2 = result;
else
TA1CCR2 = 50000;

下面是调试的结果:

一:设置Kp=10,Ki=10,Kd=0.3;

1:温度T设置为150℃,温升曲线为:

温控的具体实现:三_第1张图片

2:设置温度T=100℃,温升曲线为:

温控的具体实现:三_第2张图片

你可能感兴趣的:(温控的具体实现:三)