OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6466|回复: 15

刚刚接触PID ,一些问题希望帮忙解释下

[复制链接]

16

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2013-6-7
在线时间
6 小时
发表于 2014-1-24 18:04:25 | 显示全部楼层 |阅读模式
希望可以帮忙解答下以下涉及到那些知识,简单介绍下知识点作用、内容
介绍有哪些资料或教材,
我基础比较差,希望有概括性的但是最好介绍得详细  -_-!




//*********************************************************
// PID
//*********************************************************
PWM  = Kp*Angle + Kd*Gyro_y;          //PID:角速度和角度 
PWM += Kpn*position + Ksp*speed;      //PID:速度和位置

重点就上面两行
由于手上没有测速器件,第二行用PWM带回去可以吗,要怎么改。



speed *= 0.7;                    //车轮速度滤波
speed += speed_r_l*0.3; 

为什么可以滤波(speed是滤波后输出 ,speed_r_l是测量值)



//*********************************************************
// 卡尔曼滤波
//*********************************************************
//Kalman滤波,20MHz的处理时间约0.77ms;
void Kalman_Filter(float Accel,float Gyro)  
{
Angle+=(Gyro - Q_bias) * dt; //先验估计

Pdot[0]=Q_angle - PP[0][1] - PP[1][0]; // Pk-先验估计误差协方差的微分
Pdot[1]=- PP[1][1];
Pdot[2]=- PP[1][1];
Pdot[3]=Q_gyro;

PP[0][0] += Pdot[0] * dt;   // Pk-先验估计误差协方差微分的积分
PP[0][1] += Pdot[1] * dt;   // =先验估计误差协方差
PP[1][0] += Pdot[2] * dt;
PP[1][1] += Pdot[3] * dt;
  
Angle_err = Accel - Angle; //zk-先验估计

PCt_0 = C_0 * PP[0][0];
PCt_1 = C_0 * PP[1][0];

E = R_angle + C_0 * PCt_0;

K_0 = PCt_0 / E;
K_1 = PCt_1 / E;

t_0 = PCt_0;
t_1 = C_0 * PP[0][1];
PP[0][0] -= K_0 * t_0;   //后验估计误差协方差
PP[0][1] -= K_0 * t_1;
PP[1][0] -= K_1 * t_0;
PP[1][1] -= K_1 * t_1;
  
Angle += K_0 * Angle_err;  //后验估计
Q_bias += K_1 * Angle_err;  //后验估计
Gyro_y   = Gyro - Q_bias;  //输出值(后验估计)的微分=角速度
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2382
金钱
2382
注册时间
2012-11-22
在线时间
403 小时
发表于 2014-1-24 18:53:48 | 显示全部楼层
speed *= 0.7;                    //车轮速度滤波
speed += speed_r_l*0.3; 
speed是上一次滤波后的值,speed_r_l是这一次测量的值,这句话相当于speed = speed * 0.7 + speed_r_l * 0.3;
这是一阶滞后滤波法,公式是:本次滤波结果 = a * 本次采样值 + (1-a) * 上次滤波结果,a代表滤波系数,范围0~1。
态度决定一切
回复 支持 反对

使用道具 举报

16

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2013-6-7
在线时间
6 小时
 楼主| 发表于 2014-1-24 19:30:12 | 显示全部楼层
回复【2楼】冰封嗜魔:
---------------------------------
嗯,谢谢,
有点不太懂,我再去查查
还没学又赶时间,只好扣皮别人的抱抱佛脚
非常感谢
回复 支持 反对

使用道具 举报

4

主题

116

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
361
金钱
361
注册时间
2013-7-24
在线时间
13 小时
发表于 2014-1-25 15:21:17 | 显示全部楼层
做平衡车吧
回复 支持 反对

使用道具 举报

16

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2013-6-7
在线时间
6 小时
 楼主| 发表于 2014-1-25 23:27:04 | 显示全部楼层
回复【4楼】培大少:
---------------------------------
是啊是啊,PID一点没学过,可是开学就要验货
回复 支持 反对

使用道具 举报

4

主题

116

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
361
金钱
361
注册时间
2013-7-24
在线时间
13 小时
发表于 2014-1-26 09:10:01 | 显示全部楼层
PID简单。。。调好几个参数就行了。。试过用PWM代替速度,效果不好。。
回复 支持 反对

使用道具 举报

16

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2013-6-7
在线时间
6 小时
 楼主| 发表于 2014-1-26 15:01:22 | 显示全部楼层
回复【6楼】培大少:
---------------------------------
没在学校临时找不到测速的,用pwm要怎么改?
回复 支持 反对

使用道具 举报

4

主题

116

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
361
金钱
361
注册时间
2013-7-24
在线时间
13 小时
发表于 2014-1-26 20:41:38 | 显示全部楼层
回复【7楼】insect50:
---------------------------------
直接把PWM当成速度代进去,位置环用PWM做个积分 position+=PWM
回复 支持 反对

使用道具 举报

16

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2013-6-7
在线时间
6 小时
 楼主| 发表于 2014-1-26 21:29:54 | 显示全部楼层
回复【8楼】培大少:
---------------------------------
好的,谢谢
回复 支持 反对

使用道具 举报

16

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2013-6-7
在线时间
6 小时
 楼主| 发表于 2014-1-27 23:17:14 | 显示全部楼层
回复【8楼】培大少:
---------------------------------
再麻烦请教个问题,pid是由反馈值和期望值的偏差得到新的输出量,平衡车的期望值(角度)好像不是预先给定的,那么是如何得到的
回复 支持 反对

使用道具 举报

4

主题

116

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
361
金钱
361
注册时间
2013-7-24
在线时间
13 小时
发表于 2014-1-28 11:34:21 | 显示全部楼层
回复【10楼】insect50:
---------------------------------
你期望值不应该是直立时的角度么
回复 支持 反对

使用道具 举报

16

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2013-6-7
在线时间
6 小时
 楼主| 发表于 2014-1-28 15:45:23 | 显示全部楼层
回复【11楼】培大少:
---------------------------------
小车直立的角度要测量好预先给定?
我以为这个值是小车自己动态调整,自己去逼近的结果(程序自己找到这个角度)
回复 支持 反对

使用道具 举报

6

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-4-4
在线时间
0 小时
发表于 2014-1-29 13:35:24 | 显示全部楼层
平衡车期望值就是平衡时的角度啊
~~~~ 欢迎讨论,拒绝谩骂 ~~~~
回复 支持 反对

使用道具 举报

13

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-9-11
在线时间
15 小时
发表于 2015-4-24 08:15:30 | 显示全部楼层
谢谢分享,mark一下
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2015-5-26
在线时间
0 小时
发表于 2015-5-26 16:05:38 | 显示全部楼层
能给我发一份两轮自平衡小车的程序么?谢谢了
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2015-5-26
在线时间
0 小时
发表于 2015-5-26 16:06:22 | 显示全部楼层
回复【13楼】兰斯洛:
---------------------------------
能给我发一份两轮自平衡小车的程序么?谢谢了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 08:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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