韩竺秦,彭昕昀,刘文秀,张丽娜
(1.韶关学院 自动化系,韶关 512005;2.韶关学院 教育学院,韶关 512126)
本文研究内容有两轮自平衡机器人的姿态检测算法和PID控制算法两方面。姿态检测算法通过Kalman滤波器融合姿态传感器测量的数据,获得准确的姿态信息[1],PID调节器则利用这些姿态信息,输出电机控制信号,控制电机的转动,使机器人得以平衡。
现有的自平衡机器人结构种类繁多,本设计将采用图1的结构,由上中下三层组成,上层电池层、中间主控层和底层电机驱动层。电池层用于放置给整个系统供电的12V电池,主控层由主控芯片最小系统和传感器模块组成,电机驱动层接受单片机信号,并控制电机。每个层都是功能模块的电路路板之间用铜柱支撑固定,电机外壳与电机驱动电路板固定,电机转轴与两只轮胎相连。
图1 平衡机器人机械结构
两轮平衡机器人,其核心问题就是运动平衡控制问题,两轮机器人始终要保持直立的姿势,在保持姿势平衡的同时,还需要完成各种任务,行进、旋转、爬坡、越障等。完成这些任务必然会有俯仰角θ角度的产生,因此,欲使小车平衡,必须要减小俯仰角θ角甚至要消除θ角,一般都需要把θ控制在一定的范围内[2]。其整体控制思想流程如图2所示。
图2 机器人平衡原理流程图
消除θ角度的有效方法是:STM32控制电机的转动带动底盘部分进行移动,确保与车身上部和底部在同一个垂直线上。
系统采用STM32F103C8T6为主控芯片,通过I2C接口读取传感器L3G4200和传感器ADXL345的数据,陀螺仪和加速度级的数据融合测出自平衡机器人的相关姿态,最终通过PID输出PWM电机控制信号对电机进行有效的控制。在系统运行时将需要观察的数据通过串口发送到上位机,以记录相关的数据和绘制出有关波形,便于查看滤波和PID效果。系统总体框架设计图如图3所示。
图3 两轮机器人系统总体框架设计
系统电源输入采用12V电源进行供电,LM2596开关电压调节器是降压型电源管理单片集成电路,能够输出3A的驱动电流,同时具有很好的线性和负载调节特性[3,4]。STM32F103VET6以及其它的外围芯片都是3.3V供电,所以我们需要用到5V转3.3V的芯片,AMS1117-3.3V电源芯片。这个电源芯片属于线性电源芯片,比开关电源芯片的噪声要好很多。最大输出1A电流,给主控板供电完全够用。电源供电系统如图4所示。
图4 系统供电系统
ADXL345是一款由ANALOG DEVICES公司生产3轴加速度计,该加速度传感器电路的应用电路如图5所示。
图5 加速度传感器电路
ADXL345可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(3.9mg/LSB),能够测量不到1.0°的倾斜角度变化[5]。主控芯片通过I2C即可初始化该芯片并读取三轴的加速度值。单片机可以通过此外部中断,触发对三轴加速度数据的读取,用中断触发的方式可以较少系统计算周期,提高电机有效控制频率。
从传感器读出的数据通过一定的运行可以算出传感器的各类倾斜角,其中,θ正是平衡车要消除的角度,车身倾斜角度可以通过式(1)计算出。式(1)中,A是各轴输出的加速度分量。
ADXL345主要是用来测量静态重力加速度,但是系统的动态的加速度值是干扰,用L3G4200测量出自平衡车的角速度值能在一定程度上消除动态的干扰,利用ADXL345和L3G4200能够解算出车的倾角信息。L3G4200提供一个16位数据输出[6],可配置的低通和高通滤波器等嵌入式数字功能。与加速度传感器的数字接口一致,通过用SDA和SCL与主控芯片的硬件I2C接口进行通讯,采用3.3V供电,其应用电路如图4所示。
图6 陀螺仪传感器电路
使用减速直流电机减速比为1:30的GB37电机作为两轮自平衡机器人的驱动电机,电机采用H桥驱动方式。电机驱动器件采用TB6612FNG,具有大电流MOSFET-H桥结构,双通道电路输出,可同时驱动两个GB37电机,外围驱动电路简单[7]。对于PWM信号输入频率范围,高达100kHz的频率足以满足我们的需求了。
软件程序设计流程上,系统上电复位之后,先初始化各个功能模块,并进行平衡机器人的姿态检测和PID控制。同时为了前期调试已经查看数据,使用了STM32主控的串口将程序中产生的数据如估算出的最终角度等,通过UART串口上传到上位机,可以在串口测试软件上看到数据的特性。系统软件总体流程如图7所示。
图7 系统软件总流程图
自平衡车采用PID控制,内环用于转速测量和控制,控制电机输出,使平衡机器人车轮转速与角度环的输出值保持一致;外环是角度环,始终要保持小车倾斜角度尽可能等于0。图中U为平衡机器人角度的目标值(始终为0),作为系统的输入。X0是角度环PID的输出值,也是电机转速目标值。X1为车轮的转速,Y为实际的倾斜角度。Z为扰动输入。PID控制器控制流图如图8所示。
图8 PID控制流图
为了方便测试,将传感器数据通过UART串口输到上位机,用串口波形软件将数据以波形的形式在电脑显示器上显示。如图9是由加速度计测出来的未经过滤波处理的角度波形图。
图9 倾角值波形
图9(a)是未经滤波前的倾角图,在第7秒之前静放系统,此时测出来的倾角为0°,波形基本稳定不变,但在7秒后加入扰动,其波形开始发生剧烈的变化。此波形说明了仅由加速度计计算出来的倾角存在太多干扰。因此,需要一种有效的滤波器,滤除非重力加速度分量。对两个传感器的数据进行融合,减少测量误差。图9(b)所示,加了低通滤波器的波形与未经过滤波的波形进行比较,滤波器最优估计方法有较好的功效,角度跟随质量变好。
自平衡车设计的关键就是两轮平衡机器人行进速度和行进方向的控制。设计中通过对PID控制器的调试,可以验证控制系统的性能稳定和算法的有效性。
图10 平衡测试曲线
由图10可以看出,两轮平衡机器人车在初始倾角为19°左右时,经过0.8秒的振动之后后迅速回到动态平衡状态,然后车的倾角在一定的范围内震荡并达到新的平衡。
两轮自平衡机器人是一个多变量、非线性、强耦合的系统,分析了自平衡机器人的主要控制原理,研发了TM32F103C8T6为核心的控制系统,利用Kalman滤波对采集的数融合,设计了一款自平衡性较好的两轮机器人,实现了平衡转向、行走等控制任务,实验结果显示自平衡性显著,抗抖动性较好,证明所设计控制方案可行,满足设计要求。