我在做舵机的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始终不对,始终不稳定。大家看看程序有没有错误
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
a752109494
1楼-- · 2020-02-20 21:34
怎么样的不稳定
momo_li
2楼-- · 2020-02-20 22:25
 精彩回答 2  元偷偷看……
thy110
3楼-- · 2020-02-21 04:08
yahui123 发表于 2014-5-1 20:37
M_PWM+=derr*Kp+Ki*err+dderr*Kd; 这是增量式的用法,要加上M_PWM这个值

是这样的,我修改了一下,现在好了,谢谢大家了
FSL_TICS_ZJJ
4楼-- · 2020-02-21 08:39
thy110 发表于 2014-5-1 20:50
是这样的,我修改了一下,现在好了,谢谢大家了

楼主以后问题解决了,还请帮我在你的标题上加上个(已解决),这样方便我们查看未结帖!
thy110
5楼-- · 2020-02-21 12:01
FSL_TICS_ZJJ 发表于 2014-5-4 11:30
楼主以后问题解决了,还请帮我在你的标题上加上个(已解决),这样方便我们查看未结帖! ...

怎么加已解决啊,我一直都不会用
FSL_TICS_ZJJ
6楼-- · 2020-02-21 13:52
thy110 发表于 2014-5-4 14:47
怎么加已解决啊,我一直都不会用

就是点击一楼的编辑,然后再标题后面加上(已解决),我已经帮你加好了。以后你就自己加哦!

一周热门 更多>