智能车制作

标题: 各位大牛!小弟实在是蛋疼了,帮忙看看这蛋疼的PID波形,是什么问题啊? [打印本页]

作者: 汪洋大海    时间: 2012-5-17 13:00
标题: 各位大牛!小弟实在是蛋疼了,帮忙看看这蛋疼的PID波形,是什么问题啊?
[attach]24643[/attach]
各位大牛!小弟实在是蛋疼了,帮忙看看这蛋疼的PID波形,是什么问题啊,车启动的时候没有问题,速度可以很稳的跟踪给定值(图中蓝线),可是等一会就会有跳变,编码器反馈值(图中绿线)会出现突然降低到某一值,而且每次都是一个固定的数值。是编码器问题吗?编码器用铝合金架安装会引起这种问题吗?有人说这样静电很大!真心求教各位大牛!!!

作者: 汪洋大海    时间: 2012-5-17 13:00
自己先顶一下,别沉了!
作者: 基佬    时间: 2012-5-17 13:15
会不会是算法的问题?
作者: QianDE1991    时间: 2012-5-17 14:11
为什么你们的PID调出来都那么稳定啊???我的波动很大啊~~~
作者: znfc2    时间: 2012-5-17 14:39
QianDE1991 发表于 2012-5-17 14:11
为什么你们的PID调出来都那么稳定啊???我的波动很大啊~~~

求解释啊!!!!
作者: QianDE1991    时间: 2012-5-17 15:18
znfc2 发表于 2012-5-17 14:39
求解释啊!!!!

[attach]24646[/attach]
这个是我出来的,黄的是PWM,绿色是设定值,红色是舵机反馈值。这个绿色设定值的时间是每3S变化一次(产生方波效果)。空载状态测试~

我的波形一直在震荡的,而且幅度还挺大的。看你们的波形那么平滑,而且都衰减的很快,跟踪的很好,我都不知道是怎么弄的~~~烦恼了。不知道是不是我的PID的函数写错了~~~郁闷~~


补充内容 (2012-5-21 12:35):
红色是电机的反馈,弄错了
作者: Goolloo    时间: 2012-5-17 16:57
我看着想溢出。。。
作者: xinmengwangran    时间: 2012-5-17 18:11
测速可能存在问题!
作者: 汪洋大海    时间: 2012-5-17 21:07
znfc2 发表于 2012-5-17 14:39
求解释啊!!!!

这个……强大的基友都来了我这就有点班门弄斧了,这个波形只是PI的,没用到D,帮忙解释一下图中的问题,拜托了!!!
作者: 汪洋大海    时间: 2012-5-17 21:08
Goolloo 发表于 2012-5-17 16:57
我看着想溢出。。。


作者: 汪洋大海    时间: 2012-5-17 21:16
QianDE1991 发表于 2012-5-17 14:11
为什么你们的PID调出来都那么稳定啊???我的波动很大啊~~~

这个……难道是RP?
作者: 532327593    时间: 2012-5-17 21:40
xinmengwangran 发表于 2012-5-17 18:11
测速可能存在问题!

我测速感觉在跳变,空载的情况下,跳变6左右,3ms读的一次值,这个正常吗

作者: znfc2    时间: 2012-5-18 09:01
汪洋大海 发表于 2012-5-17 21:07
这个……强大的基友都来了我这就有点班门弄斧了,这个波形只是PI的,没用到D,帮忙解释一下 ...

我换了个编码器,依然有问题,我也不知道问题何在
作者: cqu_cj    时间: 2012-5-18 12:27
znfc2 发表于 2012-5-17 14:39
求解释啊!!!!

你们的PID是不是太过复杂了?我们用最简单的增量式PID反应很快很稳定!
作者: znfc2    时间: 2012-5-18 15:14
cqu_cj 发表于 2012-5-18 12:27
你们的PID是不是太过复杂了?我们用最简单的增量式PID反应很快很稳定!

我用的也是简单的增量式pid~~
作者: 汪洋大海    时间: 2012-5-18 17:51
znfc2 发表于 2012-5-18 09:01
我换了个编码器,依然有问题,我也不知道问题何在

[attach]24686[/attach]
速度给定值后采回来的速度值是这样的,疑似编码器坏了!

