智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2130|回复: 8
打印 上一主题 下一主题

救命啊!!!!!!!!!直立车速度控制问题大大的

[复制链接]

23

主题

152

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2589
威望
1193
贡献
768
兑换币
736
注册时间
2014-9-25
在线时间
314 小时
跳转到指定楼层
1#
发表于 2016-3-1 15:26:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先说下我的问题,没加速度控制之前可以站起来,可以抵抗微小的干扰,加了速度控制之后,不管是轻轻往前推,还是往后推,差不多都能回到原来的位置,问题来了!当把小车人为的让它彻底躺着或者彻底趴着,电机不转,没反应,当回到一定的角度又可以转了(大概意思就是在-90°或者90°的时候电机不转,在-80°到80°都正常)求指点下!!!

我觉得可能的问题:
1,可能极性搞反了,但是搞反了轻轻推它它又可以回来,好困惑!
2,不知道了!!!!

下面贴出程序,求帮忙指导下!

void SpeedControl(void)
{
    float fDelta;
    float fP,fI;

    g_fCarSpeed = (GetLeftSpeed()+GetRightSpeed()) / 2;

    g_fCarSpeed *= CAR_SPEED_CONSTANT;    //进行单位换算  转/s
     fDelta=CAR_SPEED_SETfDelta-g_fCarSpeed;
    //printf("g_fCarSpeed*100 = %d\n",(int)(fDelta*100));
      fP=fDelta*SPEED_CONTROL_P; //比例控制      
      fI=fDelta*SPEED_CONTROL_I; //积分控制      

      g_fSpeedControlIntegral+=fI;      //积分

      //积分限幅max=900 min=-900
      g_fSpeedControlIntegral = (g_fSpeedControlIntegral>SPEEDINTEGRAL_MAX?SPEEDINTEGRAL_MAX:g_fSpeedControlIntegral);
      g_fSpeedControlIntegral = (g_fSpeedControlIntegral<SPEEDINTEGRAL_MIN?SPEEDINTEGRAL_MIN:g_fSpeedControlIntegral);


      g_fSpeedControlOutOld=g_fSpeedControlOutNew;
      g_fSpeedControlOutNew=fP+g_fSpeedControlIntegral;

}
float SpeedControlOutput(void)
{
    float fValue;

    fValue = g_fSpeedControlOutNew - g_fSpeedControlOutOld;

    g_fSpeedControlOut = fValue * (g_nCarSpeedCount + 1) / SPEED_CONTROL_PERIOD + g_fSpeedControlOutOld;
      //SPEED_CONTROL_PERIOD  = 100
     return  g_fSpeedControlOut;
}

void SpeedOut(float duty)//车身前倾 计算的 PWM为负值
{

      float tempR;
      float  tempL;

       Rightpwm1=(int)(-duty)-(int)SpeedControlOutput();//前面duty为角度平衡占空比
      Leftpwm1=(int)(-duty)-(int)SpeedControlOutput();//这里单独的 Leftpwm1=(int)(-duty) ,不加速度控制,是可以平衡的



回复

使用道具 举报

5

主题

52

帖子

0

精华

高级会员

Rank: 4

积分
908
威望
513
贡献
249
兑换币
301
注册时间
2015-8-3
在线时间
73 小时
毕业学校
燕山大学
推荐
发表于 2016-3-1 16:27:10 | 只看该作者
是不是你角度那块有限幅的问题?   超过一定的角度电机停止
回复 支持 1 反对 0

使用道具 举报

23

主题

152

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2589
威望
1193
贡献
768
兑换币
736
注册时间
2014-9-25
在线时间
314 小时
3#
 楼主| 发表于 2016-3-1 16:46:26 | 只看该作者
这是我平衡和速度输出的图像,粉红色是平衡的输出,蓝色是速度输出,这两个都是最终的输出,直接加在电机上的!

是不是方向反了?





本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

23

主题

152

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2589
威望
1193
贡献
768
兑换币
736
注册时间
2014-9-25
在线时间
314 小时
4#
 楼主| 发表于 2016-3-1 16:46:56 | 只看该作者
。,。 发表于 2016-3-1 16:27
是不是你角度那块有限幅的问题?   超过一定的角度电机停止

我没有限制啊,没有让它停止转动,感觉可能是我极性弄反了,看我下面回复的图
回复 支持 反对

使用道具 举报

23

主题

152

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2589
威望
1193
贡献
768
兑换币
736
注册时间
2014-9-25
在线时间
314 小时
5#
 楼主| 发表于 2016-3-2 12:54:14 | 只看该作者
这个问题好困扰啊,求解!!!
回复 支持 反对

使用道具 举报

23

主题

152

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2589
威望
1193
贡献
768
兑换币
736
注册时间
2014-9-25
在线时间
314 小时
6#
 楼主| 发表于 2016-3-2 18:09:01 | 只看该作者
。,。 发表于 2016-3-1 16:27
是不是你角度那块有限幅的问题?   超过一定的角度电机停止

应该是限幅的问题,我限幅太大了,和平衡控制的抵消了,现在出现了新问题,设定速度为0的时候前后来回震荡,给一个很小的速度时,先匀速再停止,再匀速,再停止......无限循环下去了!
回复 支持 反对

使用道具 举报

7

主题

365

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7770
威望
3761
贡献
2379
兑换币
2406
注册时间
2013-4-19
在线时间
815 小时
7#
发表于 2016-3-2 18:37:42 | 只看该作者
这个在线调试看看给出的数据,马上就知道问题在哪里了啊,多学学怎么调试吧。
回复 支持 反对

使用道具 举报

5

主题

52

帖子

0

精华

高级会员

Rank: 4

积分
908
威望
513
贡献
249
兑换币
301
注册时间
2015-8-3
在线时间
73 小时
毕业学校
燕山大学
8#
发表于 2016-3-2 20:43:03 | 只看该作者
qq904305159 发表于 2016-3-2 18:09
应该是限幅的问题,我限幅太大了,和平衡控制的抵消了,现在出现了新问题,设定速度为0的时候前后来回震荡,给 ...

是PI没调好的原因吗     给速度0不应该是静止   推后才来回震荡的吗
回复 支持 反对

使用道具 举报

23

主题

152

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2589
威望
1193
贡献
768
兑换币
736
注册时间
2014-9-25
在线时间
314 小时
9#
 楼主| 发表于 2016-3-4 16:07:26 | 只看该作者
。,。 发表于 2016-3-2 20:43
是PI没调好的原因吗     给速度0不应该是静止   推后才来回震荡的吗

我说的就是推后
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-15 08:46 , Processed in 0.114375 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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