PID控制器/算法的思想和实现


PID介绍

why - 在讲是什么之前,先举个(也许不太恰当的)🌰来说说为什么需要PID

假设我们在烧水,我们现在希望把水控制在60度,一种简单粗暴的解决方案:当我们发现水温超过了60度我们就打开开关(假设目前只有最大功率[打开开关]和0功率[关闭开关]),结果打开开关后功率太大,水温立马超过了60度,我们又立刻关掉开关,这个时候水温很快就掉到60度以下。很显然,这个方案并不能稳定地将水温控制在60度,很容易在60度上下形成波动很大的曲线。

因此,我们需要一个方案,能够稳定控制水温。更直观地就反映在,如何控制某一个时刻的加热功率,让水温能够保持在目标温度上。

how - 如何解决上面场景的问题呢

相信大家很快可以想到,当刚开始烧水的时候,离目标温度比较远,我们就把功率开大一点,当离目标温度越来越近后,我们就逐渐调小功率。所以我们需要建立一个t时刻的烧水功率关于目标温度和当前温度的函数,用来计算t时刻应该有的烧水功率。

what - pid是什么

上述🌰中,t时刻的烧水功率我们设定用u(t)表示,t时刻目标温度和当前温度的差值用e(t)表示,PID的公式可以表示为:
在这里插入图片描述
可以看到公式分为三部分,即P、I、D&

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
PID是一种常见的控制算法,用于控制系统的稳定性和精度。它的核心思想是通过比较实际输出值和设定值确定反馈方向和强度,进一步调整输出值。由于该算法实现过程相对较复杂,编写PID控制的代码需要了解一定的数学和电子技术知识。 在C语言中实现PID控制时,可以分为三个部分:输入、处理和输出。输入阶段是通过传感获取反馈信号,并将其转化为数字信号进行处理。处理阶段主要包括比较反馈信号和设定值,计算PID控制的各项参数,并输出控制指令。最后,控制指令通过执行转化为物理输出信号,实现对待控制对象的控制。 具体而言,在C语言中实现PID控制的代码,需要进行如下步骤: 1.定义变量和常量:在定义阶段,需要定义存储输入和输出信号的变量,以及控制常量和参数。 2.获取输入信号:通过传感获取反馈信号,并将其转换成数字信号,保存在输入变量中。 3.计算误差:将输入信号与给定的目标值进行比较,计算误差并存储。 4.计算控制指令:根据P、I、D三个参数,计算出控制指令,将其存储在输出变量中。 5.输出信号:通过执行将输出信号转化为物理信号,实现对监控对象的控制。 需要特别注意的是,PID控制的P、I、D三个参数需要经过调优才能达到较好的控制效果。在实际的C语言程序中,一般通过试错法来优化这些参数,并不断更新算法实现的代码。 总而言之,PID控制算法是一种经典的控制算法,在工业控制和电子技术领域得到了广泛的应用。在实现PID控制的C语言代码时,需要引用相关库函数并掌握基本的数学和程序语言知识。优化PID参数可以进一步提高算法的控制效果,实现系统的高精度和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值