APP下载

基于ATMEGA2560的自平衡移动机器人系统设计

2017-07-14张燕吕吉明许刘泽沈祥伟

电脑知识与技术 2017年16期

张燕+吕吉明+许刘泽+沈祥伟

摘要:该文设计了一款可以自主运行且保持平衡的移动机器人控制系统,使用LD3320识别简单的语音启动停止信号实现移动机器人启停控制,使用六轴传感器MPU6050实现未知环境下移动机器人的角度信息,通过MPU6050以及电机速度编码器实现保持小车的平衡。移动机器人最后能够实现自主运行以及语音识别的功能。通过实际移动机器人的运行结果说明控制系统的正确性。

关键词;Atmega2560;LD3320;双CPU;MPU6050;L298N

双轮自平衡机器人始创于1980年左右的东京,其设计概念是由东京电信大学的一名教授首先提出的。同一时期,美国发明出一款名为Segway的机器人,该机器人拥有先进的机器配置。发展到现在,该机器人已经发展到多个系列,并在市场中广泛运用。国内对于双轮自平衡机器人的研究起步比较晚。2002年,台湾国立中央大学电机工程研究所模仿美國的Segway研制出两轮自平衡机器人。2005年,哈工大的学生伊亮运用线性控制技术,真正意义上实现了双轮移动机器人的平衡。2012年,Ninebot平衡车CEO高禄峰成立鼎力联合科技有限公司,成功研发出风行者思维车、Ninebot九号机器人,不但在国内取得了成功,还让平衡车进人了美国市场。双轮自平衡机器人以其结构简单、行动灵敏、运行方便、速度可控等优势被广泛运用,并因其可以在狭小或地形复杂的工作环境下完成工作,在民间和军事领域都具有巨大的应用前景,具有非常重大的研究意义。

该文首先研究了自平衡的移动机器人控制系统。

1系统组成和结构

自平衡移动机器人控制系统整个控制系统框架如图1所示,控制系统主要由两个CPU构成,其中主CPU1采用的是89C51主要完成当前角度读取以及电机控制,其中六轴传感器主要完成的是陀螺仪三个方向的角度以及加速度计三个方向的加速度的读取。电机采用的是L298N,此电机模块的优点是可以直接通过单片机的IO口控制其运动。而移动机器人的启动和停止使用的是语音信号来处理,考虑到语音处理内容较多,所以采用的STM32进行语音处理,而后将获取的数据通过端口发送给CPU1。

整个自平衡车系统整体逻辑如图2所示。

移动机器人开始运动之后,陀螺仪获取角速度信息,加速度计获取z轴的加速度信息。将加速度计信息与陀螺仪积分后的角度信息叠加之后比例调整之后的值和角速度信息叠加,而后进行积分成角度信息,此角度信息一部分和陀螺仪角速度信息合成作为闭环反馈系统的输入。将角度信息,角速度信息以及速度信息作为最终控制量叠加在一起作为电机输出电压控制量驱动电机运行达到自平衡的目的。由于整个硬件系统使用两个CPU进行控制,因此对此分别进行介绍。

硬件部分设计语音模块LD3320的控制引脚有四个,分别是TXD,RXD、GND以及VCC引脚,其中TXD与RXD主要实现数据传输通信。P1.1-P1.4四个端口是通用10口输出,用来检测语音信号的输出。如果语音模块正确识别语音信号,那么对应的这四个管脚P1.1-P1.4会输出相应的低电平,从而单片机上与之对应的端口,分别是P3.3-P3.6可以接收到低电平信号。而后将CPU1的p0.2到p0.5连接到CPU2的PC0-PC3上,控制机器人运行。

软件部分语音模块采用VAD技术检测语音信息,通过循环来识别语音信号。主控的CPU反复启动识别,如果在一次识别中无结果,那么会再次启动一次识别;如果识别有结果,将结果与语言库里设置了四个词语“停止”,“运动”,“左转”,“右转”比较,相同则发信号给主CPU让其运动。然后再启动下一次识别结果。算法流程如图5所示。

3ATMEGA2560控制系统

