如何学习PID控制?


26

我想学习主要用于温度的PID(比例-积分-微分)控制。

我想最好通过一个简单的项目来学习。

您能推荐一些需要几周学习的知识吗?

编辑:我想控制水箱的温度。加热由电阻器完成。


我试图获得一个可以从中学习的基础项目,我认为数学也很有趣。人们将生命奉献给它。
Kortuk

您想控制什么温度?
J. Polfer

3
由于无法散发热量,因此即使在施加小电流时也需要确保系统仍然能够冷却,否则pid可能会出现调节问题。当您进行实验时,我可能会添加风扇或冰块。您希望它在满时上升,而在下班时下降。在这种情况下,反馈将为您进行调整。
雷克斯·洛根

1
这取决于所需的水箱温度。如果他想要80摄氏度,那么环境温度就足够了;如果他想要25摄氏度,那么他将会遇到问题。PID正确调整后应该能够应对缓慢的温度损失。
Kortuk

Answers:


27

控制温度(取决于您的介质)并不困难。那是我刚开始时的第一个项目。请原谅我,如果我重复一遍你已经知道的事情。

我假设您已经有一种控制系统的方式(即加热器或冷却器单元),以及从系统获取反馈的方式(如热敏电阻之类的温度传感器)。两者都需要实现PID回路,这是一种闭环控制。之后,您真正需要做的就是编写一些软件来发送控制命令,读取反馈并根据该反馈做出决策。

我将从没有博士学位的PID阅读开始。这是我第一次必须在科学实验中调节温度时使用的文章。它提供了一些易于理解的图片,以及漂亮的示例代码(您可以调整的基本循环仅需要30行),说明了如何控制“植物”-在这种情况下,就是您要控制温度的东西。 。

PID(比例积分微分)控制的要点是使用(分别)系统的瞬时,过去和预测的未来性能来确定如何在给定的时间点控制系统以达到指定的设定点。在许多情况下,您必须调整算法的增益因子才能获得所需的性能-温度升高的速度,要避免过冲的温度等,甚至可能会发现不需要差动。甚至积分控制,以达到您想要的位置!


如果没有博士学位,就不记得与PID的链接了。我忘记了它的名字,不记得我很久以前读过什么。+1先生。
Kortuk

3
没有博士学位的PID是很棒的文章!然而,好了,我的8位微控制器不喜欢这样的浮点运算..
阿卜杜拉kahraman

太好了!不带PHD的PID是完美的。我有一个PHD,但是我尽了最大努力来避开控制理论:)另外,也喜欢迷你线路跟随器。

@Bistromath请不要添加“谢谢”作为答案。拥有足够的声誉后,您将可以投票认为有用的问题和答案
m.Alin 2012年

10

是。获取一个热敏电阻和一个电阻。选择一个可以拉大电流(> 100mA)的电阻。

在它们之间使用导热膏,然后用胶带将它们粘在一起。通过ADC将热敏电阻电路连接到微控制器。使用晶体管控制电阻,并通过PWM对其进行控制。

开发一个PID,使您可以使用刻度盘控制温度,并练习制作一个PID,使温度过冲并响起。使它过度阻尼,直到永远达到温度,并尝试使其达到临界阻尼并以最大速度达到温度。

让我知道更多细节是否有帮助。

完成此操作后,降低其热导率,请尝试添加一个会延迟温度传播的平台,并设法使其良好控制。

这也可以通过LED和光电晶体管来完成。


这些都是很好的建议,可以帮助您摆脱PID循环的影响。
J. Polfer



1

只需将我的2美分价值添加到良好的响应中即可。

如果温度误差检测受到限制(运放增益使输出饱和)并且可控制温度的功率固定,则PID在温度控制中的实际使用通常会出现非线性行为。

考虑一个开关控制器。从施加热量和检测到温度变化时开始,系统将具有等待时间。在没有PID回路的情况下,此延迟会导致不稳定的回路振荡,并且如果存在任何磁滞,则电源循环会带有噪声(开-关-开)。但是,很高的增益(例如比较器)会导致较小的残留温度误差。延迟会影响周期时间和超调。

如果有外部干扰,例如水箱灯可能会增加大量热量,则一旦从灯的热量中检测到温度升高,加热器调节器就必须做出响应。如果您的Lamp开关不是PID回路的一部分,那么它就无法“预期”这种影响(微分反馈增益)。显然,如果Lamp产生的热量过多,则温度将无法调节,并且将超过设定值。

带PID控制的热控制可能必须输入灯泡开关状态和输出控制,以调节作为辅助热源的光功率,如果过多的话。

确定绝对控制误差,超调百分比和响应时间的要求是优化PID回路所需的一些设计输入。同样重要的是定义系统干扰,并将其包含在控制系统中以进行输入和输出。例如。灯的热功率以及传感器和位置的选择。

除了经验。

我第一次使用热水器的经历是在70年代的水床时代,当时我还是一个学生,我设计了自己的温度控制器,其中使用了一个热敏电阻,控制电路和一个到加热器的过零三端双向可控硅开关。我从比较器控制开始,发现床跳起了异常反应。因此,当ZCS三端双向可控硅开关元件在阈值附近接通时,我在传感器上使用了未过滤噪声添加了比例控制,从而为我提供了比例“缺失周期”。我可以将温度调节在0.1'C以内。响应较柔和,但结果相同。

我发现最大的错误是位置以及传感器上水压的微小变化。(那时我很小,只有185磅,但在2000磅的水床上,<10%的水压变化很小)

传感器和水床之间的热阻会产生微小的偏移误差,具体取决于传感器上的水压。在您的水箱场景中,传感器错误可能受到水箱尺寸以及传感器与加热器或传感器之间的距离以及最远水面或传感器与加热器之间的水流量或气泡率的影响。

就我而言,每当我上床睡觉时,热阻就会因增加的压力而略有下降,并且电源灯会发光一分钟或两分钟,直到温度下降十分之一,或者与额外的重量和压力导致的表观温度上升相匹配。水床对着恒温器。

(经验教训。不要忽略干扰的源头及其对控制系统错误的影响)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.