两轮自平衡小车系统

 

双轮平衡车是基于STM32设计实现,通过STM32作为控制核心,集成陀螺仪模块、驱动电机模块、电机模块、蓝牙模块等组成整个平衡车结构。为实现小车平衡,使其实现站立平衡行走,通过运用平衡原理,测量小车姿态角参数变化,并加入到PID算法中,通过不断调节参数,实现小车平衡行走。完成了如下指标:

(1)由人手持小车为直立状态开始保持平衡,平衡时间1分钟以上。

(2)小车在平衡状态下能够向前行走0.5米以上,并始终保持平衡。

(3)小车在平衡状态下能够旋转180°并继续保持平衡;

(4)小车在平衡状态时加入较小外力干扰并仍能保持;

(5)开始保持平衡后移动范围不超出以小车为中心0.1米范围内;

(6)小车在平衡状态下能够旋转360°并继续保持平衡;

(7)在平衡状态下用无线遥控小车前进后退转弯,并始终保持平衡;

PID算法通过对小车角度进行测量使小车直立控制下保持平衡,再通过小车测速,使小车通过改变倾角来控制速度,进而对自身姿态进行调整。

关键词:PID算法; mpu6050;霍尔编码器;

目录

1. 方案比较与选择

2.方案描述

1. 建立平衡车倒立摆模型

2. 模型的求解

3.控制方案的分析与设计

1. 电路设计

2. 程序设计

1. 使用仪器

2. 测试项目

3. 测试结果分析


 

一、系统方案

1. 方案比较与选择

(1)陀螺仪选取

方案一:LE-60-OEMLE-60-OEM通过测量静态重力加速度变化,转换成倾角变化。测量输出传感器相对于水平面的俯仰和横滚角度。由于LE-60-OEM具有高精度和高性能等突出特点,因此其成本相对较高,不适合所有应用场景。此外,虽然小车的航向角Yaw不太重要,但是失去转向环对小车的稳定性依旧有一定影响。

方案二:MPU6050 是 InvenSense 公司推出的整合性 6 轴运动处理组件,其内部整合了 3 轴陀螺仪和 3 轴加速度传感器,并且含有一个IIC 接口, 可用于连接外部磁力传感器,并利用自带的数字运动处理器(DMP: Digital Motion Processor) 硬件加速引擎,通过主 IIC 接口,向应用端输出完整的 9 轴融合演算数据。方案二完全满足题目要求且具备更优的性能。

综上所述故选择方案二。

(2)控制器选取

方案一:STM32F1是意法半导体(STMicroelectronics)推出的一系列32位ARM Cortex-M3内核的微控制器(MCU)系列产品。其集成了丰富的外设,包括多个通用定时器、模拟转换器、串行通信接口、USB、CAN总线等,广泛应用于各种工业控制、汽车电子、医疗设备、消费电子等领域。STM32F1系列产品具有低功耗、高性能、可靠性高等特点,是市场上较为受欢迎的MCU产品之一。

方案二:STM32F4是意法半导体(STMicroelectronics)推出的一系列高性能32位ARM Cortex-M4内核的微控制器(MCU)系列产品。相比于STM32F1系列,STM32F4系列产品具有更高的时钟频率、更多的存储容量、更强的计算能力和更丰富的外设资源,包括多个高速通用定时器、模拟转换器、多个串行通信接口、以太网、USB、SDIO等。STM32F4系列产品广泛应用于高速数据处理、音频处理、图像处理、高速通信等领域。STM32F4系列产品还支持DSP指令集和浮点运算单元(FPU),使其在数字信号处理应用中具有更高的性能和更低的功耗

综上所述故选择方案二。

(3)电机驱动模块选取

方案一:TB6612N是一种双路直流电机驱动器,可以同时驱动两个直流电机。它可以通过PWM信号来控制电机的转速和方向。TB6612N的最大电流为3A,可以工作在2.5V到13.5V之间的电压范围内。

方案二:L298N是一种常用的双路直流电机驱动器,由ST公司(STMicroelectronics)生产。它可以同时驱动两个直流电机,最大电流为2A,工作电压在5V到35V之间。L298N的特点包括低电压输出、内置过流保护、内置热关断保护、PWM控制输入等。L298N的引脚排列紧凑,易于布局,并且具有较高的电流输出能力和保护功能,因此受到广泛的欢迎。L298N的使用简单,只需要连接电源、电机和控制信号即可,价格相较低于TB6612N。

综上所述故选择方案二。

(4)无线模块选取

方案一:HX1838B红外接收模块能够满足短距离内的遥控需求,且价格低廉,结构简单,只需要简单的解码就可以接收数据。但是使用它需要占用一个中断,影响程序的运行效率

方案二:HC-05是一种广泛应用于各种场合,且支持蓝牙4.0驱动的模块。在最新的安卓、IOS、Windows操作系统以及微信小程序中都能自由使用,具有很强的兼容性。此外,使用它可以直接通过USART串口和上位机通信,方法简单技术成熟。

