核心控制算法
有人觉得控制算法很神秘,其实很简单;
int TAD=0; //温度AD值
int pwm=327; //占空比一半
int setupAD=900; //设置的AD值
void ctrl0(){
if (TAD<setupAD-100){
pwm=65535; //100%
}
else {
if (TAD>setupAD){
pwm=100; //基本相当于关闭
}
else{
//自动计算PWM
pwm=(setupAD-TAD)*65535/100;
}
}
}
这个函数就是控制算法,可以看到总共没有几行代码,大致的意思是每次获取温度测量的AD值(TAD)之后,调用一下本函数,根据目标AD值(setupAD)来计算一下需要加热的PWM占空比;
可以看到,当TAD与目标setupAD 差值比较大的时候,100%全力加热;当100以内,根据差值大小动态按比例调整PWM值;当温度超过预设温度时,给一个非常小的PWM维护,当然也可以测底关闭;
当然这只是原理,实际请参见源代码,多个几个分组。