平衡车模型与sumulink仿真
文章目录
导言
相信很多朋友在学嵌入式控制系统的时候,都玩过平衡车,把平衡车作为自己学习和实践的重要一步。平衡车模型,事实上类似于倒立摆模型,他是一个经典的控制系统模型,对于做自动控制的人来说,倒立摆是必须的一步,它对控制系统的分析,挖掘有着重要的影响。所以,我们很有必要了解平衡车的控制方法。这对我们对控制系统的理解有着重要的作用。
物理模型
下面我们来简单看一下平衡车的物理模型
设为平衡车倾角,表示轮子半径。
对轮子中心求矩得
可得
如上图,以平衡车为整体进行受力分析。在平衡车稳定时,受如上二个力,一个为地面给轮子的摩擦力,二是平衡车自重,另外还有地面给车的支撑力(这里忘画了)。假定车在稳定不跑时不倾斜,则系统在f对轮子力矩的作用下必定不能保持平衡,故可得出:车在稳定跑的时候必定有一定的倾斜角度。
再单独对轮子进行受力分析,轮子受地面摩擦与电机扭矩的作用向前滚动(自重与地面支撑力和摩擦力在竖直方向与水平方向平衡,这里不列出式子)。在平衡车稳定时,车将匀速向前运动。同样对对轮子中心求矩可得:
联立(1)(2)求得
可见,平衡车稳定时倾斜角度与电机转矩T有关,T越大,即给电机的速度越大,则倾斜角度越大。
控制系统的设计与仿真
方案一
速度环补偿给角度的p控制器。给出matlab框图:
方案二
串级pid,速度环直接给角度环。给出框图:
二个方案仿真结果一样,如图:
这里可以看到最终稳定向前跑时,角度为一定值,符合我们前面的物理模型。
这里需要用到自控里的很多知识,特别是方案一,是多输入的系统,甚至要用到现代控制理论。本文只针对入门不久的朋友,所以我只简单分析一下方案二。
设x为速度环输入,y为角度环输出(注意角度环输出的是输出力矩T,这里我利用了公式上述讨论的公式将输出力矩化为了角度,我们这里只讨论输入x与输出力矩y的关系)
这里速度环用的pi控制器,角度环用的pd控制器
因此:
根据我的上一篇文章,稳态时
联立(2)(3),其中y=T,得:
小车稳定时倾角
仿真中的参数我是随便设置的,大家可根据实际情况计算。
至于串级pid为什么能够达到这样的效果,这必须用自动控制原理来解释,对于刚入门没学的同学来说,这里不需要讲解。只用知道这个方案可以实现,并能通过仿真验证就可。切忌主观硬性理解。
串级pid调参
一般先调内环,再调外环。
角度内环:让输入为0,调节pd控制器使之能有平衡的趋势(平衡一会就会倒下)。
速度外环:将速度环加上,令速度期望为0,调节pi控制器让它平衡。
结语
本文有许多内容还没讲到,实属能力有限。关于更多的平衡小车内容,可参考平衡小车之家的资料(没收广告费)。