核心控制算法

有人觉得控制算法很神秘,其实很简单;

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维护,当然也可以测底关闭;

当然这只是原理,实际请参见源代码,多个几个分组。