搜索
bottom↓
回复: 67

PID 控制 真真愁死我也

[复制链接]

出0入0汤圆

发表于 2012-5-18 18:01:11 | 显示全部楼层 |阅读模式
PID 控制舵机
最近在弄PID控制舵机,问题不断,响应曲线太差
请大家指教一下。先上图
如图1
1.黄色的响应曲线是我的目标曲线,蓝色的曲线是我目前调出的。
  如果我要得到黄色的无超调响应曲线,那么我的Kp项就必须设的很小,这样一来,我的响应时间就太长了。
  现在我没有 I 项,我把 P 项设的很小,虽然超调小,但是响应时间长,我加上 D 项,想以此提高响应速度,但是似乎没有效果,如图2.
2.因为规定(虽然在大家眼里是很简单的东西),我无法把程序贴出来给大家看。现在有个疑问:
   在用单片机实现微分时:
                        {
                                      derror = error - lasterror;
                                      lasterror = error;
                                    }
     但是也有人告诉我应该是这样:
                       {
                                     derror = error - 2 *lasterror + 上上次的误差值;
                       }
请问哪种是对的?
3. 调试中的图。
图3,图4,图5
4.最后想请教大家,分享一下你们的成功经验,帮我找出一条路来。
                                    

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-5-18 18:35:38 | 显示全部楼层
那两个都是正确的路,第一个是位置式的PID,第二个是增量式PID

出0入0汤圆

 楼主| 发表于 2012-5-18 19:46:32 | 显示全部楼层
tiancaigao7 发表于 2012-5-18 18:35
那两个都是正确的路,第一个是位置式的PID,第二个是增量式PID

能不能指点我一下,我比较头大,调了一周了,结果相差很大

出0入0汤圆

发表于 2012-5-18 21:34:00 | 显示全部楼层
ln08136207 发表于 2012-5-18 19:46
能不能指点我一下,我比较头大,调了一周了,结果相差很大

连续PID的输出方程为:u(t)=Kp*e(t)+Ki*∫e(t)dt+Kd*de(t)/dt------------------------(0)式

离散化后,为:
              u(k)=Kp*e(k)+Ki*(e(0)+e(1)+...+e(k))+Kd*(e(k)-e(k-1));  --------------(1)式

k-1时刻,u(k-1)=Kp*e(k-1)+Ki*(e(0)+e(1)+...+e(k-1))+Kd*(e(k-1)-e(k-2)); --------------(2)式

(1)式减去(2)式,△u(k)=Kp*(e(k)-e(k-1))+Ki*e(k)+Kd*(e(k)-2e(k-1)+e(k-2))---------(3)式

(1)式就是位置式离散pid;(3)式就是增量式离散pid。

PS:(0)式中KP,KI,KD和(1)(2)(3)中的三个参数不相同。
                    

出0入0汤圆

 楼主| 发表于 2012-5-19 10:18:26 | 显示全部楼层
tangxh 发表于 2012-5-18 21:34
连续PID的输出方程为:u(t)=Kp*e(t)+Ki*∫e(t)dt+Kd*de(t)/dt------------------------(0)式

离散化后, ...

谢谢指教,能分享一下您的调试经验吗?

出0入0汤圆

 楼主| 发表于 2012-5-19 11:18:07 | 显示全部楼层
我用增量式算法,我在 P 项基础上增加 D 项用以提高响应速度,但是好像全无作用,求各位指教。

出0入0汤圆

发表于 2012-5-19 12:15:13 | 显示全部楼层
ln08136207 发表于 2012-5-19 11:18
我用增量式算法,我在 P 项基础上增加 D 项用以提高响应速度,但是好像全无作用,求各位指教。 ...

KP影响响应速度,KI可以消除静差,KD用于抑制超调波动。
主要多试多凑吧。。  论坛里面有温度控制pid的调试过程,z-n法整定。你搜索看看。

