PID控制研究,基于Unity、Arduino、Matlab

摘要

所谓PID控制系统,即按照被控制对象的当前数据与目标值相比较产生的误差的比例(P)、积分(I)、微分(D)进行控制的控制系统。本文以双轮自平衡车为目标系统,对其进行PID控制。首先通过Matlab Simulink进行仿真,输出图像以观察PID参数对于系统的影响。之后在Unity中进行仿真,在虚拟场景中控制3D模型。最后使用Arduino平衡车进行实验,验证PID控制的效果。

简介

PID控制系统如今被广泛地应用于工业控制系统,它会自动对控制功能进行准确迅速的校正。例如汽车上的巡航控制系统,如果仅控制发动机为恒定功率,则在上下坡时,速度就会有降低和升高,PID控制器则会根据当前的速度,增加或减少发动机的输出功率,以保证速度恢复到指定速度。 最早该理论的实际应用是在1920年代的船舶自动转向系统领域,然后将其应用于制造业,首先在气动中广泛使用,随后是电子控制器,如今PID概念已经普遍用于需要精确优化的自动化控制应用中。

PID控制器的数学形式,输出信号为:

$u(t) = K_p(1+\frac{1}{T_i}\int^t_0e(t’)dt’ + T_d\frac{de(t)}{dt})$

控制器的传递函数为:

$G(s) = K_p(1 + \frac{1}{T_is} + T_ds)$

比例环节(proportional)

为了提高响应速度,需要引入比例控制系数,使得在一定的偏差值时,能产生合适的输出信号,缩短控制时间。在$K_p$ 过大时,可以会引起系统震荡。

积分环节(integral)

对系统有记忆作用,可以消除静态误差,但是过大时会引起系统不稳定。

微分环节()

反应了系统的变化速度,可以在偏差较大时提高速度,减小响应时间,同时在偏差较小时减小速度,从而减小超调。缺点是对于干扰非常敏感,会使得系统的抗干扰能力变差。

D.D.Survivor

D.D.Survivor

My name is Witt. I'm an independent game developer and science fiction fan.