智能车制作

标题: 关于速度控制PI的调节 [打印本页]

作者: fske14    时间: 2014-6-24 12:01
标题: 关于速度控制PI的调节
我现在在调速度控制PI,调了一个多月了,卡死在这个地方了。求大神指教
我程序是照卓晴老师写的
void SpeedControl (void)     //速度控制模块
{
  float fDelta;
  float fP,fI;
  g_fCarSpeed = ( g_nLeftSigma + g_nRightSigma ) / 2 ;
  g_nLeftSigma = g_nRightSigma = 0 ;
  fDelta = -CAR_SPEED_SET - g_fCarSpeed ;          //与设定值偏差   设定值前面加负号控制行走方向
  fP=fDelta * SPEED_P ;
  fI=fDelta * SPEED_I ;
  g_fSpeedIntegral += fI;                         //积分
  g_fSpeedOutOld = g_fSpeedOutNew ;
  g_fSpeedOutNew = fP+ g_fSpeedIntegral ;
}
void SpeedOutput(void)     //采集平滑
{
   float fValue ;  
   fValue = g_fSpeedOutNew - g_fSpeedOutOld ;
   g_fSpeedOut = fValue * (g_nSpeedPeriod+1)  / SPEED_PERIOD + g_fSpeedOutOld ;  // 均分20步5ms
}
以上是我的速度控制程序,
我照视频先调I,让车能像单摆一样来回摆动,之后加P,加P时防止过冲,但是我加P之后一点感觉也没有,P加大之后车子就开始点头了,请问大神们怎么调车啊,我快崩溃了。。。。。。

作者: ss1991zh    时间: 2014-6-24 12:22
看看fD后面的正负号对不对,和你电机输出有关
作者: fske14    时间: 2014-6-24 12:39
ss1991zh 发表于 2014-6-24 12:22
看看fD后面的正负号对不对,和你电机输出有关

正确,曾试过改变极性,这样车子会倒下,说明极性错了,现在的极性是对的。你们是怎么调的呢?调出来的现象很明显吗?


作者: Jyoun    时间: 2014-6-24 15:45
fske14 发表于 2014-6-24 12:39
正确,曾试过改变极性,这样车子会倒下,说明极性错了,现在的极性是对的。你们是怎么调的呢?调出来的现 ...

速度环,车子倒下,极性有可能才正确。极性错误,车子会一直往一个方向加速跑。如果你把车拿起来,速度控制使轮子飞转,即使在平衡位置也不停,那就是正确的。(直立车)

作者: fske14    时间: 2014-6-24 16:32
Jyoun 发表于 2014-6-24 15:45
速度环,车子倒下,极性有可能才正确。极性错误,车子会一直往一个方向加速跑。如果你把车拿起来,速度控 ...

直立   我的车子不会往一个方向加速,加了I之后像单摆一样运动着,加入P就没效果了,加大P车子就点头了。




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