×
单片机 > 单片机程序设计 > 详情

单片机中实现模糊控制PID程序

发布时间:2020-05-26 发布时间:
|
#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}
};

 /*=========================================== 
函数功能:温度自动调节函数 
============================================*/
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;
}

关键字:单片机  模糊控制  PID程序 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430F5529 上手小例程2