智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6009|回复: 38
打印 上一主题 下一主题

PID代码开源

  [复制链接]

162

主题

2048

帖子

5

精华

超级版主

岳麓山没有车神

Rank: 10Rank: 10Rank: 10

积分
14920

论坛元老奖章优秀会员奖章活跃会员奖章论坛骨干奖章在线王奖章优秀版主奖章资源大师奖章

QQ
威望
6285
贡献
5963
兑换币
2581
注册时间
2013-11-14
在线时间
1336 小时
跳转到指定楼层
1#
发表于 2014-7-7 20:56:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
RT




补充内容 (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));
    }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

0

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1530
QQ
威望
594
贡献
332
兑换币
368
注册时间
2015-12-6
在线时间
302 小时
毕业学校
浔州高中
39#
发表于 2016-1-5 21:41:09 | 只看该作者
学习学习
回复 支持 反对

使用道具 举报

5

主题

65

帖子

0

精华

高级会员

Rank: 4

积分
864
威望
409
贡献
225
兑换币
233
注册时间
2013-3-22
在线时间
115 小时
38#
发表于 2014-7-12 18:50:42 | 只看该作者
顺暗的?学习学习
回复 支持 反对

使用道具 举报

2

主题

30

帖子

0

精华

高级会员

Rank: 4

积分
645
威望
290
贡献
161
兑换币
172
注册时间
2012-12-5
在线时间
97 小时
37#
发表于 2014-7-12 16:48:07 | 只看该作者
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;
  }
}
回复 支持 反对

使用道具 举报

162

主题

2048

帖子

5

精华

超级版主

岳麓山没有车神

Rank: 10Rank: 10Rank: 10

积分
14920

论坛元老奖章优秀会员奖章活跃会员奖章论坛骨干奖章在线王奖章优秀版主奖章资源大师奖章

QQ
威望
6285
贡献
5963
兑换币
2581
注册时间
2013-11-14
在线时间
1336 小时
36#
 楼主| 发表于 2014-7-11 00:54:38 | 只看该作者
7426笨蛋 发表于 2014-7-10 20:24
感谢楼主~

不客气
回复 支持 反对

使用道具 举报

1

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
411
威望
204
贡献
127
兑换币
124
注册时间
2014-2-27
在线时间
40 小时
毕业学校
管卡大学
35#
发表于 2014-7-10 20:24:46 | 只看该作者
感谢楼主~
回复 支持 反对

使用道具 举报

4

主题

200

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3590

优秀会员奖章活跃会员奖章

威望
1736
贡献
1082
兑换币
1151
注册时间
2012-11-3
在线时间
386 小时
34#
发表于 2014-7-10 12:07:46 | 只看该作者
回复 支持 反对

使用道具 举报

162

主题

2048

帖子

5

精华

超级版主

岳麓山没有车神

Rank: 10Rank: 10Rank: 10

积分
14920

论坛元老奖章优秀会员奖章活跃会员奖章论坛骨干奖章在线王奖章优秀版主奖章资源大师奖章

QQ
威望
6285
贡献
5963
兑换币
2581
注册时间
2013-11-14
在线时间
1336 小时
33#
 楼主| 发表于 2014-7-10 11:03:40 | 只看该作者
迷路在未来 发表于 2014-7-10 09:59
先I后P么

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

使用道具 举报

1

主题

56

帖子

0

精华

高级会员

Rank: 4

积分
819
威望
425
贡献
234
兑换币
268
注册时间
2013-11-20
在线时间
80 小时
毕业学校
XX大学
32#
发表于 2014-7-10 09:59:01 | 只看该作者
Quixote 发表于 2014-7-10 09:52
PID整定的方法是一样的

先I后P么
回复 支持 反对

使用道具 举报

162

主题

2048

帖子

5

精华

超级版主

岳麓山没有车神

Rank: 10Rank: 10Rank: 10

积分
14920

论坛元老奖章优秀会员奖章活跃会员奖章论坛骨干奖章在线王奖章优秀版主奖章资源大师奖章

QQ
威望
6285
贡献
5963
兑换币
2581
注册时间
2013-11-14
在线时间
1336 小时
31#
 楼主| 发表于 2014-7-10 09:52:06 | 只看该作者
迷路在未来 发表于 2014-7-10 01:16
请问用这个方法调的话应该具体怎么调呢  谢谢

PID整定的方法是一样的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-6 09:52 , Processed in 0.055586 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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