发表于:2007/5/11 16:40:00
#0楼
请帮我看看这个PID算法,怎么转速一直都是增大的, 而不是按照正弦曲线变化,
谢谢
PID()
{
Integrate =Pre_Integrate+errspeed;
Derivative =errspeed-Pre_Errspeed;
/***********计算PID的输出*********************
Control_Output =speedKp*errspeed+speedTi*Integrate+speedTd*Derivative; //PWM输出
Pre_Errspeed =errspeed;
Pre_Integrate =Integrate;
}
CAL() // 定时做PID计算
{
pulse_error=prepulse-pulse; // pulse_error为脉冲差值
prepulse=pulse; //PULSE为旋转编码器测出的电机转速(脉冲个数),
temp1=6*sin(temp); // 模拟正弦函数曲线
temp=temp+0.1;
errspeed=((int)temp1-pulse_error; // 期望值与当前值的差值, 用来作PID计算
PID();
}
谢谢
PID()
{
Integrate =Pre_Integrate+errspeed;
Derivative =errspeed-Pre_Errspeed;
/***********计算PID的输出*********************
Control_Output =speedKp*errspeed+speedTi*Integrate+speedTd*Derivative; //PWM输出
Pre_Errspeed =errspeed;
Pre_Integrate =Integrate;
}
CAL() // 定时做PID计算
{
pulse_error=prepulse-pulse; // pulse_error为脉冲差值
prepulse=pulse; //PULSE为旋转编码器测出的电机转速(脉冲个数),
temp1=6*sin(temp); // 模拟正弦函数曲线
temp=temp+0.1;
errspeed=((int)temp1-pulse_error; // 期望值与当前值的差值, 用来作PID计算
PID();
}