news 2026/6/10 20:56:24

工程师 - 从不懂到会用!PID从理论到实践~

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
工程师 - 从不懂到会用!PID从理论到实践~

从不懂到会用!PID从理论到实践~_哔哩哔哩_bilibili

1,不懂 (秒懂PID概要)

2,略懂(PID基本知识储备)

3,懂的都懂(PID通俗公式理解)

4,会用就行(PID从理论到实践)

1,PID适用系统

适用线性系统,满足叠加性和齐次性。

准确:二阶以内线性系统

2, 一阶系统举例

3,二阶系统举例

4, **数学表达关联**:

线性微分方程的形式为各阶导数及变量的线性组合(如不含变量的平方、乘积等非线性项)。例如:

方程的线性特性保证了系统响应符合叠加原理,由此判定系统为线性的。

5, PID不适用高阶系统,可以将其简化为二阶系统,就可能控制了。

非线性系统,可以通过李雅普诺夫第一方法,在平衡点处线性化,转变为线性系统,也可能通过PID进行控制。

6,宏观意义

在工业应用上,占有95%应用比例。

上手简单,无需对子系统精确建模。

把系统拿过来,直接就控制。

7,控制系统概述

A. 一般开环控制系统。一个系统有输入X和输出Y。

加入要控制阀门控制水的流量,要1L/s。一个流量控制系统。

实际输出就是实际水的流量,按照期望输出对应的就是对应的设定输入信号,然后给到控制器,就是阀门开关。控制量就是圈数比如一圈。

执行器就是阀门,控制对象就是水管开度。

拧完就不管了,不会看输出的实际流量。

8,B, 前馈控制系统的框图

这个干扰,比如在输出的罐子里放一些石头,减少了流量。

检测到干扰,输出的孔径变小了,告诉控制的人,多拧一圈。

9,闭环控制系统

控制器输入的是偏差Error, E = X - Y。

人脑是控制器,人眼去看,实际输出的流量差异是多少,再调节控制器输入。

10,双闭环系统,内环和外环。

现在不是流量控制系统,而是液位控制系统。

有流量的控制,可以有一个相对稳定的流量,更方便。

11,前馈反馈复合控制系统

有一个前馈控制器,这样抵消干扰对控制对象的作用。

12,参数详解

a, 误差 Error

期望输出(输入) - 实际输出

b,控制器输出

控制器的输入,可以是开环的输入,或者是闭环的做差的Error值。

这个Error通过控制的PID运算或其他算法,得到的值,给执行器的输入。

c,执行器输出

直接作用到对象。

d,系统输出

对象后面的输出。

13,连续与离散信号

这个离散信号的积分感觉不对,还要乘以一个系数的。

14,PID公式解释,抽象派

C是控制系统的输出,上面的Uc。

e是控制系统的误差,期望输出 - 实际输出。

下面是实际常用中的归一化。

15,PID算法的形象解释

小车的控制系统建模,使用前面的单闭环控制系统。

4个执行器。

传感器把速度或者位置信息给到输入。

把输入设定为期望位置,输出是实际位置。

小车前面100米有堵墙。

16, 先只研究P。

PID可以只用P,只用PI,只用PD。

P给0.1, 100m误差,就是10m/s的信号。执行器实现对地10m/s的速度。

速度对时间的积分就是行驶距离。

17,想要控制的更快?调整PID的值。P值0.5,快。

P值0.05,慢。曲线也不一样。

P值的作用调节控制系统,到达期望值的时间。

18,第二个例子无人机。

控制信号是螺旋桨转速,悬停时是100 rpm。

对P取值,1,2,3,100,1000.

发现最后总会中间就停下。比如P=100,则在99m处悬停。因为100-99=1, 1x100=100 rpm。

无限接近100m,但无法到达100m。

对无人机这个系统,只靠P就不行。所以要引入 I 项。

19,偏差在控制系统里叫稳态误差,一般用 I 来弥补。比如悬停在99m,稳态误差就是100-99=1m。

当悬停时的P项输出,误差恒定,P输出恒定。需要引入I。

下图E偏差信号,即误差一直为1,比例系数Pterm也一直不变,为100 *(100-99)= 100 rpm,维持悬停。

误差一直不变,就会一直积累,是线性函数,就是积分项。

20,

再分析一下偏差为0的情况。

