在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            單片機(jī)PID程序

            作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
            剛剛做的一個(gè)恒溫箱,采用PID算法,3秒一個(gè)輸出周期,輸出量為0-150,各參數(shù)量化到0-99,便于用戶修改,為抵消散熱,加入維持功率系數(shù),程序如下(溫度放大了10倍)
            typedef struct DeltPID
            {
            char PIDTemp;//pid開關(guān)溫差
            char P;
            char I;
            char D;
            char PIDKc;//維持功率
            }data DELTPID;
            int data PID_Buff[3];//溫度緩沖區(qū)-參與PID運(yùn)算
            int data PID_Value;//輸出控制量
            DELTPID PID=
            {
            50,
            50,
            50,
            50,
            50
            }; //增量pid結(jié)構(gòu)體
            DELTPID E_PID;
            unsigned char data HeatCount = 0;
            void PID_Out()
            {
            if (HeatCount>0)
            {
            HeatCount--;
            HEAT_START;//開始加熱
            }
            else
            {
            HEAT_STOP;//停止加熱
            }
            }
            int data PID_Buff[3];//溫度緩沖區(qū)-參與PID運(yùn)算
            DELTPID PID=
            {
            50,
            50,
            50,
            50,
            50
            }; //增量pid結(jié)構(gòu)體
            DELTPID E_PID;
            #define MAX_DELT 15//最大增量
            void PID_Ctrl()
            {
            static int ei;//當(dāng)前偏差
            int last_ei;//
            int delt_ei;//偏差變化量
            //刷新最近兩次偏差
            unsigned char i_sign;//是否取消積分作用
            unsigned char c_sign;//是否取消維持功率
            int delt_value;//增量pid輸出值
            last_ei = ei;
            ei = TempSet - PID_Buff[0];
            delt_ei = ei - last_ei;//求出偏差變化量
            if (ei > PID.PIDTemp)//當(dāng)前溫差大于設(shè)定溫差
            {
            PID_Value = 150;//全功率輸出
            return;
            }
            else if (ei < -5)//超調(diào)
            {
            PID_Value = 0;//停止輸出
            return;
            }
            //增量pid控制
            if (((ei>0) && (delt_ei<0)) || ((ei<0) && (delt_ei>0)))
            {
            i_sign = 0;//專家pid測量值正向目標(biāo)值靠近,取消積分作用
            }
            else
            {
            i_sign = 1;
            }
            if ((ei<0) && (delt_ei>0))
            {
            c_sign = 1;//溫度正在從高溫向目標(biāo)值靠近
            }
            else
            {
            c_sign = 0;
            }
            delt_value = (float)PID.P/17*delt_ei + (float)PID.I/100*ei*i_sign-
            (float)PID.D/200*(PID_Buff[0]-2*PID_Buff[1]+PID_Buff[2]) + (float)PID.PIDKc/1000*TempSet*c_sign;
            if (delt_value>MAX_DELT)
            {
            delt_value = MAX_DELT;
            }
            else if (delt_value<(-MAX_DELT))
            {
            delt_value = -MAX_DELT;
            }
            PID_Value+=delt_value;
            if (PID_Value<0)
            {
            PID_Value = 0;
            }
            else if (PID_Value>150)
            {
            PID_Value = 150;
            }
            }



            關(guān)鍵詞: 單片機(jī)PID程

            評論


            技術(shù)專區(qū)

            關(guān)閉