平衡车模型与sumulink仿真

导言

相信很多朋友在学嵌入式控制系统的时候,都玩过平衡车,把平衡车作为自己学习和实践的重要一步。平衡车模型,事实上类似于倒立摆模型,他是一个经典的控制系统模型,对于做自动控制的人来说,倒立摆是必须的一步,它对控制系统的分析,挖掘有着重要的影响。所以,我们很有必要了解平衡车的控制方法。这对我们对控制系统的理解有着重要的作用。

物理模型

下面我们来简单看一下平衡车的物理模型
在这里插入图片描述
α \alpha 为平衡车倾角, r r 表示轮子半径。
对轮子中心求矩得 f r = G L s i n α 2 fr=\frac{GLsin\alpha}{2}
可得 α = a s i n 2 f r G L 1 \alpha=asin\frac{2fr}{GL} ( 1)
如上图,以平衡车为整体进行受力分析。在平衡车稳定时,受如上二个力,一个为地面给轮子的摩擦力,二是平衡车自重,另外还有地面给车的支撑力(这里忘画了)。假定车在稳定不跑时不倾斜,则系统在f对轮子力矩的作用下必定不能保持平衡,故可得出:车在稳定跑的时候必定有一定的倾斜角度。
在这里插入图片描述
再单独对轮子进行受力分析,轮子受地面摩擦与电机扭矩的作用向前滚动(自重与地面支撑力和摩擦力在竖直方向与水平方向平衡,这里不列出式子)。在平衡车稳定时,车将匀速向前运动。同样对对轮子中心求矩可得:
T = f r 2 T=fr(2)
联立(1)(2)求得 α = a s i n 2 T G L \alpha=asin\frac{2T}{GL}
可见,平衡车稳定时倾斜角度与电机转矩T有关,T越大,即给电机的速度越大,则倾斜角度越大。

控制系统的设计与仿真

方案一
速度环补偿给角度的p控制器。给出matlab框图:
在这里插入图片描述
方案二
串级pid,速度环直接给角度环。给出框图:
在这里插入图片描述
二个方案仿真结果一样,如图:
在这里插入图片描述
这里可以看到最终稳定向前跑时,角度为一定值,符合我们前面的物理模型。
这里需要用到自控里的很多知识,特别是方案一,是多输入的系统,甚至要用到现代控制理论。本文只针对入门不久的朋友,所以我只简单分析一下方案二。
设x为速度环输入,y为角度环输出(注意角度环输出的是输出力矩T,这里我利用了公式上述讨论的公式将输出力矩化为了角度,我们这里只讨论输入x与输出力矩y的关系)
y x = p 1 s + i 1 + d 1 s 2 ( p 1 + 1 ) s + i 1 + d 1 s 2 p 2 s + i 2 + d 2 s 2 ( p 2 + 1 ) s + i 2 + d 2 s 2 \frac{y}{x}=\frac{p_1s+i_1+d_1s^2}{(p_1+1)s+i_1+d_1s^2} \frac{p_2s+i_2+d_2s^2}{(p_2+1)s+i_2+d_2s^2}
这里速度环用的pi控制器,角度环用的pd控制器
因此:
y x = p 1 s + i 1 ( p 1 + 1 ) s + i 1 p 2 + d 2 s ( p 2 + 1 ) + d 2 s \frac{y}{x}=\frac{p_1s+i_1}{(p_1+1)s+i_1} \frac{p_2+d_2s}{(p_2+1)+d_2s}
根据我的上一篇文章,稳态时 y x = p 2 p 2 + 1 3 \frac{y}{x}=\frac{p_2}{p_2+1}(3)
联立(2)(3),其中y=T,得:
小车稳定时倾角 α = a s i n 2 p 2 x G L ( p 2 + 1 ) \alpha=asin\frac{2p_2x}{GL(p_2+1)}
仿真中的参数我是随便设置的,大家可根据实际情况计算。
至于串级pid为什么能够达到这样的效果,这必须用自动控制原理来解释,对于刚入门没学的同学来说,这里不需要讲解。只用知道这个方案可以实现,并能通过仿真验证就可。切忌主观硬性理解。
串级pid调参
一般先调内环,再调外环。
角度内环:让输入为0,调节pd控制器使之能有平衡的趋势(平衡一会就会倒下)。
速度外环:将速度环加上,令速度期望为0,调节pi控制器让它平衡。

结语

本文有许多内容还没讲到,实属能力有限。关于更多的平衡小车内容,可参考平衡小车之家的资料(没收广告费)。

猜你喜欢

转载自blog.csdn.net/qq_45908056/article/details/106989580