欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1800|回復: 2
收起左側

請幫忙解讀下單片機PID溫度控制程序,看不懂

[復制鏈接]
ID:700941 發表于 2020-4-19 19:37 | 顯示全部樓層 |閱讀模式
u8 err = 0,last_err = 0,err_add = 0,err_weifen = 0;
void Timer1Interrupt(void) interrupt 3
{                  
        static u16 value1,cnt_10ms=0;
    TH1 = 0x3C;                                          //10ms
    TL1 = 0xB0;
        value1++;
        cnt_10ms = 0;
        if(tDisp < Set_Num)        //實際溫度較低 升溫
        {                 
                err = (Set_Num - tDisp)/10.0;         //誤差
                err_add += err;                                         //累計誤差
                err_weifen = err -         last_err;         //誤差變化率
                last_err = err;                                         //更新誤差
                PWM_SW = PID_P * err + PID_I * err_add + PID_D * err_weifen;
                if(PWM_SW == 1)PWM_SW = 2;
                Shengwen_IN1 = 1;        
                Shengwen_IN2 = 0;         
                Jiangwen_IN1 = 0;        
                Jiangwen_IN2 = 0;
                PWM_JW = 0;
        }
        else if(tDisp > Set_Num)        //實際溫度較高 降溫
        {                  
                err = (tDisp - Set_Num)/10.0;         //誤差
                err_add += err;                                         //累計誤差
                err_weifen = err -         last_err;         //誤差變化率
                last_err = err;                                         //更新誤差
                PWM_JW = PID_P * err + PID_I * err_add + PID_D * err_weifen;
                if(PWM_JW == 1)PWM_JW = 2;
                Shengwen_IN1 = 0;        
                Shengwen_IN2 = 0;         
                Jiangwen_IN1 = 1;        
                Jiangwen_IN2 = 0;
                PWM_SW = 0;                                
        }
        else
        {                                             
                PWM_SW = 0;               
                PWM_JW = 0;
        }
        if(value1<PWM_SW)
        {
                ENSW = 1;
        }
        else
        {
                ENSW = 0;
        }
        if(value1<PWM_JW)   //                                      
        {
                ENJW = 1;
        }
        else
        {
                ENJW = 0;
        }         
        if(value1>10)
        {
                value1 = 0;
        }
}
回復

使用道具 舉報

ID:700941 發表于 2020-4-20 08:58 | 顯示全部樓層
有人幫忙解答下嗎?
回復

使用道具 舉報

ID:89515 發表于 2020-4-20 11:51 來自觸屏版 | 顯示全部樓層
這個是個復雜的問題,最好自己還是先學下理論。如果可以自己寫更好,不能就調用別人寫好的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表