用户
 找回密码
 注册
发新帖
1#
跳转到指定楼层

双轮载人平衡车设计【第二届立创商城电子制作节作品】

[复制链接]

一、作品简介

1.作品外观

2.研究背景

研究目的及意义

生活是向着智能化,便捷化的方向发展。而在交通和环境问题日益突出的当今,作为适合多种场合使用的代步工具,平衡车顺应了时代的潮流,具有使用简单、节能环保、移动灵敏便捷等特点,尤其在空间狭窄、急转角度大的工作场合作业优势更凸显。如今全球变暖将给地球带来严重灾害,而气温变暖的罪魁祸首,便是工业废气、汽车尾气等大量的排放。当今世界的另一个危机就是能源危机,节能环保交通工具取代传统是必然趋势,为平衡车的发展提供了广阔的发展空间。同时,作为新式健身器材锻炼平衡性发展警用型设备,在原有基础上进行合理的优化和设计,更适用于道路交通防治工作的代步,从而获得了广泛关注。作为一个非线性的对称系统,具有强耦合、多变量、参数不确定等特性。其原理和传统的倒立摆系统类似,本身是一个自然重心不稳定的物体,需要电机的控制来维持姿态的平衡,通过姿态传感器、控制算法、微控制器数据拟合驱动电机转动及车体机械集装配置整体协调制衡,是集环境感知、姿态检测、动态规划与决策、行为控制与执行等多种功能于一体的非线性系统,其控制难度大,控制算法复杂,给自动控制理论体系提出了很大的挑战,具有较强的理论研究和实践价值。

3.作品亮点

双轮载人平衡车采用无污染的电能作为动力,具备体积小、运动灵活、停车方便、狭小地方作业能力强等特点,针对当今社会交通拥挤、汽车尾气污染等问题提出了新型的出行方式解决方案。便捷、智能、迷你实用、纯绿色的平衡车既可以有效的解决中短距离的交通问题,又能健身娱乐,得到了广大群众的拥护和喜好。同时,自平衡车作为高度灵敏的非线性不稳定体,具有强耦合、欠驱动等特征,是研究自控技术及理论的绝佳实验平台。

设计中充分分析了自平衡技术的工作及控制原理,运用了经典的牛顿力学建立载人平衡车的动力学与运动学模型,参考倒立摆的运动设计了自平衡控制算法。对系统的可控角度、最大爬坡角度、可控性、可观测性进行了分析,得到了载人平衡车设计的指导性结论。硬件系统设计包括车体、车轮、19花键免法兰轮胎、直流减速电机、铅酸电池以及STM32主控制电路、MPU6050姿态检测电路、AS5040增量式编码器电路和两个超大功率H全桥电机驱动。通过对编码器与姿态传感器的数据融合,获得了实时的、低噪声的车身倾角信息与电机转动速度信息,采用双闭环控制算法调整PWM占空比控制电机转动实现了车身的原地平衡直立、前行后退、转向等功能。

实测结果表明,本文所设计的载人平衡车能够很好的实现自平衡并且稳定的运行,其快恢复性,准确性和稳定性能良好。

需要详细资料学习的请看原贴:http://club.szlcsc.com/article/details_7509_1.html

二、系统架构图

设计要求

1、设计车体硬件,主要包括车体重心设计、电子元器件位置摆放,电气布线等,力求车体简洁美观;

2、电路设计,主要包括控制模块、稳压电源模块、双轮测速模块、电机驱动模块,保证电子元器件之间不会出现电磁信号干扰;

3、设计电机速度控制算法,实现稳定、可靠地车体平衡直立、前进后退以及转向三个功能;

要求:

(1)可实现载人原地平衡直立,前进后退;

(2)平坦道路上可安全、平稳行驶;

(3)设计双闭环控制算法;

(4)可爬坡8°以上;

(5)低速行驶状态下可安全通过路面减速带;

(6)大功率高亮LED前后车灯,方便晚上行驶;

(7)实时车速显示;

(8)最大载重80KG以上,续航20KM,最高时速10KM/H;

(9)倾角过大,转速过高或失控等,发出相对应提示;

载人平衡车建模和控制策略

载人平衡车工作原理

