智能车制作

标题: 速度控制 求指点!!! [打印本页]

作者: wxl900306    时间: 2012-5-21 22:08
标题: 速度控制 求指点!!!
/**************速度控制********************/
void SpeedControl(void){
  float fDelta;
  float fP,fI;
  CarSpeed= LeftMotorPulseSigma;//CarSpeed=(Left_pulse_num+Right_pulse_num)/2;
  LeftMotorPulseSigma=0;
// Right_pulse_num=0;
  CarSpeed*= SPEED_CONV;
  
  fDelta=(CAR_SPEED_SETTING-CarSpeed);
  fP=fDelta * SPEED_CONTROL_P;
  fI=fDelta * SPEED_CONTROL_I;
  
  SpeedControlIntegral+=fI;
  
  SpeedControlOutOld=SpeedControlOutNew;
  SpeedControlOutNew=fP+SpeedControlIntegral;  
}
/*******************************************/
                                                              
/*************速度控制输出******************/
void SpeedControlOutput(void){
  float fValue;
  fValue=SpeedControlOutNew-SpeedControlOutOld;
  SpeedControlOut=fValue*(SpeedControlPeriod)/100+SpeedControlOutOld;
}
/*******************************************/
这里我们用的是一个光码盘的测速,CarSpeed就直接取左轮脉冲的累加值。
1)我们的问题是不知道是那里错了,只要一开电源速度就直接达到最大值?并且左右晃的很厉害。
2)SpeedControlOutOld这个值是不是经过几毫米后就很大?
3)SpeedControlOutOld很大,从而引起SpeedControlOut很大。他们都不会减小,对吗?





作者: 流浪花    时间: 2012-5-21 23:13
你的是不是SpeedControlOut最终输出给电机的时候的极性反置了啊?
作者: wxl900306    时间: 2012-5-22 20:26
应该没错,这个我们注意过,也做过实验,但一个是一直往一个方向加速,另一个是左右摆动十分严重,不过这两个都有一个现象,就是开关打开,过几秒钟后速度正反转就无法进行调节了,求指导。
作者: lyp331255438    时间: 2012-6-11 00:52
LZ
你们的问题解决了没?
指导一下
作者: Hell_Phoenix    时间: 2012-7-6 19:37
楼主,我也遇到和你一样的情况了,求解决方法,求指点迷津。




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2