高雪,刘永新,李艺文
(陆航学院航电和兵器工程系,北京,101123)
双轮平衡车是一种能够稳定保持直立,且在外力的作用下依然可以不倒的智能小车。平衡车的稳定主要是通过两个电机的运动来实现的,本设计两轮平衡车保持小车直立和运动的动力由小车的车轮控制,车轮的转动由两个直流电机驱动。从自动控制入手,控制对象为平衡小车,两个直流电机的转速作为输入量[1]。该平衡小车相对于过去的四轮移动式机器人而言有了很多的改进,一是在车体的结构上面实现了优化,体积减小;二是可以实现原地转弯,转向的半径可以很小,移动轨迹也更加机动,可以实现在窄小空间内运动;三是驱动小车运动所需要的功率相对教小,同等条件下电池可以实现对该小车较长时间的供电。
平衡车的概念自从被提出以来,其在外来扰动下依然能保持稳定的特点使得它成为一个研究控制理论的很好的平台[2]。近年来,双轮自平衡类设备的研究在美国等相对发达的国家正在被研究,各实验室提出了不同的平衡控制的解决方案,也组建出了一些原型机来进行试验,对平衡小车的的运动特性与自动平衡性能方面进行研究和改进。
本文设计的双轮平衡车是由共轴、独立的驱动系统控制、车身中心在两轮轴上方,的一种控制程序检测平台,可以实现其直立稳定的行走,有相对灵活的运动特点,能够在相对复杂的环境中倚仗其独特的灵活性工作。
1.1.1 核心硬件的选择
图1 车轮控制小车平衡原理
如果想让小车平衡,车轮予以的加速度必须与小车偏差移的方向相同,从而修正这种平衡偏差。
1.1.2 测速及其物理模型搭建
首先要尽量保持小车的物理模型稳定,本文采用三个支架片与八组支架为小车构建了一个相对稳定的立方体模型。
双轮平衡小车在静态条件下通过直立控制很容易实现静态平衡。但是因为组成部件的安装误差或者传感器等元件的测量误差等因素,小车与实际地面并不是绝对的数学意义的90度角,它会有个误差角度的存在[3]。由于重力的分立存在,小车就会为了修正朝倾斜的方向的误差从而加速前进。基于此原理,控制小车的动态平衡须要通过控制小车的倾角误差来实现。具体需要解决三个问题:
图2 小车外观图
(1)测量小车速度
对于平衡小车速度的测量,本设计是由在电机输出轴上安装的光码盘测得。电机的转速,通过控制单片机的计数器,来测量在固定的时间间隔内速度脉冲信号的个数来实现。
(2)智能小车倾斜角的控制
社区家长教育缺乏主动性。社区教育功能一直是被忽略的一环,社区中成人教育一直更多存在于学位教育和学历教育中,社区教育定位不够清楚,对于社区家长教育的理解滞后,少数开展家长教育的社区也是借助其他的平台或者机构。同时,社会上对家长教育的概念更多来源于家长自我教育本身,家长的后续型学习被放置到家长个人自发和自觉学习的层次上,政府部门、社区本身和家长自我都没有意识到这是一项需要长期坚持的常规工作,它直接导致的后果是能够开展家长教育的社区很少。
在程序中,小车通电后会有较短的感受时间给陀螺仪一个给定的中立值,给定小车直立控制的初始设定值,通过角度控制,小车将会自动保持在这个初始角度(即上电时给到的控制值)。在两轮平衡车直立控制算法中小车的倾角是跟踪重力的分力加速度在Z轴的角度。为了修正这个误差,我将小车的倾角初始值与重力加速度Z轴角度做差,这样可以最终确定小车的倾角,该倾角一般以小车上电的后陀螺仪的自定义基准,来给定倾角。
(3)根据速度误差控制小车倾角
小车倾角存在的主要原因是在静态平衡的小车速度与小车倾角之间传递函数存在非小相位特性[3],这使得在反馈控制下容易造成系统的不稳定性,本文利用了共轭点与比例控制和积分环节来调节,使小车在由归干扰的情况下依然能保持稳定。
这三个问题的解决控制算法再由单片机来实现,这样双轮平衡小车的角度控制和方向控制就可以直接将输出电压调制后输出PWM波,从而控制电机转速。
该双轮平衡小车是一个非最小相位系统,其速度的控制在本质上是通过调节模型的倾斜角实现。所以对于小车的控制须精准,速度调节式幅度不可过大且要缓慢变化,因为如果比例和积分系数过大,可能使系统成正反馈,此时小车出现过调系统不稳定。
电机驱动模块采用TB6612,该模块可以对两个电机进行驱动,通过该模块来控制两电机的输入口,该模块的STBY口接单片机的IO口使得清零电机全部停止,置1通过AIN1 AIN2,BIN1,BIN2 来控制正反转。逻辑真值表设置如下。
表1 电机操作模块逻辑真值表
采用MPU6050陀螺仪采集小车俯仰角,可以将陀螺仪和加速度计二者结合在一起,精度较高而且减少了占用PCB板的空间。同时,在该模块上内置了一个温度传感器和在工作调节误差在±1%内的振荡器(振荡器可以稳定送给单片机的小车姿态信号)。MPU-6050还有一个VLOGIC引脚,而平衡小车的操控是耦合横轴和纵轴夹角实现小车平衡。
开关电压调节模块采用LM2596,该模块式一个小的集成电路,可以实现降压电源管理,并且其本身比较轻量化也是非常符合本设计的需求不会对小车的中心有太大影响,虽然可调至的电压比较少但是足够小车使用,能够输出3A的驱动电流,同时具有很好的线性和负载调节特性。
测速码盘模组采用L15D11测速模块,具有高精度高速光电门,同时它具有448个光栅片,在AB双相输出的作用下,小车车轮转动一圈时脉冲数可达三千多,单向可可以达到一千多,精度足够高,使得小车保持非常好的平衡空置状态。
直流减速电机采用GB37 3530,直流减速电机是一款微型减速电机,我使用的是一款双相高精度带光电门测速码盘的款式,其减速比为1:30。
图3 超声波时序图
超声波模块的设置为控制口发出一个高电平,那么输出口会有一个高电平。当开始有输出值时,定时器打开,当输出为低电平时,定时器显示输出值,这样便可以得到一次测距的时间,同时计算出距离。通过不断反复的周期测量,即可得出移动的距离值。(1)采用IO触发测距,给至少10us的高电平信号;(2)通过该超声波模块自动发送8个40khz 的方波,自动的建出有无信号返回;(3)当信号返回时,会在IO输出高电平,根据该电平的持续时间可以得出测试距离,测试距离等于高电平的时间乘以声速除以2。
根据总体设计的思想及本系统实现的功能,将平衡小车的软件设计与实现分为主程序、平衡程序、各子模块程序。使其能配合硬件完成二轮自平衡,移动避障。
图4 主程序流程图
图5 小车工作室具体受力状态图
1.2.1 角度分析与算法
上图为平衡小车在工作时的具体受力状态图,即小车在受到轮子加速的作用后会产生额外的惯性回复力使其保持原平衡状态,由上图可知回复力为:
但是由于小车的物理模型原因,一般θ都非常的小,所以对其进行线性化。因其为负反馈,所以其控制量是车轮加速度a与θ成正比例变化,定义比例系数为k1[4].若比例系数k1>g,则回复力的方向会与位移方向相反。同时为考虑其稳定状态还需要增加阻尼力(即考虑各种摩擦)则将回复力改写为:
有了该式便可将加速关于比例k1、k2的方程列出:
图6 小车受力模型与公式推导图
根据上述结论我们可以依据控制理论得出小车的闭环系统在收到干扰加速度,即不平衡因素x(t)影响时的受力分析[5],并取得小车刚体与车轮运动加速及其干扰加速度a(t)x(t)的运动方程式。
k1比例控制参数,k2微分控制参数(因为角速度是角度的微分),而微分控制参数提供的作用相当于小车受到的阻尼力,该阻尼力可以均衡小车的震荡现象(即一直处于频繁修正的过调状态)。
双轮平衡车的信号总体传递图,如图7所示。
图7 小车信号总体传递图
首先是对小车的各项平衡参数进行初始化:
平衡小车在实现软硬件结合后,需对系统进行集成调试与功能检测。集成调试分为目测、万用表测试、加电检查、联机检查四步进行[6],并对调试过程中发现的问题进行分析解决;功能检测就是对平衡小车的平衡及附加功能进行实际测试,并对测试结果予以分析总结。
用500g重物在一片平整的场地里进行功能检测。测试方法:考虑小车两种失衡情况,一是通过用手推动小车,使其出现轻微倾斜;二是在小车上添加重物使其重心偏移,发生较大倾斜。观察小车在两种倾斜情况下的平衡调节。为了便捷可用肢体比如手来充当障碍物,遮挡超声波模块,观察小车避障是否灵活。
小车在两种失衡情况,均可通过自身的速度调整实现平衡。当用手去遮挡超声波模块营造障碍时,小车会向障碍物反方向移动一段距离,再实现平衡。根据测试结果知该平衡小车可以很好的完成自动平衡移动和避障,动作响应迅速、准确,能很好的完成任务要求。
本文主要是通过陀螺仪对双轮平衡小车的状态进行检查,再将信号传送到单片机内部,单片机的系统通过程序调用再将信号送到电机,从而控制电机的转动方向和速度,以实现双轮小车的直立平衡。测试结果表明,该平衡小车在负重情况下可以很好的完成自动平衡移动和避障,动作响应迅速、准确。同时,该平衡小车的设计与研究,对于自动控制机器人的研究具有一定的参考意义。