出0入0汤圆

 楼主| 发表于 2012-5-21 11:14:33 | 显示全部楼层
tiancaigao7 发表于 2012-5-18 18:35
那两个都是正确的路,第一个是位置式的PID,第二个是增量式PID

你好,我用PID控制舵机,加上微分项用来加快响应速度,但是好像完全不起作用,微分系数大了的话会震荡,但是完全没有提高响应速度,能不能教我一下

出0入0汤圆

发表于 2012-5-21 20:49:32 | 显示全部楼层
学习了。。。。

出0入0汤圆

发表于 2012-5-22 09:38:06 | 显示全部楼层
我也在整的头大,学习了

出0入0汤圆

 楼主| 发表于 2012-5-22 11:06:01 | 显示全部楼层
xue_xi_zhong 发表于 2012-5-22 09:38
我也在整的头大,学习了

调出什么经验没?

出0入0汤圆

发表于 2012-5-22 15:37:35 | 显示全部楼层
ln08136207 发表于 2012-5-22 11:06
调出什么经验没?

没有,要不调大了,要不就调小了

出0入0汤圆

 楼主| 发表于 2012-5-23 10:32:21 | 显示全部楼层
现在,调出一个满意波形,但是又遇到一个问题,到达期望位置后,电机仍然在调,虽然看不出,但是能听到声音

出0入0汤圆

 楼主| 发表于 2012-5-23 10:54:59 | 显示全部楼层
本帖最后由 ln08136207 于 2012-5-23 10:56 编辑
tangxh 发表于 2012-5-19 12:15
KP影响响应速度,KI可以消除静差,KD用于抑制超调波动。
主要多试多凑吧。。  论坛里面有温度控制pid的调 ...


你好,我现在遇到一问题,我可以调出如图6这样的波形,但是出现一个新问题,电机到达期望位置后 ,仍然会一直不断的调(还没有抖动),虽然看不出来,但是能听到声音,
请问能不能帮我理一下思路。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-5-23 10:58:22 | 显示全部楼层
数字舵机会一直有响声的

出0入0汤圆

发表于 2012-5-23 11:00:13 | 显示全部楼层
KD你调到会震动,说明是有效果的吗,PID关键在多调试,KD还有一个滞后算法

出0入0汤圆

发表于 2012-5-23 11:03:58 | 显示全部楼层
响声和你的分辨率有关系

出0入0汤圆

 楼主| 发表于 2012-5-23 11:04:06 | 显示全部楼层
okARM 发表于 2012-5-23 10:58
数字舵机会一直有响声的

我对比了一下,别的舵机同样的曲线,他们没有音,当然他们用塑料齿轮,会减小声音,但是我想差别不至于差这么大

出0入0汤圆

发表于 2012-5-23 11:05:42 | 显示全部楼层
你想过分段设计系数吗?

出0入0汤圆

发表于 2012-5-23 11:06:42 | 显示全部楼层
不同的误差值配置不同的系数

出0入0汤圆

发表于 2012-5-23 11:07:04 | 显示全部楼层
说的够明白了吧

出0入0汤圆

发表于 2012-5-23 11:11:39 | 显示全部楼层
还有一个问题就是舵机齿轮之间的间隙问题,影响是非常大的,如果是第一次调,建议用你刚才的成品的舵机试试你现在的程序,看效果,你就知道是结构的问题还是程序问题

出0入85汤圆

发表于 2012-5-23 11:28:46 | 显示全部楼层
如果我要得到黄色的无超调响应曲线,那么我的Kp项就必须设的很小,这样一来,我的响应时间就太长了。

看来LZ都没有搞清楚PID中各个参数的作用,积分项是有助于你的曲线存在静差时,向目标曲线靠近的

出0入0汤圆

发表于 2012-5-23 11:44:35 | 显示全部楼层
ln08136207 发表于 2012-5-23 10:54
你好,我现在遇到一问题,我可以调出如图6这样的波形,但是出现一个新问题,电机到达期望位置后 ,仍然会 ...

