智能车制作

标题: 速度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)?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程序,,求指导。。   

作者: 光【宅、、’    时间: 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