转载PID算法的解析AngryPanda

-------------------------------------------------------------

好啦,正文开始:

PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很常见的控制算法。算法是不可以吃的。到LZ发帖的这一天,PID已经有105年的历史了

它并不是什么很神圣的东西,大家一定都见过PID的实际应用

——比如四轴飞行器,再比如平衡小车……还有汽车的定速巡航、3D打印机上的温度控制器….再比如动物园里的海狮,将一根杆子直立着顶在头上(OOPS,这个也算..)

就是类似于这种:需要将某一个物理量“保持稳定”的场合(比如维持平衡,稳定温度、转速等),PID都会派上大用场。

那么问题来了:比如,我想控制一个“热得快”,让一锅水的温度保持在50℃这么简单的任务,为啥要用到微积分的理论呢你一定在想:这不是soeasy嘛~小于50度就让它加热,大于50度就断电,不就行了?几行代码用Arduino分分钟写出来

没错~在要求不高的情况下,确实可以这么干~But!如果LZ换一种说法,你就知道问题出在哪里了:

如果我的控制对象是一辆汽车呢?要是希望汽车的车速保持在50km/h不动,你还敢这样干么

这时,就需要一种『算法』:

它可以将需要控制的物理量带到目标附近它可以“预见”这个量的变化趋势它也可以消除因为散热、阻力等因素造成的静态误差….

于是,当时的数学家们发明了这一历久不衰的算法——这就是PID。

你应该已经知道了,P,I,D是三种不同的调节作用,既可以单独使用(P,I,D),也可以两个两个用(PI,PD),也可以三个一起用(PID)。这三种作用有什么区别呢?客官别急,听我慢慢道来

我们先只说PID控制器的三个最基本的参数:kP,kI,kD。

P就是比例的意思。它的作用最明显,原理也最简单。我们先说这个:

需要控制的量,比如水温,有它现在的『当前值』,也有我们期望的『目标值』。

当两者差距不大时,就让加热器“轻轻地”加热一下。要是因为某些原因,温度降低了很多,就让加热器“稍稍用力”加热一下。要是当前温度比目标温度低得多,就让加热器“开足马力”加热,尽快让水温到达目标附近。

这就是P的作用,跟开关控制方法相比,是不是“温文尔雅”了很多

实际写程序时,就让偏差(目标减去当前)与调节装置的“调节力度”,建立一个一次函数的关系,就可以实现最基本的“比例”控制了~kP越大,调节作用越激进,kP调小会让调节作用更保守。

要是你正在制作一个平衡车,有了P的作用,你会发现,平衡车在平衡角度附近来回“狂抖”,比较难稳住。如果已经到了这一步——恭喜你!离成功只差一小步了~

D的作用更好理解一些,所以先说说D,最后说I。

刚才我们有了P的作用。你不难发现,只有P好像不能让平衡车站起来,水温也控制得晃晃悠悠,好像整个系统不是特别稳定,总是在“抖动”。

我们需要一个控制作用,让被控制的物理量的“变化速度”趋于0,即类似于“阻尼”的作用。

因为,当比较接近目标时,P的控制作用就比较小了。越接近目标,P的作用越温柔。有很多内在的或者外部的因素,使控制量发生小范围的摆动。D的作用就是让物理量的速度趋于0,只要什么时候,这个量具有了速度,D就向相反的方向用力,尽力刹住这个变化。

kD参数越大,向速度相反方向刹车的力道就越强。

如果是平衡小车,加上P和D两种控制作用,如果参数调节合适,它应该可以站起来了~欢呼吧

等等,PID三兄弟好想还有一位。看起来PD就可以让物理量保持稳定,那还要I干嘛?因为我们忽视了一种重要的情况:

还是以热水为例。假如有个人把我们的加热装置带到了非常冷的地方,开始烧水了。需要烧到50℃。

在P的作用下,水温慢慢升高。直到升高到45℃时,他发现了一个不好的事情:天气太冷,水散热的速度,和P控制的加热的速度相等了。这可怎么办?

P兄这样想:我和目标已经很近了,只需要轻轻加热就可以了。D兄这样想:加热和散热相等,温度没有波动,我好像不用调整什么。

于是,水温永远地停留在45℃,永远到不了50℃。

作为一个人,根据常识,我们知道,应该进一步增加加热的功率。可是增加多少该如何计算呢?前辈科学家们想到的方法是真的巧妙。

设置一个积分量。只要偏差存在,就不断地对偏差进行积分(累加),并反应在调节力度上。

