片单机控制单轴双轮自动平衡小车设计.docx

上传人:b****7 文档编号:9348804 上传时间:2023-02-04 格式:DOCX 页数:25 大小:263.02KB
下载 相关 举报
片单机控制单轴双轮自动平衡小车设计.docx_第1页
第1页 / 共25页
片单机控制单轴双轮自动平衡小车设计.docx_第2页
第2页 / 共25页
片单机控制单轴双轮自动平衡小车设计.docx_第3页
第3页 / 共25页
片单机控制单轴双轮自动平衡小车设计.docx_第4页
第4页 / 共25页
片单机控制单轴双轮自动平衡小车设计.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

片单机控制单轴双轮自动平衡小车设计.docx

《片单机控制单轴双轮自动平衡小车设计.docx》由会员分享,可在线阅读,更多相关《片单机控制单轴双轮自动平衡小车设计.docx(25页珍藏版)》请在冰豆网上搜索。

片单机控制单轴双轮自动平衡小车设计.docx

片单机控制单轴双轮自动平衡小车设计

毕业设计(论文)

 

题目:

单片机控制单轴双轮自动平衡小车设计

系别:

电气工程系

专业:

电气工程及其自动化

班级:

电气121

学号:

学生姓名:

指导教师:

 

2016年月

摘要

两轮自平衡车由于其特有的灵活性以及便捷性越来越受到人们的关注,在人们的日常生活中也作为代步工具被越来越多的人群接受。

本设计采用了基于ARMCORTEX-M3内核的STM32单片机,使平衡车姿态调整速度更快,数据处理更准确,运动性能更佳。

并且放弃分别采用陀螺仪和加速度传感器来获取小车的姿态信息,而是直接采用了全球首例9轴运动处理传感器MPU-6050,通过DMP获取四元数,以算出角度,并通过PID控制实现小车的直立平衡行走。

采用蓝牙模块实现和小车之间的通讯工作,设计最终实现了小车的平衡站立、前进、倒退功能。

实现小车的平衡直立行走,其实就是要对电机进行适时的控制,电机作为机电转换装置,遍布于国民经济的各个领域以及人们日常生活的方方面面,所以对电机的完美控制更显得极其重要,也是本设计的主要目的之一。

STM32F10x系列芯片是新型的32位嵌入式微处理器,具有优秀的数据处理能力,速度更快,在对本设计中的小车模型进行速度调整时,能展现出更灵敏的反应速度,更重要的是,它还具有较好的移植性,在很好的实现本设计任务的同时,利于将来更多功能的扩展。

关键词:

平衡车;MPU6050;STM32;PID控制

 

Abstract

MoreandmorepeoplehavepaidattentiontoTheTwo-wheeledSelf-balancingRobotduetoitsuniqueflexibilityandconvenience.Peoplehadacceptitastransportinpeople'sdailylife.ThisstudyisjustbasedonthepurposeofexploretheTheTwo-wheeledSelf-balancingRobot.ThisdesignbasesonSTM32microcontrollerwhichbasedontheCORTEX-M3ARMcore.becauseofthat,therobotadjustfaster,dataprocessingmoreaccurate,performancebetter.Atthesametime,wedirectlyusingtheworld'sfirst9axismotionprocessingsensorMPU-6050insteadofthegyroandaccelerationmetersensorstogetthecar'sattitudeinformation.tocalculatetheangleThroughtheDMP.Andtoachievethecar'suprightbalancewalkingthroughthePIDcontrol.UsingBluetoothmoduletoachievecommunicationwiththecar.TheDesignedwillachievethebalanceofthecarstand,forward,backwardfunction.Toachievethebalanceofthecaruprightwalking,infact,istotimelycontrolofthemotor,electricmotorisanelectricmachineconversiondevicewhichthroughallareasofthenationaleconomyandpeople'sdailylife,sotheperfectcontrolofthemotorismoreimportantandisoneofthemainobjectivesofthisdesign.stm32f10xserieschipisnew32-bitembeddedmicroprocessor,ithasexcellentperformance,goodportabilityandimprovetheefficiencyoftheDCmotorcontrol,andwehavemodularthelsystem,whichwillbeconducivetothebalanceofthecarafterthefunctionexpansion.

