智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1696|回复: 0
打印 上一主题 下一主题

[软件类] 速度一直控制不了!求大神指导

[复制链接]

6

主题

85

帖子

0

精华

高级会员

Rank: 4

积分
500
威望
317
贡献
87
兑换币
0
注册时间
2012-2-1
在线时间
48 小时
毕业学校
重庆工商大学
跳转到指定楼层
1#
发表于 2012-6-24 13:24:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5贡献
  
我一直不知道什么原因  控制不下来
void PI_sudu(void)
{
    nLeftSpeed = speed1;
    nRightSpeed = speed2;
    nSpeed1 = (nLeftSpeed + nRightSpeed) / 2;
    nSpeed1= nSpeed1*10/157 ;
   

   EE0 = SpeedSet - nSpeed1; //增量计算

   fP=EE0*Sudu_P;
   fI=EE0*Sudu_I;
   SpeedIntegral+=fI;               
   EE2=EE1;
   EE1=fP+SpeedIntegral;
      
}

void SpeedOutput()
{
float fValue;
fValue=EE1;
  sp=(int)(fValue*(CAR_Count2+1)/20+EE2);
  
   if(sp>MOTOR_OUT_MAX)
       sp=MOTOR_OUT_MAX;
   if(sp<MOTOR_OUT_MIN)
       sp=MOTOR_OUT_MIN;
   
   Left_Speed=Right_Speed=sp;
}

这个是速度函数
void MotorOutput()
{
     nLeft=nSpeed-Left_Speed-Left_Right_Diff;
     nRight=nSpeed-Right_Speed+Left_Right_Diff;
     g_nLeftMotorOut = nLeft;
     g_nRightMotorOut = nRight ;
     if(g_nLeftMotorOut > MOTOR_OUT_MAX)  g_nLeftMotorOut = MOTOR_OUT_MAX;
     if(g_nLeftMotorOut < MOTOR_OUT_MIN)  g_nLeftMotorOut = MOTOR_OUT_MIN;
     if(g_nRightMotorOut > MOTOR_OUT_MAX) g_nRightMotorOut = MOTOR_OUT_MAX;
     if(g_nRightMotorOut < MOTOR_OUT_MIN) g_nRightMotorOut = MOTOR_OUT_MIN;
     MotorSpeedOut();
}
这个是电机输出
  if(QingJiao>0)
      {
        speed1=-speed1;
        speed2=-speed2;
      }
这个是极性的判断  
我看不出是什么问题啊

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

本版积分规则

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

GMT+8, 2024-12-29 21:12 , Processed in 0.063741 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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