综上所述故选择方案二。

(5)电源和稳压模块选取

方案一:12V锂电池+12V-5/3.3V电源模块可以满足电机12V驱动供电,以及单片机和其他模块的正常供电。

方案二:12V聚合物电池+12V-5/3.3V电源模块功能与方案一相同,最大的区别在于聚合物电池的体积小。

综上所述故选择方案二。

(6)电机选取

方案一:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,电机的位置可以被精准控制。但是对于平衡小车这个极度不平衡的系统,受到的干扰很大,很难完成精准控制

方案二:减速电机是在上普通电机加上了减速箱,这样便降低了转速,增加了扭力。满足了小车大载重和高速反应的需求,但是速度控制需要用PWM波调节,精确度不是很高。

综上所述故选择方案二。

2.方案描述

根据以上方案比较、分析与综合考虑,本系统最终确定的系统框图如图1所示:

图1 系统框图

       本系统以高性能和低功耗STM32F4为控制核心,小车自平衡系统采用L298N电机驱动模块、OLED显示模块、HC-06蓝牙模块、电源及稳压模块等构成 。通过mpu6050的三轴加速度数据和三轴角速度数据,经过单片机解算获得相应的横滚角、俯仰角、偏航角数据,并实时显示在OLED屏幕上。运用PID算法,根据倾斜角度控制电机转速,使得车体能够保持平衡。

二、理论分析与计算

1. 建立平衡车倒立摆模型

从系统结构进行区分,摆动可以分为顺摆和倒立摆。平衡车所用到的就是倒立摆。如图2所示:

图2 倒立摆

平衡车需要通过负反馈系统来实现。静止的时候无法平衡,所以要让平衡车发生倾斜,车轮才能及时地转动且位移方向与倾斜方向一致,这样才能抵消倾斜,车身就能保持平衡。如图3所示:

图3 平衡车平衡过程

对平衡车进行运动分解,如果想要达到平衡地目的,平衡车所受重力和平衡车悬挂上输出地马力足够才能达到平衡状态。

为了更加直观地分析平衡车地受力情况,可以把平衡车的平衡点看作是重心并依据中心画出力的分解示意图,这样就建造比较直观的受力模型。如图4所示:

图4 平衡车受力分析

2. 模型的求解

根据上述模型的建立,进一步分析计算,假设小车重心长度L,平衡车偏移角度,自身质量为m,平衡车自身收到的外部干扰为x(t),STM32平衡车的加速度。我们可以得出以下公式: 

(1)

小车保持平衡一段时间后,它受到影响不太大,即当低于的时候,会有以下等值式,(1)式可变为: 

(2)

  此时平衡车已经达到平衡,即a(t)=0,由此可得:

(3)

由(3)式我们可以推算出该平衡车系统两极点都为

再依据奈奎斯特定律,其中有一个极点是在S正半轴。由于平衡车的整体系统不能达到稳定所以无法保持平衡,根据图4分析可以得到平衡车的a(t)的大小是由平衡车的来共同决定,因此在控制系统中需引入特殊变量来建立反馈微分控制环节。如图5所示:

图5 平衡车系统PD反馈微分控制环节

  当我们把PD(比例微分)反馈调节加入到平衡车系统后,可得:

(4)

这是平衡车两个极点都为:

(5)

通过奎奈斯特定律,我们可推出该系统的左半平面就是极点,当k1大于g,k2大于0的时候,左半平面系统就能够保持稳定,则该小车就能达到平衡。

3.控制方案的分析与设计

通过角加速度仪S和陀螺仪获取车身的倾斜角度和角加速度,并且把信息立即传送到STM32主控芯片上,通过滤波和PID演算得出融合数据并传送给电机驱动,从而操控轮子进行自平衡,达到平衡后再加入其它功能模块。STM32平衡车的操控由3个方面组成,如图6所示:

图6 平衡车控制组成图

  从倒立摆模型得出,如果要让平衡车达到平衡,就一定能把反馈控制加入到里面。PID控制算法可以对偏差信号进行比例、积分、微分,来逐步减少偏差信号,从而达到需要的数值要求。如图7所示:

图7 PID控制图

图7中r(t)已经给出的常量,y(t)是实际的输出数值,e(t)是两者偏差,所以

(6)

由此得PID控制方程:

(7)

式(7)中,kp为比例系数,ki为积分系数,kd为微分系数。从式(7)中能够得出PID控制就是按偏差控制,也就是越大控制越强。

   根据平衡车受力分析图,要使平衡车达到平衡,必须将积分、比例、反馈这三个环节加入到传递函数中,这样才能使平衡车平衡。结合PID比例、积分、微分得特点设计PID控制器框图,如图8所示:

图8 PID控制器

