亲,坑啊!
1、
float idata TempSum1=0, Kp=2,Ki=0.5;//存放前5次温度和
这谁写的注释?
if(flag1==1)
{
ArrayTempe[m]=SetTemperature-Temperature;
m=m+1;
}
if(m==2)
{
if(flag1==1)
{
ek0=ArrayTempe[0];
ek1=ArrayTempe[1];
}
if(flag1==0)
{
ek1=SetTemperature-Temperature;
}
Uk=Kp*(ek1-ek0+Ki*ek1);
就看到这。不是你截取了人家代码,就是他瞎写的!完全和定义不符合。
ek1中心温度!ek1-ek0偏差!求个平均值!这不是糊弄老师吗!毕业设计是不!找个专业论文参考一下吧。这个确实差点意思,你想想毕业设计说啥!太空洞了。
2、至于你的波形吗!有几种可能:第一、时间太长。你在细看看示波器;第二、PWM时效性不好,即使你做出来了,那pwm也是不规则的。还真不如我这个程序呢!
你如果想要规则pwm两点:
第一、在加一个定时器,并考虑定时器起停和嵌套问题。(三套定时器:控制采样;控制pwm周期;控制pwm发生)
第二、比如哈,pic带交错的,msp430带各种时钟源,等等吧。可控性都比他强,仿真效果好。
3、说了半天,是纠正并帮你完善,自己合计合计我说对不。我要做的是这几件事:第一、加入显示;第二、加入你那个定时采样和在和设定值取平均偏差,并给pwm。对吧!OK!