智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3030|回复: 10
打印 上一主题 下一主题

[软件类] 为什么速度控制不住

[复制链接]

4

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
威望
219
贡献
82
兑换币
3
注册时间
2011-12-6
在线时间
27 小时
跳转到指定楼层
1#
发表于 2012-5-9 12:02:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
用的方案里的,现在跑起来就加速,速度给0也控制不住,根本没出现那种车子来回动的现象,直接就越跑越快,然后栽倒,但是如果让轮子离开地,速度就可以达到稳定

4

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
威望
219
贡献
82
兑换币
3
注册时间
2011-12-6
在线时间
27 小时
11#
 楼主| 发表于 2012-5-12 19:40:19 | 只看该作者
etoah 发表于 2012-5-11 18:02
我的开始也一样,你在速度控制的时候加一个像电机一样的死区试试,要注意速度的方向

没太明白 不过我发现我的车向前的力矩小于向后的 我在比例和微分上加了点东西 有点趋势似乎 但是抖得厉害
回复 支持 反对

使用道具 举报

9

主题

76

帖子

0

精华

高级会员

Rank: 4

积分
523
威望
329
贡献
104
兑换币
4
注册时间
2012-4-9
在线时间
45 小时
毕业学校
石家庄铁道大学
10#
发表于 2012-5-11 21:28:29 | 只看该作者
电磁组官网的资料里g_nCarMotionCount,和CAR_MOTION_PERIOD是什么意思?????新手求教
回复 支持 反对

使用道具 举报

8

主题

145

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1021
威望
570
贡献
137
兑换币
22
注册时间
2011-9-19
在线时间
157 小时
9#
发表于 2012-5-11 18:02:21 | 只看该作者
我的开始也一样,你在速度控制的时候加一个像电机一样的死区试试,要注意速度的方向
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
349
威望
208
贡献
87
兑换币
10
注册时间
2011-11-4
在线时间
27 小时
8#
发表于 2012-5-10 18:02:16 | 只看该作者
vonchenchen 发表于 2012-5-10 16:37
我换过很多零偏值 是不是应该弄弄车的配重呢

不是换.我觉得可能是你设置的加速度计零偏值在前面.相当于人为设置了一个倾角.所以才加速.
回复 支持 反对

使用道具 举报

4

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
威望
219
贡献
82
兑换币
3
注册时间
2011-12-6
在线时间
27 小时
7#
 楼主| 发表于 2012-5-10 16:37:07 | 只看该作者
jsnjfxx 发表于 2012-5-9 22:39
加速度零偏值的问题吧.....

我换过很多零偏值 是不是应该弄弄车的配重呢
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
349
威望
208
贡献
87
兑换币
10
注册时间
2011-11-4
在线时间
27 小时
6#
发表于 2012-5-9 22:39:03 | 只看该作者
加速度零偏值的问题吧.....
回复 支持 反对

使用道具 举报

4

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
威望
219
贡献
82
兑换币
3
注册时间
2011-12-6
在线时间
27 小时
5#
 楼主| 发表于 2012-5-9 18:18:19 | 只看该作者
void MotorSpeedAdjust()
{
     static float fDeltaValue , fP , fI;
     static float MotorOutSpeedSigma = 0;
      
     counter_r = PACNT;   //当前真实速度
     PACNT = 0;
     
     if(g_nSpeesTemp < 0)               //用给定PWM的正负判断轮子的方向
           g_nSpeed = -counter_r;
     else
          g_nSpeed = counter_r;
      
     fDeltaValue = g_MotorSpeedSet - g_nSpeed;
     
     fP = fDeltaValue * MOTOR_SPEED_P_INT;
     fI = fDeltaValue * MOTOR_SPEED_I_INT;
     
     MotorOutSpeedSigma = MotorOutSpeedSigma + fI;
     
     g_nMotorOutSpeedOld = g_nMotorOutSpeedNew;             //  P I
     g_nMotorOutSpeedNew = MotorOutSpeedSigma + fP;   
}

void CalculateMotorOutSpeed()
{
      float fValue;
      fValue = g_nMotorOutSpeedNew - g_nMotorOutSpeedOld;         // D
      g_nMotorOutSpeed = fValue * (g_nCarMotionCount + 1)/20 + g_nMotorOutSpeedOld;   //PID
      g_nMotorOutSpeed = (g_nMotorOutSpeed + 120) >> 3;          //->PWM
}
回复 支持 反对

使用道具 举报

4

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
威望
219
贡献
82
兑换币
3
注册时间
2011-12-6
在线时间
27 小时
4#
 楼主| 发表于 2012-5-9 15:47:37 | 只看该作者
这是什么哪里的问题呢 感觉P I参数调了也没用
回复 支持 反对

使用道具 举报

10

主题

507

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2048
QQ
威望
1302
贡献
390
兑换币
8
注册时间
2011-2-25
在线时间
178 小时
3#
发表于 2012-5-9 12:42:14 | 只看该作者
估计是速度控制出问题了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 04:19 , Processed in 0.045672 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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