自平衡车是建立在基于动态平衡的自动控制系统上的一种高度灵敏、快恢复的非线性系统。而载人平衡车则是建立在自平衡的基础之上,与人体操作相融合的高度协调的“思维车”。相较于一般的自平衡小车而言,载人平衡车具备更高的抗干扰能力和更快速的自平衡恢复能力。车身内置高精度、高速的姿态传感器实时监测车体倾斜角度,并通过数字滤波算法与电机测速的编码器数据相融合,根据接收到的倾斜角与加速度信息,中央控制器随即的做出相应的判断指令并输出频率固定、动态可调幅度的PWM波以驱动电机转动去维持系统的平衡。通过采集把手带动转向电位器转过的模拟值,判断在当前行进速度下安全平稳转弯的角度大小,达到稳定、灵活的行进。

系统方案分析论证及选择

主控芯片选型

方案一: ARM V7-M架构作为目前的主流构架,被英国的ARM公司应用到Cortex-M3当中,和曾流行一时的 ARMV4T 架构相比,它拥有性能更强运算核心、更低的功耗和优良的性价比。STM32F103xx系列运行主频为72MHz,外设资源丰富,集成一整套完整固件库,和51单片机直接操作寄存器的方式有所区别,可直接调用标准库函数进行项目开发,操作简单,调试方便,通用、高级定时器包含的编码器接口模式在电机测速上拥有无与伦比的优势,是同价类产品中性能最高的产品。

方案二:选择宏晶科技的STC12C5A60S2增强型51单片机。STC12C5A60S2抗干扰能力强、消耗功率极低,和传统的51单片机运行速度相比较,它的运行加快了10倍,而且它们两者之间的指令代码具有无缝的兼容性。内部集成MAX810专用复位电路,一旦接上电源便可以实现自动复位。但内部的资源相对较少,运算速度不足以满足自平衡系统快速、复杂的数据运算和融合,内部存储空间小,性价比低。

考虑到系统的复杂度、自平衡车身内置的高精度姿态传感器数据融合和编码器数据处理的复杂计算任务,需要与传感器进行IIC通讯,通过ADC采集电池电压、转向电位器数据并输出多路灵活可控的PWM信号。结合以上所述方案,选择方案一,即用STM32F103C8T6作为本系统的主控芯片较为合适。

姿态检测传感器方案选择

方案一:MMA7260和ENC-03是美国飞思卡尔公司的姿态传感器,广泛应用于运动与控制系统中。MMA7260三轴加速度传感器与ENC-03陀螺仪数据融合后可检测倾角,跌落状态等诸多方面。运用角速度原理,将由物理位置偏移情况所产生的位移转换成电流输送到主控IC中,通过观察再对它所产生的位移进行一些调整,以便达到稳定的目的。在照相机、飞机模型等产品设计中得以广泛应用。

方案二: MPU-6050三轴陀螺仪三轴加速度计拥有良好的性能而被广泛应用于飞行器,机器人等运动控制类产品中。其将 6轴运动处理组件使用多种方案进行整合得出最优值,来解决陀螺仪与加速度计轴间差的问题。缩减了物理包装空间,便于安装在各种不同环境下的物理位置。通过IIC协议读取内部原始的数据并由四元数矩阵计算出欧拉角。经过卡尔曼滤、DMP、互补等波算法滤波后输出的角度精确稳定,足以满足高灵敏度的随动控制系统在姿态检测上的要求。在DMP方面,它还支持多种操作系统系统,为应用开发提供了架构化的API。

综合以上所叙述的:选择MPU6050模块作为自平衡系统的姿态检测部分,可以有效地解除物理上的轴间差问题,实现了载人平衡车工作的可靠性和系统工作的稳定性。

电机选择方案

方案一:步进电机的步进角与脉冲数属正比关系,调节速度范围相对较宽,在配合驱动器的情况下可以做到步进角度细分,提高其运行精确度,产生的误差也不会进行累积。但是步进电机步距角是固定化的,对于分辨率的灵活性是有所欠缺的,而且步进驱动时容易造成车体震荡,不利于小车的稳定。步进电机虽然可以使用细分驱动方式克服上述缺点,但是细分驱动电路结构复杂,且大功率的步进电机价格相对较高,性价比极低。

方案二:直流无刷电机继承了直流有刷电机机械特性好的优点,同时拥有较宽的调节速度范围,而且无刷电机的构造没有安装换向器和电刷,让无刷电机具有高度的可靠性和长期的使用寿命,运行时产生的噪音小。市面上一般的无刷电机输出扭矩小,全桥逆变器电路极其复杂,负载性能不强且价格偏高。