积分项还在,因为是之前所有的误差一直累积下来的,偏差为0时,积分项值继续保持。

实际的积分项和比例项的曲线:

21,

积分项和比例项一起,就会在初始提供很大的速度,那无人机就会飞过头。出现超调。

所以需要引入一个微分项D。

22,误差图形:

有些系统不让你超太多或有限制的。所以要加入微分项。

对误差求导,误差变化率是负的。

23,

Kp越大,则误差减小越快。

Ki越大,则静差越容易抵消,后期响应速度更快。是说这个系统,达到期望值之前进入的一个稳定静止状态。

Kd越大,则误差变化越大,则提供的降低的控制信号越大。抵消一些。

Kp控制主要期望值的变化速率,Kd控制期望值的变化速率,Ki控制期望值的收敛速度。

单个Kp无法消除稳态误差。

Kd减小超调效果,减小震荡。值太大会增加调整时间。

24,PID参数整定。调参。

Kp逐渐调大,使曲线达到某种靠近和贴合度,达到稳定误差之前的时间。

在Kp合适情况下,Ki提供了误差消减的持续动力,所以为加强调节速度。

Kd,系统出现超调,为了减少震荡,太大会增加系统调节时间,减少震荡幅度却增加了震荡周期。

一般用PI就可以,出现震荡的话再加入D。

25,其余相关控制知识

a, 积分限幅

如果手一直按住无人机。I 项会线性增长会变很大,P恒定。

松手后,输出信号就很大,飞的就很离谱的快。

所以加一个限制的最大值。

所以使用积分项的第一个问题就是误差变化延迟后,随时间会积累变得过大,要进行阈值的限制。

b, 积分分离

当无人机达到期望高度后,要由 I 项保持无人机悬停。这时再给一个新的较高的期望值高度。

这时就会出现积分项较大的情况。所以做一个分离,比如说误差不能超过500,超过500,积分作用等于0,只依靠P的作用。

等到误差降低到一定范围,积分项再开始生效。

c,微分先行。

26,使用PID控制电机。发送端是单片机, STM32。

控制器输出的主控发送值,是有协议的。

27,

执行器是个电调C620,使用CAN发送信号,接收命令后控制电机。

28,代码

29,RM电机6020角度双环。双环,外环角度,内环速度。

期望输出和实际输出都是角度值。输入角度减去输出角度,得到偏差信号E,给到控制器。

再进行PID运算得到结果,再和第二个传感器的值做差得到偏差,这个是速度偏差。

经过第二个PID控制器,才得到一个执行器需要的输出结果。然后作用到对象。

6020是一个集成的。电机会输出角度速度电流扭矩等。这个模块会返回信息给单片机。

PID在进行第一次处理时,对角度做了一个量纲转化。角度变成了角速度,乘以R就是V。

比如小车的例子,位移单位m或cm,经过转换变为速度,也是一个量纲转化。

30, 代码讲解,比如设定值30°。

具体运算和单环的一样。

30,角度更新的代码

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 16:03:32

MNIST数据集下载实战:5种不同方法的对比评测

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 编写一个Jupyter Notebook,比较五种MNIST数据集下载方法:1)TensorFlow的keras.datasets 2)PyTorch的torchvision 3)Scikit-learn的fetch_openml 4)直接HTTP…

作者头像 李华
网站建设 2026/6/10 13:11:13

深度学习毕设项目:机器学习 基于CNN卷积神经网络对鸟类识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/10 18:50:20

传统开发VS AI生成:JAVA设计模式效率对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 生成一个对比项目,包含手动编写的JAVA设计模式代码(如工厂方法模式)和快马平台生成的同一设计模式代码。比较两者的开发时间、代码行数、可读性…

作者头像 李华
网站建设 2026/6/9 22:04:53

AI编程 vs 传统编程:效率对比分析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 设计一个效率对比工具,能够记录并比较AI编程和传统编程在完成同一任务时的时间消耗、代码行数和错误率。应用应支持任务定义、时间记录、代码质量分析,并生…

作者头像 李华
网站建设 2026/6/10 13:55:43

WSL2实战:在Windows上搭建完整Linux开发环境

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个WSL2环境配置脚本,自动安装并配置以下开发工具:1. Ubuntu 20.04 LTS 2. Python 3.8及常用库 3. Node.js LTS版本 4. Docker Desktop集成 5. VS Cod…

作者头像 李华