智能车制作

标题: 电磁速度控制 [打印本页]

作者: 冲啊    时间: 2012-5-11 22:29
标题: 电磁速度控制
车子速度控制输出总是正,不能够正负来回变,结果就是车子来回晃两下后就好像重心前移似的,车子慢慢的往前倒,直到栽倒。听说是积分饱和的原因,请问高手这块怎么解决啊
作者: 冲啊    时间: 2012-5-12 07:41
自己顶个先
作者: 风少    时间: 2012-5-22 15:05
冲啊 发表于 2012-5-12 07:41
自己顶个先

问下兄台,你运行的时候g_fSpeedControlIntegral这个参数是一直增大的吗?按照官网上的代码貌似是一直增大的啊,求教????
作者: 冲啊    时间: 2012-5-27 14:56
风少 发表于 2012-5-22 15:05
问下兄台,你运行的时候g_fSpeedControlIntegral这个参数是一直增大的吗?按照官网上的代码貌似是一直增大 ...

不会一直增大的,前面有极性判断

作者: renqinglei    时间: 2012-5-27 17:21
冲啊 发表于 2012-5-27 14:56
不会一直增大的,前面有极性判断

电压死去控制是不是一直加在电机上?
作者: 风少    时间: 2012-5-28 23:32
冲啊 发表于 2012-5-27 14:56
不会一直增大的,前面有极性判断

当车静止的时候g_fSpeedControlOut,g_fSpeedControlOutNew , g_fSpeedControlOutOld,g_fSpeedControlIntegral,这几个变量应该都是稳定值吧,并且不会等于零(当只加一个I的时候),也就是说这些量都不是自动清零的对吧?
作者: 冲啊    时间: 2012-5-29 19:38
风少 发表于 2012-5-28 23:32
当车静止的时候g_fSpeedControlOut,g_fSpeedControlOutNew , g_fSpeedControlOutOld,g_fSpeedControlInte ...

完美静止时速度输出为0,new=old=0;g_fSpeedControlIntegral因为前面极性判断后,在此时也应趋于0

作者: 风少    时间: 2012-5-29 21:41
冲啊 发表于 2012-5-29 19:38
完美静止时速度输出为0,new=old=0;g_fSpeedControlIntegral因为前面极性判断后,在此时也应趋于0

能加你Q吗?我们一直纠结于速度调节这一块,想问一下,827321923
作者: 奔驰飞思卡尔    时间: 2012-6-5 21:43
冲啊 发表于 2012-5-29 19:38
完美静止时速度输出为0,new=old=0;g_fSpeedControlIntegral因为前面极性判断后,在此时也应趋于0

可以加一下QQ吗,1247716291,很困惑
作者: 奔驰飞思卡尔    时间: 2012-6-6 07:36
冲啊 发表于 2012-5-27 14:56
不会一直增大的,前面有极性判断

qing wen zai na pan duan ji xing

作者: 冲啊    时间: 2012-6-7 20:31
奔驰飞思卡尔 发表于 2012-6-6 07:36
qing wen zai na pan duan ji xing

if(!MOTOR_LEFT_SPEED_POSITIVE)  g_nLeftMotorPulse = -g_nLeftMotorPulse;   
   if(!MOTOR_RIGHT_SPEED_POSITIVE)  g_nRightMotorPulse = -g_nRightMotorPulse;
   g_nLeftMotorPulseSigma += g_nLeftMotorPulse;
    g_nRightMotorPulseSigma += g_nRightMotorPulse;

作者: 张景张景    时间: 2012-6-9 18:23
冲啊 发表于 2012-6-7 20:31
if(!MOTOR_LEFT_SPEED_POSITIVE)  g_nLeftMotorPulse = -g_nLeftMotorPulse;   
   if(!MOTOR_RIGHT_SPE ...

谢谢
作者: 张景张景    时间: 2012-6-10 14:25
风少 发表于 2012-5-22 15:05
问下兄台,你运行的时候g_fSpeedControlIntegral这个参数是一直增大的吗?按照官网上的代码貌似是一直增大 ...

if(!MOTOR_LEFT_SPEED_POSITIVE)  g_nLeftMotorPulse = -g_nLeftMotorPulse;   
   if(!MOTOR_RIGHT_SPEED_POSITIVE)  g_nRightMotorPulse = -g_nRightMotorPulse;
   g_nLeftMotorPulseSigma += g_nLeftMotorPulse;
    g_nRightMotorPulseSigma += g_nRightMotorPulse;
上式代码中g_nLeftMotorPulse   与 g_nLeftMotorPulseSigma有什么区别吗?有点不懂。。。。谢谢。。。坐等回复
作者: Goolloo    时间: 2012-6-10 16:19
张景张景 发表于 2012-6-10 14:25
if(!MOTOR_LEFT_SPEED_POSITIVE)  g_nLeftMotorPulse = -g_nLeftMotorPulse;   
   if(!MOTOR_RIGHT_SPE ...

sigma就是求和符号的英文。。。

作者: 风少    时间: 2012-6-10 19:19
张景张景 发表于 2012-6-10 14:25
if(!MOTOR_LEFT_SPEED_POSITIVE)  g_nLeftMotorPulse = -g_nLeftMotorPulse;   
   if(!MOTOR_RIGHT_SPE ...

g_nLeftMotorPulse这个是每5ms计算一次,而 g_nLeftMotorPulseSigma是要累加的,每100ms用一次(用在速度控制中),然后清零
作者: ☆灬学乖    时间: 2013-6-4 00:30
风少 发表于 2012-6-10 19:19
g_nLeftMotorPulse这个是每5ms计算一次,而 g_nLeftMotorPulseSigma是要累加的,每100ms用一次(用在速度 ...

求加企鹅,1658080145,想给你看个程序





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