基于stm32的两轮自平衡车控制系统设计毕业论文Word文档下载推荐.docx
- 文档编号:17071545
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:36
- 大小:2.47MB
基于stm32的两轮自平衡车控制系统设计毕业论文Word文档下载推荐.docx
《基于stm32的两轮自平衡车控制系统设计毕业论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于stm32的两轮自平衡车控制系统设计毕业论文Word文档下载推荐.docx(36页珍藏版)》请在冰豆网上搜索。
1.2国内外两轮平衡车研究历史和现状
近年来全球各国对两轮自平衡机器人的研究越来越火爆,使其得到了迅速的发展。
多国纷纷研发了实验机,两轮平衡车的平衡控制的方案陆续被研发设计出来,呈现出控制系统的多样性。
两轮自平衡车有了稳定的行驶平衡系统,再经过改造,可快速方便地应用到不同的环境里,如工业生产所需的承载运输、日常生活代步等。
对于各国来说这是一个巨大的机遇,使得一些外国公司也在市场上生产研发相应的商业产品,并且投放到市场。
2002年,一台名为“SegwayHT”的两轮直立式自平衡载人设备问世,该设备由美国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.1STM32最小系统设计
3.1.1主控芯片
两轮自平衡车的系统工作时,需反复快速地读取陀螺仪、电机编码器等传感器的数据,并马上经过算法处理,输出控制量反馈控制到直流电机。
因此,控制系统对主控芯片的处理速度以及运行内存要求较高。
本控制系统的主控芯片选取意法半导体公司(ST)生产的STM32F103C8T6型号单片机。
其内核Cortex-M3由ARM公司设计。
主要参数如表3.1所示。
表3.1STM32C8T6参数表
工作电压
2V~3.6V
总线宽度
32位
速度
72MHz
FLASH容量
64KB
RAM容量
20K
可以看到,其72MHz的速度和32位的总线宽度,满足了两轮平衡车控制系统对处理速度的要求,64KB的FLASH存储器也是可以满足程序的存储。
如图3.1为STM32F10x的系统构架图。
该图提供了STM32F103C8T6单片机内部的结构关系,外设资源一目了然,对STM32的运用与开发提供帮助。
图3.1STM32F10x系列系统构架图
3.1.2最小系统的设计
单片机最小系统的定义为可满足单片机正常工作的系统。
STM32单片机最小系统除了单片机之外,还有电源、复位、时钟三种电路和调试接口、boot启动选项组。
图3.2为本系统的最小系统原理图。
单片机选取LQFP-48封装的单片机。
电源使用降压后的电源,电源系统的详细设计内容在下面章节中分析。
复位电路设计为按键触发复位。
将RST引脚通过按键S2。
当按键按下后,引脚RST接地,RST引脚由高电平被拉低为低电平,触发单片机的复位功能。
按键松开后,系统正常工作。
复位电路中1uf电容和10kΩ电阻,提供可靠的复位时间。
外置8MHz晶振时钟,并加入20uf的负载电容,该电容的作用是保证晶振的正常工作,使时钟电路提供精准时间。
使用SWD下载模式,所需引脚较少,节约偏上资源。
设置boot模式的设计较为简单,只需把把boot0和boot1引脚引出,使用跳线帽的方式设置即可。
图3.2STM32F103C8T6最小系统原理图。
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.3MPU-6050六轴陀螺仪传感器模块
3.3.1MPU-6050概述
MPU-6050六轴陀螺仪传感器,内含MEMS陀螺仪、MEMS加速度计各三轴。
内嵌DMP(DigitalMotionProcessor)数字运动处理器,其通讯方式为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.2MPU-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.2MPU-6050系统原理图
翻阅MPU-6050数据手册,设计出接线原理图,如图3.4所示。
图3.4MPU-6050原理图
MPU-6050的电源引脚3.3V的电压,并且在电源入口和器件旁边加入滤波电容,用来滤除交流成分,使输出的直流更平滑,确保MPU-6050硬件稳定性,满足控制系统对高精度姿态数值的需要。
AD0引脚接地,AD0的值为0,设置MPU-6050的设备地址为0x68。
IIC通讯引脚SDA与SCL分别接入STM32的PB9和PB8引脚,并且加入了一个4.7KΩ的上拉电阻,作用是保证有正常的高电平输出,起到保护芯片的作用。
3.4TB6612FNG电机驱动模块
3.4.1TB6612FNG模块概述
两轮平衡车自带两个直流电机,12V的锂电池虽然可以使电机转动,但是无法直接控制其转速来控制车体保持平衡。
所以需要一块专门负责驱动、控制电机的芯片。
东芝半导体公司生产的TB6612FNG芯片,是一款直流电机驱动器件。
该芯片自带来大电流MOSFET-H桥结构,能够输出双通道的电路。
刚好可以驱动两轮自平衡车的两个电机,而且该芯片有低热耗,不需要加散热片。
100KHz的PWM信号输入频率也满足了两轮平衡车控制系统的需求。
TB6612FNG的主要参数如表3.3所示:
表3.3TB6612FNG的参数表
5V
最大输入电压
15V
最大输出电流
3.2A
功能模式
正反转、短路刹车、停机
图3.5TB6612FNG芯片图
3.4.2TB6612FNG原理图
TB6612FNG与电机连接的原理图如图3.6。
图3.6TB6612FNG原理图
TB6612FNG芯片的PWMA引脚和PWMB引脚分别接到STM32单片机PA11引脚和PA8引脚,用于单片机输出PWM信号控制两个电机,TB6612FNG的输出引脚O1、O2和O3、O4引脚分两组引出来,方便点机的接线。
AN1、AN2和BN1、BN2分别连接到单片机对应IO口上来控制电机转向,其真值表如表3.4所示。
表3.4TB6612FNG控制电机运转方向真值表
引脚
停止
正转
反转
AN1
1
AN2
3.5BT04-A蓝牙串口模块
3.5.1BT04-A蓝牙串口模块概述
此设备使用BT04-A蓝牙模块。
该模块采用蓝牙V2.1+EDR技术并且兼容UART接口。
成本低,功耗低,接收灵敏性高。
其外围电路只需少许几个元件,就能实现蓝牙无线传输的功能。
图3.7BT04-A蓝牙串口通讯模块
BT04-A蓝牙串口模块的主要参数为:
表3.5BT04-A参数表
3.3V
通讯模式
UART
通讯有效距离
15米左右
用户可根据需要,通过AT模式输入对应的AT指令,来设置本蓝牙模块的名字、主角色(Master)或者从角色(Slave)以及配对码等信息。
3.5.2BT04-A蓝牙串口模块原理图
BT04-A蓝牙串口模块原理图如图3.8所示。
图3.8BT04-A蓝牙串口模块原理图
BT04-A模块的串口通讯引脚跟STM32上的串口通讯引脚交叉相连,即STM32上的串口输出引脚连接到BT04-A模块的串口输入引脚,STM32上的串口输入引脚连接到BT04-A模块的串口输出引脚。
BT04-A模块的P12引脚外接LED灯,用于显示蓝牙模块的状态。
3.6OLED显示屏模块
3.6.1OLED显示屏概述
0.96寸的OLED显示屏,用显示于两轮自平衡车上电时的电压、车体的倾斜姿态、电机编码器的数值等信息。
其主要参数如表3.6所示。
表3.6OLED显示屏参数表
分辨率
128×
64
显示内存
64位字节
响应时间
几微秒到几十微秒
表3.7为OLED显示屏模块的引脚说明。
表3.7OLED显示屏模块的引脚表
电源地线
数据线
输入电压
RST
复位
时钟线
D/C
命令/数据
3.6.2OLED显示屏接线图
OLED显示屏的接线如图3.9所示。
其输入电压为3.3V。
SCL、SDA、RST和D/C引脚分别接STM32的PC15、PC14、PC13和PB4引脚上。
图3.9OLED显示屏接线图
3.7电机编码器
编码器可以把轴角度方向的位移,转换成数字脉冲,是一种的旋转式的传感器。
将编码器设置到电机转动轴的位置,输出对应波形,得到电机转动的速度信息。
本设备采用AB相输出的增量式霍尔编码器,如图3.10。
只需给编码器接上5V的工作电源,电机上电后便输出AB相的方波信号,可以辨别转向和测量速度。
图3.10增量式霍尔编码器
3.8本章小结
本章的主要针对硬件的选型并设计对应外围电路。
从自平衡车的功能出发来设计硬件系统,对各芯片模块进行介绍并设计工作电路。
各模块与主控芯片STM32连接,完成硬件系统的设计。
第四章软件系统开发
4.1总体方案
软件系统开始时,初始化各函数,读取电压值,判断定时器是否定时时间到,如果定时时间未到则回到定时开始,如果定时时间到了,陀螺仪输出DMP数据,并转换为欧拉角,显示屏显示车体状态信息。
判断自平衡启动按键是否按下,按键没有按下则循环检测按键,如果按键按下则进行PID运算,并以输出PWM控制电机运转来控制小车自平衡。
检测蓝牙是否连接,如果蓝牙已连接则点亮指示灯,接收指令,并输出对应PWM控制小车行驶状态,如果蓝牙没有连接,则回到自平衡启动按键的检测检。
软件系统流程图如图4.1所示。
图4.1软件系统流程图
4.2MPU-6050读取姿态信息
4.2.1读取原始数据
MPU-6050原始数据获取流程如图4.2所示。
图4.2MPU-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.3IIC通讯方式
本文中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.4IIC开始信号和结束信号图
IIC数据的宽度为8位字节,在IIC开始信号发出后,发送8位数据。
当时钟总线SCL处于高电平且数据总线SDA保持稳定的低电平时,发送数据0。
反之,当时钟总线SCL处于高电平且数据总线SDA保持稳定的高电平电平时,则发送数据1。
图4.5IIC数据发送方式
在发送完8位二进制的数后,还需跟随一个应答信号(ACK),此信号用于判定是否传输一次数据。
如果在第9个时钟脉冲期间,时钟线为的高电平,且数据总线SDA为稳定的低电平,那么这就是一个有效应答位(Acknowledge)。
如果在第9个时钟脉冲之前的低电平期间,数据总线SDA保持高电平,则此次应答信号为一个无效应答位。
(Not-acknowledge)。
图4.6IIC应答信号时序图
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 stm32 平衡 控制系统 设计 毕业论文