新手教新手之pid算法

上传人:第*** 文档编号:38907845 上传时间:2018-05-09 格式:DOC 页数:4 大小:135.62KB
返回 下载 相关 举报
新手教新手之pid算法_第1页
第1页 / 共4页
新手教新手之pid算法_第2页
第2页 / 共4页
新手教新手之pid算法_第3页
第3页 / 共4页
新手教新手之pid算法_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《新手教新手之pid算法》由会员分享,可在线阅读,更多相关《新手教新手之pid算法(4页珍藏版)》请在金锄头文库上搜索。

1、新手教新手之 PID 算法 作者:重庆大学电气学院 杨子浩 QQ:402326134 开始学习 PID 的时候看了很多篇 PID 的教程,总是觉得和自己的思路不一样,很难理 解,现在好不容易有点头绪了,想和在学习的同学交流一下。希望大家给予修改意见以及 互相交流继续深入学习并学会应用,然后用伟大的 PID 改变生活改变世界! PID(经典 PID)初始公式:()= ()+1 () + () ()= + () + ()为了在计算机上实现 PID 函数,需要离散化,得到离散化公式:= + = 0+ ( 1)= + = 0+ ( 1)更为常用地,转换为增量式: = 1=( 1)+ + ( 2 1+

2、2) = 1+ 这两条就是我们程序中需要用到的公式下面我来介绍一下各参数的含义(电机调速为例子) 需要关注的三个量:设定值(目标速度) 、输出值(PWM) 、当前值(当前速度)、:速度设定值-当前速度值()、:比例、积分、微分参数,这是我们用经典 PID 需要调的三个值假设 PWM 周期 20ms,我把周期分为 20000 份,算出的就是占空比的份数。:占空份数PID 就是能将当前值和目标值的关系转换为我们当前需要的输出量,最终让当前值达到目 标值。详细解释: 我学习的时候,最弄不明白的是,为什么关于速度差的一个函数会输出 PWM 的份数, 而不是 PWM 的百分比,或者其他什么呢? 我现在认

3、为是式子中积分的作用:对比下图比例、积分、微分的作用(跃阶响应) 微分图中绿色直线为初始值 0,红线为目标值我认为刚学习 PID,可以先把注意力放在积分上面,而不是比例上面。上图是我用 EXCEL 模拟计算 PID 函数的作用,我先把 KP 和 KD 置零,即不采用比例和微分 速度反馈值用如下公式:(假设速度和 PWM 是线性的)速度反馈值(也就是当前速度) =份数 总份数 满对应的速度从这里可以发现:PWM 份数的改变改变速度积分作用改变 PWM 分数 我认为,这里积分这样的作用:将 PWM 份数和速度对应起来 也就是说,积分能将输出量和当前值建立起关系。 为了证明这个,我把 PWM 控制改

4、为以百分比控制,得到如下图:速度反馈值(也就是当前速度)= 百分比 满对应的速度可见:输出值的形式可以随意更改,他们的关系通过积分作用联系。 而注意到 2 次的 Ki 不一样,说明了,Ki 的取值范围和输出形式有关系。我们现在只采用了积分控制 = 1= 相信大家都明白了 PID 公式是如何将速度值的关系转化为输出量了。 我觉得可以这样理解:积分是主作用,没有积分,只有其他无法达到目标值。而比例和微 分可以帮助函数更加好地达到目标值。 (例如快速、稳定等因素) 我相信通过我的解释,大家都能学会如何使用上 PID,至于比例,微分,积分 3 个参数如 何选定,对系统有什么作用,请大家参考其他高级教程

5、。总结:如何代码实现 PID 以 PWM 份数为输出量,速度用编码器单位时间脉冲数表示 1、 初始化数值 Speed_Target=1500目标速度为 1500 个脉冲/单位时间 Speed=0当前速度为 0e=0e(k) de=0e(k)-e(k-1) last_e=0e(k-1) last_de=0e(k-1)-e(k-2) dde=0e(k)-2e(k-1)+e(k-2)或(e(k)-e(k-1))-(e(k-1)-e(k-2))dPWM=0PWM 份数需要增加的量 PWM=0当前 PWM 份数 Kp=0比例参数 Ki=1积分参数 Kd=0微分参数 由于 3 个参数选择范围与速度的表示方

6、式以及输出的表示方式有关,但是我也不知道是什 么关系,所以大家可以先从小的开始试,因为小的时候是肯定可用的。 2、每隔一段时间执行如下代码:e=Speed_Target-Speed;求e(k) de=e-last_e;求e(k)-e(k-1) dde=de-last_de;求e(k)-2e(k-1)+e(k-2) last_e=e;把e(k)保存为 e(k-1)供下次计算使用 last_de=de;把e(k)-e(k-1)保存为 e(k-1)-e(k-2) dPWM=Kp*de+Ki*e+Kd*dde;根据公式求出 PWM 份数需要改 =( 1)+ + ( 2 1+ 2)变量 PWM+=dPWM; 由公式求出当前 PWM 份数并输出= 1+

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号