李志豪 司永康 屈志扬 李建军 李高展 曲艺晗(河南科技大学 机电工程学院,河南 洛阳471003)
近年来,两轮式自平衡小车的研究在美国、日本、等国都得到了迅速发展。平衡车能够通过自身的整体协调性操作平衡,而且体积小,容易上手,成为越来越多人的一种代步工具。平衡车的动力来源是锂电池,没有碳排放,是一种绿色出行方式,能很好的保护环境。目前,平衡车已经进入越来越多人的视野之中,我们研究的目的是使小车能在正常的环境下正常前进和后退,保证正常的直立运行。
该平衡小车系统采用Arduino 单片机为核心,GY-85 九轴IMU 传感器模块负责采集平衡小车的姿态,并将姿态信息传输回Arduino 控制器,控制器得到平衡小车的实时角速度和角度以及小车车轮当前的速度,综合计算出需要输出的控制信号进而准确控制平衡小车两个车轮的直流电动机[1],使平衡小车保持平衡,同时将平衡小车系统所采集到的角度、角速度、车轮速度等通过蓝牙控制模块传送至手机app上实时显示,以及在小车硬件显示屏上也能显示。系统总体结构如图1 所示。
图1 平衡小车系统
该平衡小车系统分别由电源降压模块AMS1117、Arduinouno、GY-85 姿态传感器、电机驱动模块、电机及BT08b蓝牙控制模块四部分组成,小车的系统集成电路结构如图2。12v的电源经过降压模块下降至5v,为Arduino 控制板提供电源,GY-85 读取小车姿态数据再传到Arduino 控制器;电机编码器获得一台电机的转速再通过传感器反馈到Arduino 控制板,Arduino 控制板根据传感器所采集的信息,通过PID 控制算法将PWM 信号输出传至电机驱动模块[2]与此同时,控制器将传感器采集到的小车姿态运动信息通过BT08B 蓝牙模块传送到手机app 上,并且能在显示屏上显示出来。
图2 平衡小车系统电路原理图
ArduinoUNO 是基于ATmega328P 的一款微控制器板[3]。它分别设置了14 个用于数值式的进出输入/控制输出引脚(其中6个引脚设计可以被直接用于PWM 输出),6 个模拟输入,16MHz的晶振控制时钟,USB 的总线连接,电源的插孔,ICSP 连接头和复位控制按钮。只需要通过两根USB 数据线和电脑硬件连接就可以同时进行电源供电、数据传输通讯和程序下载。
GY-85 传感器模块系统是两轮平衡小车的核心零件之一,其中包含有三个芯片:陀螺仪、加速度计和电子磁力测量器(各三个轴),通过阅读这些参数,就可以判断出一个物体在不同时刻的姿态、转动速度、方向。
该系统采用L298N 双桥直流电机驱动模块,可以同时控制2 个电机正反转,平衡小车只需要这一个电机模块就能控制两个轮子的运动。L298N 电机驱动模块,电机驱动电压5-35V,输出最大电流范围可达2.5-3A。主要特点:工作时电压高,输出电流较大。
在自平衡小车控制系统中,系统内部的工作原理与运行流程如图3。平衡小车的转速控制状态可以大致分为三种,即平衡驱动控制、速度驱动控制和方向驱动控制,要正确实现这三种控制,控制的对象就是对两个车轮电机的控制[4],我们采用了经典型PID 控制器进行自平衡驱动控制。而要达到准确的控制,我们就需要知道小车的姿态、速度数据,这些数据对下一步控制器怎样去控制小车的运动非常重要。我们通过GY-85 姿态传感器采集小车的实时数据,数据传至控制器,用PID 控制算法对数据进行处理,再输出PWM 波,小车电机做出调速运动,从而实现小车的平衡及运动。
图3 程序流程图
我们使用两台直流驱动电机,电机的引脚A、B 用来输入PWM 脉宽调制器的信号来对电机进行调速控制。如果左电动机输入信号端IN1 连接高电平,输入信号端IN2 连接低电平,左电机正转;如果信号端IN1 接到低电平,IN2 接高电平,左电机就会逆转。控制右电机采用同样的方式,输入信号端IN3 接高电平,输入端IN4 接低电平,右电机正转;反之电机就会逆转。PWM 信号端A 控制左电机调速,PWM 信号端B 控制右电机调速。电机工作如表1。
通过对两轮自平衡小系统动力学分析和数学建模,引入PID 反馈后系统的传递函数为:
在simulink 中, 建立了平衡小车数学模型, 如图4, 调用PID 控制器组合构成系统的主要组成部分。在以单位阶跃信号为干扰物时,绘制出对应的阶跃响应曲线图,如图5。通过这个波形我们可以清楚地看出, 系统能够在受到外界干扰的条件下,能够使其在一定的周期内重新回到稳定的状态。这就说明我们所构造的两轮均衡小汽车体系的数学模拟机构是有效实现的。
表1 电机工作逻辑表
图4 平衡小车系统模型simulink 仿真
图5 阶跃响应曲线图
本系统实现了小车能够基本保持平衡,实验过程中小车会出现略微的不稳定前后的晃动。通过蓝牙在手机app 上可以显示各个数据的变化。整个系统的设计成本低、项目完成周期为三个星期。基于Arduino 的两轮自平衡小车基本能够实现项目的要求,由于知识的匮乏,时间的紧迫,Arduino 程序存在很多不够完美的地方,simulink 仿真也存在很多未考虑的实际影响因素。
两轮自平衡小车是一个非线性的复杂系统,在项目的设计中运用开源硬件完成了两轮自平衡小车的项目设计。采用蓝牙模块实现更方便的控制。整个系统中,用姿态传感器对小车的姿态、速度、方向进行采集,再利用PID 控制算法对数据进行处理,控制小车的平衡性和稳定性。