kI的值越大,积分时乘的系数就越大,积分效果越明显。

所以,I的作用就是,减小静态情况下的误差,让受控物理量尽可能接近目标值。

I在使用时还有个问题:需要设定积分限制。防止在刚开始加热时,就把积分量积得太大,难以控制。

这篇就写到这里。要想直观地体验PID的控制作用,需要一个具体的东西来调试。LZ以后完成倒立摆项目后,会用一些视频来演示PID参数的整定方法。

THE END
1.PID横向控制和仿真实现机器人pid控制横向PID是一种常见的控制算法,全称为Proportional-Integral-Derivative,即比例-积分-微分控制器。PID控制器是一种线性控制器,它将设定值与实际值进行比较,根据误差的大小,控制器会相应地调整系统的比例、积分和微分系数,以减小误差。 PID控制器的基本公式为: https://blog.csdn.net/jianmo1993/article/details/135592986
2.PID的算法演示PID算法演示程序 PID整定参数演示 调节P值 I值 D值大小可以直观感受PID调节过程 上传者:miumiudoit时间:2023-03-13 PID算法演示程序 PID算法演示程序 pid算法演示程序,可以作为参考学习 ,共初学者参考。 从其他地方考来的仅供参考 上传者:binghe1983时间:2008-11-06 https://www.iteye.com/resource/mykekeke-10203105
3.PID算法演示程序免费版PID算法演示程序官方下载更新时间:2017-09-27 应用平台:winall 软件语言:简体中文 版本:绿色版 机械电子口碑排行榜 Cadence LED胸牌编辑软件(MiniLED Display HID) 三菱PLC学习软件(FX-TRN-BEG-C) 万能对讲机写频软件 Altium Designer2019 下载服务协议见页面底部 基本简介 PID算法演示程序,单片机中PID算法只输入积分比例微分量即可得PID曲线http://www.onlinedown.net/soft/977811.htm
4.先进PID控制MATLAB仿真(第4版)思维导图模板1.3 数字PID控制 1.3.1 位置式PID控制算法 1.3.2 连续系统的数字PID控制仿真 1.3.3 离散系统的数字PID控制仿真 1.3.4 增量式PID控制算法及仿真 1.3.5 积分分离PID控制算法及仿真 1.3.6 抗积分饱和PID控制算法及仿真 1.3.7 梯形积分PID控制算法 1.3.8 变速积分PID算法及仿真 1.3.9 带滤波器的https://www.processon.com/view/5e5b3f2ce4b0c037b6082324
5.模拟量及PID演示教学.ppt模拟量及PID演示教学.ppt,第四章 PLC温度控制技术 ● 第四章 PLC温度控制技术 温度控制系统广泛应用于工业控制领域,如钢铁厂、化工厂、火电厂等锅炉的温度控制系统,电焊机的温度控制系统等。锅炉温度是一个大惯性系统,一般采用PID调节进行控制。本章首先介绍温度传感器的https://max.book118.com/html/2022/0710/8141136111004116.shtm
6.PID深度学习pid算法演示mob6454cc6e8f43的技术博客PID 深度学习 pid算法演示 1 前言 控制系统通常根据有没有反馈会分为开环系统和闭环系统,在闭环系统的控制中,PID算法非常强大,其三个部分分别为; P:比例环节; I:积分环节; D:微分环节; PID算法可以自动对控制系统进行准确且迅速的校正,因此被广泛地应用于工业控制系统。https://blog.51cto.com/u_16099257/6836497
7.HuskyLens摄像头系列写给小学生看的视觉PID巡线算法注意:如标题所说,本文是写给小学生看的 PID 调速算法,所以下文中描述的是已经简化的 PID 算法,默认没有去计算每个程序的循环时间,也就是没有去计算积分和微分时间。主要有几个原因:一、是因为程序功能比较单一,每个循环时间差不多,在调节 Kd、Ki 参数时,将时间参数 T 当成一个整体进行调试了;二、省略了时间https://www.jianshu.com/p/cb8cc0cd7747
8.PID各种算法的优缺点/***/// 位置式PID// //pwm=Kp*e(k)+Ki*∑e(k)+Kd[e(k)-e(k-1)]/***/floatPID_Postion(intiError,PID* sptr){floatiIncpid=0;sptr->iError=iError;/https://www.eet-china.com/mp/a278779.html
9.mcgs西门子训练营从入门到精通65.S7-1500高级培训65_PID回路算法——PLC的编程实现(65)66.S7-1500高级培训66_PID回路算法——PID的功能扩展(66)67.S7-1500高级培训67_基于TCP 的自定义协议通信应用——程序框架(67)68.S7-1500高级培训68_基于TCP的自定义协议通信应用——无确认通信应(68)http://www.kunluntongtai.com/index.php?m=content&c=index&a=show&catid=39&id=2211
10.位置式PID算法和增量式PID算法的差异位置式PID算法与增量式PID算法在计算方式、系统响应、控制效果等方面存在明显差异。两种算法各有优势,应根据具体的控制需求选择合适的算法。位置式PID算法适用于快速响应和实时性要求高的系统,而增量式PID算法则更适用于对稳定性和抗干扰能力要求高的系统。https://m.eefocus.com/e/1713067.html
11.蚁群算法演示【项目分享】蚁群算法(附代码实现) 把一块生肉喂给巨大单细胞生物黏菌 基于A*的射线寻路算法 蚁群行为分析的启示---蚁群算法 我居然只花4个小时就学懂了【优化算法】,遗传算法、蚁群算法、模拟退火算法、粒子群优化算法一次吃透!!!MATLAB/机器学习/人工智能课程 https://xbeibeix.com/video/BV1AA411N7fR
12.PID参数理解及调参方法(附典型PID算法程序)PID自动调参simulink仿真---如何高效调参 设计PID控制器 系统识别APP识别传递函数 Simulink搭建仿真控制系统 使用Maltab自动调参工具PID Tuner调节PID参数 设计PID控制器 我们先看这张经典的PID控制器的图片,可以看e(t)与u(t)与c(t),会发现控制器是控制e(t),也就是反馈值的偏差来输出控制量(u(t))给执行机构的https://www.pianshen.com/article/7389346407/
13.理解STM32控制中常见的PID算法STM32/STM8单片机论坛Kp、Ti、Td三个参数的设定是PID控制算法的关键问题,相关视频请移步:演示PID三个参数的控制作用。一般https://bbs.21ic.com/icview-3383464-1-1.html
14.基于PID算法在喷绘机小车控制系统的应用AET摘要: 选取STM32系列的STM32F103RBT6作为主控系统,以L6203作为直流电机的驱动;根据小车的位置通过PID算法调节小车的速度,对主控中高级定时器进行设计,通过UART显示数据;观测小车运行过程中能否消除惯性带来的影响并立刻转向,及PID算法是否可以应用在喷绘机小车的控制系统中。经过理论分析和软硬件结合测试表明,该设计不但解决http://www.chinaaet.com/article/3000015780
15.基于stm32f103c8t6和PID算法的循迹小车基于stm32f103c8t6和PID算法的循迹小车 STM单片机 课设/毕设 传感器模块 3.1k 6 26 1 简介:基于stm32f103c8t6和PID算法的高度模块化的循迹小车,焊接简单,模块化程度高 开源协议: Public Domain 创建时间:2023-07-28 10:48:27更新时间:2023-08-14 10:07:36 描述 设计图 BOM 附件 成员 评论 编辑器打开 https://oshwhub.com/yuiasami/xiao-che
16.0348基于51单片机的智能恒温箱(基于PID算法)proteus仿真原理图PCB2.当温度超过上下限阈值时,对应控制继电器启动,采用PID算法控制。当温度达到阈值均值时,关闭继电器 3.当温度超过阈值1分钟以上,蜂鸣器报警 4.加热器件采用功率电阻,降温器件采用4010小风扇 原理图: PCB: 主程序: #include<reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include<stdio.hhttps://www.bilibili.com/read/cv19381079/
17.MAXAUTO控制从入门到精通5.B.PID算法实现电机控制(第1节)_自动控制系统(5).mp4 50.G步进电机控制(第8节)_57步进电机驱动代码分析(50).mp4 51.G步进电机控制(第9节)_57步进电机代码再分析及旋转演示(51).mp4 52.G步进电机控制(第10节)_代码深入探究和串口控制步进电机(52).mp4 http://www.maxauto.com.cn/index.php?m=content&c=index&a=show&catid=102&id=1686
18.Matlabpid参数调节工具箱腾讯云开发者社区如果增益值取 0.1,PID 调节器输出变化为十分之一的偏差值。如果增益值取 100, PID 调节器输出变化为一百倍的偏差值。 可见该值越大,比例产生的增益作用越大。初调时,选小一些,然后慢慢调大,直到系统波动足够小,再调节积分或微分系数。过大的P值会导致系统不稳定,持续振荡;过小的P值又会使系统反应迟钝。合适https://cloud.tencent.com/developer/article/2058127