最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助。作者Brett Beauregard的原文网址:http://brettbeauregard.com/blog/2012/01/arduino-pid-autotune-library/

  最后,我发布了一个Autotune库来补充Arduino PID库。当我发布当前版本的PID库时,我发布了一系列异常广泛的帖子,让人们对里面发生的事情更易理解。

  虽然没有那么深入,但这是这个帖子的目标。我将解释 Autotune 库想要完成的任务,以及它是如何处理其业务的。

1、原由

  几年来,我一直想拥有一个自动整定库,但由于我与雇主的协议,我无法写一个。但是!当我找到由William Spinelli编写的AutotunerPID工具箱时,我已经准备好了;我的公司对我移植和扩展现有的开源项目没有任何问题。

  我将代码从 matlab 转换过来,对峰值识别代码进行了一些调整,并将其从标准形式 (Kc、Ti、Td) 切换到理想形式 (Kp、Ki、Kd)。除此之外,所有的功劳都归斯皮内利先生所有。

2、理论

  PID 控制器的最佳整定参数 (Kp、Ki、Kd) 将取决于该控制器的驱动的是什么。烤箱最好的整定参数与低温烹饪器具最好的整定参数是不同的。

  自整定器试图找出控制器驱动的内容的性质,然后从中进行调整参数。有多种方法可以做到这一点,但大多数方法都涉及到以某种方式更改 PID 输出,然后观察输入的响应方式。

  库中使用的方法称为中继方法。下面是它的工作原理:

  从稳态开始(输入和输出都是稳态),输出沿一个方向跨一定距离D阶跃,当输入越过触发线时,输出沿另一个方向跨距离D阶跃。

  通过分析峰值的距离以及峰值相对于输出变化的大小,Autotuner 可以分辨出一种类型的过程和另一种类型的过程之间的区别。因此,不同的系统将获得自定义调优参数:

3、实施情况

  这在理论上效果很好,但现实世界的数据并不是很合作。输入信号通常是嘈杂的,这会导致两个主要问题。

3.1、问题 #1何时步进?

  由于噪声信号是起伏的,当输入信号经过触发线时,触发线很可能会被交叉几次。这可能会导致输出中轻微的颤振,如果严重的话,可能会完全破坏:

  我选择回避此问题的方式是让用户指定噪声带。实际上,这将创建两条触发线。由于它们之间的距离等于噪音 (如果设置得当),由于信号抖动而发生多次交叉的可能性较小。

3.2、问题 #2:峰值识别

  在模拟世界中,识别峰值很容易: 当输入信号改变方向时,这是最小值或最大值 (取决于发生的更改)。但是,在嘈杂的世界中,此方法失败:

  每一个噪声信号都是一个方向的改变。为了处理这个问题,我添加了一个“回溯时间”参数。这是一个糟糕的名字。如果你能想出更好的办法,请告诉我。

  无论如何,用户定义了某个窗口,比如10秒。然后,库将当前点与最后十秒的数据进行比较。如果它是最小值或最大值,则会将其标记为可能的峰值。

  当标记的点从最大值切换到最小值时,反之亦然,以前标记的点被确认为峰值。

  另一种解释回溯时间的方法是,如果一个点是一个回溯未来或过去中最大 (或最小) 的值,则该点将被标识为峰值。就像我说的:可怕的名字。

4、你也应该知道..

  执行的循环数将在3到10之间变化。该算法一直等到最后3个最大值彼此都在5%以内。这是为了确保我们已经达到了稳定的振荡并且没有外部奇异现象发生。这让我想到……

  我不是Autotune的超级粉丝。我经常说,而且仍然相信,一个受过中等训练的人会很容易战胜自动整定器。如果不清楚算法的话,很多地方会很容易出错。话虽如此,但 Autotune 是帮助新手进入竞技场的宝贵工具。

欢迎关注:

【技术】Arduino PID自整定库的更多相关文章

  1. 手把手教你看懂并理解Arduino PID控制库——引子

    介绍 本文主要依托于Brett Beauregard大神针对Arduino平台撰写的PID控制库Arduino PID Library及其对应的帮助博客Improving the Beginner’s ...

  2. PID参数整定快速入门(调节器参数整定方法)

    PID调节器参数整定方法很多,常见的工程整定方法有临界比例度法.衰减曲线法和经验法.云润仪表以图文形式分别介绍调节器参数整定方法. 临界比例度法一个调节系统,在阶跃干扰作用下,出现既不发散也不衰减的等 ...

  3. 我的四轴专用PID参数整定方法及原理---超长文慎入(转)

    给四轴调了好久的PID,总算是调好了,现分享PID参数整定的心得给大家,还请大家喷的时候手下留情. 首先说明一下,这篇文章的主旨并不是直接教你怎么调,而是告诉你这么调有什么道理,还要告诉大家为什么'只 ...

  4. Brett Beauregard大神的Arduino PID算法

    大神的全部PID http://brettbeauregard.com/blog/category/pid/ Improving the Beginner’s PID – Introduction I ...

  5. Neo4j高级应用技术专题系列 - APOC存储过程库-【1】概述

    Neo4j高级应用技术专题系列 - APOC存储过程库-[1]概述 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://bl ...

  6. Arduino PID Library

    Arduino PID Library by Brett Beauregard,contact: br3ttb@gmail.com What Is PID?   PID是什么 From  Wikipe ...

  7. PID参数整定

    PID参数整定方法很多,常见的工程整定方法有临界比例度法.衰减曲线法和经验法.云南昌晖仪表制造有限公司以图文形式介绍以临界比例度法和衰减曲线法整定调节器PID参数方法.临界比例度法一个调节系统,在阶跃 ...

  8. [技术] OIer的C++标准库 : 字符串库<string>

    引入 上次我在博客里介绍了OI中可能用到的STL中的功能, 今天我们接着来发掘C++标准库中能为OI所用的部分. 众所周知, OI中经常用到字符串相关的处理, 这时善用字符串库可以使一些操作更加简洁易 ...

  9. [技术] OIer的C++标准库 : 字符串库

    引入 上次我在博客里介绍了OI中可能用到的STL中的功能, 今天我们接着来发掘C++标准库中能为OI所用的部分. 点击传送至我的上一篇系列博文 众所周知, OI中经常用到字符串相关的处理, 这时善用字 ...

随机推荐

  1. php string常用函数

    <?php $a[]='a'; $a[]='b'; $a[]='C'; echo "</br>"; /* implode — 将一个一维数组的值转化为字符串 说明 ...

  2. Cisco网络模拟器踩坑记录

    1.在我们新建一个拓扑图的时候,选择设备之间的连线种类有时会导致线路不通的情况(两个端口上为红色点)这时候建议拆除这条线后选择闪电标记 的万能线帮助我们自动创建连线(这时就能根据它显示的线条种类得知应 ...

  3. java代码转python代码

    (1)安装工具(windows 环境下面) 先下载antlr: http://www.antlr3.org/download/antlr-3.1.3.tar.gz 链接:http://pan.baid ...

  4. Educational Codeforces Round 64 (Rated for Div. 2)题解

    Educational Codeforces Round 64 (Rated for Div. 2)题解 题目链接 A. Inscribed Figures 水题,但是坑了很多人.需要注意以下就是正方 ...

  5. Laravel —— could not find driver

    Laravel 中的数据库是以 PDO 的方式连接的 数据库连接失败时,先检查问题所在,再对症下药 本文以 pgsql 为例 1.判断 pgsql 是否启动 $ ps -ef | grep pgsql ...

  6. httpclient post请求中文乱码解决办法

    在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码的.可是在使用httpclient发送post请求报文含中文 ...

  7. Pycharm中打开Terminal方式

    点击剪头的图标就可以在左侧出现Terminal

  8. [BZOJ 5127][Lydsy1712月赛]数据校验

    Description 题库链接 给你一个长度为 \(n\) 的序列.\(m\) 次询问,每次询问序列的一个区间 \([l,r]\).对于 \([l,r]\) 内的所有子区间,询问值域是否连续.若存在 ...

  9. MySQL备份的三中方式

    一.备份的目的 做灾难恢复:对损坏的数据进行恢复和还原需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用 二.备份需要考虑的问题 可以容忍丢失多长时间的数据:恢复数据要在多长时间内 ...

  10. VSFTPD匿名用户上传文件

    1.安装vsftpd yum -y install vsftpd yum -y install ftp 客户端 2.编写配置文件 vim /etc/vsftpd/vsftpd.conf anonymo ...