KeyWord:

Self-balancingRobotMPU6050STM32PIDcontroller

 

目  录

1绪论

近几年,不管是独轮车还是双轮平衡车都越来越受到人们的关注,随着时间发展,科技的进步,双轮平衡车也变得越来越智能化。

最开始,瑞士研制了用 DSP和FPGA 控制的基于倒立摆理论的双轮车,通过倾斜传感器和倾角传感器来检测车体,通过电机上的编码盘检测电机的速度。

该设计采用了基于状态反馈的线性控制策略,车的运动被分解成直线和旋转运动,然后分析直线运动和旋转运动,得到电机需要的控制量,最终把控制量耦合叠加。

其主要的设计思想是:

使车子朝车体倾斜的方向运动来保持车身的平衡,该控制只能让小车平衡运动,而不能让小车自主直立。

之后,赛格威公司研发了Segway平衡车,它拥有更多的姿态传感器,有5个陀螺仪传感器,然而事实是检测车身倾斜只需要3个传感器就够了,其他的两个传感器只是增加安全性。

传感器采集到的数据发送给集成有许多处理器的电路板。

这个集群是为了保证载人平衡车在其中任何一个处理器出现问题时能报告错误,保证了平衡车的安全性。

它的设计是针对民用代步设计的,很具有代表性。

国内方面,也已经有基于传感器 ADXL202 及反射式红外线距离传感器来获得姿态信息的设计[],该设计基于 PWM 动态来控制直流电机的速度,车与上位机间的数据通信显示使用人机交互界面使用图形液晶点阵、方向摇杆、按键。

依靠这些可靠并且完备的硬件,使用独特的软件算法,最终实现Sway 的数据交换和平衡直立控制。

发展趋势:

平衡车正在朝着越来越智能化[]的方向的发展,已经提出了众多的解决平衡控制的方案。

未来平衡车必将越来越小巧轻便,配备更完善的人机交互介面。

另外,两轮自平衡车的应用前景将会十分的广泛,未来的目标是制造出外形结构简洁,并且具有稳定自平衡性能的平衡车,还能有方便的驾驶模式,必将方便大家的出行。

 

2平衡车总体设计方案

2.1系统平衡原理分析

分析双轮平衡小车的平衡站立,我们自然联想到一根直立木棍在手指上保持直立,这正是人们在日常生活中对直立平衡控制的直观经验和感受。

通过仔细分析不难发现,通过手指移动可以保持木棍的直立不倒,类比于单轴双轮平衡小车,我们在发现车身倾斜的时候,需要直接使车子向相反的方向运动,目的是抵消在这个维度上由于车身重力产生的倾斜,这样就能使车身保持直立平衡。

导致车体倾斜的主要因素是θ角度[]的产生,θ角度是车身发生倾斜后车身和垂直于地面的直线的夹角,所以要想小车平衡,需要消除倾角,或将倾角控制在一个可控的范围之内,整个平衡控制流程如图2-1所示。

 

θ变小

图2-1平衡控制框图

保持车身平衡的方法是转动电机来调整车身下部,以改变车身倾斜角度,来使车身保持在一水平垂直线上。

然而这只是我们的直观感受,真正应用于理论设计的时候,就要写出小车的运动方程[]。

车身受力分析如图2-2所示。

车模运动方程:

(2-1)

在角度θ很小时,运动方程简化为:

(2-2)

车模静止时:

(2-3)

图2-2车模受力分析

2.2系统整体设计

目前市场上已经开发出单轴双轮自动平衡小车,已经可以满足代步和娱乐的目的,本设计的要求是,要设计出这样一个系统,使它具有自动平衡的功能,并且能够前进和后退。