抖一点没事,你用手碰一下可能就不抖了。。。。

出0入0汤圆

 楼主| 发表于 2012-5-23 11:51:39 | 显示全部楼层
okARM 发表于 2012-5-23 11:03
响声和你的分辨率有关系

现在我如果不加微分项,那么,就没有声音(或者说非常小,听不到)。当我的微分系数加到0.3时就会有声音了。问题是我的微分系数加到6才会得到一个超调在3%以内的曲线。
不好意思回复慢了,他说我是新手,每小时只能发5帖,我只好再等一小时。

出0入0汤圆

发表于 2012-5-23 11:54:41 | 显示全部楼层
在误差很小的时候不KD为0就是了

出0入0汤圆

 楼主| 发表于 2012-5-23 11:58:43 | 显示全部楼层
okARM 发表于 2012-5-23 11:07
说的够明白了吧

我试过,当初在超调和响应时间中取平衡的时候想过这个方法,也试过,但是后来结果不理想,就没用,我也知道这样理论上是可行的,实际也应该可行,但是我试过,效果不理想。不知能不能加你QQ,我是新手,每小时发帖不能超过5帖,不方便交流。

出0入0汤圆

发表于 2012-5-23 12:02:44 | 显示全部楼层
查看我资料有联系方式

出0入0汤圆

发表于 2012-5-23 12:08:00 | 显示全部楼层
坛规是不能直接贴联系方式的

出0入0汤圆

 楼主| 发表于 2012-5-23 12:09:06 | 显示全部楼层
okARM 发表于 2012-5-23 12:02
查看我资料有联系方式

我的积分不够,不能发消息,也不能加好友,

出0入0汤圆

发表于 2012-5-23 12:10:37 | 显示全部楼层
吃饭先,回来再搞

出0入0汤圆

 楼主| 发表于 2012-5-23 12:15:37 | 显示全部楼层
本帖最后由 ln08136207 于 2012-5-23 12:17 编辑
marshallemon 发表于 2012-5-23 11:28
如果我要得到黄色的无超调响应曲线,那么我的Kp项就必须设的很小,这样一来,我的响应时间就太长了。

看来 ...


我是新手,但是基本概念我还是理解的,就像您说的,如果我要得到无超调响应曲线,Kp就要设的很小,这样我的响应时间就长了。
现在我设的Kp能够满足我对响应时间的要求(有15%的超调),我加上微分项 D 会慢慢的减小超调,直至达到我的要求,这时候问题就来了
虽然超调小了,但是电机一直在调,虽然不抖,但是,一直会有声音。请教一下前辈,能否指点一下。

出0入0汤圆

发表于 2012-5-23 13:01:23 | 显示全部楼层
吃饭回来了,把你的联系方式发出来

出0入0汤圆

 楼主| 发表于 2012-5-23 13:03:52 | 显示全部楼层
okARM 发表于 2012-5-23 13:01
吃饭回来了,把你的联系方式发出来

linanwuxi123@gmail.com

出0入0汤圆

发表于 2012-5-23 13:07:47 | 显示全部楼层
还是我说的那个问题,这个细微的问题结构影响很大,如过间隙大那么总是在小范围里波动,这也就是为什么微分在这里产生了副作用

出0入0汤圆

 楼主| 发表于 2012-5-23 13:24:12 | 显示全部楼层
okARM 发表于 2012-5-23 13:07
还是我说的那个问题,这个细微的问题结构影响很大,如过间隙大那么总是在小范围里波动,这也就是为什么微分 ...

如果是你说的机械部分的问题,那么怎样解决呢?

出0入0汤圆

发表于 2012-5-23 13:28:12 | 显示全部楼层
结构谁负责的?这种问题就是拿好的成品结构调试

出0入0汤圆

 楼主| 发表于 2012-5-23 13:30:44 | 显示全部楼层
okARM 发表于 2012-5-23 13:28
结构谁负责的?这种问题就是拿好的成品结构调试