方案三:直流有刷减速电机。直流有刷减速电机具有扭矩大,机械特性硬,运行响应速度快,可调节速度范围宽,可控制性强的特点,双轮载人平衡车对灵敏性、快速性等性能的要求可以被满足,虽然电机的电刷会导致电机的使用寿命减短,电磁干扰的产生也无法避免。但是基于负载较轻的设计,换向器和电刷的损失功耗比较低。为了能够有效率地降低电磁干扰,多层机械结构被选择应用到车体中,使得电机驱动电路能够与其他电路进行分离开。综上,选择两个36V 350W带有减速齿轮的直流有刷电机驱动自平衡车较为合适。

系统组成

综合以上所叙述的,选择STM32F103C8T6单片机作为主控芯片,MPU-6050姿态传感器,直流有刷减速电机,大功率H全桥电机驱动器组成双轮载人平衡车硬件系统。辅以卡尔曼滤波算法对陀螺仪和加速度计数据进行融合,计算出车身倾角与角速度的最优估计值。并以最优姿态角和车身速度作为反馈量构成双闭环控制反馈回主控制系统中产生两路动态可调的PWM波驱动电机前后转动以维持车身的平衡与直立。

三、硬件部分的描述

平衡车硬件设计

STM32主控电路

双轮载人平衡车选择的是STM32F103C8T6作为中央控制器,其内部包含丰富的资源。自平衡车主控系统设计中采用核心板+转接板的方式工作,力求精简小巧,其板载资源如下:

1个复位按钮,可用于复位MCU系统以及转接板上的相关外设;

1个采用2x3 6Pin排针的启动模式选择配置接口,用于选择复位后MCU的启动模式;

1个4线SWD调试下载接口,极大的精简了下载调试需要占用的IO资源和PCB整体尺寸,SWD只需两个IO口即可在线仿真调试,清楚的观测到MCU内核寄存器运行状态及相关变量,给后期的程序设计与调试带来很大的便利;

1个3.3V电源指示灯,用于指示电源状态,在按下电源开关时,若是通路,指示灯亮起,反之灯会不亮,通过观察这颗LED指示灯的状态,可以清楚明了的判断核心板的上电情况是否正常,防止电源短接造成芯片烧毁等严重失误。

三组16Pin的排针将MCU的所有IO口(除了被晶振占用的2个IO口)资源按芯片管脚顺序引出,在核心板上标号分别为J1,J2,J3,非常方便后期硬件接线实验与调试,最小系统原理图。

电源电路

小车系统共使用了四路电源,其中还包括对模拟与数字、高压与低压以及高速信号部分的供电,这对PCBA的布局布线、信号完整性以及元器件的选用都提出了很大的挑战。在高压、高速开关功率MOS管这部分模拟电路VCC连接的是铅酸电池的正极VCC_36V(三个12V的电瓶串联相接),能够稳定输出36V电压,12安培的电流,给予电机强劲的运行动力。此外,在电路最前端放置一只耐压值45V的反向保护二极管防止电源短接对后面的电路造成短路烧毁的危险。过大的压差会使电源芯片负载过大而发热进而影响系统稳定性,遂通过200欧姆/5W的分压电阻对36V分压得到20V电压,经过220uF/50V的铝壳电解电容滤去低频纹波再经一个0.1uF的陶瓷电容滤去高频纹波后流入三端可调线性稳压器LM317中,同时在LM317输入与输出两端并联肖特基二极管增加电源系统稳定性,通过5.1K和0.51K的电阻对其进行分压后输出稳定的15V正向电压给半桥驱动器IR2104S供电。考虑到除了功率开关管部分功耗极大之外其余皆为耗电量较小的系统,MCU系统,外设,半桥驱动器等加起来功耗不大,但对电源稳定性要求较高,遂决定采用上述的线性稳压器LM317来作为除功率MOS管外的系统的总电源转换芯片,该芯片在1.2V~37V可调输出并且保证1%的容差和0.01%的线性调整率,能够稳定输出超过1.5安培的电流,足以满足系统的使用。相比开关电源所带来的大噪声,线性电源在小功耗场合下更为适用。

第二部分为5V正向电压输出,前端放置一个100Ω/2W的功率电阻分掉一部分电压以减小压差,再经过220uF/50V的铝壳电解电容滤波后流入LM7805三端线性稳压芯片,输出稳定的VCC正5V电源给高速光耦HCPL2631供电。高速光耦隔离的信号电路作为主控板与大功率电机驱动唯一的桥梁,不但没有削弱主控的PWM控制信号,并且在主控板与大功率电机驱动板之间做了良好的隔离,放置大电流回灌而烧毁主控,对光耦单独供电是必须的。

