智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6196|回复: 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;

回复

使用道具 举报

54

主题

782

帖子

1

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3569
QQ
威望
1896
贡献
243
兑换币
1222
注册时间
2012-11-24
在线时间
715 小时
2#
 楼主| 发表于 2014-4-19 21:55:16 | 只看该作者
现在给速度80,返回的一直在35左右,直接怒了,是不是公式错了
回复 支持 反对

使用道具 举报

54

主题

782

帖子

1

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3569
QQ
威望
1896
贡献
243
兑换币
1222
注册时间
2012-11-24
在线时间
715 小时
3#
 楼主| 发表于 2014-4-19 22:11:51 | 只看该作者
会不会是我把P当I了?????
回复 支持 反对

使用道具 举报

18

主题

171

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3538

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
2248
贡献
24
兑换币
1147
注册时间
2013-9-12
在线时间
633 小时
4#
发表于 2014-4-20 00:18:57 | 只看该作者
明显p小了
回复 支持 反对

使用道具 举报

18

主题

171

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3538

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
2248
贡献
24
兑换币
1147
注册时间
2013-9-12
在线时间
633 小时
5#
发表于 2014-4-20 00:21:51 | 只看该作者
你增大p就会发现反馈值变大了,直到目标值左右震荡
回复 支持 反对

使用道具 举报

137

主题

4169

帖子

1

精华

杰出人士

我认为最省轮子的跑法最快。曾经的西科4队

Rank: 12Rank: 12Rank: 12

积分
14006
QQ
威望
6233
贡献
1229
兑换币
4171
注册时间
2013-1-10
在线时间
3272 小时
6#
发表于 2014-4-20 00:30:21 | 只看该作者
if(cch1-cch2<=3&&cch1-cch2>=3) 是不是等于if(1)?
回复 支持 反对

使用道具 举报

27

主题

932

帖子

0

精华

跨届大侠

浙工大银江飞虎队

Rank: 10Rank: 10Rank: 10

积分
6807

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
3333
贡献
1356
兑换币
2229
注册时间
2012-10-23
在线时间
1059 小时
7#
发表于 2014-4-20 00:36:29 | 只看该作者
Jyoun 发表于 2014-4-20 00:30
if(cch1-cch2=3) 是不是等于if(1)?

哈哈
回复 支持 反对

使用道具 举报

137

主题

4169

帖子

1

精华

杰出人士

我认为最省轮子的跑法最快。曾经的西科4队

Rank: 12Rank: 12Rank: 12

积分
14006
QQ
威望
6233
贡献
1229
兑换币
4171
注册时间
2013-1-10
在线时间
3272 小时
8#
发表于 2014-4-20 00:39:01 | 只看该作者
本帖最后由 Jyoun 于 2014-4-20 00:40 编辑
工大飞虎队007 发表于 2014-4-20 00:36
哈哈

还真不是,是if(cch1-cch2<=3&&cch1-cch2>=3) 等于if(cch1-cch2==3)
回复 支持 反对

使用道具 举报

27

主题

932

帖子

0

精华

跨届大侠

浙工大银江飞虎队

Rank: 10Rank: 10Rank: 10

积分
6807

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
3333
贡献
1356
兑换币
2229
注册时间
2012-10-23
在线时间
1059 小时
9#
发表于 2014-4-20 00:43:38 | 只看该作者
Jyoun 发表于 2014-4-20 00:39
还真不是,是if(cch1-cch2=3) 等于if(cch1-cch2==3)


回复 支持 反对

使用道具 举报

137

主题

4169

帖子

1

精华

杰出人士

我认为最省轮子的跑法最快。曾经的西科4队

Rank: 12Rank: 12Rank: 12

积分
14006
QQ
威望
6233
贡献
1229
兑换币
4171
注册时间
2013-1-10
在线时间
3272 小时
10#
发表于 2014-4-20 00:46:57 | 只看该作者
式子没问题,也没看出来哪里有问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 18:37 , Processed in 0.048825 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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