金牌会员
- 积分
- 2387
- 威望
- 1139
- 贡献
- 662
- 兑换币
- 680
- 注册时间
- 2013-7-27
- 在线时间
- 293 小时
|
本帖最后由 疯鸟嘛 于 2014-4-4 08:46 编辑
我是用DMA采集出来编码器的脉冲,大概全速转是300+,而我的控制电机的PWM精度是1000,是否需要将其转化为同意数量级?
无论我改变什么参数都不能让电机趋近我给定的值。这是为啥啊?
void speedPid(int stdSpeed,int curSpeed) //给定速度和采集出来的速度。
{
speedError=stdSpeed-curSpeed;
absSpeedError = (speedError>0)?speedErrorspeedError*(-1)); //
if(absSpeedError > 30)
Kp = 1;//1
else
Kp = 1;// 0.175
pwmMotor+=(int)(Kp*speedError+Ki*(speedError-preSpeedError)+Kd*(speedError-2*preSpeedError+lastSpeedError));
if(pwmMotor<=0)
pwmMotor=0;
else if(pwmMotor>=1000)
pwmMotor=1000;
//FTM_PWM_init(FTM0, CH0, 10000, pwmMotor);
//FTM_PWM_init(FTM0, CH1, 10000, 500);
MotorPWM1(pwmMotor);
preSpeedError=speedError;
lastSpeedError=preSpeedError;
}
这是PID程序,,求指导。。
|
|