电机

图2-3硬件结构图

整个设计流程以STM32单片机为核心,选用了与该主控芯片相融和的其他几个必要的模块。

姿态传感器模块电路测算小车车身姿态信息、并把信息提供给主控芯

片STM32。

主控芯片STM32是整个小车模型的大脑,在接收到小车车身信息之后,与预先设定车身平衡数据进行比较,计算出小车需要调整的余量,转化成PWM[]控制信号,输出给电机驱动电路模块,电机驱动模块在接收到PWM信号之后再完成对电机的控制,电机上的编码器测速模块采集到电机速度信息,再把信息反馈给主控芯片STM32。

重复这样一个过程,完成车模的直立平衡控制、直立运动控制[],依靠蓝牙模块发送对整个小车的运动控制命令。

整个小车被设计成如图2-3所示的几种模块。

选用基于ARM的STM32F10X系列单片机,这是一系列功能更强大的数据处理能力更强的主控芯片[],必将会为之后平衡车的功能拓展提供方便。

整个设计采用模块化的思想,这也正好切合了设计之初的想法,为实现小车更多功能的扩展提供方便。

 

3系统硬件电路设计

3.1系统硬件选型

姿态传感器选型:

InvenSense公司的MPU-6050内置了一个数字可编程的低通滤波器、自带的可扩展的数字运动处理器DMP。

并且,InvenSense提供了一个MPU6050的嵌入式运动驱动库,结合MPU6050的DMP,可将原始数据直接换算成四元数输出,而得到四元数之后,就可以很方便的计算出欧拉角,从而得到yaw,roll,pitch,他们分别是俯仰角、横滚角、航向角。

使用内置的DMP,使主控芯片不用进行姿态解算过程。

应用在平衡车上的MPU-6050有很多优点:

体积小,功耗小,测量也很精确。

MPU6050内部集成了三轴陀螺仪以及加速度传感器[]。

如果选用多组方案,成本会升高。

所以最终,直接采用集成了动态滤波功能的9轴姿态传感器,传感器可以把处理后的姿态角等信息用串口形式[]发送。

我们想要得到的是小车的俯仰角。

要想得到车体的俯仰角,只需利用原始数据,进行姿态融合解算即可。

电机选型:

因为平衡车要进行速度控制的话还需要有编码器,为了减免不必要的工作量,并切保证质量,我们应尽量选取带有编码器的直流有刷电机。

本设计采用的是型号是25GA20E260的带有带霍尔编码器的电机,工作电压在7~13V,越高的电压将会带来越高的性能。

电机尾部带有13线的霍尔编码器,电机的减速比是1:

20,故车轮转一圈,电机可以输出260个脉冲,倍频之后是1040。

编码器的额定工作电压是5V,集成了上拉电阻和比较整形功能,可以直接输出方波。

电机配有金属减速箱,额定电压下,减速后空载转速500rpm(转每分)。

外形小巧,使用方便。

电机驱动选型:

TB6612FNG芯片和L298N使用都是非常简单的。

该芯片的数据输入只需要控制两条数据线的高低电频和一条线的PWM就能够控制一个电机,而该芯片正好能够控制两个电机,所以用6条线就够完成两个电机的驱动。

TB6612FNG是一个很优秀的双电机驱动板,它有两个接口去来驱动两个直流电机,如我们常用的微型金属减速马达控制器,当然也可用于控制一个双极步进电机。

基于MOSFET场效应管的H桥驱动更有效率。

两台电机的每个通道都有两个方向控制引脚和一个接受PWM输入频率达100Khz的速度控制引脚。

TB6612相对于传统的L298N,效率提高很多,体积大幅减少,在额定范围内,芯片基本不发热。

TB6612FNG有两个Mosfet的H桥电路。

对比L298N,TB6612只需要接一个电容,发热也不严重,驱动功率也很高,将会为整个设计电路模块减小体积。

