有没有关于单片机温度控制PID算法的程序?原理详细一点,注释要有啊。。有分啊。 10

 我来答
jiangjiali66
2012-08-25
知道答主
回答量:31
采纳率:0%
帮助的人:17.9万
展开全部
(1) 比例系数Kp对系统性能的影响  :

  比例系数加大,使系统的动作灵敏,速度加快,稳态误差减小。Kp偏大,振荡次数加多,调节时间加长。Kp太大时,系统会趋于不稳定。Kp太小,又会使系统的动作缓慢。Kp可以选负数,这主要是由执行机构、传感器以控制对象的特性决定的。如果Kc的符号选择不当对象状态(pv值)就会离控制目标的状态(sv值)越来越远,如果出现这样的情况Kp的符号就一定要取反。
(2) 积分控制Ti对系统性能的影响  :

  积分作用使系统的稳定性下降,Ti小(积分作用强)会使系统不稳定,但能消除稳态误差,提高系统的控制精度。
(3) 微分控制Td对系统性能的影响  :

  微分作用可以改善动态特性,Td偏大时,超调量较大,调节时间较短。Td偏小时,超调量也较大,调节时间也较长。只有Td合适,才能使超调量较小,减短调节时间。
#define MAX_PID_OUTPUT 255
#define MIN_PID_OUTPUT 0
#define MAX_INTEGRATION_ERROR 25
typedef struct {
INT16U targetValue;
INT16U Kp;
INT16U Ki;
INT16U Kd;
INT16U integrationError;
INT16U prevError;
}PID;
PID xPID,yPID;
int xError,yError;
int calcPID(PID *pid, int error) //PID
{
int output;

if (pid->Ki != 0)
{
pid->integrationError += error;
// Limit the maximum integration error
if (pid->integrationError > MAX_INTEGRATION_ERROR)
{
pid->integrationError = MAX_INTEGRATION_ERROR;
}
else if (pid->integrationError < -MAX_INTEGRATION_ERROR)
{
pid->integrationError = -MAX_INTEGRATION_ERROR;
}
}
output = pid->Kp * error + pid->Ki * pid->integrationError + pid->Kd * (error - pid->prevError);
if (output > MAX_PID_OUTPUT)
{
output = MAX_PID_OUTPUT;
}
else if (output < MIN_PID_OUTPUT)
{
output = MIN_PID_OUTPUT;
}
pid->prevError = error;
return output;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式