智能车制作
标题:
速度PID为什么没有达到控制电机的目的?求教
[打印本页]
作者:
疯鸟嘛
时间:
2014-4-4 08:44
标题:
速度PID为什么没有达到控制电机的目的?求教
本帖最后由 疯鸟嘛 于 2014-4-4 08:46 编辑
我是用DMA采集出来编码器的脉冲,大概全速转是300+,而我的控制电机的PWM精度是1000,是否需要将其转化为同意数量级?
无论我改变什么参数都不能让电机趋近我给定的值。这是为啥啊?
void speedPid(int stdSpeed,int curSpeed) //给定速度和采集出来的速度。
{
speedError=stdSpeed-curSpeed;
absSpeedError = (speedError>0)?speedError
speedError*(-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程序,,求指导。。
作者:
光【宅、、’
时间:
2014-4-15 20:07
(Kp*speedError+Ki*(speedError-preSpeedError)+Kd*(speedError-2*preSpeedError+lastSpeedError))。。。。。(Ki*speedError+Kp*(speedError-preSpeedError)+Kd*(speedError-2*preSpeedError+lastSpeedError))
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2