对PID的理解及其实现公式

PID是一种被广泛应用在嵌入式,自动化设备等控制场景的算法。绝大多数PID都是采用编程实现,这里所说的编程和一般的程序设计还不太一样。

  • PID在最理想的状态下能够实现我们所需要的量不受时间以及正常外部干扰的影响下保持不变,从而达到其他目的。比如恒定的水温,电机恒定的转速,云台固定的角度,可以分别满足人在最舒适的水温下洗澡,无人机稳定飞行的保障,人在拍摄过程中摄像头不抖的要求。
    PID的核心在于反馈,比较,执行。首先需要把需要控制的量的当前状态测出来,其次与目标值做比较,最后通过计算由执行器输出,
    以水温控制举例,首先我们需要有个能够控制的加热器件,加热强度的大小可以通过调节电流或者通电时间控制,其次需要有一个温度传感器能够采集温度,最后我们需要一个或者一堆能够比较计算的器件,放大器电路或者单片机。

当实际温度小于设定温度时,我们需要增加加热强度,并且差值越大,加热强度越大,当实际温度大于设定温度时,应该停止加热甚至制冷降温。这是常规的控制思路,也是PID中P所代表的意义,即比例,用式子表示为out=P*Ek,Ek=Set–measure。P代表了现在。

  • 但是只有P的话是不能满足要求的,在只有P控制的情况下,系统容易发生震荡,不稳定,尤其是在这种有明显滞后性和惯性的系统,有时也会存在静态误差,所以我们需要引入I,它的存在是用以消除以往的误差,怎么消除的?通过积分!随着时间推移,以往的误差和会越来越小,最终稳定。它可以将震荡的曲线幅值减小甚至消除。通过式子来表示就是。
    out =I*S_Ek,S_Ek+=Ek。I即代表了过去。需要注意的是,积分项的作用强度出来与I有关,还和积分时间,也就是积分项的运算周期有关

  • 在没有高频命令以及对控制时间要求不高的控制系统中,PI控制已经能够满足要求了。引入D能够使控制系统更加“智能化”,或者说它就会具有预见性,因为D的要素在于其变化趋势,也就是微分或者说导数。微分项的存在使系统表现的更加“硬”,仍然拿温度变化举例,比如在PI控制水温能够达到恒定,但是在环境温度骤变的情况下,只能通过积分作用等待一定的时间才能达到控制效果(因为在差值很小的作用下比例项的作用不大),但是引入微分项之后,当检测到系统实际值呈下降趋势时,应该增大其输出。表现在公式上就是out=D*(Last_Ek–Ek)。Last_Ek表示上次测量的误差。显而易见,D代表了将来。

  • PID算法理解和使用都不算难,但是要找到一套完美的参数却要花不少时间,一般是通过简单的计算以及大量枯燥的尝试才能调好,并且,根据需要控制的系统不同,可以考虑使用积分分离,微分先行等方案,PID的执行周期一般与测量周期相同。

      代码表达
    

**来源:公众号 Hello Geek**
来源 公众号:Hello Geek

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值