第三部分是由三端稳压芯片ASM1117_3.3V输出的3.3.V正向电源,它拥有最大0.2%线性调整率,0.4%的负载调整率,可输出最大800mA电流,性能非常优秀,是小功耗电系统极佳选型。

设计中使用的是总线式电源分配方案,为所有的器件供电的同时适当的铺设接地过孔(类似于电源层式分配方案),具有良好的阻抗特性和尽可能小的电源噪声。

电机驱动电路

平衡车使用的是350W 36V的有刷直流减速电机,额定工作电流10A左右,堵转电流20A以上。市面上少有大功率集成的直流有刷电机驱动器,价格昂贵。利用功率NMOS管的开关特性,配合IR2104S半桥驱动器组成H全桥电机驱动电路方案简单实用、廉价、性能满足使用需求。IR2104S芯片相比传统的高端低端栅极驱动器具备自动插入520纳秒死区时间、耐压值为600V、开启电压10~20V超宽、高侧输出与输入相位相同动态范围等优点。特别是内置死区时间,在电机驱动H桥控制中是不可或缺的。鉴于开关元件通性,导通时间与关断时间是不一样的,这样就会造成MOS管导通与关断过程中存在时间相叠合的死区,也称之为开关损耗,当上下管子同时导通,会在瞬间把管子烧毁。而IR2104S芯片内置520纳秒死区时间,相对于高速开关管来说既保护了场效应管不被烧毁也不会对管子的开关频率造成影响,是做H桥驱动器的极佳选择。设计中选用IR2104S半桥驱动器芯片搭配耐压值600V的超快速恢复二极管RS1M FR107以及10uF钽电容和10Ω电阻构成的泄放回路组成电荷泵来控制H桥MOS管的导通与断开。如图4.3.1所示,C11为自举电容,D6为超快速恢复二极管RS1M FR107,PWM在上桥臂调制。当Q1断开时,A点电位由于Q3续流回零,此时C11通过VCC_15V和D6进行充电。当输入信号P1导通,上桥臂的驱动电压由C11提供且C11电压不变,Vb随Vs的升高而浮动,即自举。每一个PWM周期,电路都会给C11充电来确保其电压状态基本保持不变。在Q1断开时,D6则为C11的充电提供正向电流通道,当Q1导通时则阻止电流反向流入控制电压VCC_15V。直流电机一端接正,另一端接负即可让电机转动起来;调换两端极性,电机即反向转动。

在平衡车这种高灵敏度自控系统中需要快速的切换高低电平的极性来驱动电机前后转动以达到平衡的状态,显然手动的把电机线反接过来是不现实的。通过实验可知,当频繁的切换开关状态时候,电机就不在是匀速转动,而是变化的了。相应的,扭矩也随之变化。而H桥驱动电路能够方便的实现电机的四象限运动,即正反转、正反转制动。H桥驱动电路原理如图4.3.2所示,组成H桥驱动电路的四只开关管工作在开关的状态,S1,S4与S2,S3为两组互补状态关系的开关。当S1、S4导通,S3,、S4关闭时,电机两端施以正向电压实现电机正转,反之,电机反转。实际控制中,常用75NF75功率MOS管代替以上四只开关管,辅以合适电容与电阻搭建的泄放回路以及高速肖特基二极管保护电路组成的大功率H桥电机驱动器,耐压值可达75V,可承受最大80A的瞬间放电、50A的稳定放电电流。各项性能参数可通过更换不同元器件获得,价格低廉,可二次开发和调试。

编码器电路

编码器可以测量位移或者速度信息,一般常用的有光电编码器,霍尔编码器,磁编码器等。载人平衡车系统中使用的是基于AS5040旋转磁编码器芯片的增量式编码器。AS5040旋转磁编码器拥有磁铁位置检测和断电监测的故障检测模式,旋转速率高达10000rpm,还可采用菊链连接模式,串行读取多个互联的AS5040器件[1]。广泛应用于非接触式旋转位置检测、机器人技术,汽车电子中的方向盘位置检测、油门位置检测、传动变速箱位置检测等领域,是高端光学编码器、电位器的良好替代者。

自平衡车系统中采用的电机底部转轴是露出的,因此可以将磁钢紧贴于电机转轴处。编码器使用的是正交编码模式,只需对电源进行简单的滤波处理,并用小于5KΩ的电阻下拉到地即可通过A_LSB_U、B_Dir_V引脚输出正交A/B相的矩形脉冲波,利用STM32编码器模式的输入捕获功能和软件四倍频法可直接测量矩形脉冲数并通过公式计算可得电机实时转动速度。



姿态传感电路

