智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2023|回复: 6
打印 上一主题 下一主题

[咨询] PID控制,如果单纯用P控制该怎么写?

[复制链接]

15

主题

122

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1304
威望
747
贡献
313
兑换币
10
注册时间
2011-11-6
在线时间
122 小时
跳转到指定楼层
1#
发表于 2012-2-9 14:55:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



刚接触PID,看过一些资料,但是还是很难弄懂PID,下面是我写的只有P控制的程序。但换参数后就不对了。
#include<stdio.h>
#include<stdlib.h>
void main()
{
int i,j;
float kp,now_data,std_data,out_data;//now_data当前数据,std_data设定数据,kp比例系数
while(1)
{
  printf("please input kp,now_data,std_data,i value.\n");
  scanf("%f %f %f %d",&kp,&now_data,&std_data,&i);
  for (j=0;j<i;j++)
  {
   out_data=kp*(now_data-std_data);
   printf("%f\n",out_data);
   now_data=out_data;
  }
}
}

0.5 2 10 30时

0.6 8 10 20时就不对了
还有kp应该是放大系数 也就意味着要大于1,但是我设大于1的值基本上都不能成功...
,不知道为什么,希望有人能指点一下。

本帖子中包含更多资源

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

x

15

主题

122

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1304
威望
747
贡献
313
兑换币
10
注册时间
2011-11-6
在线时间
122 小时
2#
 楼主| 发表于 2012-2-9 16:09:59 | 只看该作者
自己看了一下有些地方写错了,修改后程序如下:
//只有比例作用
#include<stdio.h>
#include<stdlib.h>
void main()
{
        int i,j;
        float et,kp,now_data,std_data,ut;
        while(1)
        {
                printf("please input kp,std_data,now_data,i value.\n");
                scanf("%f %f %f %d",&kp,&std_data,&now_data,&i);
                for (j=0;j<i;j++)
                {
                        et=std_data-now_data;
                        ut=kp*et;
                        now_data=now_data+ut;
                        printf("%f\n",now_data);
                }
        }

}
但是kp的值要小于2大于0, 否则就不对了或者产生震荡不知道是为什么.....希望有人能解答
回复 支持 反对

使用道具 举报

4

主题

400

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1646
QQ
威望
989
贡献
361
兑换币
162
注册时间
2012-1-31
在线时间
148 小时
3#
发表于 2012-2-9 16:44:15 | 只看该作者
我理解的PID不是这个样子的 不过LZ的方法我可以借鉴一下 用VC来看看自己的程序对不对
回复 支持 反对

使用道具 举报

13

主题

145

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1118
QQ
威望
738
贡献
220
兑换币
4
注册时间
2011-10-3
在线时间
80 小时
4#
发表于 2012-2-11 13:15:19 | 只看该作者
纠结PID   说到底  车子最核心的就是调节好它了
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

高级会员

Rank: 4

积分
800
威望
411
贡献
327
兑换币
12
注册时间
2011-12-16
在线时间
31 小时
5#
发表于 2012-2-23 20:16:34 | 只看该作者
回复 支持 反对

使用道具 举报

6

主题

124

帖子

0

精华

高级会员

Rank: 4

积分
712
QQ
威望
488
贡献
146
兑换币
3
注册时间
2012-2-12
在线时间
39 小时
6#
发表于 2012-3-5 10:52:43 | 只看该作者
你写反了吧???我都是用测出的减设定的再乘系数最后加测出的,如果你是用来控制速度的话,建议你用PID,如果是舵机的话,PD控制也比P控制强多了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 01:30 , Processed in 0.074363 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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