ATMEGA2560是控制自平衡移动机器人的核心部分。包括和89C51进行通讯,利用MPU6050获取陀螺仪以及加速度信息,利用获取的角度位置信息,控制电机L298N运行。其硬件连接如图6所示。MPU6050的12C通信接口SDA以及SCL分别与CPU的对应接口相连,而后控制器端口PC3以及PC4控制电机速度,可以输A.PWM脉宽调制信号来调节电机的速度。IN1和IN2控制电机的转向。

3.1MPU6050传感器数据获取

Atmegal2560通过TWI(两线串行总线)获取MPU6050各个传感器的数据信息。其中Atmegal2560作为主机(Master),而MPU6050作为从机(Slave)。MPU6050作为从机地址为OxDO,也就是说CPU读取数据需要首先发送这个地址给从机。

而IIC读写的步骤如下所示。12C读传感器数据的步骤:1)主机发送START信号,告诉从机两者需要通信。2)主机发送从机地址以及写入数据的命令到从机,等待从机响应。3)从机响应之后,主机发送需要读取的寄存器地址给从机,等待从机响应。4)从机响应之后,重新发送Start信号。5)主机发送从机地址以及读取数据的命令到从机,告诉从机读取数据。等待从机响应。6)读取从机的数据,对于多个数据则连续读取数据,多个数据之间需要有一定的等待时间。7)读取完成之后,发送一个stop信号给从机,告诉从机读取数据结束,一次通信完成。

12C写传感器数据的步骤:1)主机发送START信号,告诉从机两者需要通信。2)主机发送从机地址以及写入数据的命令到从机,等待从机响应。3)从机响应之后,主机发送需要写入的寄存器地址给从机,等待从机响应。4)从机响应之后,写人相关的从机数据,对于多个数据则连续写人数据,多个数据之间需要有一定的等待时间。5)写人完成之后,发送一个stop信号给从机,告诉从机写人数据结束,一次通信完成。

为了验证传感器数据获取情况,利用CVI编写上位机通信界面,将MPU6050获取数据传输到上位机上。如图7所示。

3.2电机控制

本设计中用到的电机是L298N,其硬件接口硬件连接与对应的控制如图所示。

电机的调速通过EN1,EN2输入的PWM信号进行调速,而这两个端口的信号通过图2的闭环系统软件进行设置。具体的原理是:电机的脉宽调制信号输入L298N,IN1和IN2控制左电机,IN3和IN4控制右电机。两个IN口10状态为正转,叭状态为反转,11状态为停止。利用这个原理实现移动机器人运动状态的控制。为例如,当IN1为1

IN2为0时,左电机正转;当IN3为1且IN4为0时,右电机正转;那么此时移动机器人的运动状态即为前进。同理,可以实现移动机器人的左转、右转、后退和停止。

4整体软件设计

4.1整体软件设计

由于篇幅限制对于各个部分不再介绍,下面对于系统整体软件设计以及速度控制PWM部分做介绍。

系统整体软件设计如图所示,首先初始化各个端口,而后进人循环,判断P3.6端口是否为低电平,如果是则启动自平衡车,而后获取MPU6050传感器的信息,对角速度信息进行积分得到角度信息,将角度,角速度,加速度信息通过PID控制获取一个速度控制电机运动保持平衡。而后继續循环,如果获取的信息是停止则结束运动。如果是左转右转则控制机器人两边电机转动速度不一致即可。

4.2PWM的PID控制

移动机器人的自平衡是通过传感器获取角度信息以及倾斜量而后通过PID闭环控制调整移动机器人电机运行的速度达到自平衡的目的。因此PID控制是核心,本设计中首先每次获取当前的速度,而后为了防止抖动造成机器人的不平衡,所以采用速度互补滤波防止抖动。由图2,可知PID控制的输人时速度,角度以及角速度三者,通过移动机器人实际运动调整PID控制的参数,达到获取一个较稳定的脉宽输出偏移量,而后结合小车是否转弯参数来一起设置左右轮电机的速度达到稳定的目的。

5结束语

如图11所示,在实验室环境中,搭建了一个移动机器人运动环境,两足平衡机器人在已经搭建成的一个通道环境中,可以正常的按照语音指令行走,从而通过通道。

本文设计了一款可以实现自平衡的移动机器人控制系统,该系统由

CPU构成,每个CPU负责不同的工作,整个系统设计完成之后进行了测试,测试结果说明了整个系统的正确性。