新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機中實現模糊控制PID程序

        單片機中實現模糊控制PID程序

        作者: 時間:2016-11-18 來源:網絡 收藏
        #define KPU 0.01

        #define KIU 0.0005
        #define KDU 0.1
        #define KE 0.06
        #define KEC 3
        char code dkp[13][13]={
        {6,6,6,5,4,4,4,3,3,2,0,0,0},
        {6,6,6,5,4,3,3,3,3,2,0,-1,-1},
        {6,6,6,5,4,3,3,3,3,2,0,-1,-2},
        {5,5,5,5,4,3,3,2,2,0,-1,-1,-2},
        {4,4,4,4,4,3,3,2,0,-1,-2,-2,-2},
        {4,4,4,3,3,2,2,0,-1,-1,-3,-3,-3},
        {4,4,4,3,3,2,0,-1,-2,-3,-3,-3,-3},
        {3,3,3,2,2,0,-1,-1,-2,-3,-3,-3,-3},
        {3,3,3,2,0,-1,-2,-2,-2,-3,-3,-3,-3},
        {3,2,2,0,-1,-1,-3,-3,-3,-3,-3,-4,-4},
        {3,2,0,-1,-2,-3,-3,-3,-3,-3,-3,-4,-6},
        {2,2,0,-1,-3,-3,-3,-3,-3,-4,-4,-4,-5},
        {0,0,0,-1,-3,-3,-3,-3,-3,-4,-6,-5,-6}
        }; //K模糊控制
        char code dki[13][13]={{-6,-5,-6,-4,-3,-3,-3,-3,-2,-1,0,0,0},
        {-5,-5,-5,-4,-3,-3,-3,-3,-2,-1,0,0,0},
        {-6,-5,-6,-4,-3,-3,-2,-2,-2,-1,0,0,0},
        {-5,-4,-4,-3,-3,-3,-2,-1,-1,0,2,2,2},
        {-6,-4,-3,-3,-2,-2,-2,-1,0,2,3,3,3},
        {-4,-4,-3,-3,-2,-1,-1,0,2,2,3,3,3},
        {-3,-3,-3,-3,-2,-1,0,2,3,3,4,4,4},
        {-3,-3,-3,-1,-1,0,2,2,3,3,4,5,5},
        {-3,-3,-2,-1,0,2,3,3,3,3,4,5,6},
        {-1,-1,-1,0,2,2,3,3,3,4,5,5,6},
        {0,0,0,2,3,3,3,3,4,5,6,6,6},
        {0,0,0,2,3,3,3,3,4,5,6,6,6},
        {0,0,0,2,3,3,4,4,4,5,6,6,6}
        };
        char code dkd[13][13]={{3,0,-2,-3,-6,-5,-6,-5,-6,-4,-3,0,3},
        {3,0,-2,-3,-5,-4,-4,-4,-4,-3,-3,0,2},
        {3,0,-2,-3,-6,-4,-3,-3,-3,-3,-2,-1,0},
        {2,0,-2,-3,-4,-4,-3,-3,-3,-3,-2,-1,0},
        {0,-1,-2,-3,-3,-3,-3,-3,-2,-2,-2,-1,0},
        {0,-1,-2,-3,-3,-3,-3,-3,-2,-2,-2,-1,0},
        {0,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-1,0},
        {0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0},
        {0,0,0,0,0,0,0,0,0,0,0,0,0},
        {2,1,-1,0,2,2,2,2,2,2,2,2,2},
        {6,1,-2,0,3,3,3,3,3,3,3,4,6},
        {6,2,1,2,3,3,3,3,3,3,3,4,6},
        {6,5,4,4,4,4,4,3,3,3,3,4,6}
        };

        本文引用地址:http://www.104case.com/article/201611/315911.htm

        /*===========================================
        函數功能:溫度自動調節函數
        ============================================*/
        void fuzzypid(void)
        {
        uchar te=0,tec=0;
        float kp,ki,kd;
        kp=0.35;
        ki=0.001;kd=1.8;
        Error = setPoint - rellytemp;
        sumError+=Error;
        dError =Error - LastError;
        LastError=Error;
        te=(uchar)(KE*Error+0.5)+6;
        tec=(uchar)(KEC*dError+0.5)+6;
        kp=kp+KPU*dkp[te][tec];
        ki=ki+KIU*dki[te][tec];
        kd=kd+KDU*dkd[te][tec];
        uout=kp*Error+ki*sumError+kd*dError;
        open_time=(int)(uout+0.5);
        if(open_time>40)//PID限幅
        open_time=40;
        if(open_time<1)
        open_time=0;
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 乌兰察布市| 饶平县| 潞城市| 靖江市| 且末县| 巴南区| 灵丘县| 磐石市| 临沂市| 内黄县| 廉江市| 道孚县| 怀远县| 东阳市| 陈巴尔虎旗| 临朐县| 团风县| 左云县| 盘锦市| 东乡族自治县| 武强县| 资阳市| 龙游县| 惠水县| 庆元县| 梁河县| 赤峰市| 南昌县| 砚山县| 忻州市| 监利县| 津市市| 南充市| 温宿县| 巴林右旗| 临沭县| 宁远县| 扶风县| 赤水市| 文化| 澜沧|