智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6044|回复: 25
打印 上一主题 下一主题

电机PID攻破~~~~~~~~~~

  [复制链接]

54

主题

782

帖子

1

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3569
QQ
威望
1896
贡献
243
兑换币
1222
注册时间
2012-11-24
在线时间
715 小时
跳转到指定楼层
1#
发表于 2014-4-19 21:54:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
附上我的电机PID程序,小伙伴们看看哪儿出问题了。我的PWM范围0-255,Kp暂时给1,Ki和Kd给0

cch1=setpoint;  cch2=feedback;

if(cch1-cch2<=3&&cch1-cch2>=3)     //当偏差很小时,认为没有误差、设置调节死区
          cch2=cch1;   
        M_E0=cch1-cch2; //增量计算
        M_Error0=M_E0-M_E1;
        M_Error1=M_E1-M_E2;
        M_Inc_PID=(signed int)((M_Kp*M_Error0)+(M_Ki*M_E0)+(M_Kd*(M_Error0-M_Error1))); //修改的公式,

        M_E2=M_E1;            //存储误差,用于下次计算
        M_E1=M_E0;

        PID_Duty+=M_Inc_PID;  //speed=speed+iiIncpid
        if(PID_Duty>=PWM_MAX) //对电机PWM限幅
          PID_Duty=PWM_MAX;
        if(PID_Duty<=-PWM_MAX)
          PID_Duty=-PWM_MAX;

         PWMDTY45=PID_Duty;

回复

使用道具 举报

1

主题

45

帖子

0

精华

高级会员

Rank: 4

积分
889
威望
421
贡献
322
兑换币
281
注册时间
2013-10-9
在线时间
73 小时
26#
发表于 2014-6-27 16:26:50 | 只看该作者
你的cch指的是什么
回复 支持 反对

使用道具 举报

5

主题

77

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1411
威望
585
贡献
324
兑换币
378
注册时间
2013-11-30
在线时间
251 小时
毕业学校
东北师范大学
25#
发表于 2014-6-16 10:57:52 | 只看该作者
yyyzrxh 发表于 2014-6-16 09:13
P就是P,I就是I,先调个P,大约跟随到目标值的80%左右,加上I就能跟随到目标值了

,谢谢!
回复 支持 反对

使用道具 举报

54

主题

782

帖子

1

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3569
QQ
威望
1896
贡献
243
兑换币
1222
注册时间
2012-11-24
在线时间
715 小时
24#
 楼主| 发表于 2014-6-16 09:13:37 | 只看该作者
密┽雨恬颜 发表于 2014-6-15 11:01
我们调电机pid的时候也是这样,难道增量式的pid里面的i才是p?可是最后输出是位置式的输出啊!无法理解! ...

P就是P,I就是I,先调个P,大约跟随到目标值的80%左右,加上I就能跟随到目标值了

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

32

主题

3009

帖子

0

精华

杰出人士

学期班的来卖萌?

Rank: 12Rank: 12Rank: 12

积分
14832

在线王奖章活跃会员奖章优秀会员奖章论坛元老奖章资源大师奖章

威望
5952
贡献
3172
兑换币
4257
注册时间
2013-11-26
在线时间
2854 小时
23#
发表于 2014-6-15 11:56:00 | 只看该作者
你用的增量式的,p是这次和上次的差,不管你怎么调p  只要没有差就不会有输出变化,你要调i  就是本次的差,这才能让你的输出保持在目标值附近。你看看3个参数的作用,而不要看到别人说先调p就只会先给p值
回复 支持 反对

使用道具 举报

5

主题

331

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2159
威望
956
贡献
531
兑换币
644
注册时间
2014-2-11
在线时间
336 小时
22#
发表于 2014-6-15 11:04:47 | 只看该作者
为什么我们调节PID的时候,先调P不能给带小数点的数啊,只能给整数。当给了小数点的数,脉冲值就一直向上加。。。超过设定值。。。
回复 支持 反对

使用道具 举报

5

主题

77

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1411
威望
585
贡献
324
兑换币
378
注册时间
2013-11-30
在线时间
251 小时
毕业学校
东北师范大学
21#
发表于 2014-6-15 11:01:07 | 只看该作者
yyyzrxh 发表于 2014-4-24 22:29
好了,跟随的不错了

我们调电机pid的时候也是这样,难道增量式的pid里面的i才是p?可是最后输出是位置式的输出啊!无法理解!能给讲讲吗?大神!
回复 支持 反对

使用道具 举报

54

主题

782

帖子

1

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3569
QQ
威望
1896
贡献
243
兑换币
1222
注册时间
2012-11-24
在线时间
715 小时
20#
 楼主| 发表于 2014-4-24 22:29:42 | 只看该作者
好了,跟随的不错了
回复 支持 反对

使用道具 举报

6

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
威望
162
贡献
71
兑换币
87
注册时间
2014-4-24
在线时间
40 小时
19#
发表于 2014-4-24 22:24:22 | 只看该作者
那个p的值要是稍微调小一点呢,能否更稳定一点啊
回复 支持 反对

使用道具 举报

21

主题

51

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2084
QQ
威望
1038
贡献
612
兑换币
643
注册时间
2013-8-23
在线时间
217 小时
18#
发表于 2014-4-24 16:00:34 | 只看该作者
yyyzrxh 发表于 2014-4-21 11:12
粘错了,是-3和3,哈哈,讨论的真有意思了,其实是我的手误,刚才我换调Ki,居然很好用????Kp和Kd给的 ...

我是新手,请问死区是什么?有什么作用?     谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-30 23:30 , Processed in 0.083204 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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