基于STM32的平衡车系统设计_第1页
基于STM32的平衡车系统设计_第2页
基于STM32的平衡车系统设计_第3页
基于STM32的平衡车系统设计_第4页
基于STM32的平衡车系统设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(论文)-PAGEVI-摘要本文主要介绍了基于STM32芯片的平衡车系统的设计方案,任务目标为能够自主站立的两轮平衡车系统,并在站立的前提下实现直立运行,由于ARM嵌入式微处理器有低成本、高性能等优点。所以本系统采用STM32F103作为主控芯片,并在此基础上增加了各种功能模块来组成整个硬件系统,包括单片机最小系统,电源稳压模块,直流电动机驱动模块以及传感器模块,通过采集车体姿态和速度信息来控制车体的姿态,采用PID控制算法控制车体姿态。利用蓝牙模块将车辆整体数据上传到控制器端,然后在控制器界面及OLED屏上显示小车当前状态数据信息,再分别根据现有的调试工具条件下进行软件和硬件调试分析,对应的调试方法分别做了基本介绍。最后以调试测量得到的数据作为参考,对整个平衡车系统做了修改,基本上达到了设计的要求。关键词: 平衡车;STM32;智能控制系统AbstractThispapermainlyintroducesthedesignschemeofthebalancecarsystembasedonSTM32chip,whichisdesignedwiththetaskoftwowheelselfbalancecarbeingabletostandandrunstablyindependently.TheARMmicroprocessorplatformhastheadvantagesoflowcostandhighperformance.ThesystemusesSTM32F103asthemaincontrolchip,andonthisbasis,avarietyofinterfacecircuitboardmodulesareaddedtoconstitutethewholehardwaresystem,includingSCMminimumsystem,DCmotordrivemodule,powermanagementmoduleandspeedmeasurementmodule.Thevehicleattitudeiscontrolledbycollectingvehicleattitudeandspeedinformation,andthevehicleattitudeiscontrolledbyPIDcontrolalgorithm.ThewholevehicledataisuploadedtothecontrollerbyusingBluetoothmodule,andthenthecurrentstatusdatainformationofthecarisdisplayedonthecontrollerinterfaceandOLEDscreen.Then,accordingtothesoftwareandhardwaredebuggingundertheconditionofexistingdebuggingtools,thecorrespondingdebuggingmethodsareintroduced.Finally,accordingtothesituationofdebuggingandmeasurement,thewholebalancecarsystemismodified,whichbasicallymeetsthedesignrequirements.KeyWords: BalanceCar;STM32;IntelligentControlSystem;目录摘要 IIIAbstract IV1引言 71.1平衡车系统的研究背景及意义 71.2平衡车的发展历程和现状 81.2.1国外平衡车的发展历程和现状 81.2.2国内平衡车的发展历程和现状 91.3本课题的研究内容及目标 92平衡车系统的硬件选择 112.1系统的组成 112.2系统各模块的主要功能 122.2.1主控模块 122.2.2稳压模块 122.2.3电机驱动模块 132.2.4传感器模块 132.2.5蓝牙传输模块 143平衡车系统硬件电路设计 163.1整体电路组成 163.2单片机最小系统设计 163.3直流电机驱动模块 173.4稳压模块 183.5传感器模块 194平衡车系统软件设计 214.1软件模块功能与框架 224.2PWM模块 234.3惯性测量模块 244.4PID控制算法 255平衡车系统调试 285.1系统主体程序 285.1.1故障排除 325.2平衡车自平衡系统测试 335.3蓝牙通讯模块测试 345.4测试结果 356结论 36参考文献 37致谢 38(论文)-PAGE7-引言近年来随着科技的发展和人们日益增长的物质文化需求,新型的交通方式越来越能吸引人们的注意力,随着生活水平的提高、人口的增长和环保意识的普及,日常通勤中堵车等事故频发,车位一位难求,人们不再满足于体积较大停泊不便的传统车辆,一种新式的便捷的交通工具逐渐走入人们的视野,并在短距离通勤交通工具中逐渐占有一席之地,它小巧方便没有传统车辆较大的体积,操作简单只需身体保持直立就可轻松掌握,清洁无污染使用电能驱动告别传统发动机的噪声和尾气污染,停泊方便占地面积小告别车位的纠纷,外观新颖符合当代年轻人的审美,满足了新时代人们爱冒险追求刺激的心理需求,它就是移动性机器人双轮自平衡车。移动性机器人是机器人学中的一个重要分支,对于移动型机器人的研究一直未曾间断过,如轮式移动机器人、履带式移动机器人、支腿式移动机器人及水下工作式机器人等[1],可以回溯到20世纪60年代。近年来移动型机器人能够飞速发展的原因有两方面;一是其应用范围越来越广泛,如快递包裹、医院无菌工作室、日常代步等;二是相关领域的飞速发展,如计算、传感器、控制以及执行等技术。移动机器人还有不少技术上问题有待解决,因此当前对移动机器人的研究比较活跃[2]。本章将简要的介绍两轮平衡车的起源、平衡车的发展、平衡车的研究意义以及国内外在平衡车系统方面的研究现状并就此提出了本论文的研究内容。平衡车系统的研究背景及意义在随着科技发展,人们的长途出行越来越方便,可选择的交通工具种类越来越丰富,随着城市化的发展以及车辆的普及,城市中通勤的交通环境正在逐渐恶化,人们迫切的希望能够有一种交通工具来缓解这一局面。与此同时,随着传感器技术、嵌入式微处理器技术的发展以及控制技术的发展,集成芯片被广泛运用,传统电子器件体积较大的缺点被进一步改善,使得过去制约移动性机器人发展的枷锁被打破,移动型机器人的研究方向正逐步向生活应用领域发展。因此载人机器人的研究成果就成为一个人们日常所关注的方向,希望其能够所占空间较小,但依旧能满足人们的日常通勤需求,同时还应具备高灵活性,操作简便,便于携带等功能。由于平衡小车是一种前所未见的新颖的交通工具,因此人们很难使用传统分类方式来定义它的种类。所以有人认为平衡车小车应该是一种双轮版的\o"单轮车"单轮车(Unicycle),有人则认为它应该是一种\o"动力滑板车(页面不存在)"动力滑板车(Stand-upScooter),但它采用的是单轴双轮设计,所以与传统的双轮双轴滑板车有些许不同。而在某些正式的场合中,电动平衡小车这种新型交通工具又被称作“电动个人辅助机动装置”(ElectricPersonalAssistiveMobilityDevice,EPAMD),通俗称呼为\o"电动代步车"电动代步车[3]。近年来关于平衡车系统的控制研究,也引起了国内外诸多学者的广泛研究兴趣,时至今日也已经取得了丰硕的研究成果,然而前进的步伐并没有停止。平衡车系统作为,一种非线性、欠驱动、含有未知参数等不确定性的不稳定系统,对与控制来说,是具有一定的难度的[4]。平衡车的发展历程和现状国外平衡车的发展历程和现状电动平衡小车的起源,最早是出于迪恩·卡门的DEKA与美国的大型医疗器材生产商\o"强生"强生的子公司\o"独立科技(页面不存在)"独立科技(IndependenceTechnology)所合作开发的一种全新自动平衡式的动力\o"轮椅"轮椅——\o"IBOT(页面不存在)"iBOT。卡门通过观察人类走路的姿势特性,卡门尝试使用精密的\o"陀螺仪"陀螺仪来替代人类的\o"前庭"前庭与\o"耳蜗"耳蜗等掌管平衡的器官,以电动机与车轮来代替人类的双脚,发展出所谓“动态稳定”概念。区别于专门提供给老弱病残人士使用的动力轮椅,卡门改进为一款供行动正常的一般人使用的平衡车,于是开始有了电动平衡小车的诞生。1999年7月27日卡门创立了雅克罗责任有限公司(AcrosLLC.),主旨是开发生产一种高效、便捷、灵活、无污染的交通运输工具,并且开始开发新产品,计划代号叫作“姜”(Ginger)[5]。2001年12月3日正式公开了电动平衡车随意车(SegwayHT)的原型车,并且声称它是人类史上第一辆能够自主平衡(Self-Balancing)的运输工具,这辆车上装置了五个固态陀螺仪。车辆只需要三个陀螺仪就可以完全掌控车身前后倾与侧倾程度,其余两个陀螺仪是用来确保行车过程中安全的备用装置[6]。第一辆电动平衡车的预产车是在2002年1月推出,当时平衡车售价非常高昂,是普通家庭所遥不可及的。图1-1Segway平衡车国内平衡车的发展历程和现状我国在此方面的研究也取得了很大的成就,例如中国科学技术大学已经研究出了两轮自平衡代步电动车,它是一种两轮式左右并行布置结构的具有自平衡系统的电动车。在车体内嵌入式微处理器的控制下,收集平衡传感器模块发送的数据,通过特定的控制算法,计算出输出PWM信号来控制两个伺服电机,使车体保持平衡并能够实时检测人体重心的偏移,从而实现自动前进、后退及转转向。今年来国内一些大厂开始接触到平衡车系列产品,例如小米公司发布的一款新式平衡车“九号平衡车”,全车重量仅有12.8公斤,时速可达到每小时16公里,相当于普通人行走速度的4倍左右,还具有优异的稳定性和动态平衡性,可翻越15度的陡坡或小障碍,高性能的配置,两个直驱电动机总输出功率可达700瓦,同时还具备其他辅助系统,例如电动行车灯和LED尾灯,前置自动行车灯可照亮前方道路。方便了解路况,可根据外界环境调整亮度,照射距离最远可达5米,两个LED尾灯默认为蓝色,减速时红色刹车灯亮起,黄色转向灯则能在转弯时指示方向,使行驶更加安全,如此小巧的平衡车续航可大22公里,满足了人们日常通勤所需。本课题的研究内容及目标由于平衡小车系统设计制作时的综合性,以及目前市面上的双轮平衡小车价格高昂,因此设计了一个性能良好的小型样机。研究内容包括:第一,围绕智能平衡车系统的要求,从而制定了系统的硬件设计方案和软件设计方案。第二,硬件系统的完成与调试,对双轮平衡车系统车模进行了结构改善,使硬件结构更加平稳,完成了车辆重心位置的调整、定位参数的优化等。第三,控制系统的硬件设计与完成,从最小系统模块设计开始,完成速度传感器模块、驱动控制模块、蓝牙传输模块及串口模块等的设计。第四,控制系统软件的设计及实现,根据STM32单片机的性能属性设计平衡车系统的各软件模块的功能,根据所选用的硬件设备,选用合适的算法,完成平衡车系统车模信息的平衡算法和车体的控制算法。设计的最终目的是实现平衡车的自平衡,以及在平衡状态下进行平衡运动。小车本身是不稳定的,因此在运动中需要利用传感器实时收集车体当前姿态数据,反馈到单片机进行数据处理,通过控制电机驱动模块调整直流电机转速来实现小车平衡。控制采用PID控制实现小车的平衡,由于各个参数实时发生变化,因此在设计PID控制时各个系数难以确定,PID控制器的参数整定是整个调试的核心内容。需要不断的观察小车运行效果进行对比,再去调整各个参数。平衡车系统的硬件选择由于对平衡小车的需求,两轮平衡小车系统需要实现最基本的三项功能,分别是保持车体直立、车体运动、方向控制,并根据需求在此基础上添加辅助人机交互功能。系统的组成系统结构图由上面系统框架图可以看到,整个系统围绕STM32F103C8T6主芯片运行,电池经过降压稳压后提供稳定的5v和3.3v给STM32主芯片和各电子模块,STM32主芯片通过读取MPU-6050传感器芯片的数据,获取小车系统的运动状态,再通过TB6612FNG驱动芯片控制直流电机的转动,直流电机通过编码器将转速反馈给STM32主芯片,这就构成了两轮自平衡小车的基本硬件框架。同时系统具有调试辅助模块,蓝牙通讯模块使得平衡车系统的调试更加方便,系统的软件系统及硬件系统都采用的模块化设计,这样使用者可以根据实际需求,更加方便的进行增加和删除平衡车系统的功能。系统各模块的主要功能主控模块在平衡车系统中主控模块采用STM32F1-Micro核心板,板载STM32F103C8T6芯片作为MCU,该系统单片机是一款基于ARMCortex-M内核STM32系列的32位的微控制器,有64K的程序存储器容量,抗干扰能力强,可靠性高,可在-40℃~85℃的温度内正常工作,工作频率高达72MHz,从而保障了平衡车系统的实时性。主控模块实物图主控芯片相当于人的大脑,接收并处理各传感器(包括陀螺仪和加速度传感器的信号),完成计算和规划后,向各执行机构(比如电机)发出控制命令。稳压模块在本平衡车系统中,动力来源于18650动力锂电池,每节电池额定电压为3.7V(满电压4.1V),电池采用串联方式得到7.4V电压,但是,电路中常用电压为5V与3.3V,并不能将电池电压直接供给电路模块,所以需要对7.4V电压进行降压稳压处理,分别降为3.3V和5V,以供给整个平衡车系统使用。稳压模块实物图电机驱动模块众所周知,单片机的IO引脚输出的电流极小,最多几百毫安,可以点亮LED灯,却无法带动直流电机正常工作,无法达到设计要求,所以,不能用点偏激直接控制直流电机的转速及转向。为了能使用单片机控制直流电机工作,最常规的办法就是在单片机与直流电机之间加入一个电机驱动模块,由单片机通过控制电机驱动模块来驱动直流电机转动。TB6612FNG实物图传感器模块传感器模块;在平衡车系统中,此次使用了一款六轴传感器MPU-6050模块来获取车体运行时的运动姿态。MPU-6050模块实物图MPU-6050是InvenSense公司推出的全球首款整合性的六轴运动处理组建,相较于传统多组件方案,其免除了组装陀螺仪与加速器时的轴间差的问题,极大的减少了安装所使用的空间。MPU-6050内部整合了三轴陀螺仪与三轴加速度传感器,并且拥有一个IIC接口,可用于连接外部的磁力传感器,并利用其自带的数字运动处理器(DMP)硬件加速引擎,通过IIC接口,向应用端发送完整的九轴融合演算数据,有了DMP,可以使用芯片提供的运动处理资料库更加方便的实现姿态的解算,并降低了运动处理器运算对操作系统造成的负荷[7],同时还大大的降低了开发难度。蓝牙传输模块SPP-CA蓝牙模块是专为短距离智能无线数据传输而打造,遵循V2.1+EDR蓝牙规范。本蓝牙模块支持SPP蓝牙串口协议,支持UART接口,价格低廉、体积小巧、功耗能低、收发灵敏性高,具有只通过少量外围器件就能完成其指定功能的优点[8]。蓝牙传输模块实物图该模块主要广泛应用于各种短距离的互联网和数据无线传输应用领域。该模块可以方便的和PC机的蓝牙无线设备相连,也可以完成两个模块之间的数据传输互通,可有效避免繁琐的线缆连接,能直接用单口线替代传统的串口线。平衡车系统硬件电路设计根据预设要求,设计车模控制系统的电路时,首先需要分析系统的输入、输出信号,然后根据事先选定的嵌入式计算机(单片机)STM32F103C8T6,逐步设计各个电路子模块,最终形成完整的控制电路。整体电路组成整个系统围绕STM32主控芯片构成,主要包括单片机最小系统,直流电机驱动,电源稳压和蓝牙模块单片机最小系统设计平衡车系统所使用的单片机为STM32F103C8T6,是一款32位的高性能嵌入式微控制器,具有运算速度快(10.25MIPS,ARM32-bitCortex-M3CPU)、体积小(LQFP48,7*7mm)、功耗低(3.3V工作电压)等特点。具有丰富的外部设备模块,其主要外设包括8通道的PWM;10通道、12位的AD转换器;3通道16位的通用定时器(TIM2/TIM3/TIM4),以及1通道高级控制定时器(TIM1);最多可以给用户提供32路的IO接口,可与5V器件直接相连。丰富的外部接口内嵌支持LIN协议的增强型SCI、I2C、SPI模块;主控芯片相当于人的大脑,接收并进行处理各传感器(包括陀螺仪和加速度传感器的信号),完成计算和规划后,向各执行模块发送控制信号。其总线速度高达72MHz;包括64KBFLASH用于实现程序和数据存储,易于实现电机的控制[9]。单片机最小系统如下图所示:单片机最小系统图直流电机驱动模块由于平衡车具有两个车轮驱动电机,所以需要两组电机驱动桥电路,一般情况下需要由两片电机驱动专用芯片来组成平衡车的电机驱动模块,但是这样会增加电路的复杂性,增加设计的难度和额外的成本,所以采用了东芝半导体公司研制的TB6612FNG芯片作为电机驱动模块。图TB6612驱动模块TB6612FNG是东芝半导体公司生产的一款直流电机驱动芯片,可以同时驱动两个电机。因为两轮自平衡小车刚好也是只有两个电机,所以只要用一块TB6612FNG就可以达到设计的需求。TB6612FNG电机驱动芯片的驱动电压最大可支持15V;连续输出电流1.2A,峰值输出电流3.2A;工作模式支持正反转、刹车和停止。相比传统L298N的热耗性等因素,TB6612FNG能承受的负载电流更大,而且不需要外加多余散热片,能够极大的减小模块所占用的空间,外围电路十分简单,只需在芯片外部外接电源滤波电容就可以直接驱动电机运行,因此电机驱动模块可以设计得十分小巧。TB6612FNG内部框图 TB6612FNG电机驱动芯片内置双H桥可以驱动两个直流电机。其中,PWMA、AIN1、AIN2为一组控制引脚,PWMA为PWM速度控制引脚,AIN1、AIN2为方向控制引脚;PWMB、BIN1、BIN2为一组控制引脚,PWMB为PWM速度控制引脚,BIN1、BIN2为方向控制引脚。稳压模块稳压模块是系统硬件设计中的一个重要模块,为整个平衡车系统各个模块提供正常运行所需的额定电压。稳压模块采用LM2940-5.0、LM1117-3.3两款低压差线性稳压芯片(LDO),经过芯片稳压后的输出电压值分别为5V和3.3V。根据各部分正常工作的需要,电源稳压模块对电池提供的7.4V2000mAh蓄电池进行电压调节得到所需电压。电源模块电路图为了能够稳定的给小车提供稳定足够的电量,两者的最大输出电流分别为1000mA和800mA,强力的输出电流能满足小车的正常工作需要,并且还能够给后续的扩展预留了充足的电流余量,另外相较于传统DC/DC芯片,LM2940-5.0、LM1117-3.3两款LDO芯片工作效率高、输出电压波纹小。为了能实时监测输入电压的变化情况,在稳压降压模块中加入了一个电阻分压检测电路,是STM32的ADC引脚采集到分压电阻的电压值,然后进行转换运算,就可以得到电池的实时电量情况,并在算法中调整参数对应电压的变化。传感器模块传感器模块采用MPU6050六轴模块,它以数字形式输出6轴或9轴(需外接磁传感器)的旋转矩阵、四元数(quaternion)、欧拉角格式(EulerAngleforma)的融合演算数据(需DMP支持),具有131LSBs/°/sec敏感度与全格感测范围为±250、±500、±1000与±2000°/sec的3轴角速度感测器(陀螺仪),不需要再进行放大。集成可程序控制,范围为±2g、±4g、±8g和±16g的3轴加速度传感器,移除加速器与陀螺仪轴间敏感度,降低设定给予的影响与感测器的飘移,自带数字运动处理(DMP:DigitalMotionProcessing)引擎可减少MCU复杂的融合演算数据、感测器同步化、姿势感应等的负荷的同时,内建运作时间偏差与磁力感测器校正演算技术,更免除了客户须要另外进行校正的需求结构图如下图所示:图MPU6050六轴模块MPU-6050封装图其中,SCL和SDA连接MCU的IIC主接口,MCU通过这个IIC接口来控制传感器模块,另外还有一个IIC从接口:AUX_CL和AUX_DA,这个接口可用来连接外部从设备,比如磁传感器,这样就可以组成一个九轴传感器。VLOGIC是IO口电压,该引脚最低可以到1.8v,在本系统中直接接入VDD即可。AD0是从IIC接口(接MCU)的地址控制引脚,该引脚控制IIC地址的最低位。如果接GND,则MPU6050的IIC地址是:0X68,如果接VDD,则是0X69,此时这里的地址是不包含数据传输的最低位的(最低位用来表示读写)MPU6050模块上,AD0默认是接GND的,所以此时MPU-6050的IIC地址是0X68(不含最低位)。平衡车系统软件设计判断平衡车系统是否能够完成设计原定要求,需要通过软件编写代码来完成。平衡车系统的关键点在于能否在不借助外部因素下保持自平衡,程序中的首要任务,就是优先保障小车的直立平衡,其他功能任务都是在不干扰直立平衡的情况下进行添加。任务包括:(1)建立软件框架,指定各模块完成功能;(2)建立软件工程,编写各模块程序代码,建立软件编译、调试的环境;(3)测试各模块的功能能否达到预期效果;(3)完成小车闭环控制,整理各个参数;(4)进行小车整体性能测试并加以调试。本系统控制软件采用ARM公司的MDK-ARM集成开发环境KeiluVision5(本次使用版本V5.17)及BDM作为调试工具,可实现代码编辑,编译,链接和下载于一体。厂家提供的编程环境支持C语言和汇编语言的程序设计,以及C语言与汇编语言的混合编程,方便用户进行代码的编写和程序设计,提高了系统的开发效率。本平衡车系统代码使用C语言编写。软件模块功能与框架小车系统流程图程序设计由以下几个模块组成:单片机初始化模块,驱动模块,中断速度采集模块,速度控制模块。其中初始化模块又包括:I/O模块、PWM模块、计时器模块、滴答定时中断模块,初始化软件实现的主要功能包括有:(1)单片机初始化:电机测速脉冲计数器读取与清除,对两轮自平衡小车控制程序中需要的变量值进行初始化。(2)小车直立平衡检测子程序:内置陀螺仪通过倾斜角度判断车体是否处于可控范围内,如果处于可控范围,系统自检无误后立即启动车体直立控制系统。如果不处于可控范围,则停止电机输出,直到符合直立条件,一旦检测到车体倾斜角度超出可控角度,意味着小车失去控制,则停止电机输出,直至重新达到直立条件。(3)计算PWM输出控制电机。(4)其他辅助功能:程序运行时在主循环中无终止发送监控数据,通过串口与蓝牙模块进行全双工通信,将数据发送到手机或电脑进行监控。同时,在主循环中接受来自手机或手机的要控制指令。PWM模块PWM模块功能流程图TB6612FNG电机驱动芯片,内置双H桥,可以驱动两个直流电机。其中,PWMA、AIN1、AIN2为一组控制引脚,PWMA为PWM速度控制引脚,AIN1、AIN2为方向控制引脚;PWMB、BIN1、BIN2为一组控制引脚,PWMB为PWM速度控制引脚,BIN1、BIN2为方向控制引脚。PWM调制波为八通道输出,每个通道都可以单独的进行输出。驱动电机的PWM频率一般用10KHz(0.0001ms),而且TIM3定时器是挂在PAB1时钟上的,所以系统时钟TIMx_CNT=72MHz=72000000Hz,设置TIMx_PSC=72,那么TIMx_ARR=(TIMx_CNT/TIMx_PSC)*0.1ms=(72000000/72)*0.0001=100。惯性测量模块惯性测量模块流程图惯性测量元件包括多种传感器,比如倾角仪、加速度计、陀螺仪等传感器。每种惯性测量元件的性能都不尽相同。在加速度传感器部分,我们只要读取到加速度数据,通过反正切函数atan()就能求出我们想要的角度,再对此信号进行微分便可以获得角速度。但是在实际运用环境中,比如两轮自平衡小车,由于小车本身的摆动会产生极大的干扰信号,它叠加在前面所测加速度数据量上使得该数据无法准确实时的反映小车产生的倾角。在加速度传感器部分,通过反正切函数求出了角度,这里用Acc表示;在陀螺仪部分,得到了角速度,这里用Gyro表示。互补滤波的核心公式:Angle=0.98∗(Angle+Gyro∗dt)+0.02∗Acc其中,Angle为经过互补滤波后得到的角度Gyro为陀螺仪部分得到的角速度Acc为加速度传感器部分通过反正切函数atan()再转换单位后的角度dt为滤波器的运行周期0.98和0.02为加权系数α和(1−α)再使用C语言将互补滤波封装成函数使用。互补滤波器也存在缺陷:初始化时不能及时跟随实际角度。这种情况,跟融合角度变量没有正确初始化和互补滤波器的时间常数取值有关。时间常数约大,陀螺仪积分比重越大,跟随加速度传感器的速度约慢,这意味着初始化时融合角度可能是不精准的[10]。陀螺仪的零漂问题。陀螺仪在静止的时候,读出来的数值应该为0,但实际上往往不为0,这个值被称为零偏值。陀螺仪每次上电后的零偏值是随机的。互补滤波器并不能有效地过滤掉陀螺仪的零漂。PID控制算法车体控制算法是整个系统的核心,在控制系统中,控制器最常用的控制算法是PID控制。将偏差的比例(Proportion)、积分(Integral)和微分(Differential)通过线性组合构成控制量,用这一控制量对被控的对象进行控制,这样的控制器称PID控制器。为了进一步说明控制器的工作原理,列举了一个小例子,下图为一个小功率直流电机的调速框图。小功率直流电机调速系统图上图中,给定转速n0(t)与实际转速n(t)进行比较,其差值e(t)=n0(t)−n(t),经过PID控制器调整后输出电压控制信号u(t),u(t)经过功率放大后,驱动直流电动机改变其转速。抽象化的模拟PID控制系统原理框图,如下图所示。该系统由模拟PID控制器和被控对象组成。模拟PID控制系统原理图图中,r(t)是用户给定输入值,y(t)是系统的实际输出值,给定值与实际输出值构成控制偏差:e(t)=r(t)−y(t).e(t)作为PID控制的输入,作为PID控制器的输出和被控对象的输入。所以模拟PID控制器的控制规律为u(t)=Kp[e(t)+1Tie(t)dt+Tdde(t)其中Kp是PID控制器的比例系数,Ti是PID控制器的积分时间,也称为积分系数,Td为PID控制器的微分时间,也称为微分系数。在经过对传感器采集的信息处理后,利用传感器和编码器采集的信息来控制和驱动直流电机的输出量,控制采用PID控制算法。4.4.1PID闭环控制 闭环控制,就是通过反馈环节,测量被监控对象的变化,用以修正电机输出的控制技术,从而使电机的实际转速、位置等参数与我们所希望的一致。机器人控制是一个精度要求比较高的领域[11],例如,基于以下的一些考虑,机器人平台需要使用闭环控制。开环控制情况下,移动机器人在爬坡时,电机速度会下降。更糟糕的是,当双轴独立驱动的移动机器人以一定的角度接近斜坡时。每一个车轮转速的下降值将会不同,结果是机器人的实际运动轨迹是沿着一条曲线而不是直线行进[12]。不平坦的地面会造成移动机器人的两个车轮转速之间的差异。如果转速较低的车轮的驱动电机没有得到相应的电压补给,移动机器人将偏移既定的路线。由于安装工艺、负载不完全均衡等原因,即使是完全匹配的两个电机,并在相同的输入电压条件下,他们的速度有时仍会产生不同,即转速差。如果采用的是PWM控制,即使在PWM信号占空比不变的条件下,随着电池电压的逐渐下降,电机供给电压也会随之降低,从而导致电机的转速与给定值不完全一致。比例环节的作用是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。积分环节的主要作用是消除系统的稳态误差,其作用的强弱取决于积分时间常数界的大小。微分环节反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。平衡车系统调试平衡车系统测试包括检测平衡车系统主体测试、平衡车自平衡系统测试、蓝牙传输模块测试、系统主体程序工程文件展开工程分组如下图所示:工程文件分组图 如图所示,工程中共有6个分组,其中Fwlib分组中主要是HAL库的文件代码,CMSIS分组中主要是是CortexM3核心的文件代码,Startup分组中是STM32F10X的启动文件代码,BSP分组主要是各种外设设备硬件的驱动程序的代码,比如MPU6050,OLED等,SYS分组主要是滴答定时器和与调试相关的配置代码,USER分组是用户相关代码。 USER分组的main.c中包含了平衡车系统中所有硬件初始化和相关参数的初始化代码。初始化代码如下图:Main主程序图 Bsplnit主要是硬件底层驱动以及系统相关参数的初始化。硬件初始化图PIDInit主要是小车系统的PID参数初始化。PID参数初始化图CarUpstandInit主要是小车系统的各种参数初始化。小车系统全局变量初始化程序SysTick_Init是系统滴答定时器SysTick的初始化,在这里设置为1ms中断一次。while(1)主循环中主要是执行一些非实时任务(早些迟些执行都无所谓的任务),人为定义一个秒级任务,轮询执行这些任务。这些非实时任务有上报数据、调试数据、解析协议、刷新OLED数据、读取距离等。执行完初始化,代码会由于滴答定时器SysTick进入中断而转跳到SysTick定时中断服务函数中执行。在stm32f10x_it.c中可以找到SysTick_Handler定时中断服务函数。代码具体内容如下:滴答定时中断程序在5ms内执行GetMotorPulse、MPU6050_Pose、AngleCalculate、AngleControl、MotorManage、MotorOutput,而速度环是25ms运行一次。故障排除故障现象 产生原因解决方法不通电,核心板红灯不亮电池装反,或稳压模块装反,或长时间装反电池后烧断底板线路检测电池、稳压模块的安装。如果电池、稳压模块都没问题,则可能是底板线路问题,对底板进行检测,如无法修复进行底板更换核心板蓝灯不闪烁,芯片发烫主控芯片故障,或核心板故障更换芯片,或更换核心板核心板蓝灯闪烁,电机不动,驱动模块发烫驱动模块故障更换驱动模块平衡车自平衡系统测试用数据线将平衡车系统与上位机相连,打开虚拟示波器,然后选择对应的COM端口波特率选择115200.设置虚拟示波器设置好之后点击RUN按钮,就开始显示波形。 在工具栏中可以逐步放大X轴和Y轴,直至显示清晰波形。虚拟示波器的4个通道,分别对应代码里的数组OutData[4]的四个数据。在这里,刚才我们将加速度数据赋给OutData[0],所以加速度数据对应CH1通道,即红线。以此类推,黄线代表陀螺仪角速度,蓝线代表数据融合后的角度。因为暂时没有重新赋值给OutData[3],即通道4,所以它默认的数值为0,在上位机中只是一条直线。通过上面波形可以看到经过滤波后的角度值,能非常迅速地跟踪到加速度数据,又没有加速度数据那么多噪音,达到想要的效果,经过调试后达到实现平衡车自平衡的要求。蓝牙通讯模块测试蓝牙通讯模块主要功能是进行平衡车与用户APP之间的人机交互功能在此次测试中使用蓝牙模块与控制器相连,通过控制器来控制实现平衡小车的前进、转向功能,达到了模块设计的要求。测试结果在经过多次测试与调试后,平衡车系统没有出现其他重大问

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论