MPU-6050对3轴MEMS加速度计、3轴陀螺仪,和一个可扩展的数字运动处理器 DMP进行整合。市面上也有经过STM32芯片硬件卡尔曼滤波后通过串口直接输出倾角的MPU6O5O模块,此类硬件卡尔曼滤波的陀螺仪有专门负责运动姿态结算的MCU,辅以数字滤波技术,输出的角度稳定、精准,极大的减轻主控MCU的运算负担。但就平衡车系统而言采用这类集成的用串口输出数据的模块是不现实的,因为平衡车是一个高度灵敏,姿态实时变化的非线性系统,串口的速度有限,并不足以满足小车系统的响应速度。独立使用微控制器对MPU6050做姿态解算与滤波效果显著,但受限于MPU6050串口传输速率,不能使用集成硬件卡尔曼滤波算法的陀螺仪模块作为系统的姿态传感器[2]。再者,可以在主控板PCB放置两块MCU,一块专门负责陀螺仪姿态解算和滤波数据的融合并以IIC或者SPI通信方式将数据传输出来到中央微控制器,一块则负责控制系统及各个外设模块的控制,但这也极大的拉长了硬件和程序的开发周期。综上所诉,选择了一个以中央微处理器对陀螺仪、加速度计进行简易卡尔曼滤波与主控制算法相互补融合的这种做法,既有效的降低测量噪声、提高精度、又能抑制温漂。完全满足自平衡系统的使用。

USB转RS-232串口下载电路

南京沁恒公司的CH340G的稳定性能经过大量的实验和测试还是不错的。兼容USB2.0,外围电路非常简单,硬件全双工串口。如图4.6所示,下载时将FlyMcu软件设置为:DTR低电平复位,RTS高电平进BootLoader,便可实现程序的一键下载功能。除此之外,通过外加电平转换的元器件,对于 TTL转RS232、RS485、RS422等皆可以实现,不仅可以给核心板提供电流,还可以通过串口助手实时观察数据非常方便调试程序。但在实际使用中发现,通过该方式下载程序还是有些不稳定的,在由USB-B提供+5V电源时, DTR/RTS的信号会有些许不稳定,进而可能会引起MCU系统复位2~3次,其实这个现象是很正常的,针对上述问题,可以对其进行连续按复位按钮几次,或者直接拔插USB线一两次就可以解决了。

USB2.0可提供最大500mA的电流,但由于导线有内阻,实际供到核心板 的电压准确的说一般不会到达5V,所以在对一些例如电机、显示屏等较大功耗的负载的时候,USB供电往往不够,也将导致一些莫明的BUG出现。所以在对MCU供电的时候,特别的经过10uF的滤波电容滤波流经L1117-3.3V稳压芯片再使用一个0.1uF的陶瓷电容滤去高频纹波及噪声输出稳定、干净、低噪声的3.3V电压。

液晶显示电路

对于车之一类来说,显示屏是不可或缺的,更加确切的应该是电子里程表。上面显示着车速,里程,耗电耗油量,年月日等等与生活密切相关的信息。给驾驶人以直观明了的人机交互体验。平衡车系统也一样,显示电路是必备的,在显示测量姿态传感器机械安装中值、车体倾角,当前运行时速,电池电量,主板温度等信息上给驾驶人以直观的车体当前状态信息,极大地方便驾驶与维护方面的工作。设计中采用四线SPI串行通信接口的1.3寸OLED显示屏,屏幕集成SSH1106驱动芯片。相较于市面上广泛使用的0.96寸OLED屏来说,除了驱动芯片由SSH1306改为SSH1106其他的基本兼容,只不过1106选用的是132*64的RAM,而1306则为128*64的RAM,两者操作指令基本相同,1.3寸的屏是从0x02列开始显示的,在初始化的时候修改一下地址即可。具有黄蓝双色,128*64的高分辨率,低功耗等特点,给人以良好的人机交互体验。其接口定义如下:

GND→电源地;

3V3→电源正;

PC15→时钟线(SCL);

PC14→数据线(SDA);

PC13→MOSI;

PB4→MISO;

OLED接口电路如图所示。

脚踏开关和LED车灯控制电路

实验研究阶段曾经出现按下电源开关,车子立马往一个方向跑的情况,这在使用中是绝对不许的,毫无安全措施保障。于是设计中使用了四个防锈防水金属按钮自复位开关作为脚踏板的感应开关,四个开关为并联关系,分别于四个通用GPIO口相接并两两分布在两边脚踏板之间,当人们踩踏在平衡车上时即开关导通,可通过程序设置开关首次被按下必须检测到四个开关都被按下,才启动平衡程序,而在行进过程中,只要感应到左右任各一个开关还被按下即继续运行程序。MCU通过检测IO口高低电平即可判断开关是否处于导通状态,进而决定是否进入平衡行驶模式,看似微小的四个自复位开关却有效的提高了平衡车在行驶上的安全性能,最大限度保障驾驶人身安全。

