智能车制作

标题: PID代码开源 [打印本页]

作者: Quixote    时间: 2014-7-7 20:56
标题: PID代码开源
RT
[attach]61558[/attach][attach]61557[/attach]



补充内容 (2014-7-7 21:58):
检查了下代码。。memset(S->in_e, 0, 3u * sizeof(unsigned short int));改成这样更好些。。

补充内容 (2014-7-7 21:59):
void *
memset (void *s, int c, unsigned n)
{
    /* Not optimized, but very portable */
    unsigned char *sp = (unsigned char *)s;

    if ((s != NULL) && (n > 0))
    {
        while (n--)
        {

补充内容 (2014-7-7 21:59):
*sp++ = (unsigned char)c;
        }
    }
    return s;
}

补充内容 (2014-7-7 22:04):
我上传错版本了……正确文件在七楼

补充内容 (2014-7-7 22:24):
    speed = lptmr_get();
    lptmr_clean();
    __push_pid_para_(&PID_change,need_speed - speed);
    PWM = __s16_GetPluse_(&PID_change);
    if( PWM > 0 )
    {
        PWMisZheng = 1;
        vMoto

补充内容 (2014-7-7 22:25):
rBackChange(0);
        vMotorForChange(__ABS(PWM));
    }
    else
    {
        PWMisZheng = 2;
        vMotorForChange(0);
        vMotorBackChange(__ABS(PWM));
    }
作者: caibolin    时间: 2014-7-7 21:03
沙发~~~
作者: kanwoe    时间: 2014-7-7 21:06
顺暗大湿!!!

作者: 假精哟    时间: 2014-7-7 21:08
哦哦哦~~~哈哈哈~~~~啊啊啊
作者: 邵志伟    时间: 2014-7-7 21:28
mark...
作者: zfenggo    时间: 2014-7-7 21:49
真的开源啦!!!!小伙伴们都惊呆啦!!!
作者: Quixote    时间: 2014-7-7 22:03
[attach]61562[/attach][attach]61561[/attach]

上传错了……这个才是正确版本的

作者: [Dan]    时间: 2014-7-7 22:10
神马情况

作者: Quixote    时间: 2014-7-7 22:13
[Dan] 发表于 2014-7-7 22:10
神马情况

刚才眼花,上传了老版本

作者: kanwoe    时间: 2014-7-7 22:13
Quixote 发表于 2014-7-7 22:03
上传错了……这个才是正确版本的

mark

作者: xshenpan    时间: 2014-7-7 22:14
灰常感谢
作者: Quixote    时间: 2014-7-7 22:15
xshenpan 发表于 2014-7-7 22:14
灰常感谢

这也不是什么特别复杂的代码啦~

作者: xshenpan    时间: 2014-7-7 22:19
Quixote 发表于 2014-7-7 22:15
这也不是什么特别复杂的代码啦~

小白的福音

作者: 梦之翼~    时间: 2014-7-7 22:27
多谢分享
作者: 破风浪挂云帆    时间: 2014-7-8 01:55
看看
作者: 浅醉    时间: 2014-7-8 07:46
诸葛碉堡了!
作者: laughtianxia    时间: 2014-7-8 07:47

作者: 若要走    时间: 2014-7-8 09:11

作者: killer1    时间: 2014-7-8 10:17
Quixote 发表于 2014-7-7 22:03
上传错了……这个才是正确版本的

不是太理解那个分离积分
作者: skssg0525    时间: 2014-7-8 12:31
:lol:lol
作者: lm342794214    时间: 2014-7-8 13:08
假精哟 发表于 2014-7-7 21:08
哦哦哦~~~哈哈哈~~~~啊啊啊

太销魂了吧
作者: lm342794214    时间: 2014-7-8 13:09
假精哟 发表于 2014-7-7 21:08
哦哦哦~~~哈哈哈~~~~啊啊啊

太销魂了吧
作者: Quixote    时间: 2014-7-8 17:38
killer1 发表于 2014-7-8 10:17
不是太理解那个分离积分

那块没写完
作者: Quixote    时间: 2014-7-8 17:39
lm342794214 发表于 2014-7-8 13:09
太销魂了吧

小明

作者: LEAVING    时间: 2014-7-8 21:01
顶,不错~

作者: ai921430375    时间: 2014-7-8 21:40
zan
作者: dalaohua    时间: 2014-7-9 21:37

作者: 1543948638    时间: 2014-7-9 21:59
猪大神

作者: qq363546178    时间: 2014-7-9 22:06

作者: 迷路在未来    时间: 2014-7-10 01:16
请问用这个方法调的话应该具体怎么调呢  谢谢
作者: Quixote    时间: 2014-7-10 09:52
迷路在未来 发表于 2014-7-10 01:16
请问用这个方法调的话应该具体怎么调呢  谢谢

PID整定的方法是一样的

作者: 迷路在未来    时间: 2014-7-10 09:59
Quixote 发表于 2014-7-10 09:52
PID整定的方法是一样的

先I后P么

作者: Quixote    时间: 2014-7-10 11:03
迷路在未来 发表于 2014-7-10 09:59
先I后P么

我一般先调P到振荡,类似于齐格勒尼克尔斯第二方法。

作者: idao    时间: 2014-7-10 12:07

作者: 7426笨蛋    时间: 2014-7-10 20:24
感谢楼主~
作者: Quixote    时间: 2014-7-11 00:54
7426笨蛋 发表于 2014-7-10 20:24
感谢楼主~

不客气

作者: sTilL_7.度    时间: 2014-7-12 16:48
void PID_Motor(int Set,int Current){
  float Kp = (float)(KpMotor)/100;
  float Ki = (float)(KiMotor)/100;
  float Kd = (float)(KdMotor)/100;
  
  Error = Set - Current;
  if(abs(Error) > 10){         
    if(abs(Error) > 60) {
      P_Ratio = 2;
      I_Ratio = 0;
    }
    else if(abs(Error) > 30){
      P_Ratio = 1;
      I_Ratio = 1;
    }
    else if(abs(Error) < 30){
      P_Ratio = 0.5;
      I_Ratio = 1.5;
    }
   
    if(Error < 0) I_Ratio *= 2;
    Proportional = Kp * Error * P_Ratio;
    Integral    += Ki * Error * I_Ratio;
    Derivative   = Kd * (Error - Error_Last);
  
    if(Integral > MotorDutyLimit) Integral = MotorDutyLimit;
    else if(Integral <  -MotorDutyLimit) Integral = -MotorDutyLimit;
  
    Motor1Duty = Proportional + Integral + Derivative;
  
    if(Motor1Duty > MotorDutyLimit) Motor1Duty = MotorDutyLimit;
    else if(Motor1Duty < -MotorDutyLimit) Motor1Duty = -MotorDutyLimit;
  
    Error_Last = Error;
  }
}
作者: L无奈    时间: 2014-7-12 18:50
顺暗的?学习学习
作者: 万川集海    时间: 2016-1-5 21:41
学习学习





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