智能车制作

 找回密码
 注册

扫一扫,访问微社区

楼主: shock
打印 上一主题 下一主题

请教一下关于速度闭环

  [复制链接]

21

主题

480

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2331
QQ
威望
1095
贡献
736
兑换币
695
注册时间
2014-10-20
在线时间
250 小时
毕业学校
合肥工业大学
31#
发表于 2015-3-30 21:40:36 | 只看该作者
shock 发表于 2015-3-30 18:52
你的电磁怎么样了呢,双车追逐诶,难度很大啊

还行吧
回复 支持 反对

使用道具 举报

0

主题

131

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1003
QQ
威望
495
贡献
298
兑换币
334
注册时间
2014-6-30
在线时间
105 小时
32#
发表于 2015-3-31 08:25:15 | 只看该作者
会不会加入速度闭环没处理好
回复 支持 反对

使用道具 举报

17

主题

97

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1124
威望
611
贡献
317
兑换币
356
注册时间
2014-5-20
在线时间
98 小时
毕业学校
山东理工大学
33#
发表于 2015-3-31 09:10:13 | 只看该作者
*void Speed_PID(void)
{
   s16 P_Value,I_Value,D_Value;
   
   s16 Speed_Out;
     
   Speed_Old=Speed_New;
   Error=SPEED-Now_Speed;
   if(Error)
   P_Value=P_DATA*(Error-Last_Error);
   I_Value=I_DATA*Error/100;
   D_Value=D_DATA*(Error-2*Last_Error+Pre_Error)/10;
   
  if(I_Value>=100)
   {
      I_Value=100;
   }
   else if(I_Value<=-100)
   {
      I_Value=-100;
   }
   
if(P_Value>=600)
   {
      P_Value=600;
   }
   else if(P_Value<=-600)
   {
      P_Value=-600;
   }
  if(Error>=-10&&Error<=10)
   {
      Speed_New=0;
   }
   Speed_Out=P_Value+I_Value+D_Value;
   Speed_New=Speed_Old+Speed_Out;
   if(Speed_New>=500)
   {
      Speed_New=500;
   }
   else if(Speed_New<=-500)
   {
      Speed_New=-500;
   }
   if(Speed_New>=0)
   {
      Speed_New=350;
   }
   
   else if(Speed_New<=-350)
   {
      Speed_New=-350;
   }
   Pre_Error=Last_Error;
   Last_Error=Error;
   
}*/





void Speed_Count(void)//5ms采集计算一次 50ms计算一次
{


  Speed_Flag++;

  Left_Speed_Temp=FTM1_CNT; //左边电机  编码器
  Right_Speed_Temp=FTM2_CNT;//右边电机  编码器
  FTM1_CNT=0;//清零
  FTM2_CNT=0;//清零
      
if( FTM_QDCTRL_REG(FTMx[FTM1])&0x04)//判断左边电机的正传和反转
  {
      Left_Speed+= Left_Speed_Temp;
  }
  
  else
  {
      Left_Speed+=Left_Speed_Temp;
   }
if( FTM_QDCTRL_REG(FTMx[FTM2])&0x04)//判断右边电机的正传反转
{
     Right_Speed+= Right_Speed_Temp;
  }
  else
  {
     Right_Speed+= Right_Speed_Temp;
  }
  if(Speed_Flag==16)
  {
      Speed_Flag=0;
     
        
        Now_Speed=-(Left_Speed+Right_Speed)/20;
       // var[0]=Now_Speed;
   
      // vcan_sendware((uint8_t *)var, sizeof(var));
        Left_Speed=0;
        Right_Speed=0;
        Speed_Control();

      
  }
SpeedControlOutPut();
   
}

/*****************************************************************
功能:位置式PID计算,用于控制车速
*****************************************************************/

void Speed_Control(void)
{
     
    s16 P_Value,I_Value,D_Value;

      //---当前误差的计算,目标速度减去当前速度---//
    Current_Error=SPEED-Now_Speed;
  
    P_Value=P_DATA*Current_Error;
    I_Value=I_DATA*Current_Error;
    D_Value=D_DATA*(Current_Error-LastError);
    //---速度积分---//
    nSpeedControlKeep+=I_Value;
   
    //---把上次经PI运算后的值存起来---//
    Speed_Old=Speed_New;
   
    Speed_New=(P_Value+I_Value+D_Value)/100 ;
   
    if(nSpeedControlKeep>50)    nSpeedControlKeep=50;
   
    else if(nSpeedControlKeep<-50)   nSpeedControlKeep=-50;   
     
     LastError=Current_Error;    //将本次误差存为上次误差
   

}  


/*****************************************************************
功能:将车速均匀分配在角度控制的20个周期里,可以保证车模的稳定性
*****************************************************************/
void SpeedControlOutPut(void)
{
    if(OK==1)
    {
        s16 nValue;
        nValue=Speed_New-Speed_Old;
        
        /*--速度值分级输出--*/
        nValue=nValue*(Speed_Flag+1)/ 16+Speed_Old;
        
        Speed_OutPut=nValue;
        
        if(Speed_OutPut>100)      Speed_OutPut=100;
        
       else if (Speed_OutPut<-100)      Speed_OutPut=-100;   

        ANGLE_ZERO=Remember_Angle_Zero+Speed_OutPut;
    }
}
回复 支持 反对

使用道具 举报

11

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
634
威望
370
贡献
166
兑换币
182
注册时间
2014-10-25
在线时间
49 小时
毕业学校
河南理工
34#
发表于 2015-4-1 17:28:48 | 只看该作者
囩と唂囩飄飄 发表于 2015-3-30 19:37
你是在调静止不动的速度环么?

麻烦问一下,如果先p后i,当p调到什么现场的时候才开始i呢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-26 07:33 , Processed in 0.043139 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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