车身前后左中右共安装了六颗高亮贴片式食人鱼蓝色LED,在行进过程中,直线行走会触发前后中间两颗LED高亮显示,前行则会相应的闪烁前面中间那颗LED,反之亦然。当操纵把进行向左转弯操作时,左车灯进入闪烁模式,提醒路人本车正进行左转弯动作。同理,右车灯亦然。相应的灯光提示,炫彩夺目,作为装饰的同时也起到了照明的作用,具有良好的人机交互功能。

硬件设计中抗干扰措施

电机驱动板中存在模拟(42V和15V)和数字(MCU系统)电路信号,电机自身运行过程中会产生感生电动势给电路系统带来强烈的电磁干扰,H桥电机驱动器中包含的大功率的NMOS管以开关的方式工作,这无疑会产生大量的高频谐波。这对PCB布线接地方式和整车的电气系统提出了严峻的挑战,这些信号电路不进行抗干扰措施就会影响编码器输送到MCU的速度信号和四路PWM、电平输出的功率NMOS管的开关信号,使得整个系统工作收到极大干扰,甚至不能工作,接地不佳情况下甚至会导致电流回灌到MCU系统烧毁主控电路。针对上述问题,设计中采取以下几个措施来提高硬件系统的抗干扰能力:

在主控制电路输出四路PWM脉宽调制信号到电机驱动板之间放置高速光耦做光电隔离,防止驱动板的大电流信号对主控板的小信号造成干扰。查阅相关资料和实践表明,高速光耦对控制信号几乎没有衰减,但却有效的隔离大信号与小信号之间的干扰,设计中选用的是HCPL2631光电隔离器件。HCMOS兼容,搞CMR,10MBd的速度足以满足H桥20KHz的开关频率的使用;

在旋转磁编码器A,B正交信号干路上放置滤波RC滤波器进行滤波处理;

从电磁兼容性EMC角度出发,在PCBA布局布线上采取一些提高系统抵抗干扰能力的措施:在对噪声有高要求的时钟电路中,走线尽可能短,元件摆放顺序按照电源通路来放置并做包地处理;在电源和地之间加去耦电容,均走直线或弧形走线;充分考虑大功率场效应管部分电路的散热问题必要情况下应该添加散热片或者风扇进行散热并与MOS管保持一定的距离,高频部分尽量布置在板子边缘处以减少信号线走线长度等措施是保证一块PCB成功的关键因素。

STM32F103主控制板、AS5040磁编码器、电机驱动板下载地址详见原帖。

四、材料清单(BOM列表)

主要元器件及购买地址详见原帖。

五、软件部分的描述

系统初始化

为了防止程序运行过程中跑飞而造成的人身安全的伤害,系统主控制循环程序中添加独立看门狗程序,在程序死锁或跑飞状态下可自动复位,确保行车安全。

卡尔曼滤波

卡尔曼滤波算法广泛地应用于智能机器人控制,航模传感器数据融合,卫星导航领域以及计算机图像处理当中。姿态传感器MPU-6050陀螺仪测量的角速度通过数学积分运算得到角度的信息,总是会存在微小的偏差和漂移变化所形成的累积误差,并且误差会随时间的增加逐步增大,到最后无法输出正确可控的角度信号。先对其偏差验证估计一个大概值,在用倾角减去刚才估计的八个大概值误差协方差的微分,后期验证再估计一个大概值,最后输出稳定的角度信息。经过多次试验,使用卡尔曼滤波算法融合得到的角度值非常稳定。

一介低通滤波

机械齿轮的减速电机是存在一定的控制死区的,我们没有必要把它控制在一个精度非常高的范围里面,这会让电机产生强烈的震动、更严重的会烧毁电机等不可逆转的损害。恰恰相反,我们可以利用减速电机这存在的死区,适当的减缓速度的变化,可以有效的降低速度控制对直立控制的干扰。在自平衡系统里,直立平衡才是最主要的,其他一切的控制相对平衡来说都算是一种干扰,干扰越大,稳定性越差[6]。所以我们对编码器所测得的电机转速信息乘以0.8后再赋值给编码器输出,对速度偏差乘以0.2后赋值给新的速度偏差变量。相关代码如下所示:

Encode *= 0.8; //对Encode进行低通滤波

Encode += Encode_Least*0.2; //对Encode偏差进行低通滤波

数字PID控制器

直立环PD控制

相对于平衡车而言,所有的功能都是建立在车身平衡的基础上的。平衡是主要,其他所有的附加功能相较于直立来说都是干扰[7]。首先定义程序入口参数Angle(角度), Gyro(角速度),Bias(偏差)为浮点型变量,比例值,微分值可以先行估计一个大概值,方便后期调试。定义使得系统平衡的平衡(Balance)变量为整形数据。其次估计车身的机械安装中值为0(姿态传感器安装在绝对零点位置的时候),用陀螺仪所测得的实时变化的角度减去机械安装中值并赋值给偏差变量;再对偏差乘以比例值并加上角速度乘以微分值赋值给平衡PWM波,最后返回的是整形的平衡PWM波值。程序设计如图所示。

以上为角度闭环控制也就是直立PD控制的关键部分程序,一般的控制系统而言,只需使用单纯的比例控制或者PI控制即可,但是相对于那些需要对干扰做出迅速响应的高度灵敏系统来说,还需要引入微分控制来消除抖动。

速度环PI控制

一般的速度控制皆采用PI控制器,平衡车系统中线性控制器也选择了这种类型。根据公式可得:偏差=测量值-目标值。我们使用左右两个编码器所测得的数据相加作为测量值,在这里我们需要的是一个可以表示速度变化的变量,所以不用纠结是否要对这个测量值做除以2的计算,因为这样的话会引入舍去误差。速度闭环控制的目的是为了使得系统在保持直立的同时速度为零,所以我们设定目标值速度为零可以得到以下公式:

定义速度控制PWM波,做编码器,右编码器数据类型为整形,再将速度、编码器偏差、编码器积分等参数定义为静态全局变量。将上试所计算的最新速度偏差赋值给Encoder_Least变量,并对编码器加权滤波,积分10毫秒得到位移,将积分得到的位移减去速度变化量Movement再赋值给Encoder_Integral,并限制Encoder_Integral的积分幅度,也就是对平衡车最大行进速度的限制,以防止驾驶过快导致的生命危险。速度乘以比例加上速度积分乘以积分赋值给速度控制的PWM,如果检测到电机关闭的话,就清除积分,防止多次积分所带来的误差,最后返回速度控制PWM。核心程序如下图所示.

转向环PD控制

单只是做到在速度为零时保持平衡直立,就让小车上路行驶的话,绝对会出现横冲直撞的现象的。所以转向部分是必不可少的,算法设计起初,可以说是毫无头绪。在行进过程中,遇到前方有转弯,突然把把手打向其中一边来达到转弯的目的,而把手是通过中心轴的方式与10K的单圈式电位器连接在一起的,也就是说利用单片机的ADC采集电位器转过的模拟值,再与上述的直立、速度闭环控制数据相融合后计算出能使小车在保持平衡的同时稳定的转向的差速算法。因为行驶环境有诸多变化,在较滑的地面可能会使轮胎发生打滑现象,且编码器精度有限,所以单纯的依靠左右编码器相加之差来做来做转向闭环控制的方式是不现实的。使用Z轴陀螺仪的数据的积分得到的应该转向的角度作为控制的偏差,并以Z轴陀螺仪的数据作为微分控制的输入进行比例微分闭环控制,目的是保持转向的角度为自行设定的值。也就是说将ADC采集到电位器转过的值传入Gyro_Turn中,用gyro减去电位器的值再加上一个参考值即可,当电位器没有被转动的时候,即相当于gyro-0=gyro,这样在没有转动把手的情况下,车子则保持直线行驶,在把手转动后,根据一个简单的判断指令后,即进行转向的闭环控制。使得程序具有更加良好的鲁棒性和适应性。核心代码如下:

编码器M法测速

编码器M法测速是一项非常实用的技术,它可以将编码器的测量精度切切实实的提高4倍。如图5.4所示设计中用到的是旋转正交编码器,输出的是正交的A,B两相矩形波,一般的测量方法就是测量单位时间内A相或者B相输出的脉冲次数来计算得到电机转轴当前的速度信息。常规运用中,普遍的做法是利用单片机的输入捕获功能测量任意一相的上升沿或者下降沿,也就是测量对应图5.4的1234数字中的任何一个,这样的话就只能计数三次,而M法测量则是利用软件四倍频的方法同时捕获A,B,相的上升沿与下降沿,在相同的时间里,可以捕获到12次数据,测量精度也随之大大提高。