要想系统的电源模块满足要求,必然要按照适用于硬件系统中其他硬件的需求来确定。

要满足姿态传感器芯片为mpu6050,电机25GA,驱动TB6612,STM32C8T6的具体要求,就需要提供:

12V、5V、3.3V的电压。

德州仪器(TI)生产的稳压芯片LM2596提供的有:

3.3V、5V、12V及可调(-ADJ)等多个电压档次产品。

它的输出电压:

3.3V、5V、12V及(ADJ)等,最大输出电压达到37V。

用于提供1A输出电流且工作压差可低至1V的AMS1117系列稳压器设计。

既使输出最大电流,可以保证AMS1117最大电压差也不会超过1.3V,随着负载电流的降低,电压差也慢慢变小。

设计最终使用STM32F103C8T6,读取mpu6050的数据时通过IIC接口,获得小车的姿态,接下来的过程是主控芯片通过PID控制给电机输出PWM控制信号,电机驱动模块芯片TB6612接受到PWM信号之后再完成对电机的控制[]。

另外,为了调试方便,除了设计了上述给模块外,还扩展了JLINK接口,使用的是SWD模式,用于仿真调试。

因为需要记录数据和绘出数据波形,查看滤波和PID效果。

所以扩展了串口电路。

3.2最小系统设计

系统方框图如图5所示STM32系列是一款性价比极高的嵌入式应用专门设计的主频72MHz的ARM CORTEX-M3内核,方便之后功能的拓展,工作电压为3.3V。

晶振电路为STM32单片机处理器[]提供8M频率的时钟脉冲,并串联两个10PF电容保

图3-1最小系统图

证电路提供稳定的频率脉冲,设置倍频PLL为9,得到单片机的工作频率是72M,单片机最小系统图如图3-1所示。

3.3姿态检测电路设计

本设计选用的MPU6050有以下几点理由,在获取角度和加速度的同时,因为MPU6050内置的DMP处理器,直接使发出数字信号,无疑使单片机的姿态处理时间缩短,姿态处理过程得到简化。

获取姿态时没有分别采用传统的加速度计,陀螺仪[],而是采用集成了陀螺仪和加速器的MPU6050,为单片机直接提供向9轴融合演算技术。

图3-2姿态检测电路

MPU6050电路如图3-2,Pin10引脚所接陶瓷电容C19,用于校准滤波;Pin13所接陶瓷电容C18是VD旁路电容;Pin20所接陶瓷电容C17是电荷泵电容;Pin8所接陶瓷电容C20是VLOGIC电容;SDA经一个10K的电阻连接到PB11上;SCL同样经一个10K的电连接到PB10上;INT直接连接到PB3上。

3.4电源稳压模块

专门设计了电压模块[]为本系统所设计的各个模块提供电源。

TB6612需要5V

图3-3电源模块

电源来提供逻辑电平的输入,而12V的直流电源是提供给电机的电源,电机采用的是型号25GA20E260的12V直流减速电机,该电机自带霍尔编码器,而所用的单片机STM32使用3.3V直流电源,系统采用ASM1117-3.3V模块为单片机系统及其他外设提供稳定电压。

同时系统采用LM2596稳压模块为姿态检测模块提供稳定工作电压,稳定性高。

故系统同时采用LM2596稳压模块为驱动电路提供工作电压,并通过PWM实时控制电机的电压大小。

具体电路设计见图3-3。

图中电解电容C11起到滤波稳压的作用,而瓷片电容C1、C2、C3、C21起到辅助滤波,去除电压中的波动毛刺电压的作用,二极管起稳压作用。

3.5电机驱动模块设计

TB6612和传统的L298N驱动芯片的区别在于,TB6612体积更小,通过大电流MOSFET-H桥,实现双通道电路输出,可以同步驱动2个电机。

TB6612FNG输出的连续驱动电流达到最高1A。

