我在做舵机的pid是遇到了一些问题,大家帮忙看(已解决)

2020-02-20 20:40发布

本帖最后由 FSL_TICS_ZJJ 于 2014-5-4 11:31 编辑
  1. volatile static int err=0,last_err=0,derr=0,l_last_err,dderr;
  2.   volatile static int M_PWM=0;
  3.   volatile static int Kd,Kp,Ki;
  4.   err=50-SenA;                              //偏差  50代表中间
  5.   derr=err-last_err;                       //derr dderr赋初值
  6.   dderr=err-2*last_err+l_last_err;

  7.    Kp=9;//5,7,8,9,
  8.    Ki=0;
  9.    Kd=0;

  10.       M_PWM=derr*Kp+Ki*err+dderr*Kd;                              //15   5  
  11.       //********************************************/
  12.       /********************************************/
  13.    if(M_PWM<-50)       //限位   
  14.         M_PWM=-50;
  15.       if(M_PWM>50)
  16.         M_PWM=50;
  17.      /********************************************/
  18.     l_last_err=last_err; //记录上上次偏差   
  19.      last_err=err; //记录上次偏差值
  20.      Set_Servo(50+M_PWM);  //最后赋值给舵机函数
复制代码
我现在只是把pid的三个系数一个一个的调,但是比例系数p始终不对,始终不稳定。大家看看程序有没有错误
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。