PID算法保姆级教学
①、从一个小故事入门PID
PID控制原理:看完这三个故事你就明白了
小明接到这样一个任务:有一个水缸点漏水(而且漏水的速度还不一定固定不变),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就要往水缸里加水。
小明接到任务后就一直守在水缸旁边,时间长就觉得无聊,就跑到房里看小说了,每30分钟来检查一次水面高度。水漏得太快,每次小明来检查时,水都快漏完了,离要求的高度相差很远,小明改为每3分钟来检查一次,结果每次来水都没怎么漏,不需要加水,来得太频繁做的是无用功。几次试验后,确定每10分钟来检查一次。这个检查时间就称为采样周期。
开始小明用瓢加水,水龙头离水缸有十几米的距离,经常要跑好几趟才加够水,于是小明又改为用桶加,一加就是一桶,跑的次数少了,加水的速度也快了,但好几次将缸给加溢出了,不小心弄湿了几次鞋,小明又动脑筋,我不用瓢也不用桶,老子用盆,几次下来,发现刚刚好,不用跑太多次,也不会让水溢出。这个加水工具的大小就称为比例系数。
小明又发现水虽然不会加过量溢出了,有时会高过要求位置比较多,还是有打湿鞋的危险。他又想了个办法,在水缸上装一个漏斗,每次加水不直接倒进水缸,而是倒进漏斗让它慢慢加。这样溢出的问题解决了,但加水的速度又慢了,有时还赶不上漏水的速度。于是他试着变换不同大小口径的漏斗来控制加水的速度,最后终于找到了满意的漏斗。漏斗的时间就称为积分时间。
小明终于喘了一口,但任务的要求突然严了,水位控制的及时性要求大大提高,一旦水位过低,必须立即将水加到要求位置,而且不能高出太多,否则不给工钱。小明又为难了!于是他又开努脑筋,终于让它想到一个办法,常放一盆备用水在旁边,一发现水位低了,不经过漏斗就是一盆水下去,这样及时性是保证了,但水位有时会高多了。他又在要求水面位置上面一点将水凿一孔,再接一根管子到下面的备用桶里这样多出的水会从上面的孔里漏出来。这个水漏出的快慢就称为微分时间。
看到几个问采样周期的帖子,临时想了这么个故事。微分的比喻一点牵强,不过能帮助理解就行了,呵呵,入门级的,如能帮助新手理解下PID,于愿足矣。故事中小明的试验是一步步独立做,但实际加水工具、漏斗口径、溢水孔的大小同时都会影响加水的速度,水位超调量的大小,做了后面的实验后,往往还要修改改前面实验的结果。
②、PID算法的解析
PID算法的解析_pid方法- 举例说明小车速度、水温加热控制
P,I,D是三种不同的调节作用,既可以单独使用(P,I,D),也可以两个两个用(PI,PD),也可以三个一起用(PID)。
③、PID控制算法讲解 (视频)
通俗易懂的 PID 控制算法讲解_哔哩哔哩_bilibili通俗易懂的 PID 控制算法讲解_哔哩哔哩_bilibili
④、PID参数解析(一文读懂PID并会调试kp,ki,kd)(位置式+增量式PID)
⑤、STM32—PID恒温控制(含C语言程序)
STM32——PID恒温控制_stm32 pid pwm 温度-CSDN博客
⑥、PID参数调节口诀
参数整定找最佳,从小到大顺序查
先是比例后积分,最后再把微分加
曲线振荡很频繁,比例度盘要放大
曲线漂浮绕大湾,比例度盘往小扳
曲线偏离回复慢,积分时间往下降
曲线波动周期长,积分时间再加长
曲线振荡频率快,先把微分降下来
动差大来波动慢。微分时间应加长
理想曲线两个波,前高后低4比1
一看二调多分析,调节质量不会低
若要反应增快,增大P减小I;
若要反应减慢,减小P增大I;
如果比例太大,会引起系统振荡
如果积分太大,会引起系统迟钝
- 比例环节:起主要控制作用,使反馈量向目标值靠拢,但可能导致振荡
- 积分环节:消除稳态误差,但会增加超调量
- 微分环节:产生阻尼效果,抑制振荡和超调,但会降低响应速度
⑦、PID温度控制参数整定方法
先多看两个,来点印象,再调
2、PID控制参数整定(调节方法)原理+图示+MATLAB调试_pid参数看曲线整定图解
5、控温设备的PID参数选定的个人方法(真实有效)_pid加热总是加热过了
(1) 确定比例系数Kp
确定比例系数Kp时,首先去掉PID的积分项和微分项,可以令Ti=0、Td=0,使之成为
纯比例调节。输入设定为系统允许输出最大值的60%~70%,比例系数Kp由0开始逐渐增
大,直至系统出现振荡;再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失。
记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的60%~70%。
(2) 确定积分时间常数Ti
比例系数Kp确定之后,设定一个较大的积分时间常数Ti,然后逐渐减小Ti,直至系统出现
振荡,然后再反过来,逐渐增大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分
时间常数Ti为当前值的150%~180%。
(3) 确定微分时间常数Td
微分时间常数Td一般不用设定,为0即可,此时PID调节转换为PI调节。如果需要设定,
则与确定Kp的方法相同,取不振荡时其值的30%。
(4) 系统空载、带载联调
对PID参数进行微调,直到满足性能要求。
⑧、Matlab调试
(1)、2016 matlab 中文版软件和安装教程
(2)matlab实现pid仿真
⑨、个人经验
刚碰到这个东西的时候,也啥都不知道,跟着网上各种教程就瞎调,最终还真调出来了
(1)、首先先有程序,上面第四小节有,PID.c和PID.h可以直接用;讲的还是比较细的。
(2)、程序只是套用,调还得自己花时间调,主要调KP,Ti和Td;
(3)、先把KP设为1,其他为0;看输出波动情况
如果输出的实际值一直缓慢上升,超过设定值了还上升,上升了好久才下来,这时应该是
KP设小了
(4)、KP等于刚才的值不动,TI等于100000,TD还是0;
(5)、KP,TI等于刚才确定的值,TD等于1。
以上为正常情况,下面还有不正常情况
1、检测端有问题
当不管怎么调整,输出就是要么一直偏高,要么一直偏低,这时候就要看看是不是你的检测的这个信号有没有问题。
2、输出端有问题
当不管怎么调整,输出就是要么一直振荡着有缓慢上升趋势或下降趋势,这时候就要看看是不是你的输出端有问题;举个例子,假如控制到100,那么100就是保持信号,101就是当前还没达到设定值,加大输出信号,同理99就是减小输出信号。如果在线调试,99成了加,或者101成了减,那么就会出现上面的情况。
以上均为个人经验,欢迎指正。
⑩、串口波形调试助手
纸飞机串口调试助手观察mup6050数据波形
后记
①、串级PID
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fa5845eb35bc64775c0c5cb024ecc264.png)
PID超详细教程——PID原理+串级PID+C代码+在线仿真调参-CSDN博客