AINl/AIN2、BIN1/BIN2是控制信号输入端,其中AINl/AIN2、BIN1/BIN2用于控制电机转动方向,其方式是控制电平高低;PWMA/PWMB用于控制两个电机转动速度,其方式是调节PWMA占空比;AIN1、AIN2、BIN1、BIN2分别连接STM32的PB13、PB12、PB14、PB15;PWMA和PWMB分别接STM32的PA11、PA8;AO1/A02、B01/B02是2路电机控制输出端,AO1/A02接在电机1两端、B01/B02接在电机2两端;STBY作用是正常工作待机状态控制引脚;VM是电机的电源输入端引脚,在这里是12V,VCC引脚是逻辑电平输入端。

如图3-4所示。

图3-4驱动模块

TB6612芯片总共包含有4种电机控制模式,它们分别是正转、反转、制动、停止。

具体实现以上控制的各引脚的配制方法如表3-1所示。

INT1

INT2

PWM

DIRECTION

MOTOR

LOW

HIGH

0停止;255最高

MOTOR

HIGH

LOW

0停止;255最高

MOTOR

HIGH(LOW)

HIGH(LOW)

0停止;255最高

停止

表3-1控制逻辑表

4系统软件部分设计

4.1软件系统总体结构 

对采集到的信息进行处理,并转换成PWM,对电机进行控制

 

图4-1主程序流程图

前面的部分主要介绍了整个小车系统的设计思想,硬件电路原理,接下来介绍本设计的软件部分。

根据设计要求,设计的系统软件流程如图4-1所示。

系统软件流程是再采集完传感器数据后,再处理相关数据,并输出PWM信号控制电机的运行。

整个程序处理过程分为以下几步,第一步,主控芯片STM32首先采集姿态传感器MPU6050的数据,经过卡尔曼滤波,就得到了车身的姿态信息,第二步,根据此角度做PID调节,得到小车两个电机的PWM脉宽,再调整轮子速度,使它的俯仰角为零。

之后就是重复采集、处理、调节、处理这一过程。

然后,在这个基础上,给两电机加PWM值,就会实现小车的前进,倒退。

软件设计流程是:

首先单片机初始化,在获取车身姿态数据,经过卡尔曼[]融合算法,PID控制完成小车直立速度控制。

4.2单片机初始化

返回

初始化流程图如图4-2所示,系统使用外部8MHz晶振作为外部时钟源,通过STM32内部的相环使倍频达到72MHz。

STM32的两条外设时钟总线分别是APB1和APB2,它们的时钟频率最高分别是36MHz、72MHz。

整个初始化步骤是:

首先软件设

图4-2单片机初始化

置外设时钟到最高频率,开启ADC、定时器、DMA、串口和GPIO的时钟源。

定时器用于产生控制电机的PWM信号。

在程序中设置PWM信号的频率成20kHz和3600级占空比输出。

 间隔定时器(Systick)产生8kHz信号用于产生ADC和Kalman采样频率。

间隔定时器为一个24位递减定时器,仅有3个寄存器,使用固件库仅需一个语句即可完成配置。

4.3姿态检测系统软件设计

4.3.1MPU6050姿态获取方法

MPU6050加速度计部分:

获得车身加速度的方法很简单,我们利用MPU6050自带的数字运动处理器DMP,就不再需要考虑复杂的滤波算法,我们就可以直接得到平衡小车的倾角。

如图4-3.具体需要我们移植官方DMP驱动库,移动成功之后,便可在主函数中调用库函数Read_DMP()来读取角度,用来Accel表示。

经由I2C读取到MPU6050的数字运动处理器DMP输出的四元数是q30格式的,要想把DMP输出的四元数换算成欧拉角,就要先变换成浮点数,然后再进行计算,公式如下:

(3-1)

(3-2)

式中quat[x]是四元数,x为0、1、2、3,Q[x]是转化成浮点数之后的四元数,x为0、1、2、3。

式3-2是俯仰角的计算方法。

