网站首页 公文大全 个人文档 实用范文 讲话致辞 实用工具 心得体会 哲学范文 总结范文 范文大全 报告 合同 文书 信函 实用
  • 经典阅读
  • 学习工具
  • 成语大全
  • 歇后语
  • 周公解梦
  • 名人名言
  • 格言
  • 经典语句
  • 百花范文网 > 实用工具 > 歇后语 > [基于stm32的两轮自平衡车控制系统设计]

    [基于stm32的两轮自平衡车控制系统设计]

    时间:2021-10-20 02:06:49来源:百花范文网本文已影响

    基于STM32的两轮自平衡车控制系统设计 Control system design of two wheel self balancing vehicle based on stm32 内容摘要 本论文主要研究两轮自平衡车控制系统的设计与实现。两轮自平衡车的机械结构简单,直立行驶的方式赋予灵活的操控方式,能在不同的场景中投入使用,如日常生活的代步、工业生产特殊搬运需求等等。其控制系统的相关算法和相关理论具有广阔的应用前景。

    本文以STM32单片机为主控芯片,提出了系统设计方案,讲解两轮自平衡车控制系统的需求、框架和设计思路。然后对需要硬件进行选型和电路设计,并且对系统进行软件开发。通过两轮平衡小车的姿态分析并解算后,运用PID算法的PD、PI、P算法对两轮平衡车的直立环、速度环和转向环进行控制。并且使用蓝牙无线通讯技术,实现两轮自平衡小车的无线操控功能,实现其控制便捷性。

    最后对系统进行调试和测试,证明来该两轮平衡车控制系统的可行性与稳定性。

    关键词:两轮自平衡车 控制系统 STM32单片机 PID算法 蓝牙无线通讯 Abstract This paper mainly studies the design and implementation of a two-wheel self-balancing vehicle control system. The mechanical structure of the two-wheel self-balancing car is simple, and the upright driving mode gives flexible control methods, which can be put into use in different scenarios, such as daily life mobility, special handling requirements for industrial production, etc. The related algorithms and related theories of its control system have broad application prospects. This article takes STM32 microcontroller as the main control chip, puts forward a system design plan, and explains the requirements, framework and design ideas of the two-wheel self-balancing vehicle control system. Then select the required hardware and circuit design, and software development of the system. After analyzing and solving the attitude of the two-wheel balancing car, the PD, PI, and P algorithms of the PID algorithm are used to control the upright ring, speed ring, and steering ring of the two-wheel balancing car. And the use of Bluetooth wireless communication technology to achieve two-wheeled self-balancing car wireless control function, to achieve its control convenience. Finally, the system was debugged and tested to prove the feasibility and stability of the two-wheel balance car control system. Keywords: Two-wheeled self-balancing car Control system STM32 single-chip PID algorithm Bluetooth 目录 第一章 绪论 1 1.1 论文研究背景和意义 1 1.2 国内外两轮平衡车研究历史和现状 1 1.3 论文研究内容和目标 2 1.4 论文结构安排 2 第二章 系统设计方案 3 2.1 需求分析 3 2.2 系统框架 3 2.3 设计思路 4 第三章 硬件系统设计 5 3.1 STM32最小系统设计 5 3.1.1 主控芯片 5 3.1.2 最小系统的设计 6 3.2 电源系统 6 3.2.1 降压芯片选型 6 3.2.2 电源系统原理图 7 3.3 MPU-6050六轴陀螺仪传感器模块 7 3.3.1 MPU-6050概述 7 3.3.2 MPU-6050系统原理图 8 3.4 TB6612FNG电机驱动模块 9 3.4.1 TB6612FNG模块概述 9 3.4.2 TB6612FNG原理图 9 3.5 BT04-A蓝牙串口模块 10 3.5.1 BT04-A蓝牙串口模块概述 10 3.5.2 BT04-A蓝牙串口模块原理图 10 3.6 OLED显示屏模块 11 3.6.1 OLED显示屏概述 11 3.6.2 OLED显示屏接线图 11 3.7 电机编码器 12 3.8 本章小结 12 第四章 软件系统开发 13 4.1 总体方案 13 4.2 MPU-6050读取姿态信息 13 4.2.1 读取原始数据 13 4.2.2 读取DMP并转换为欧拉角 14 4.2.3 IIC通讯方式 14 4.3 霍尔编码器测速 16 4.3.1 程序框图 16 4.3.2 编码器软件四倍频 16 4.4 蓝牙无线传输 17 4.4.1 STM32串口通讯 17 4.5 遥控终端的开发 18 第五章 两轮平衡小车关键算法 20 5.1 MPU-6050姿态解算 20 5.1.1 DMP输出四元数 20 5.1.2 欧拉角转换 20 5.2 两轮平衡车的PID控制算法 20 5.2.1 PID算法的概述和应用 20 5.2.2 基于PD控制的直立环 21 5.2.3 基于PI控制的速度环 21 5.2.4 基于PD控制的转向环 22 第六章 系统测试 23 6.1 测试目的与测试环境 23 6.2 电源系统检测 23 6.3 STM32最小系统测试 24 6.4 蓝牙无线通讯测试 25 6.5 陀螺仪测试 25 6.6 两轮自平衡车PID调试 27 6.6.1 直立环PD算法的调试 27 6.6.2 速度环PI算法的调试 28 6.6.3 转向环PD算法的调试 28 6.7 两轮自平衡车遥控测试 30 6.8 本章小结 30 结论 31 参考文献 32 致谢 33 第一章 绪论 1.1 论文研究背景和意义 人类的生存发展已经步入21世纪,这是一个高科技的时代,我们的日常生产生活中离不开数字技术、计算机技术和机械设计技术等高科技技术。两轮自平衡电动车,以两轮共轴为机械结构,通过自带精密电子陀螺仪(Solid-State Gyroscopes)的电子平衡系统,实现了自动平衡和直立行走的功能。其外形小巧、行动灵活、环保方便的特点,得到了市场的广大认同和发展。目前各种需要移动运输操作的传统机械设备,基本都以后驱四轮式或者履带式的形式存在。这些传统的机械的移动方式已经满足不了人们生产生活对人工智能的要求。因此,市场上急需一种更为方便灵活的机械辅助移动设备,直立式两轮自平衡电动车的出现满足了这一需求。

    两轮自平衡车系统运行时,自平衡控制规划、行驶操控等多种功能同时运行。最关键一点是实现自平衡的同时,还要在不同的环境中直立行驶,实现控制操作。两轮自平衡车的概念,以其不稳定的动态性能和系统非线性,迅速成为各种控制理论的研究平台,具有较大的科研意义。

    1.2 国内外两轮平衡车研究历史和现状 近年来全球各国对两轮自平衡机器人的研究越来越火爆,使其得到了迅速的发展。多国纷纷研发了实验机,两轮平衡车的平衡控制的方案陆续被研发设计出来,呈现出控制系统的多样性。两轮自平衡车有了稳定的行驶平衡系统,再经过改造,可快速方便地应用到不同的环境里,如工业生产所需的承载运输、日常生活代步等。对于各国来说这是一个巨大的机遇,使得一些外国公司也在市场上生产研发相应的商业产品,并且投放到市场。

    2002年,一台名为“Segway HT”的两轮直立式自平衡载人设备问世,该设备由美国Segway公司研制。该设备以其行驶灵活、体型小巧的特点,被用于人员密集的机场中。机场的安保警务人员站立在该两轮平衡车上,可在人群中灵活快速地移动行驶,居高临下的行驶方式满足了观察机场各处的需求,能够及时地发现和处理可疑情况。2006年,一家位于德国的Transport公司,针对室内外的现场摄影工作者,研发了两轮摄像车,该设备后来广泛应用于电视节目的录制,甚至用于电影特殊情节的拍摄之中。2007年,日本丰田汽车公司研发了一台丰田机动机器人(Mobility Robot),这台只有15千克的机器人,最高行驶速度高达每小时20千米。

    哈尔滨工程大学的研究人员,使用两块C8051单片机与人机交互上位机,组成了一个控制系统,通过不同传感器测量计算得出车体姿态信息,使用脉冲宽度调制(PWM)控制两台直流电机,外加人机交互和无线传输等技术,制造了一台两轮直立自平衡机器人。

    中国科技大学研发了一款两轮自平衡代步电动车。采用了左右轮共轴的机械结构,通过建立系统数学模型建立控制算法,计算输出脉冲宽度调制(PWM)控制,来控制两个伺服电机的转矩,使电动车在行驶过程中保持直立平衡。

    1.3 论文研究内容和目标 本论文研究内容:
    (1)两轮自平衡车的系统设计方案;

    (2)两轮自平衡车的硬件选型和电路设计;

    (3)两轮自平衡车的控制算法;

    (4)控制系统的调试及测试。

    根据本设计的功能要求,在实现两轮自平衡小车自平衡的情况下,完成遥控操作两轮自平衡车的前进、后退、转弯等行驶功能。

    1.4 论文结构安排 本论文的主要由以下六个章节构成:
    第一章,绪论。研究本论文的背景和意义,分析国内外两轮自平衡车的历史和现状,提出论文研究的意义和目的。

    第二章,系统设计方案。对两轮自平衡车的需求进行分析并设计系统框架,提出设计思路。

    第三章,硬件系统设计。结合两轮自平衡车的功能需求,对所需硬件进行选型分析,并设计其原理图。

    第四章,软件系统开发。提出软件系统总体方案,分析各模块的软件系统开发和流程。

    第五章,两轮平衡车关键算法。对陀螺仪输出的姿态数据进行解算。使用PID算法对电机进行控制,从而使两轮自平衡车保持直立、平衡。

    第六章,系统测试。对两轮平衡车的系统进行测试,PID算法的调试。验证了两轮平衡车控制算法的可行性与稳定性。

    第二章 系统设计方案 2.1 需求分析 本系统要求在两轮自平衡小车自平衡的状态下,通过蓝牙无线传输技术,遥控实现两轮自平衡车移动行驶功能。本系统使用STM32F103C8T6作为平衡小车的主控芯片,实现以下功能要求:
    (1)获取小车的平衡姿态,并进行姿态解算;

    (2)使用PID算法控制两轮自平衡车,在静止和行驶的状态下保持自平衡;

    (3)能够通过蓝牙无线传输技术使用手机APP蓝牙遥控操纵小车的行驶;

    (4)OLED显示屏显示电池电容量等小车状态信息;

    2.2 系统框架 本系统其核心控制器选用STM32F103C8T6单片机。由LM2596和AMS1117芯片组成的电源系统,提供各硬件稳定安全的工作电压环境。MPU-6050六轴传感器可测量出小车的车体行驶姿态。电机编码器可得到小车的移动速度。OLED显示屏显示车体姿态信息和电池电压状况。TB6612电机驱动模块负责驱动大电流直流电机运转。BT04-A蓝牙模块实现了两轮自平衡车和遥控器之间的无线通讯功能。其系统结构如图2.1所示。

    图2.1 系统结构图 2.3 设计思路 根据各模块和传感器与STM32之间的连接通讯方式,系统设计思路图如图2.2所示。

    图2.2 硬件设计思路 第三章 硬件系统设计 3.1 STM32最小系统设计 3.1.1 主控芯片 两轮自平衡车的系统工作时,需反复快速地读取陀螺仪、电机编码器等传感器的数据,并马上经过算法处理,输出控制量反馈控制到直流电机。因此,控制系统对主控芯片的处理速度以及运行内存要求较高。

    本控制系统的主控芯片选取意法半导体公司(ST)生产的STM32F103C8T6型号单片机。其内核Cortex-M3由ARM公司设计。主要参数如表3.1所示。

    表3.1 STM32C8T6参数表 工作电压 2V~3.6V 总线宽度 32位 速度 72 MHz FLASH容量 64KB RAM容量 20K 可以看到,其72MHz的速度和32位的总线宽度,满足了两轮平衡车控制系统对处理速度的要求,64 KB的FLASH存储器也是可以满足程序的存储。

    如图3.1为STM32F10x的系统构架图。该图提供了STM32F103C8T6单片机内部的结构关系,外设资源一目了然,对STM32的运用与开发提供帮助。

    图3.1 STM32F10x系列系统构架图 3.1.2 最小系统的设计 单片机最小系统的定义为可满足单片机正常工作的系统。STM32单片机最小系统除了单片机之外,还有电源、复位、时钟三种电路和调试接口、boot启动选项组。图3.2为本系统的最小系统原理图。

    单片机选取LQFP-48封装的单片机。电源使用降压后的电源,电源系统的详细设计内容在下面章节中分析。复位电路设计为按键触发复位。将RST引脚通过按键S2。当按键按下后,引脚RST接地,RST引脚由高电平被拉低为低电平,触发单片机的复位功能。按键松开后,系统正常工作。复位电路中1uf电容和10kΩ电阻,提供可靠的复位时间。外置8MHz晶振时钟,并加入20uf的负载电容,该电容的作用是保证晶振的正常工作,使时钟电路提供精准时间。使用SWD下载模式,所需引脚较少,节约偏上资源。设置boot模式的设计较为简单,只需把把boot0和boot1引脚引出,使用跳线帽的方式设置即可。

    图3.2 STM32F103C8T6最小系统原理图。

    3.2 电源系统 3.2.1 降压芯片选型 由于直流电机的驱动电压、电流较大,本系统选取12V的锂电池来供电。但是12V的电压环境对单片机、各传感器和各模块来说电压太高,直接供电会烧毁击穿各模块,所以还需要对电压进行降压处理。

    选用LM2596降压芯片,其最大可输入电压为40V,最大驱动电流达到3A,有热关断和限流保护能力,负载调节能力强。12V的锂电池电压通过LM2596组成的降压电路后,输出稳定的5V电压。

    选用AMS111733正向低压降稳压器,把LM2596输出的5V电压进行降压,最后输出得到到3.3V的电压。

    3.2.2 电源系统原理图 根据本设备所需电源要求,根据LM2596和AMS111733的数据手册,设计出本设备的电源系统如图3.3。

    图3.3 电源系统原理图 平衡车的输入电压为12V,经LM2596降压,输出电压为5V,最大负载3A。5V的电压经AMS111733降压后,输出3.3V电压。电源系统加入大电流开关S3,打开S3后系统电源开启,各降压模块开始工作,提供稳定电压,关闭S3后整个电源系统关闭。

    3.3 MPU-6050六轴陀螺仪传感器模块 3.3.1 MPU-6050概述 MPU-6050六轴陀螺仪传感器,内含MEMS 陀螺仪、MEMS加速度计各三轴。内嵌DMP(Digital Motion Processor)数字运动处理器,其通讯方式为IIC协议或SPI协。

    VCC引脚接入3.3V或5V的电压,GND引脚接地。SDA和SCL两组引脚为IIC通讯引脚的信号线。当MPU-6050六轴陀螺仪传感器需要外接传感器时,XDA和XCL引脚分别接IIC主串行数据信号线和时钟信号线。AD0可通过接地或接电来设置AD0的值为0或1,AD0=0时MPU-6050的地址为0x68,AD0=1时MPU-6050的地址为0x69。INT引脚为中断输出引脚。MPU-6050六轴陀螺仪传感器的引脚及其说明如表3.2。

    表3.2 MPU-6050引脚说明 引脚名称 说明 VCC 电源输入3.3V或5V GND 接地 SCL IIC从时钟信号线SCL SDA IIC从数据信号线SDA AUX_DA IIC主串行数据信号线,用于外接传感器 AUX_CL IIC主串行时钟信号线,用于外接传感器 AD0 接地、悬空时地址为0x68;
    接VCC地址为0x69 INT 中断输出引脚 3.3.2 MPU-6050系统原理图 翻阅MPU-6050数据手册,设计出接线原理图,如图3.4所示。

    图3.4 MPU-6050原理图 MPU-6050的电源引脚3.3V的电压,并且在电源入口和器件旁边加入滤波电容,用来滤除交流成分,使输出的直流更平滑,确保MPU-6050硬件稳定性,满足控制系统对高精度姿态数值的需要。

    AD0引脚接地,AD0的值为0,设置MPU-6050的设备地址为0x68。IIC通讯引脚SDA与SCL分别接入STM32的PB9和PB8引脚,并且加入了一个4.7KΩ的上拉电阻,作用是保证有正常的高电平输出,起到保护芯片的作用。

    3.4 TB6612FNG电机驱动模块 3.4.1 TB6612FNG模块概述 两轮平衡车自带两个直流电机,12V的锂电池虽然可以使电机转动,但是无法直接控制其转速来控制车体保持平衡。所以需要一块专门负责驱动、控制电机的芯片。

    东芝半导体公司生产的TB6612FNG芯片,是一款直流电机驱动器件。该芯片自带来大电流MOSFET-H桥结构,能够输出双通道的电路。刚好可以驱动两轮自平衡车的两个电机,而且该芯片有低热耗,不需要加散热片。100KHz的PWM信号输入频率也满足了两轮平衡车控制系统的需求。TB6612FNG的主要参数如表3.3所示:
    表3.3 TB6612FNG的参数表 工作电压 5V 最大输入电压 15V 最大输出电流 3.2A 功能模式 正反转、短路刹车、停机 图3.5 TB6612FNG芯片图 3.4.2 TB6612FNG原理图 TB6612FNG与电机连接的原理图如图3.6。

    图3.6 TB6612FNG原理图 TB6612FNG芯片的PWMA引脚和PWMB引脚分别接到STM32单片机PA11引脚和PA8引脚,用于单片机输出PWM信号控制两个电机,TB6612FNG的输出引脚O1、O2和O3、O4引脚分两组引出来,方便点机的接线。AN1、AN2和BN1、BN2分别连接到单片机对应IO口上来控制电机转向,其真值表如表3.4所示。

    表3.4 TB6612FNG控制电机运转方向真值表 引脚 停止 正转 反转 AN1 0 1 0 AN2 0 0 1 3.5 BT04-A蓝牙串口模块 3.5.1 BT04-A蓝牙串口模块概述 此设备使用BT04-A蓝牙模块。该模块采用蓝牙V2.1+EDR技术并且兼容UART接口。成本低,功耗低,接收灵敏性高。其外围电路只需少许几个元件,就能实现蓝牙无线传输的功能。

    图3.7 BT04-A蓝牙串口通讯模块 BT04-A蓝牙串口模块的主要参数为:
    表3.5 BT04-A参数表 工作电压 3.3V 通讯模式 UART 通讯有效距离 15米左右 用户可根据需要,通过AT模式输入对应的AT指令,来设置本蓝牙模块的名字、主角色(Master)或者从角色(Slave)以及配对码等信息。

    3.5.2 BT04-A蓝牙串口模块原理图 BT04-A蓝牙串口模块原理图如图3.8所示。

    图3.8 BT04-A蓝牙串口模块原理图 BT04-A模块的串口通讯引脚跟STM32上的串口通讯引脚交叉相连,即STM32上的串口输出引脚连接到BT04-A模块的串口输入引脚,STM32上的串口输入引脚连接到BT04-A模块的串口输出引脚。BT04-A模块的P12引脚外接LED灯,用于显示蓝牙模块的状态。

    3.6 OLED显示屏模块 3.6.1 OLED显示屏概述 0.96寸的OLED显示屏,用显示于两轮自平衡车上电时的电压、车体的倾斜姿态、电机编码器的数值等信息。其主要参数如表3.6所示。

    表3.6 OLED显示屏参数表 工作电压 3.3V 分辨率 128×64 显示内存 128×64位字节 响应时间 几微秒到几十微秒 表3.7为OLED显示屏模块的引脚说明。

    表3.7 OLED显示屏模块的引脚表 GND 电源地线 SDA 数据线 VCC 输入电压 RST 复位 SCL 时钟线 D/C 命令/数据 3.6.2 OLED显示屏接线图 OLED显示屏的接线如图3.9所示。其输入电压为3.3V。SCL、SDA、RST和D/C引脚分别接STM32的PC15、PC14、PC13和PB4引脚上。

    图3.9 OLED显示屏接线图 3.7 电机编码器 编码器可以把轴角度方向的位移,转换成数字脉冲,是一种的旋转式的传感器。将编码器设置到电机转动轴的位置,输出对应波形,得到电机转动的速度信息。

    本设备采用AB相输出的增量式霍尔编码器,如图3.10。只需给编码器接上5V的工作电源,电机上电后便输出AB相的方波信号,可以辨别转向和测量速度。

    图3.10 增量式霍尔编码器 3.8 本章小结 本章的主要针对硬件的选型并设计对应外围电路。从自平衡车的功能出发来设计硬件系统,对各芯片模块进行介绍并设计工作电路。各模块与主控芯片STM32连接,完成硬件系统的设计。

    第四章 软件系统开发 4.1 总体方案 软件系统开始时,初始化各函数,读取电压值,判断定时器是否定时时间到,如果定时时间未到则回到定时开始,如果定时时间到了,陀螺仪输出DMP数据,并转换为欧拉角,显示屏显示车体状态信息。判断自平衡启动按键是否按下,按键没有按下则循环检测按键,如果按键按下则进行PID运算,并以输出PWM 控制电机运转来控制小车自平衡。检测蓝牙是否连接,如果蓝牙已连接则点亮指示灯,接收指令,并输出对应PWM控制小车行驶状态,如果蓝牙没有连接,则回到自平衡启动按键的检测检。软件系统流程图如图4.1所示。

    图4.1 软件系统流程图 4.2 MPU-6050读取姿态信息 4.2.1 读取原始数据 MPU-6050原始数据获取流程如图4.2所示。

    图4.2 MPU-6050姿态读取流程图 根据IIC协议的通讯方式,使用软件的方式控制STM32的两个IO口,模拟出IIC通讯协议。然后对MPU-6050陀螺仪进行初始化操作,配置其时钟、陀螺仪最大量程、加速度最大量程等,初始化后就可以通过软件模拟的IIC协议读取MPU-6050寄存器的值,得到加速度和角加速度的信息。

    4.2.2 读取DMP并转换为欧拉角 读取MPU-6050内置DMP的姿态信息并转换为欧拉角流程如图4.3所示。

    图4.3读取DMP并转换为欧拉角流程图 对MPU6050初始化设置后,通过IIC读取FIFO寄存器中的值,得到q30格式的值,再进行浮点数计算,最后经过欧拉角转换计算出Pitch和Roll。

    4.2.3 IIC通讯方式 本文中MPU6050与STM32的通讯方式为IIC通信。

    IIC是一种由数据总线SDA和时钟总线SCL两条串行总线组成的一种串行通信协议总线。IIC连接到设备上时,可以设置为主机和从机。当设置为主机模式时,地址总线需要获取从机的地址。当设置为从机模式时,需要再配置其匹配地址,从而才能对主机发出应答信号。在本设备中,MPU-6050倍设置为从机使用。

    整个IIC协议通信流程包含起始信号(S)、应答信号(ACK)、数据传输(发送/接收)、停止信号(P)。

    当STM32需要读取MPU6050的数据时,STM32先发起开始信号 (S),其方式为数据总线SDA和时钟总线SCL保持高电平,数据总线SDA由高电平转换到低电平,形成一个下降沿,此周期为0.6us。当IIC通讯结束时,时钟总线SCL保持高电平,在0.6us内,数据总线SDA由低电平升到高电平形成上升沿,此为IIC通讯结束的标志(P)。IIC开始信号和结束时序如图4.4所示。

    图4.4 IIC开始信号和结束信号图 IIC数据的宽度为8位字节,在IIC开始信号发出后,发送8位数据。当时钟总线SCL处于高电平且数据总线SDA保持稳定的低电平时,发送数据0。反之,当时钟总线SCL处于高电平且数据总线SDA保持稳定的高电平电平时,则发送数据1。

    图4.5 IIC数据发送方式 在发送完8位二进制的数后,还需跟随一个应答信号(ACK),此信号用于判定是否传输一次数据。如果在第9个时钟脉冲期间,时钟线为的高电平,且数据总线SDA为稳定的低电平,那么这就是一个有效应答位(Acknowledge)。如果在第9个时钟脉冲之前的低电平期间,数据总线SDA保持高电平,则此次应答信号为一个无效应答位。(Not-acknowledge)。

    图4.6 IIC应答信号时序图 4.3 霍尔编码器测速 4.3.1 程序框图 电机编码器测速的流程如图4.7。

    图4.7 电机编码器测速流程 系统一开始,首先对STM32的定时器TIM2和定时器TIM4进行初始化,设置成编码器接口模式,然后打开2个定时器。编码器接口的电平跳变触发定时器计算,读取STM32的定时器计数寄存器的值,计算得出速度。

    4.3.2 编码器软件四倍频 假如在时间T内,编码器输出的AB相2个波形,如图也就是图4.8所示。使用M法则测量A相(或B相)的上升沿或者下降沿来测速的时候,那么在时间T内,这样的测速方式就只能计数2次。使用软件四倍频算法,对编码器输出波形进行四倍频,在A相和B相各输出一个完整波形的波形时,同时测量A相和B相编码器的上升沿和下降沿,如图4.8中1~4所示,这样在同样时间T内,可以计数8次,提高了测速的工作效率。

    图4.8 编码器AB相波形4倍频 4.4 蓝牙无线传输 该设备使用的蓝牙无线传输技术是基于STM32的USART串口传输技术。连接好蓝牙模块后就可以以全双工的传输模式直接串口数据传输。就相当于连接上普通的串口线,可以进行数据的无线传输。

    4.4.1 STM32串口通讯 STM32的串口通讯流程图如图4.9所示。

    图4.9 串口通讯流程图 4.5 遥控终端的开发 平衡小车控制系统内嵌了蓝牙无线传输技术,使得遥控终端的开发就较为简单方便。首先在STM32编程设置好前进、后退、左转、右转等操作的指令,其指令表如表4.1所示。

    表4.1 遥控操作指令表 操作 字符指令 十六进制(HEX)指令 前进 A 0x41 后退 E 0x45 左转 B 0x42 右转 F 0x46 刹车 Z 0x5A 然后手机下载 “蓝牙调试器”APP,打开编程模式对“前进”、“后退”、“左转”、“右转”4个按键进行编辑。当“前进”按钮被按下时,发送前进指令“A”,当“前进”按钮松开时发送刹车指令“Z”以防陷入前进操作的循环。按键编程图如图4.10~图4.13所示。

    图4.10 “前进”按键设置 图4.11“后退”按键设置 图4.12 “左转”按键设置 图4.13 “右转”按键设置 设置好四个操作按键后,“蓝牙调试器”APP遥控界面如图4.14所示。

    使用“蓝牙调试器”APP连接平衡车主板上的蓝牙。当按下编程好的按键时,“蓝牙调试器”APP发送相应指令到平衡小车主板上,通过串口传输到STM32上,STM32计算好PWM来控制小车完成对应行驶操作。

    图4.14 “蓝牙调试器”APP遥控界面 第五章 两轮平衡小车关键算法 5.1 MPU-6050姿态解算 5.1.1 DMP输出四元数 四元数是一种超复数,代表一个加入旋转角的三维空间。其表达式为:
    q=⁡(q0,q1,q2,q3) (5.1) 其中q0为实数,q1~q3为虚部的实数。

    MPU-6050自带硬件运动处理器DMP(Digital Motion Processing),能够把原始角速度数据转换为四元数,这减轻了主控芯片STM32的工作负担。DMP的使用较为简单,只需下载其官方DMP驱动库文件,并移植到STM32即可。使用DMP得到各轴的加速度和角速度。需要注意的是DMP输出数据的格式为浮点数放大了230倍的q30模式,需要将输出的数转化为浮点数,表达公式为:
    q0=quat[0] / q30 (5.2) q1=quat[1] / q30 (5.3) q2=quat[2] / q30 (5.4) q3=quat[3] / q30 (5.5) 5.1.2 欧拉角转换 欧拉角是用来确定某个围绕定点转动的刚体位置的一组三个独立角参量,可理解为由X轴上的滚转角(roll)、Y轴上的俯仰角(pitch)、Z轴上的航偏角(yaw) 组成。

    此系统应用到pitch和roll两个参数。

    pitch值转换式为:
    asin−2×q1×q3+2×q0×q2/180π (5.6) roll值的转换式为:
    atan2(2×q2×q3+2×q0×q1, −2×q1×q1−2×q2×2+1)180/π (5.7) 5.2 两轮平衡车的PID控制算法 5.2.1 PID算法的概述和应用 PID算法是常见的控制算法之一,由比例(Proportional)、积分(Integral)和微分(Differential)三种计算组成。在工程实践中,一般P是必须的,所以衍生出许多组合的PID控制器,如P、PI、PID等。

    本两轮自平衡车控制系统分为三部分。第一是两轮自平衡车直立控制系统,第二是两轮自平衡车速度控制系统,第三是两轮自平衡车转向控制系统。这三个系统分别使用到不同的PID控制算法。

    图5.1 PID算法图 5.2.2 基于PD控制的直立环 直立控制系统使用PD控制器,D(微分)控制的加入能够快速地响应车体受到的干扰,调整车体平衡状态。PD控制车体直立的程序框图如图5.2所示。

    图5.2 PD控制直立流程图 5.2.3 基于PI控制的速度环 速度控制系统使用PI控制器。P控制器具有线性,利用实际输出值与给定值两者之间的偏差,将偏差的比例和积分进行线性组合,从而构成控制量,来控制目标对象。PI控制车体速度的程序框图如图5.3。

    图5.3 PI控制直立流程图 5.2.4 基于PD控制的转向环 PD控制车体速度的程序框图如图5.4。

    图5.4 PD控制转向流程图 第六章 系统测试 6.1 测试目的与测试环境 两轮自平衡车的系统功能实现需要通过各个功能模块相互配合完成的,为了保证两轮自平衡车控制系统的正常运转,需要对两轮自平衡小车不同模块与PID算法进行调试,确保系统的稳定性。本系统在瓷砖表面的房间里进行不同的测试。

    6.2 电源系统检测 测试方法:两轮自平衡车控制主板接好电池后,打开电源系统总开关。使用万用表测量LM2596芯片的2号输出引脚与电源地之间的电压,再测量AMS111733的2号输出引脚与电源地之间的电压。

    测试结果:LM2596芯片的2号输出输出电压为4.98V,如图6.1所示。AMS111733的2号输出引脚输出电压为3.3V,如图6.2所示。

    结论:测试结果显示电源系统的功能正常。

    图6.1 LM2596输出电压测试图 图6.2 AMS111733输出电压测试图 6.3 STM32最小系统测试 测试方法:使用Keil uVision5软件编写测试程序,控制LED灯以1S的时间间隔进行闪烁,编译并且通过ST-Link烧录器下载到两轮自平衡车控制主板的STM32芯片里,观察LED情况。测试结果如表6.1所示 表6.1 STM32最小系统测试 测试步骤 预期情况 实际情况 结论 控制主板上电 LED灯以1S的时间间隔进行闪烁 LED灯以1S的时间间隔进行闪烁 下载调试、时钟和IO功能正常 长按复位按键 LED灯熄灭 LED灯熄灭 复位功能正常 松开复位按键 LED灯恢复闪烁 LED灯恢复闪烁 图6.3 最小系统点灯图 图6.4 最小系统熄灯图 6.4 蓝牙无线通讯测试 蓝牙无线通讯是实现小车与控制终端的重要通讯方式,它在两轮自平衡车的无线遥控过程中起到非常重要的作用,实现操控便捷性。

    测试方法:蓝牙模块通过数据线连接到电脑,并在电脑上打开串口调试器。手机使用蓝牙调试助手,连接蓝牙模块。分别在空旷和有墙体的房间里面,根据手机端和蓝牙模块间的距离分别进行测试,观察电脑上串口调试器接受到的信息。测试结果如表6.2所示。

    表6.2 蓝牙无线通讯测试最小系统测试 空间状态 距离 预期情况 实际情况 结论 开阔且 无障碍 5米 电脑端串口调试器接受收到手机端发来的信息 电脑上接收到信息 通过 10米 电脑上接收到信息 通过 相隔一 面墙体 5米 电脑上接收到信息 通过 10米 电脑上接收到信息 通过 测试结果:STM32串口功能正常,蓝牙模块功能正常,无线通讯功能正常。

    6.5 陀螺仪测试 MPU6050六轴陀螺仪提供控制系统精准的姿态信息,其模块运行是否正常影响两轮自平衡小车的自平衡功能。

    测试方法:小车控制系统主板上电,以MPU-6050的X轴为旋转轴改变主板倾斜角度,观察OLED屏上的角度信息。测试结果如表6.3所示 表6.3 MPU-6050测试表 小车主板姿态 预期情况 实际情况 结论 主板正面朝上水平放置于桌面 显示屏显示角度为0° 显示屏显示角度为359° 通过 主板正面朝前垂直放置于桌面 显示屏显示角度为270° 显示屏显示角度为275° 通过 主板正面朝前垂直放置于桌面 显示屏显示角度为90° 显示屏显示角度为90° 通过 图6.5 MPU-6050读取主板正面朝上且水平于桌面姿态图 图6.6 MPU-6050读取主板正面朝前且垂直于桌面姿态图 图6.7 MPU-6050读取主板背面朝前且垂直于桌面姿态图 测试结果:MPU-6050测试出来的姿态方向信息正确,但是由于桌面无法保证水平的程度,加上手扶着主板观察显示屏,其读取出来的数值存在误差,可通过后期PID控制调试来控制小车自平衡,所以该误差忽略不计。此测试还验证了OLED屏幕的功能正常。

    6.6 两轮自平衡车PID调试 经过以上测试之后,两轮平衡车的关键系统均正常,接下来调试PID算法,验证平衡车的自平衡功能,测试其静止状态下和外力干扰下能否实现自平衡功能。

    6.6.1 直立环PD算法的调试 测试方法:改变kp值和kd值的大小,观察小车的平衡状态。测试结果如表6.4和表6.5所示。

    测试结果:当kp值为500且kd值为1时,小车趋于平衡但是还有抖动现象,一段时间后便倒下。此时对kp、kd值进行小幅放大或缩小,得到当kp、kd值缩小0.6倍时,也就是kp值为300且kd值为1时,基本没有抖动现象,但一段时间还是倒下,接下来需要加入速度环的控制才能保持稳定性。

    表6.4 直立环kp值调试表 kp 小车状态 分析 -100 小车倾斜瞬间电机朝倾斜的方向加速运转,小车倒下。

    kp值极性错误,导致小车倒下。

    100 小车倾斜瞬间电机朝倾斜方向的反方向加速运转,小车趋于直立后又倒下。

    kp值极性正确,响应过慢导致小车倒下。

    300 小车倾斜瞬间,响应加快,趋于平衡后又倒。

    kp值偏小导致小车倒下。

    500 小车倾斜瞬间,响应快,并出现来回抖动状况。

    kp值基本满足条件,需要调节kd来抑制抖动。

    表6.5 直立环kd值调试表 kd 小车状态 分析 -0.5 小车倾斜瞬间,电机朝倾斜的方向运转,小车倒下。

    kd值极性错误,导致小车倒下。

    0.5 小车倾斜瞬间电机朝倾斜方向的反方向运转,小车倒下但有平衡趋势。

    kd值极性正确,响应过慢导致小车倒下。

    1 小车趋于平衡。

    kd值基本满足条件,微调使之更完美。

    6.6.2 速度环PI算法的调试 由于速度的控制为正反馈,所以kp和ki均为正数。

    假设速度偏差为最大速度的一半的时候,电机的转动速度达到最快。通过软件的方式对电机编码器4倍频,以10ms获取一次脉冲的频率得到车轮转动速度,此时左右两电机编码器输出数值之和最大约为160。再根据最大输出PWM值7200,估算kp的最大值为:
    kpmax = 7200160/2=90 (6.1) 设置ki的值为:
    ki= kp / ki (6.2) 调试方法:根据以上公式,得到kp最大值约为90,ki最大值为0.45,但得到kp和ki并不是最合适的。因此改变kp值大小,观察小车的平衡状态。测试结果如表6.6所示。

    测试结果:当kp的值为80且ki的值为0.4时,满足控制要求,能够对外界干扰做出反馈,具有一定的抗干扰能力。

    表6.6 速度环kd、ki值调试表 kd ki 小车状态 分析 40 0.2 小车速度不稳定,小车来回摆动。

    速度控制响应过慢,kd和ki值过小。

    60 0.3 速度控制响应加快,小车摆动距离缩短。

    速度控制响应偏慢,kd和ki值偏小。

    80 0.4 小车摆动距离大幅减小。

    kd和ki的值基本满足条件。

    100 0.5 小车开始摆动,轻碰一下就倒下。

    kd和ki值大,抗干扰能力差。

    6.6.3 转向环PD算法的调试 测试方法:设定kd为0,kp为0.2,并逐步小幅增大kp值,观察平衡小车转向情况。

    测试结果:当kd为0且kp的为1.6时,小车的转向性能和直线行驶性能优秀,满足控制条件。测试结果如表6.7所示。

    表6.7 转向环kp值调试表 kd值 小车状态 分析 0.2 小车转向控制性能差 kp值过小 0.8 小车转向控制性能好转,但直线行驶偏差大 kp值偏小 1.6 小车转向控制性能好,直线行驶偏差小 kp值满足控制条件 6.6.4 PID调试小结 经过以上调试步骤,两轮自平衡车实现自平衡的功能,并且具有一定的抗干扰性能,平衡车直立图如图6.8所示。

    图6.8 两轮平衡车自平衡图 6.7 两轮自平衡车遥控测试 测试方法:手机使用“蓝牙调试器”连接平衡小车上的蓝牙,并按在水平的瓷砖地面进行遥控操作,测试结果如表6.8所示。

    表6.8 两轮自平衡车遥控测试 遥控操作 预期情况 实际情况 结论 前进 前进 前进 通过 后退 后退 后退 通过 左转 左转 左转 通过 右转 右转 右转 通过 测试结果:两轮自平衡车遥控性能稳定,实现了控制便捷性。

    6.8 本章小结 本章通过进行各种测试和调试,一一检测了两轮自平衡车各模块功能的运转是否正常,确保两轮自平衡车各功能部分的状态正常。并调节了两轮自平衡车的PID算法的参数值。最后测试了两轮自平衡车的遥控操作,实现了控制便捷性,与两轮自平衡车的稳定性。

    结论 本论文勾画出两轮自平衡车的流程图,并通过PID对算法直立环、速度环和转向环进行控制,实现两轮平衡车车的自平衡功能。结合了蓝牙无线传输技术,对两轮平衡车进行无线遥控操作,实现了操控的便捷性。

    通过本论文的研究,验证了此两轮自平衡车控制系统的可行性与稳定性。

    参考文献 [1]刘军,例说STM32[M].北京航空大学出版社,2011 [2]BP神经网络在PID控制器参数整定中的应用[J]. 陈书谦,张丽虹. 计算机仿真. 2010(10) [3]具时滞单级倒立摆系统的稳定性分析[J]. 曹青松,黎林. 煤矿机械. 2009(04) [4]单片机复位电路的设计与分析[J]. 包国彬,张建民,刘嬴. 光电技术应用. 2005(03) [5]数字PID算法在无刷直流电机控制器中的应用[J]. 谢世杰,陈生潭,楼顺天. 现代电子技术. 2004(02) [6]单轴双轮自平衡代步车的研究与设计[D]. 张吉昌.中国海洋大学 2009 [7]两轮自平衡机器人自适应控制算法的研究[D]. 黎田.哈尔滨工业大学 2007 [8]两轮自平衡机器人的控制技术研究[D]. 王瑜.哈尔滨工程大学 2009 [9]直流无刷电动机原理及应用[M]. 机械工业出版社 , 张琛编著, 1996 [10]基于STM32的两轮自平衡车设计与实现[D]. 潘二伟.黑龙江大学 2018

    相关热词搜索:

    • 范文大全
    • 说说大全
    • 学习资料
    • 语录
    • 生肖
    • 解梦
    • 十二星座

    推荐访问