本帖最后由 krwlng 于 2017-12-12 09:36 编辑
Arduino自平衡小车——数据测试
平衡小车支持在线的PID算法的调试工作,同时可以随时进行在线更新。
对于PID 我也没有很好的解释:还好借鉴下吧。
简单的控制模型:控制一台小车以PID控制的方式跑100米后停下。
1、P 比例控制,就让小车跑100米,按照固定的速度(如3米/秒),那么小车只能在99米或者102米就停了。 说明:P比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。 2、PI 积分控制,就是按一定的车速跑到了102米然后回头接着跑,跑到98米(控制时间不定),然后回头向100米终点位置跑。来回多晃几次以后,一定可以到达100米终点。 说明:在积分I控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。 3、PD 微分控制,按照一定的车速跑到103米后,往回跑靠近终点位置,到达了100米的位置以后,当无静态误差以后,控制量也为零;如果停车地点离100米有1-2米,还存在静态误差时,控制量不为零。车还会继续往返运动。 说明:在微分控制D中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳,其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例P”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势。这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例P+微分D(PD)控制器能改善系统在调节过程中的动态特性。 关于减速电机的基本速度调试: 这是电机速度的设定,在调试的过程中是用的是倒立摆的原理。平衡小车的基本速度为10cm/s 在空转或者达到急速的时候可以达到40cm/s,及为最大的速度。根据代码的设定可以调节脉冲宽度。 同时在设定的过程中也可以很灵活的计算出来PWM的数据,根据码盘自动判断转速的情况。
|