改结构的成本太大了,我想问问电子部分有什么办法吗?

出0入0汤圆

发表于 2012-5-23 13:34:16 | 显示全部楼层
如果确定是结构的差异,那基本软件就无能为力了,那结构必须改,这东西不可能一次开好的

出0入0汤圆

发表于 2012-5-23 13:34:33 | 显示全部楼层
如果确定是结构的差异,那基本软件就无能为力了,那结构必须改,这东西不可能一次开好的

出0入0汤圆

 楼主| 发表于 2012-5-23 15:28:28 | 显示全部楼层
刚刚有一个工程师说,发出的噪声是过零点噪声,但他没讲解决方法,不知哪位高工知道方法

出0入0汤圆

发表于 2012-5-23 15:50:03 | 显示全部楼层
???? 噪声和pid有什么关系???

出0入0汤圆

 楼主| 发表于 2012-5-23 15:58:23 | 显示全部楼层
whh7733 发表于 2012-5-23 15:50
???? 噪声和pid有什么关系???

这里的“噪声”是指电机到达期望值之后会不停的调,机械就会发出“吱吱”的声音,当然我表述为噪声,可能大家还有不同的说法,但重点是,教教我怎么解决吧。

出70入10汤圆

发表于 2012-5-23 16:12:42 | 显示全部楼层
飞过。。。。。。

出0入0汤圆

发表于 2012-5-23 16:51:38 | 显示全部楼层
ln08136207 发表于 2012-5-23 15:58
这里的“噪声”是指电机到达期望值之后会不停的调,机械就会发出“吱吱”的声音,当然我表述为噪声,可能 ...

那种类型的pid? 你自己写的还是? 反馈的是什么? 位置还是其他物理量?采样速率如何?

出0入0汤圆

 楼主| 发表于 2012-5-23 16:53:55 | 显示全部楼层
whh7733 发表于 2012-5-23 16:51
那种类型的pid? 你自己写的还是? 反馈的是什么? 位置还是其他物理量?采样速率如何? ...

增量式,自己写,采样速率可调,但是2MS最合适,没其他物理量

出0入0汤圆

发表于 2012-5-23 17:12:57 | 显示全部楼层
核心问题是你这个一直在调整锁不到0,什么叫过0点噪声?

出0入0汤圆

发表于 2012-5-23 17:38:55 | 显示全部楼层
其实可以分个段

出0入0汤圆

 楼主| 发表于 2012-5-23 20:48:17 | 显示全部楼层
whh7733 发表于 2012-5-23 17:38
其实可以分个段

现在先不管声音的问题,又有了一个新问题:带负载时静差偏大,如果增大积分项,不带负载时又抖动,呵呵,看来总是在矛盾中求平衡。

出0入0汤圆

发表于 2012-5-23 22:14:51 | 显示全部楼层
矛盾中求平衡,PID就是这样,带负载静差增大,这就是我让你试扭力的原因

出0入0汤圆

发表于 2012-5-23 22:16:34 | 显示全部楼层
可以说舵机里应该没有用积分,你可以试一下成品,你用力掰是不会电流一直增大的

出0入85汤圆

发表于 2012-5-23 23:34:18 | 显示全部楼层
积分作用有助于你的比例小的时候向设定值的接近速度,因为积分是一个累加的过程,如果当前实际值相对上一控制周期采集的值变化不大,积分的累加值会增大输出

出0入0汤圆

发表于 2012-5-24 00:20:26 | 显示全部楼层
ln08136207 发表于 2012-5-23 20:48
现在先不管声音的问题,又有了一个新问题:带负载时静差偏大,如果增大积分项,不带负载时又抖动,呵呵, ...

自适应pid·

出0入0汤圆

 楼主| 发表于 2012-5-24 09:18:04 | 显示全部楼层
whh7733 发表于 2012-5-24 00:20
自适应pid·

