河北农业大学 于浩 韩宇航 辛妍贝 李磊
1.1.1 单片机型号选择
平衡车采用STM32F10C8T6单片机,具有高达72MHz的工作频率,处理速度快,可以满足平衡车100Hz的调整频率,具有成熟的开发技术,使用广泛,抗干扰能力强,价格低廉,性价比较高。
1.1.2 电机型号选择
平衡车采用12V挂载霍尔原理的编码器电机,具有大扭矩、小内阻、响应速度快、使用寿命长等特点。
1.1.3 驱动选择
平衡车选择使用TB6612FNG型号驱动,该驱动具有高达100KHz的反应速度,可以满足平衡车PWM波0~7200的驱动范围,对车可以进行微小调整,并且具有内耗小、输出功率大的特点。
1.1.4 显示模块选择
使用OLED屏幕作为显示模块,功耗低,采用了SPIO的通讯方式,具有较快反应速度,刷新频率较高,实时显示平衡车各个部分的运行状况。
1.1.5 电源选择
平衡车选用流行的可充电锂电池进行供电,输出功率可达36W,2200mah的容量可保证平衡车的长时间工作,并且具有高达2000次的充电次数,可随时更换。
1.1.6 通讯模块选择
通讯模块选择HC-05蓝牙模块,可接收来自手机蓝牙的控制或者由遥控器控制,具有配置简单、抗干扰能力强、技术成熟、使用广泛、低功耗等特点。
1.1.7 陀螺仪的选择
作为稳定器,陀螺仪在平衡车能够两轮直立行走中起着尤为重要的作用。陀螺仪模块,通过IIC通讯将平衡车的三个维度上的角速度和角加速度,传输到单片机,并通过内部定时器200Hz的频率进而来改变IINT引脚的电平,触发单片机使之中断,进而对平衡车进行姿态调整。选择量程大,测量精度高,采集频率高,PCB的布局都会提高MPU6050的测量准度。
1.1.8 电路稳压设计
选择LM2596T-5V和AMS1117-3.3V,LM2596-5V满足平衡车低压侧传感器通讯模块的使用电压,输出电流波形平缓,不易因负极电流回流产生干扰,为AMS1117-3.3V提供了平滑的5V电流,AMS1117-3.3V负责给单片机、MPU6050、OLED供电,最高500mA的输出能力,足以满足三个部分的取电需要。附:PCB设计图。
两轮直立平衡车综合运用了两轮同轴、独立驱动、悬架结构和倒立摆模型等自平衡原理,通过STM32单片机对MUP6050传输的信息进行中断的触发及姿态调整。是一种处在微处理器控制下的智能平衡车。整车由地盘、转向装置、控制装置、动力装置组成。
3.1.1 卡尔曼滤波
卡尔曼率波可以解决传感器测量精度不够的问题,实现对平衡车俯仰角和横滚角的高精度测量。我们建立观测方程,依据加速度计等设备分析计算出的姿态角等数据,另外,在建立状态预测方程中采用陀螺仪所输出的角速度作为数据,与此同时,通过建立卡尔曼率波器进行陀螺仪和加速度两个传感器的数据融合,根据数据特征对平衡车的姿态角进行相应的估算。通过卡尔曼率波对陀螺仪模块反馈的数据进行处理,大大确保了数据的准确性,减小了数据的波动,消除了数据出现的尖峰和低谷。
3.1.2 PID算法
平衡车最基本的就是实现动态平衡,MPU6050设备内置陀螺仪与加速度计,基于单片机的数字系统将PID算法采录为平衡车最主要的算法,目前来看PID是技术最成熟、效果最好、使用范围最广泛的算法之一。在PID算法中,将返回值和给定值进行比例、微分、积分等运算。平衡车中的直立环节和转向环节以及速度环节等都是通过PID算综合调控。能够实现PID闭环控制将成为小车进行恒定平稳的功能运转的前提,一般情况下,都是在通过调试直立环节之后,对速度环节进行调试,最终对转向环节进行调控。
程序包括几个部分:OLED初始程序、单片机定时器编码器模式初始程序、单片机定时器输出PWM初始程序、蓝牙模块初始程序、MPU6050陀螺仪初始程序、电机驱动初始程序、单片机外部中断初始程序等各个硬件部分的初始化进程。
底层代码使用ST公司推出的CubeMX进行编写,使用流行的Hal库进行编写,代码可移植性比基础库强,可读性较高,极大地节约了底层代码的编写时间,构建底层代码结束后,参照网上CSDN等诸多资料,开始根据自己的编译环境进行控制部分的编程。
平衡车机械构造自上而下分为三部分,分别为平台、控制层、电机驱动层。最上部分用于承重和OLED屏的放置,有效观察平衡车各部分运转情况,控制层主要由STM32单片机和MPU6050等组成的核心主控电路。用于姿态数据的采集和处理运算,以及系统的协调控制。电机层是平衡车动力来源,由供电电路和电机控制电路组成,与控制层保持通讯,确保车体平衡。
本文提出了一种平衡车设计构造方案。以STM32单片机为控制核心,通过MPU6050对姿态数据的计算和以PID算法作为核心的系统软件控制算法构成了整体样机。通过实验检测,能够实现转向、直立等姿态。这种平衡车无论是硬件还是软件都是可靠并有效的。实现了两轮平衡车的动态平衡与运动控制。
附:PCB设计图