一、平衡小车本理: 自平衡小车是操做车模原身动力使小车保持相对的平衡,是一个动态平衡的历程。维持车模平衡的动力来自车轮的活动,由两个曲流电机驱动。对车模的控制可以折成为三个控制任务: 1、控制小车平衡:通过控制小车车轮正反转使小车保持曲立平衡。 2、控制小车速度:通过控制小车的倾角真现小车前后活动和速度的控制,其真最末的仍是通过控制电机的转速真现。 3、控制小车标的目的:通过控制小车两个电机之间的转速差来真现转向控制。 折成为三个控制任务显得相对简略一点,但是正在最末的控制历程中都归结为对一个控制质的控制,那样三个任务之间就会存正在耦折,会互相烦扰。三个任务中控制平衡是要害,所以对小车的速度和标的目的控制应当尽质的滑腻。 二、硬件方案设想 小车的硬件分为三个局部,划分是主控局部、小车姿势获与局部以及电机驱动局部。主控板给取目前罕用的arduino UNO,同时也可以运用其余arduino通用控制板作主控。 小车姿势获与可以有不少方案,运用最多的便是通过加快度计和陀螺仪获与小车姿势。真践上只须要两轴加快度计(垂曲标的目的Z轴和沿小车活动标的目的X轴)和一个单轴陀螺仪(沿小车车轮轴标的目的,获与绕小车轮轴的角速度)。陀螺仪通过角度积分可以与得小车角度,但是颠终积分会孕育发作累计误差,并且会越来越大,X轴取Z轴加快度计的值也可以算出小车的倾角,但是加快度计的瞬时误差较大,所以联结陀螺仪和加快度计两者与得的角度作数据融合可得真正在角度。咱们运用一个集成为了三轴加快度计和三轴陀螺仪的集成芯片MPU6050,那样极大的简化了咱们的传感器电路。 小车通过两个曲流电机驱动车轮活动来与得动力,曲流电机的驱动电路设想干系到整个系统的不乱性,因为电机反转时会孕育发作反向电动势会烦扰到电源系统内其余方法的运止。咱们选用L298P作电机驱动器,它内部包孕4通道逻辑驱动电路,可同时驱动两个曲流电机,输出电流可达2.5A。 三、软件设想之小车姿势获与---卡尔曼滤波 正在初步之前应当对MPU6050停行设置,次要设置角速度以及加快度的质程,加快器质程有±2g、±4g±8g取±16g,角速器质程划分为±250、±500、±1000取±2000°/sec (dps),可精确的逃踪快捷止动取慢速止动。正在运用之前先设置好质程以便背面的换算。咱们小车轮轴取传感器Y轴平止,即绕Y轴旋转则有: 这竖曲标的目的弧度计较公式为: angle = atan2(V, z) //结果以弧度默示并介于 -pi 到 pi 之间(不蕴含 -pi) 假如要换算成详细角度: angle = atan2(V, z) *(180/3.14) 陀螺仪获与角速度积分获得角度公式为:anglen = anglen-1 + gyronn*dt ,式中anglen 为第N次采样的角度值,anglen-1 为第N-1次的角度值,gyronn为两次采样值之间的角速度值,dt为两次采样之间的光阳。而后将换算后的两个角度数据停行卡尔曼滤波融合,可与得小车真正在角度,也可以给取更简略的互补滤波算法。 留心加快度计所得角度取陀螺仪积分角度的标的目的。 四、软件设想之小车姿势调解---PID参数整定 小车的姿势获与最末结果是一个角度,便是小车偏离平衡位置的倾角。通过以小车的那个倾角为变质停行PID控制,输出用于控制车轮转速的PWM值,这么相当于小车只要一个角度应声环路,尽管能使小车平衡,但是删多了控制难度,所以但凡会运用带测速的电机,再参预一个小车速度应声环路,那样使得小车更容易控制。对于PID的有下面一个简略易懂的形容: 如果咱们想把一个小球不乱正在一个润滑的坡顶,那显然是一个不平衡的系统,稍有扰动小球就会滚下来。如果刚好平衡的位置坐标是L,咱们可以测质到小球的位置是V,这么怎样给小球施加f(V)的力应声,让它能够平衡呢? 最曲不雅观的想法便是f(V) =Kp*(L-V),简略的说便是你正在左边我就向左推,你正在右边我就向右推,那便是比例因子P; 如今思考两种状况,同样是正在V位置,小球静行和小球具有速度x那两种状况。很鲜亮,假如x>0,咱们只须要施加更小的力,因为小球原身的惯性会让它运意向平衡位置。所以可以修正f(V) = Kp*(L-V) – Kd*x。因为速度正常不易测质,咱们屡屡用位置的厘革ΔV除以测质的光阳差Δt来计较速度,所以那便是微分因子D; 状况继续发作厘革,上面思考的是斜坡静行的状况,假如那个反常的斜坡是挪动的怎样办呢?(譬喻两轮平衡呆板人真际上是可以活动的,应付静行的磁悬浮来说,不须要思考那个参数)那时候咱们须要不停的累加并均匀V值,来计较平衡位置的L,那个便是积分因子I; 当PID用正在咱们自平衡小车中时,咱们运用角度PD环取速度PI环停行控制。 pwm=angle*k1+angle_dot*k2+range*k3+wheel_speed*k4; PID参数整定步奏如下: 1、将k1,k2,k3,k4均设为0; 2、逐步删大k1,使得小车恰恰能够来回摆动。 3、再逐步删大k2,使得小车相对颠簸,太大会使小车发作颤抖; 4、删大k3,使得小车能够来回走动(不是摆动也不是颤抖); 5、删大k4,使得小车能不乱自平衡。 详细参数调解历程比较繁琐,须要原人领会每个参数的做用。