作者: gzhcontent    时间: 2012-5-19 11:59
QianDE1991 发表于 2012-5-17 15:18
这个是我出来的,黄的是PWM,绿色是设定值,红色是舵机反馈值。这个绿色设定值的时间是每3S变化一次(产 ...

我跟你的一样 求解释
作者: QianDE1991    时间: 2012-5-19 12:39
cqu_cj 发表于 2012-5-18 12:27
你们的PID是不是太过复杂了?我们用最简单的增量式PID反应很快很稳定!

你的PID就是书上的那个DU=kp(e[0]-e[-1])+ki(e[0] )+kd(e[0]-2e[-1]+e[-2])?????[attach]24712[/attach]
我看网上有些写着是增量式的,用的却是位置式的。

还有你是多久读取一次编码器的反馈??

是不是PID的运算放在while(1)里面的啊???

我PID现在都不知道怎么弄了
你能给我看看你的PID的调整结果的波形吗???




作者: QianDE1991    时间: 2012-5-19 12:44
有些用的是△Uk=A*e(k)+B*e(k-1)+C*e(k-2)
有些用的是我上面讲的

到底那个才对的啊????
作者: QianDE1991    时间: 2012-5-19 12:45
还有PID是不是采集一次反馈,计算一次?????
作者: QianDE1991    时间: 2012-5-19 13:04
znfc2 发表于 2012-5-18 09:01
我换了个编码器,依然有问题,我也不知道问题何在

你用的增量式PID,调整的参数是PI的还是PID的???还是PD的????

作者: cqu_cj    时间: 2012-5-19 15:33
QianDE1991 发表于 2012-5-19 12:39
你的PID就是书上的那个DU=kp(e[0]-e[-1])+ki(e[0] )+kd(e[0]-2e[-1]+e[-2])?????
我看网上有些写着是增 ...

就是这个,40ms读一次,100线的
作者: QianDE1991    时间: 2012-5-19 16:25
cqu_cj 发表于 2012-5-19 15:33
就是这个,40ms读一次,100线的

在读下一次反馈之前是不是一直用前一次的反馈重复运算???

还是读一次反馈计算一次??

作者: QianDE1991    时间: 2012-5-19 16:26
汪洋大海 发表于 2012-5-18 17:51
速度给定值后采回来的速度值是这样的,疑似编码器坏了!

你这个软件是什么??能跟我讲下吗??


作者: 汪洋大海    时间: 2012-5-19 16:27
QianDE1991 发表于 2012-5-19 16:26
你这个软件是什么??能跟我讲下吗??

这是我们软件班的基友自己写的上位机,呵呵
作者: cqu_cj    时间: 2012-5-19 16:29
QianDE1991 发表于 2012-5-19 16:25
在读下一次反馈之前是不是一直用前一次的反馈重复运算???

还是读一次反馈计算一次??

每个周期只读一次啊!,我们采集完图像读一次,然后在算法中都用那个值

作者: QianDE1991    时间: 2012-5-19 16:31
cqu_cj 发表于 2012-5-19 16:29
每个周期只读一次啊!,我们采集完图像读一次,然后在算法中都用那个值

那就相当于读一次,计算上百次或以上(用同一个设定值和反馈值??)

作者: QianDE1991    时间: 2012-5-19 16:33
汪洋大海 发表于 2012-5-19 16:27
这是我们软件班的基友自己写的上位机,呵呵

哦哦,这样的啊~~我有基友的软件,只是基友说那个发送间隔10MS左右,这样我如果要3MS发一次会出问题,所以想问问的

作者: QianDE1991    时间: 2012-5-19 16:36
cqu_cj 发表于 2012-5-19 16:29
每个周期只读一次啊!,我们采集完图像读一次,然后在算法中都用那个值

int pid_calc_v2(void)
{
  int change;
  pid->error_0=pid->set-pid->back;
  #if 0
  if (abs1(pid->error_0) < dead_band) //0-max加速阶段,积分项不用,即积分项用于微小控制,可能在小车中可去掉
  {
    pid->KD =0;
  }
  else
  {
   pid->KD=(float)(0.50);
  }
  #endif
  change=pid->KP*(pid->error_0-pid->error_1)+pid->KI*pid->error_0

         +pid->KD*(pid->error_0-2*pid->error_1+pid->error_2);

  pid->error_1=pid->error_0;
  pid->error_2=pid->error_1;
  return(change);

}


这个是我写的,error_0是当前误差error_1是前一次误差,error_2是上上次误差

不知道我这样有没有错???


作者: 汪洋大海    时间: 2012-5-19 16:55
QianDE1991 发表于 2012-5-19 16:33
哦哦,这样的啊~~我有基友的软件,只是基友说那个发送间隔10MS左右,这样我如果要3MS发一次会出问题,所以 ...

我们这个有五个通道,发送函数是放在主函数的for循环中的,循环一次发一次,发多了或者波特率过高电脑会死机{:soso_e129:}
作者: z_7    时间: 2012-5-19 17:01
像是测速的计数器溢出了
作者: QianDE1991    时间: 2012-5-19 17:26
汪洋大海 发表于 2012-5-19 16:55
我们这个有五个通道,发送函数是放在主函数的for循环中的,循环一次发一次,发多了或者波特 ...

过程中计算了很多次????

作者: QianDE1991    时间: 2012-5-19 21:24
汪洋大海 发表于 2012-5-19 16:55
我们这个有五个通道,发送函数是放在主函数的for循环中的,循环一次发一次,发多了或者波特 ...

发送一次大概是多少时间????

你读取一次反馈,到下一次读取反馈之间的时间是不是进行多次PID计算???

作者: 汪洋大海    时间: 2012-5-19 22:04
QianDE1991 发表于 2012-5-19 21:24
发送一次大概是多少时间????

你读取一次反馈,到下一次读取反馈之间的时间是不是进行多次PID计算? ...

速度采样和控制是在场中断里面进行的!
作者: 汪洋大海    时间: 2012-5-19 22:20
z_7 发表于 2012-5-19 17:01
像是测速的计数器溢出了

计数器每20毫秒清零一次,最多捕捉到3000脉冲!

作者: QianDE1991    时间: 2012-5-19 23:14
汪洋大海 发表于 2012-5-19 22:20
计数器每20毫秒清零一次,最多捕捉到3000脉冲!

你那个波形是怎么测试出来的????

设定值用定值,每20MS读取反馈,然后计算后发到电脑显示????

作者: 汪洋大海    时间: 2012-5-20 00:39
QianDE1991 发表于 2012-5-19 23:14
你那个波形是怎么测试出来的????

设定值用定值,每20MS读取反馈,然后计算后发到电脑显示???? ...

就是介个样子滴!
作者: zsk-    时间: 2012-5-21 11:41
QianDE1991 发表于 2012-5-17 15:18
这个是我出来的,黄的是PWM,绿色是设定值,红色是舵机反馈值。这个绿色设定值的时间是每3S变化一次(产 ...

压力很大
作者: 0726silence    时间: 2012-5-22 12:42
:o:o:o:o:o:o:o:o:P:P:P:P:P:$:$:$
作者: 一号放牛娃    时间: 2012-5-22 12:53
汪洋大海 发表于 2012-5-17 21:08

会不会是溢出

作者: Smile_Sun    时间: 2012-5-22 18:13
先邦邦,再pid

作者: 汪洋大海    时间: 2012-5-22 21:07
Smile_Sun 发表于 2012-5-22 18:13
先邦邦,再pid

PID稳了再加Bang_Bang

作者: 汪洋大海    时间: 2012-5-22 21:16
0726silence 发表于 2012-5-22 12:42

表情帝???

作者: 汪洋大海    时间: 2012-5-22 21:18
z_7 发表于 2012-5-19 17:01
像是测速的计数器溢出了

试过了,用100线编码器也这样……估计问题在程序上!

作者: 叶林杰00    时间: 2012-6-10 14:23
学习学习,十字我过不去
作者: 汪洋大海    时间: 2012-6-12 11:43
好久没有上论坛了,为了打破论坛上一贯的问题解决楼主就销声匿迹的格局,我特来告诉大家我是怎么解决这个问题的!
问题产生原因:模拟摄像头场中断信号的输出规则;速度控制在场中断执行!
其实你若仔细观察波形就会发现,出现凹槽的脉冲数刚好是预想值得一半!
在这里我就不详细解释了,也确实水平有限解释不清楚,只希望大家以后遇到这种问题后可以有个参考!
作者: 汪洋大海    时间: 2012-6-12 11:46
叶林杰00 发表于 2012-6-10 14:23
学习学习,十字我过不去

十字交叉我也没有什么好的办法,但是补偿边沿倒是勉强可以!

作者: 易湘鑫    时间: 2012-7-5 16:05
汪洋大海 发表于 2012-5-22 21:07
PID稳了再加Bang_Bang

能详细点吗??
作者: hanchao    时间: 2012-7-6 09:31
只用PD控制就行了,不用I
作者: qxyysh@163.com    时间: 2012-7-7 09:57
QianDE1991 发表于 2012-5-17 15:18
这个是我出来的,黄的是PWM,绿色是设定值,红色是舵机反馈值。这个绿色设定值的时间是每3S变化一次(产 ...

编码器采样周期是多少啊?

作者: qxyysh@163.com    时间: 2012-7-7 10:01
QianDE1991 发表于 2012-5-19 12:44
有些用的是△Uk=A*e(k)+B*e(k-1)+C*e(k-2)
有些用的是我上面讲的

都对,只是形式不一样。上面的公式同项合并一下就是下面的形式了。




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2