平衡车只需要使用俯仰角pitch,横滚角Roll、航向角Yaw都用不到。

MPU6050中陀螺仪部分:

陀螺仪模块可以实时记录小车摆动时的角速度Gyro。

通过卡尔曼滤波把加速度计测得的角度Accel与陀螺仪获得的角速度Gyro融合到一起,得到我们实际想要的更为准确的角度Angle,角速度Angle_dot。

经卡尔曼滤波祛除了噪音影响的车身姿态信息将利于更好地实现PID调节。

移植DMP驱动库,利用库函数Read_DMP()读取车身角度

图4-3姿态传感器初始化

4.3.2卡尔曼滤波算法

我们知道仅仅依靠姿态传感器诸如陀螺仪和加速度传感器,我们就已经能获得校车的姿态信息,但是为什么还要卡尔曼滤波,其原因是在我们只是通过硬件提供的信息的话很难达到所需要的精度,硬件上的工艺水平是有限的,长时间下来,误差会不断地累加,小车也很难在一个较长的时间里保持直立平衡.为了解决这一问题,我们引入了卡尔曼滤波,从软件算法的角度来优化车子的准确性能。

卡尔曼滤波器是一种高效率的递归滤波器,它可以从夹杂有噪声的测量中,估算动态系统的状态。

包括过去、现在、甚至是下一步的状态信息,针对本设计而言,本设计所使用的惯性器件卡尔曼滤波将更合适。

简单来说,卡尔曼滤波器有预判与更新两个阶段。

首先预判时,滤波器依靠前一刻的信息,估算出目前的状态;下一步,滤波器根据目前的值评估下一刻的角度信息。

卡尔曼滤波算法函数voidKalman_Filter(floatAccel,floatGyro)的入口参数有两个分别是加速度和角速度,Accel与Gyro为测得的角度与角速度值,通过此函数计算滤波后,将得到我们想要的实际值Angle与Angle_dot[]。

Angle+=K_0*Angle_err;//这一步是后验估计

Angle_dot=Gyro-Q_bias;//输出值(后验估计)的微分=角速度

设置卡尔曼滤波参数如Q_angle为0.01;Q_gyro为0.01;R_angle为0.003;Dt为0.005;charC_0为1;

Q_bias,Angle_err;

floatPCt_0,PCt_1,E;

floatK_0,K_1,t_0,t_1;

floatPdot[4]={0,0,0,0};

floatPP[2][2]={{1,0},{0,1}};

要想改变kalman滤波器采样时间,改变上述程序中的dt即可。

4.4平衡PID控制软件实现 

这里首先形象的分别说明一下P、I、D控制的区别,以利于我们建立起感性认识P为比例控制,使以最快的速度达到目标。

I为积分控制,使误差为0而起调和作用。

D为微分控制,可以加快调节进程。

4.4.1直立环PD控制

平衡小车直立环使用PD控制,既是比例微分控制,其实像是一般的控制系统只需要P控制或者PI控制就已经能满足要求,但是如果需要我们干扰迅速响应的控制过程就需要D微分控制。

直立PD控制函数的入口参数:

角度、角速度,返回值:

直立控制PWM。

intbalance(floatAngle,floatGyro)

首先,要计算车身角度和预先设定需要小车保持平衡所需角度的偏差,用以下语句即可实现,其中Bias既是所要用到的偏差值。

Bias=Angle-ZHONGZHI;

求出平衡的角度中值和机械相关,本设计中,假设MPU6050已经完全垂直水平安装,那么中值既是0。

balance=kp*Bias+Gyro*kd;

计算平衡控制的电机的PWM,其中kp是P系数kd是D系数。

最后还要把pwm值返回给直立pwm:

Balance。

到这里,就完成了对直立环的控制。

4.4.2速度环PI控制

平衡小车速度环使用PI控制[],既比例积分控制,速度控制使用频率最高的既是PI控制。

PI控制

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 药学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1