两轮自平衡小车设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
沈阳工业大学
信息科学与工程学院第五届创新杯大学生电子设计竞赛
双轮自平衡小车
摘要:
本作品采用STM32单片机作为主控制器,用一个陀螺仪传感器来检测车的状态,通过TB6612控制小车两个电机,来使小车保持平衡状态,通过手机蓝牙与小车上蓝牙模块连接以控制小车运行状态。
关键字:智能小车;单片机;陀螺仪;蓝牙模块。
一、系统完成的功能
根据老师的指导要求,在规定的时间内,由团队合作完成两轮自平衡小车的制作,使小车在一定时间内能够自助站立并且自由行走,以及原地转圈,上坡和送高处跃下站立。
二、系统总体设计原理框架图
图2.1 系统总体框图
三.系统硬件各个组成部分介绍
3.1.STM32单片机简介(stm32rbt6)
主控模块的STM32单片机是控制器的核心部分。该单片机是ST意法半导体公司生产的32位高性能、低成本和低功耗的增强型单片机,它的内核采用ARM 公司最新生产的Cortex—M3架构,最高工作频率可达72MHz,256K的程序存储空间、48K的RAM,8个定时器/计数器、两个看门狗和一个实时时钟RTC,片上集成通信接口有两个I2C、3个SPI、5个USART、一个USB、一个CAN、两个和一个SDIO,并集成有3个ADC和一个DAC,具有80个I/0端口。
STM32单片机要求2.0~3.6V的操作电压(VDD),本设计采用5.0V电源通过移动电源给单片机供电。
3.2.陀螺仪传感器
陀螺仪可以用来测量物体的旋转角速度。本设计选用MPU-6050。MPU-60X0 是全球首例9 轴运动处理传感器。它集成了3 轴MEMS 陀螺仪,3 轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。扩展之后就可以通过其I2C 或SPI 接口输出一个9 轴的信号(SPI 接口仅在MPU-6000 可用)。MPU-60X0 也可以通过其I2C 接口连接非惯性的数字传感器,比如压力传感器MPU-60X0 对陀螺仪和加速度计分别用了三个16 位的ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250,±500,±1000,±2000°/秒(dps),加速度计可测范围为±2,±4,±8,±16g。一个片上1024 字节的FIFO,有助于降低系统功耗。和所有设备寄存器之间的通信采用400kHz 的I2C 接口或1MHz 的SPI 接口(SPI 仅MPU-6000 可用)。对于需要高速传输的应用,对寄存器的读取和中断可用20MHz 的SPI。另外,片上还内嵌了一个温度传感器和在工作环境下仅有±1%变动的振荡器。芯片尺寸4×4×0.9mm,采用QFN 封装(无引线方形封装),可承受最大10000g 的冲击,并有可编程的低通滤波器。关于电源,MPU-60X0 可支持VDD 范围2.5V ±5%,3.0V±5%,或3.3V±5%。另外MPU-6050 还有一个VLOGIC 引脚,用来为I2C 输出提供逻辑电平。VLOGIC 电压可取1.8±5%或者VDD。
图3.2.1 陀螺仪外观图
图3.2.2 陀螺仪电路图
3.3.电机驱动
3.3.1.TB6612
由于TB6612相对于传统的L298N效率上提高很多,体积上也大幅度减少,在额定范围内,芯片基本不发热,所以我们设计的时候选择了这款芯片。
图3.3.1 TB6612外观图
3.3.2.PWM原理
PWM即脉冲宽度调制,它是指将输出信号的基本周期固定,通过调整基本周期内工作周期的大小来控制输出功率的方法。在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。因此,PWM又被称为“开关驱动装置”。如图7所示,在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。
图3.3.2 PWM波形图
设电机始终接通电源时,电机转速最大为Vmax,设占空比为D=t/T,则电机的平均速度为:Vd = Vmax·D (1)式中:Vd表示电机的平均速度;Vmax表示电机全通电时的速度(最大);D=t/T表示占空比。由公式(1)可见,当改变占空比D时,就可以得到不同的电机平均速度,从而达到调速的目的。
3.4蓝牙模块
蓝牙模块可以让原来使用串口的设备摆脱线缆的束缚在10米范围内实现无线串口通信。使用该模块无需了解复杂的蓝牙底层协议,只要简单的几个步骤即可享受到无线通信的便捷。蓝牙透传模块只有4个AT指令,分别是测试通讯,改名称,改波特率,改配对密码,AT指令必须从TXD,RXD信号脚设置,不能通过蓝牙信道设置。发送AT指令的设备可以是各种类型的MCU(比如51,avr,pic,msp430,arm等),也可以是电脑通过串口(PC串口接MAX232以后或者USB转串口)发送。由于HC-06有低功耗,低成本的特性,所以我们选择了这款芯片。
图3.4 蓝牙模块外观图
3.5编码器
编码器是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换成电信号,前者称为码盘,后者称为码尺。按照读出方式编码器可以分为接触式和非接触式两种;按照工作原理编码器可分为增量式和绝对式两类。增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。绝对式编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有关,而与测量的中间过程无关。
四、软件设计
软件部分实现的主要功能是:传感器的数据采集、PWM信号的输出、车模控制:包括直立控制,速度控制。软件流程如下:
初始化完成以后,首先进入车模直立检测子程序。该程序通过读取陀螺仪传感器的数值判断车模是否处于直立状态。在中断程序中不断的读取编码器数据,获取车模状态信息,然后通过读取的数据控制车模。
1.蓝牙控制程序:
if(uart_receive==0x00)
Flag_Qian=0,Flag_Hou=0,Flag_Left=0,Flag_Right=0; //刹车
if(uart_receive==0x01)
Flag_Qian=1,Flag_Hou=0,Flag_Left=0,Flag_Right=0; //前进
if(uart_receive==0x05)
Flag_Qian=0,Flag_Hou=1,Flag_Left=0,Flag_Right=0; //后退
else if(uart_receive==0x02||uart_receive==0x03||uart_receive==0x04)
Flag_Qian=0,Flag_Hou=0,Flag_Left=0,Flag_Right=1; //右转弯
else if(uart_receive==0x06||uart_receive==0x07||uart_receive==0x08)