OLED显示程序

设计中使用的是6线的SPI串行通信的OLED显示屏,它的分辨率为128*64,能显示汉字、图片、字符等多样化的信息。如下程序所示,首先在主函数里初始化OLED_Init()子程序,然后打开OLED的显示函数。可以看到,当前模式下OLED第一行显示的内容为当前小车所使用的是内置的DMP滤波算法,速度处于普通模式下。第二行则显示的是左编码器测量电机转轴的实时速度信息,第三行显示的是右编码器测量电机转轴的实时速度信息,非常的直观明了,有助于驾驶人实时动态的了解车子运行速度以控制在安全速度以内。第五行则是显示当前电池的电压值,让人们时刻知道电池电量以确保电池不会过放而造成不必要的经济损失。第六行显示的信息对于调试来说是非常使用的,它显示的是当前车身的倾角信息,给后期的测试带来极大的便利。

主板温度监测显示

主板的温度监测,是笔者在纵观多种电机驱动设计方案后所设计出来的一种基于自然环境下的PCBA的保护。一般的PCB单层电路板多数采用铝基板,多层板则是采用FR-4材料的,他们都有一个正常工作的情况下耐温度值,超过了一定的温度,板子会发生变形、扭曲等状态。而功率场效应管也是一般耐最高温度值多数为150°C或者175°C,那么正常工作的时候肯定是不会到达这么高的温度的,但是当平衡车遇到坑洼,障碍物的时候,电机会几近处于堵转的状态,此时MOS管的输出电流会急剧上升,随之而来的是巨大的发热量。出于安全考虑,在散热片表贴安装多个温度传感器来实时检测MOS管的发热状态以确保行车的安全。

高亮LED车灯闪烁设计

高亮的车灯显示,在行进过程中这是必须的。既可以作为照明使用,也可以指示当前车子运行状态。如下程序所示,当MCU判断车身向左转弯的时候,随即以1/200ms的频率不断地闪烁左车灯,当车子向右转往的时候,右车灯也同样以1/200ms的闪烁频率不停地闪烁以表示车子当前为向右转状态。在直线行驶情况下,中间的车灯一直高亮显示,起装饰和照明作用。

双轮载人平衡车控制程序下载地址详见原帖

六、作品演示

演示视频详见原帖。

七、总结

生活无处不智能,平衡车是当今智能时代的产物。人们赋予它另一个名称:思维车,确实,当人体大脑发送向前后倾斜的指令时候,我们的肢体便会做出相应的动作去完成这个指令操作;思维车亦是如此,当姿态传感器感应到人体重心发生变化时刻,内置中央处理即迅速的做出相应判断并输出控制指令去驱动执行机构完成相应的动作来维持系统的平衡。在这点看来,我们称之为摄位车,智能车也不为过。在当今人口爆炸,交通堵塞的社会,人们的出行方式必将发生质的变化。更加迷你型、便捷、炫酷实用、无污染的平衡车既可以健身娱乐,又能切实的解决中短距离的交通问题,也由此得到了广大群众的拥护和喜好。在理论研究方面,自平衡车作为高度灵敏、强耦合、非线性的不稳定物体,具备深远的研究价值和意义。是学习、研究和验证自动控制原理的绝佳选择。经过三个月的马拉松式学习与实践,双轮载人平衡车系统相对于传统的自动控制实验实现了以下基本功能和创新点:

(1) 可实现基本的原地平衡站立、前进后退;

(2) 平坦道路上可安全、平稳行驶;

(3) 低速行驶状态下可安全通过路面减速带;

(4) 最大爬坡20°;

(5) 最大负载150KG以上,续航20KM,最高时速10KM/H;

(6) 高亮前后车灯,方便晚上行驶;

(7) OLED实时倾角、编码器、主板温度信息显示;

(8) 超速自动报警;

(9) 倾角过大,转速过高或失控等,发出相对应声光提示;

(10) 自适应多种路面变化、重心变化,自动调整车体姿态,具有良好的鲁棒性和抗干扰能力。

自动控制系统的研究任重道远,双轮载人平衡车设计目前只是实现了其作为一辆思维车最基本的功能。基于无线控制、机器视觉的最佳路径规划等方面的研究还未能来得及学习和探索。未来朝着智慧化发展,平衡车也是如此,用“镜”看世界,透“芯”来学习。


评分

参与人数 1刀币 +10 收起 理由
疯爱 + 10 支持DIY精神!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回顶部