能不能给一个自适应PID的实现程序,我加上积分项效果也不好,而且没法进行浮点数运算

出0入0汤圆

 楼主| 发表于 2012-5-24 13:50:59 | 显示全部楼层
okARM 发表于 2012-5-23 17:12
核心问题是你这个一直在调整锁不到0,什么叫过0点噪声?

好像是你说的问题,无法锁定零点

出0入0汤圆

发表于 2012-5-24 14:46:30 | 显示全部楼层
你再分析一下是什么原因导致的

出0入0汤圆

发表于 2012-5-24 14:49:03 | 显示全部楼层
分析来分析去,要达到你现在的静差要求,你最后发现结构让你没法达到

出0入0汤圆

发表于 2012-5-24 23:29:04 | 显示全部楼层
ln08136207 发表于 2012-5-24 09:18
能不能给一个自适应PID的实现程序,我加上积分项效果也不好,而且没法进行浮点数运算 ...

自适应也是我想完成的东西啊。我现在是想办法在整定过程中自动修改积分相,比例项和微分项~
我qq:286741140,咱们多交流(加德时候说ourdev·pid)

出0入0汤圆

 楼主| 发表于 2012-5-28 15:55:25 | 显示全部楼层
whh7733 发表于 2012-5-24 23:29
自适应也是我想完成的东西啊。我现在是想办法在整定过程中自动修改积分相,比例项和微分项~
我qq:286741 ...

我的脑袋要成浆糊了,现在舵机总是不停的调,加死区效果也不明显。虽然不抖,但是总有“吱吱”的声音。你进行的怎么样了。。。。。。。。。。。。。。

出0入0汤圆

发表于 2012-5-29 13:57:20 | 显示全部楼层
ln08136207 发表于 2012-5-28 15:55
我的脑袋要成浆糊了,现在舵机总是不停的调,加死区效果也不明显。虽然不抖,但是总有“吱吱”的声音。你 ...

我这个还将就,我这个主要是采样速度不够。
你可以试一下这样: 比如要到30这个值,那么就在27~29和31~33这个区间吧积分项清零

出0入0汤圆

 楼主| 发表于 2012-5-29 14:50:20 | 显示全部楼层
whh7733 发表于 2012-5-29 13:57
我这个还将就,我这个主要是采样速度不够。
你可以试一下这样: 比如要到30这个值,那么就在27~29和31~33 ...

你起码知道你的问题出在哪里,我这里没有思路,有点无奈

出0入0汤圆

发表于 2012-5-29 15:06:37 | 显示全部楼层
ln08136207 发表于 2012-5-29 14:50
你起码知道你的问题出在哪里,我这里没有思路,有点无奈

各种实验啊···

出0入0汤圆

 楼主| 发表于 2012-5-29 15:11:48 | 显示全部楼层
whh7733 发表于 2012-5-29 15:06
各种实验啊···

当初觉得原理不难,谁知到越简单的东西越难啊

出0入0汤圆

发表于 2012-5-29 15:34:53 | 显示全部楼层
驱动频率提高点试试看

出0入0汤圆

 楼主| 发表于 2012-5-29 16:23:10 | 显示全部楼层
jiabin1024 发表于 2012-5-29 15:34
驱动频率提高点试试看

频率提高过,但是几乎没有效果没有。
如图1.是到达期望值后单片机的输出波形,应该是全低的,结果仍然有。我很受伤啊。
图2.是我的阶跃响应曲线。
还请各位不吝赐教。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-12-19 10:33:00 | 显示全部楼层
问题解决,还是PID参数调节问题,谢谢各位的帮忙,如果大家也在搞舵机控制,建议大家看看<<自抗扰控制技术>>,我就是在这里找到方法的。

出0入0汤圆

发表于 2013-3-21 15:05:15 | 显示全部楼层
顶一下~~

出0入0汤圆

发表于 2014-3-29 11:00:08 来自手机 | 显示全部楼层
路过,看看               
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-4 18:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表