PID控制動手玩玩看

PID三個參數到底該怎麼調才好,真的是一門藝術。
雖然在Marlin韌體內有提供自動測量的功能,但是測得的結果,不見得能令人滿意,還是需要調整。可是到底該怎麼調整?從哪個參數開始動手?數值該增加還是該減小?會不會調整了這個,又需要回頭調整上一個?整個調整過程實在是亂七八糟,不容易理出頭緒。在加上實驗需要時間,可是有一直找不出最佳參數,實在有夠累人。
今天我不曉得是哪根筋不對,突然想說可以用excel模擬PID溫度控制,這樣就可以很快得得到實驗結果,增加調整PID參數的經驗。雖然沒辦法直接透過模擬獲得擠出頭加熱需要的PID參數,但是至少可以熟悉調整PID參數對溫度控制的影響。
下載excel並且開啟後,可以看到左上角有可調整的參數,中間是模擬過程,右邊有兩個模擬結果的圖表。模擬參數分成兩組,前面幾項是環境變數,最後三項是PID值。
受熱物比熱:每公克的受熱物值,需要多少卡的熱量,能上升1℃。水的比熱為1(卡/公克-℃)
受熱物質量:(這不用解釋吧...)
初始溫度:(這不用解釋吧...)
環境溫度:(這不用解釋吧...)
目標溫度:(這不用解釋吧...)
散熱常數:跟受熱物散熱速度相關的常數。系統散失的熱量,我這邊用 (當下溫度 - 環境溫度 ) x 散熱常數來模擬計算。散熱常數越大,系統散失熱量的速度就越快;系統溫度跟環境溫度差異越大,散失熱量也越快。
PID:分別是比例控制常數、機分控制常數、微分控制常數。
系統熱量供應:這邊相對應於加熱棒輸出多少百分比的功率。這邊"系統熱量供應"的模擬計算公式如下:
"這次的"系統熱量供應 =
        P x 這次取樣的溫度誤差 +
        I x 從系統開始以來每次取樣的溫度誤差總和 +
        D x (上次取樣的溫度誤差 - 這次取樣的溫度誤差)
P:比例控制常數。誤差值乘上P值,再加回系統熱量供應。
如果只有P,I跟D都設為零時,我覺得可以把他比喻成開車的時候,油門只會"直接"踩到某個定值,或是完全放掉。不會微調油門的力道。理論上只用比例控制,仍然可以讓溫度控制在目標溫度附近,但是震盪的狀況會比較嚴重。就像司機開車,總是猛踩油門,又猛踩剎車,車子會跑,速度也有,只是乘客會暈到死...

D:微分控制常數。溫度誤差對時間的曲線圖,是一個二維曲線。而對二維曲線微分的幾何意義,則是斜率。所以微分控制,實做上是取上一次採樣與這一次採樣的溫度誤差相減,再除以兩次採樣的時間間隔,算出斜率。用斜率乘上D,再加回系統熱量供應。
D值的效果,我會把他比喻成"提早減速"。當車子的速度接近司機想要維持的速度,速度還沒超過之前,有經驗的司機就會開始預先減小油門。不要等速度衝過頭再來踩剎車,減少車子加速減速的震盪,讓乘客舒適不暈車。不過該提早多少時間開始減速、該減多少速度不要減過頭或是減太少,就要靠D值的大小來調整了。

加入D "微分控制",可以讓系統較快穩定得達到目標溫度。

合適的D值,能讓溫度快速又穩定得恆定在目標溫度,而且沒有衝過頭的問題。

D值過大,提早剎車煞的力道多了,反而會讓系統不穩定得震盪。

再繼續加大D值,甚至會讓控制結果發散不能收斂到目標溫度。

I:積分控制常數。積分在這邊的概念,是把過去所有的誤差加總起來。積分控制當然就是拿積分控制常數乘以過去所有誤差的加總,,再加回系統熱量供應。
積分控制多用來校正穩態誤差。當溫度穩定下來之後,溫度離目標溫度仍然有些微的誤差,這就是"穩態誤差"。如果為了穩態誤差而調整P值,整個系統的穩定度會大受影響。積分控制靠累積穩態誤差,讓這個誤差的效應因累積而放大,再乘以機分控制常數,就可以消彌穩態誤差。
以上是我對PID控制的一些想法。特別注意我介紹的時候,順序是PDI,用意就是建議大家調整的時候,可以先來回調整P、D這兩個常數(I歸零),覺得系統穩定、滿意了,再針對"穩態誤差"來調整 I 積分控制常數。
修改受熱物的質量、比熱,可以觀察受熱系統熱含對PID控制的影響。修改散熱常數,則可以觀察系統散熱情況(多加了風扇吹喉管),對系統穩定的影響。透過模擬實驗,多改幾組環境,並且調出相對應的PID值,應該可以更熟悉PID控制這門藝術~