如果要采用平衡PID,由上面分析的kp必须大于 g,kd大于 0是必要条件。这样系统就会快速变换 STM32 平衡车的倾角,从而令小车本身不会倒下并且保持平衡。但是这个变换速度比较快,很可能会出现过小或者过大,而且电机在转动时有惯性,会导致基于 STM32 的平衡车发生振动,这个时候采用微分可以依据变换的速度自行调节输出PID,从而调节幅度,达到细调的功效,细调和粗调相结合,这样就能够使平衡车保持平衡稳定。

在 STM32 平衡车的速度方面,要求平衡车能够依据设定的速度匀速前进。保持这样匀速地前进有一个好处,那就是平衡车自身的偏差会小很多,控制系统中的静态误差也会小很多。总的来说,偏差相对大的时候可以选用比例调节,而偏差相对小的时候可以选用积分来调节。

在 STM32 平衡车的方向方面,小车方向的变更主要是依靠两个轮子的差速,本次设计选用了蓝牙控制,用户可以依据自己的需求来用蓝牙遥控器控制 STM32 平衡车的前进方向。当平衡车接收到蓝牙信号的时候,再调用PWM来输出差压从而达到方向控制的目的。

三、电路与程序设计

1. 电路设计

(1)mpu6050电路

为了实现平衡车自平衡,采用mpu6050陀螺仪模块,其中包含陀螺仪传感器和加速度传感器,主要收集小车姿态信息,可以输出芯片得三维坐标的角度和角加速度。原理图如图9示。

图9  mpu6050原理图

(2)电机驱动电路

平衡车系统采用的是L298N驱动电机模块。它的特点包括低电压输出、内置过流保护、内置热关断保护、PWM控制输入等功能。它可以实现单片机与电机之间进行调速和控制轮子正反转。如图10所示:

图10 L298N原理图

2. 程序设计

本项目需要完成小车自检并达到平衡,需要完成,延时函数初始化、OLED初始化、mpu6050初始化、串口初始化、DMP初始化、IIC初始化、mpu6050中断初始化、两个编码器初始化、pwm初始化功能,并编写相应函数功能。

(1)软件整体结构图。如图11所示。

图11 软件整体结构图

(2)算法及程序流程图。如图12所示:

        

图12 算法及程序流程图

四、测试方案与测试结果

1. 使用仪器

 HC_06模块......一个

2. 测试项目

详细测试方案请见附录。测试结果如表1、表2

基本要求测试结果

测量项目

题目指标

完成情况

是否

达标

测试方案简述

与测量仪器

1.1由人手持小车为直立状态开始保持平衡,平衡时间1分钟以上。

平衡时间达到一分钟以上

小车一直在平衡

通过直接观看平衡小车的状态

1.2小车在平衡状态下能够向前行走0.5米以上,并始终保持平衡

平衡状态下前行0.5米以上并继续保持平衡。

小车可以一直前行

给予小车一目标速度,通过观察小车以一定的速度前行且平衡。

1.3小车在平衡状态下能够旋转180°并继续保持平衡。

小车旋转180°并继续保持平衡

小车至少可以旋转180°并继续保持平衡。

通过蓝牙控制,可以观看到小车按预期的效果旋转180°并继续保持平衡。

小车在平衡状态时加入较小外力干扰并仍能保持

加入外力并继续保持平衡。

加入足够的外力小车继续保持平衡。

用手前后推小车,查看到小车依然可以保持平衡。

发挥部分测试结果

测量项目

题目指标

完成情况

是否

达标

测试方案简述

与测量仪器

2.1开始保持平衡后移动范围不超出以小车为中心0.1米范围内

移动范围不超过0.1米。

小车前后移动在0.1米范围内。

通过直接观察小车可移动范围在0.1米内。

2.2小车在平衡状态下能够旋转360°并继续保持平衡;

平衡状态旋转360°并继续保持平衡。

小车至少可以旋转360°并继续保持平衡。

通过蓝牙控制使小车旋转360°并继续保持平衡。

2.3在平衡状态下用无线遥控小车前进后退转弯,并始终保持平衡

控制小车前进后退转弯

小车可以前进后退转弯。

通过蓝牙的指令控制小车,查看到小车可以前进后退。

3. 测试结果分析

本作品完成了题目的所有基础指标和发挥要求,符合题目所有指标并且在基本项和发挥项等指标上超出题目要求。

本作品采用STM32F407作为主控芯片,控制集成了mpu6050实现姿态角解算输出。使用L298N控制直流电机。同时,本作品还采用霍尔编码器进行脉冲计数实现了速度读取,霍尔编码器可达到速度环的控制。

本作品旋转角度可调范围大,平衡时间范围大,满足并远超题目要求。

五、参考文献

[1]    潘丰.自动控制原理[M].北京:机械工业出版社,2014-8.

[2]    姜涛 . 两轮自平衡移动机器人系统设计[D. 哈尔滨:哈尔滨理工大学,2019. 

       [3]  谭浩强.《C 程序设计(第五版)》[M].清华大学出版社.

[4]    张洋,刘军.《STM32F4(库函数版)第二版》[M].北京航空航天大学出版社

演示画面链接:自平衡小车项目演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值