基于STM32控制的平衡小车系统设计
作者:陈昱 沈林涛 王凯
来源:《软件导刊》2020年第08期
        摘要:为了响应节能环保、绿出行倡议,缓解城市交通拥挤状况,提出一种基于STM32F103C8T6芯片控制的两轮平衡小车设计方案。以MPU-6050作为小车姿态传感器获取小车车体倾角和角速度,基于卡尔曼滤波算法对姿态传感器采集到的的数据进行滤波融合,利用霍尔编码器测量小车车轮转向和转速,运用PID算法对控制要求和采集的数据信息进行计算分析并输出控制PWM,经由TB6612电机驱动模块驱动电机,实现小车自主平衡并具备一定的抗干扰能力。另外小车通过蓝牙模块与手机APP通信,可通过手机端控制小车前进、后退、转弯等动作。
        关键词:STM32;PID;MPU-6050;卡尔曼滤波;自平衡
        DOI:10. 11907/rjdk. 201087 开放科学(资源服务)标识码(OSID):
        中图分类号:TP319 文献标识码:A 文章编号:1672-7800(2020)008-0117-05
        Abstract:In order to response to the initiatives of energy conservation and environmental protection, green travel, and alleviate the urban traffic congestion, this paper introduces the design of self-balancing two-wheeled vehicle based on STM32F103C8T6 chip control.Sensors with MPU - 6050 is used to obtain car attitude angle and velocity of the vehicle body. The Kalman filter algorithm is used to filter and fuse the data collected by the attitude sensor. The Hall encoder is used to measure the steering and rotation speed of the trolley, and the PID algorithm is used to calculate and analyze the control requirements and collected data information and output the control PWM. The motor is driven by the TB6612 motor drive module to realize the autonomous balance of the trolley which has certain anti-interference ability. In addition, the car communicates with the mobile APP via bluetooth module, and the car’s forward and backward movements, turn and other actions can be controlled through the mobile end.
        Key Words: STM32; PID; MPU-6050; Kalman filter; self-balance
        0 引言
        隨着社会发展,环境污染日益加剧,与此同时公众环保意识逐步增强,绿出行成为城市交通规划和公众出行首选。新能源汽车、折叠式电动车、便携式平衡车等逐渐成为日常代步工具。其中平衡车因为轻巧便携、转弯半径小,特别适用于在场地空间有限的地方运行,如大型购物中心、办公大楼、生活住宅小区、国际性会议或展览场所、生态旅游风景区等[1]。平衡车如何高效稳定地获取实时姿态信息、有效控制车体状态,在复杂环境下成功执行目标任务等成为研究热点。两轮平衡小车概念顺应当前研究浪潮,可有效解决复杂环境下小车运动问题,同时随着远程控制技术的发展,远程监控平衡车在军用、民用领域有广阔的发展空间[2]。
        平衡小车是一种自然不稳定体,其原理是在倒立摆基础上对普通倒立摆的发展,因此比普通倒立摆具有更大的运动空间,使其不仅局限于实验室,更贴近现实生活[3]。国内外学者对此进行了研究,并取得了相应成果。韩竺秦等[4]对平衡车进行建模,利用KL25和MPU6050搭建实验平台,结合四元数、互补滤波和PID算法实现小车自主平衡,并利用MATLAB仿真验证方法有效性;陈木桂等[5]以MC9S12XS128为核心控制器,采用加速度传感器MMA7260、ENC-03陀螺仪结合PID控制算法提出一种光电平衡智能车设计方案,该两轮车能够按照预定的轨迹稳定运行;束方耀等[6]以STM32作为主控设计了一种声控自平衡小车,郑州电动汽车
该平衡小车可在近距离内进行语音控制;文献[7]提出了一种基于Arduino的平衡小车设计方案。综上所述,平衡小车控制的关键在于车体倾斜角、角速度、车轮转向及速度测量准确性和实时性。针对该问题,本文采用STM32F103C8T6作为主控,利用霍尔编码器获取小车车轮转速,将MPU-6050作为姿态传感器采集车体倾角和角速度,结合卡尔曼滤波算法与PID控制算法实现小车自主平衡。
        1 总体设计方案
        1.1 原理分析
        两轮平衡小车受力点在底部轮子上,如果不施加外力,车体将无法保持平衡。在日常生活中该原理的应用实例也较为常见,比如将木棒放置在手掌中,来回调整手的位置,可以实现木棒直立不倒[8]。在维持木棒平衡的过程中,必须满足两个条件:①木棒下面的手掌可来回移动;②必须实时观察木棒倾斜角度和倾倒趋势(角速度),凭借手掌的来回移动消除木棒倾斜角度和趋势,保持手掌中的木棒直立不倒。木棒维持平衡采用的控制方式是闭环负反馈控制,如图1所示。
        平衡小车自动维持平衡也采用负反馈调节的控制方式,如图2所示,由于小车底部只有两个并排的车轮,车体上部分只能在车轮前后方向出现倾斜时,通过控制车轮的转动方向和速度消除该倾斜方向上的倾角,保证小车车体平衡。将平衡小车离开垂直位置的倾角作为偏差量,凭借负反馈控制将该偏差量保持在0°附近,通过控制电机转动方向维持小车直立状态。
        依据小车自平衡功能要求,小车底部并排的两个车轮是保持车体直立前后移动的控制目标,而小车轮胎的转动受电机控制,因此从控制思维看,受控对象是小车车体,车体底部两个电机转动速度作为控制输入量[9]。两轮平衡小车通过姿态检测模块检测出倾斜角,然后控制器接受姿态信息并进行处理,最后车轮电机在主控制器的控制下实现变速和换向,实现小车动态平衡。
        1.2 系统设计方案
        本文以STM32处理器为控制核心,接收并处理传感器传递的小车数据信息,MPU6050模块负责采集小车倾角和角速度数据信息,利用霍尔编码器获取小车车轮转速和转向数据信息并反馈给主控制器。STM32结合卡尔曼滤波算法与串级PID算法将控制信号输入至电机驱
动模块TB6612FNC,驱动电机正反转和变速,实现小车上电后自主平衡。手机APP和小车通过蓝牙模块连接,实现小车动作控制,系统总体框架见图3所示。