參考資料

關於PID的認識與討論?

PID控制動手玩玩看的更多相关文章

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

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

  2. 【iCore3应用开发平台】发布 iCore3 应用开发平台PID控制代码

    说明:1.本代码包包含FPGA和STM32F407两部分内容2.FPGA工程为出厂代码FPGA工程,版本为REV43.STM32F407为只含PID控制的ARM工程4.在使用风扇过程中,请勿将手伸入扇 ...

  3. SLAM+语音机器人DIY系列:(四)差分底盘设计——5.底盘PID控制参数整定

    摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为 ...

  4. PID控制最通俗的解释与PID参数的整定方法

    转自->这里 PID是比例.积分.微分的简称,PID控制的难点不是编程,而是控制器的参数整定.参数整定的关键是正确地理解各参数的物理意义,PID控制的原理可以用人对炉温的手动控制来理解.阅读本文 ...

  5. PID控制及整定算法

    一.PID控制算法 PID是比例.积分.微分的简称,PID控制的难点不是编程,而是控制器的参数整定.参数整定的关键是正确地理解各参数的物理意义,PID 控制的原理可以用人对炉温的手动控制来理解.阅读本 ...

  6. 一文读懂PID控制算法(抛弃公式,从原理上真正理解PID控制)

      PID控制应该算是应用非常广泛的控制算法了.小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等等,都可以使用PID控制.这里我们从原理上来理解PID控制. PID(proportion ...

  7. STM32—PID控制在直流电机中的应用

    文章目录 一.PID控制算法 1.什么是PID 2.PID系数的理解 Ⅰ.比例(P)部分 Ⅱ.积分(I)部分 Ⅲ.微分(D)部分 3.PID的数字化处理 二.位置闭环控制 三.速度闭环控制 一.PID ...

  8. 专家PID控制仿真学习

    目录 专家控制 专家系统 专家控制 学习笔记,用于记录学习 资料:<智能控制>(第四版)--刘金琨 专家系统 一.专家系统的定义 专家系统是一类包含知识和推理的智能计算机程序,其内部包含某 ...

  9. 两轮自平衡小车双闭环PID控制设计

                                                                                            两轮自平衡小车的研究意义 ...

随机推荐

  1. SQL[Err]ORA-00XXX: missing 相关

    1.[Err]ORA-00936: missing expression 造成这个错误的原因是:选取的最后一个字段与from之间有逗号 解决方法:将字段与from之间的逗号去掉. 2.[Err] OR ...

  2. 《mongoDB》概念-数据类型

    一:概念 - mongoDB 是一个面向文档的数据库,而不是关系型数据库. - 摘自<mongoDB 权威指南 第2版>第3页 二:数据类型 - null - 用于表示空值或者不存在的字段 ...

  3. storm配置文件

  4. TensorFlow环境

    vps cenots7自带的python2.7各种毛病,浪费了不少时间,装了pyhton3一下就搞定了 mac上有些依赖库需要sudo安装 vps上是基于Anaconda搭建的,感谢极客学院的教程ht ...

  5. 原声js,取消事件冒泡,点击按钮,显示box,点击屏幕其他地方,box隐藏

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. jquery图片懒加载效果

    1.要引入jquery 2.要引入underscore.js <!DOCTYPE html> <html lang="en"> <head> & ...

  7. 关系型数据库与NoSQL数据库的优劣

    当大家学习了一定的NoSQL知识以后,了解了现今许多NoSQL数据库(如HBase,MongoDB,Redis等)时,就会觉得关系型数据库可能已经跟不上时代的步伐.其实并不然,关系型数据库的性能绝对不 ...

  8. 数据重组:对一堆相似字典进行分类统计(shidebin)

    数据重组 # 需求说明:将data_source分类统计,并输出为如下data_final的形式: # data_final ===> # { # 'area': [{'place': '南山区 ...

  9. what's the python之字符编码与文件处理

    用文本编辑器打开一个文件就是把一个文件读入了内存中 ,所以打开文件的操作也是在内存中的,断电即消失,所以若要保存其内容就必须点击保存让其存入硬盘中 python解释器执行py文件的原理 : 第一阶段: ...

  10. Python3学习之路~6.7 经典类和新式类的继承顺序

    在Python中,经典类(class Person:)和新式类(class Person(object):)的主要区别就是体现在多继承的顺序上. Python 2.x中默认都是经典类,只有显式继承了o ...