版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
两轮自平衡小车的PID控制系统设计摘要自平衡小车控制系统是机器人领域十分热门的研究问题,它可以把人工智能领域和自动控制系统结合在一起,这是一个很经典的学科交叉融合的应用。近年来,随着现在微电子学的快速发展,以及自平衡小车使用的电能十分的干净清洁,相比传统能源它没有什么大的污染十分符合国家对新能源的倡导。再加上自平衡小车相比传统的交通工具十分的小巧轻便,容易携带,不像传统汽车那样的笨重。所以他的前景逐渐被人们开始挖掘,如小米推出的电动平衡车,推出后没有多久就受到了年轻人的喜爱,这也加速了平衡车领域的发展,所以平衡车的前景是十分巨大的。本文用STM32F103作为自平衡小车的主控芯片,用PID算法结合卡尔曼滤波做自平衡小车的系统方案。小车主要由控制模块、OLED模块、电机驱动模块,姿态检测模块组成。然后通过PID算法和卡尔曼滤波对采集到的数据进行处理。在实验中当小车的位姿角度为-40°到+40°之间时小车能够进行自平衡调节控制,当小车角度超出这个范围时就会自动关闭电机让小车停止。小车经过实验发现小车具有良好的转向能力和能够很好的进行抗干扰。目录摘要 I1绪论 11.1引言 11.1.1研究背景 11.1.2研究意义 11.2两轮自平衡小车的国内外研究现状 21.2.1国外研究现状 21.2.2国内研究现状 41.2.3总结 41.3论文的组织结构 52硬件部分设计 62.1硬件系统的组成 62.2主要电路模块的说明介绍 62.2.1电机驱动模块 62.2.2STM32主控模块 92.2.3MPU—6050(姿态检测模块) 102.2.4电源开关管理芯片 123相关算法理论 133.1PID算法 133.1.1位置型PID算法 133.1.2增量式PID算法 143.2Kalman滤波简介 144软件设计部分 154.1两轮自平衡小车主程序设计 154.2介绍所使用的软件 174.3PID控制算法 174.3滤波算法 174.4卡尔曼滤波 184.5两轮自平衡车的实物展示与测试 194.6本章小结 215总结与展望 225.1总结 225.2展望 221绪论1.1引言机器人是目前比较热门的项目也是实现中国2025工业自动化的前提,而自平衡小车目前以及由较广泛的商业化案例且十分成功,所以我选择去研究它下面我将介绍我的研究背景和研究意义。1.1.1研究背景机器人技术是一门多学科交叉融合的多学科应用型的技术,在几千年前富有智慧的先民们就已经创造了许多的自动更具和一些简单记得自动机械。例如我国古代著名的一些名作有,春秋后期著名的木匠鲁班发明的木鸟,东汉时期我国著名的天文学家发明的计里鼓车,三国时期诸葛亮为运粮草发明的木牛马车等。但是现代机器人的真正发展要追溯与19世纪60年代美国Unimate公司发明的世界上第一台商用的工业机器人,因此国际上也称这一年为“机器人元年“。而到如今随着计算机技术,电子半导体相关技术、力学、机械学等的相关学科的发展,从而间接推动者机器人相关学科也在快速的发展,这也使得相关机器人技术日益成熟,对人们的生活和工业的发展都产生了巨大的意义,它让工厂的效率得到了极大的提高让人们从枯燥的重复运动中解放出来。移动型机器人是整个机器人大家族中的一员,也是目前应用比较广泛的一种,商业价值极高,例如小米平衡车、京东物流仓库的物流自动搬运车等。本文的研究的小车便是移动型机器人的一种。随着现在得到污染问题的日益严重,以及国家现在大力推动新能源汽车。自平衡小车将会是一种很好的解决人们短途出行的方案。自平衡小车是通过两个车轮来让车子保持直立的状态,同时每个车轮各自配有一个电机,从而可以通过控制两个电机的速度从而实现转弯,通过控制电机的正反转从而控制车子的前进和后退等,它能够适合各种条件状况不同的道路。1.1.2研究意义两轮自平衡小车是轮式机器人的一个分支,但是相比与普通的轮式机器人因为他是一个一个统合的系统,所以可以通过自己去检测外部信息从而让自己显得更加的智能化,简单化。所以他的系统又有着自己所独有的一些优点:自平衡小车的相关原理来自于传统的一阶倒立摆系统,即平衡小车是在一阶倒立摆的相关原理上发展起来的。他继承了一阶倒立摆的相关优点并且相比于倒立摆系统,他更加的灵活,移动的角度相对来说更大,并且在实际的商业发展之中,其商业价值目前来说远高于一阶倒立摆系统。基于显得集成芯片例如本文中的基于STM32单片机开发设计自平衡小车,他相比以前的来说它的体积、质量都远远低于前者,这也使得它可以轻便携带和通过比较狭窄的一些通道等。并且小车使用的是电能属于国家现在大力提倡的清洁能源,可以很好提高能源的使用率且不会产生任何有害气体 ,其次随着现在微电子学的高速发展,现在小车的各种传感器模块,芯片等都已经集成模块化,完全可以根据自己的需要进行相关功能的添加,且成本相对以前低很多。自平衡小车有着物理模型非线性,其系统不稳定等特点,它属于欠驱动的一种复杂的系统,它的复杂原因主要有一下几个点即:系统是时变的,他的各参数也是不稳定的,它各个传感器之间相互的耦合在一起。而这些问题在航空航天,军工领域,计算机控制的其他领域都有很好的学习参考和借鉴作用,有着很重大的研究价值和研究意义。1.2两轮自平衡小车的国内外研究现状1.2.1国外研究现状对于自平衡小车的相关项目的研究,国外的进度是领先于国内的。主要研究是一些欧美国家和日本,他们从倒立摆中吸取灵感,将倒立摆中的控制方法集成与自平衡小车中,在实际的研究中,研究人员为了能够更好的去控制小车的平衡,运用了很多的控制理论计算,比如智能控制算法,经典PID算法等进行研究。他们通过相关的研究在自平衡车及平衡相关领域取得了大量的创新性突破。1996年日本筑波大学最早研制出的的YamabicoKurara倒立摆结构的二轮机器人如图1-1所示,左右分别有一个独立的车轮分开进行控制,但是因为是设备和相关算法的都很少,策略也很少。所以它只能够在自己设定的轨道保持平衡的效果而不能有进行自由移动。图1-1YamabicoKurara机器人20世纪初,美国著名大发明家迪恩卡门发明了一款让世人震惊的自平衡轮椅小车segway,如图1-2,产品一经推出,得到了很多互联网大佬的争相投资,大佬们认为它能够去改变人们现有的出行方式。Segway有多个子系统综合而成,其中子系统有,中央处理系统、姿态检测系统,速度检测系统以及动力系统。这些系统的数据全部传入中央处理系统,然后通过相关的控制算法处理相关数据,然后将结果发送给车子的动力总成系统,从而控制车子的前进后退,转弯等操作。图1-2Segway平衡车2007年日本早稻田大学的度亮边教授制作可平衡车NXTway二轮平衡车如图1-3所示,这个车子由前车子的基础功能上有了音乐播放功能,且此车比起前面的车了来说,他的稳定性的小车的机械结构更加的合理。图1-3NXTway平衡车2013,日本本田公司发明了一款新型平衡车U3—X如右图1-4所示,该车采用了当时最新的传感器和控制原理,小车不仅具有车子前进后退的和转弯能力还可以播放音乐,此车可以相比与前面的车子它可以让人坐着且依旧可以保持很好的平衡度图1-4U3-X模型图1.2.2国内研究现状虽然我国在自平衡车的研究上,相对与欧美国家来说要晚一些但是,我国这几年的发展是的自平衡的商业化远远高于国外,据媒体统计2019美国进口我国的平衡车已经达到了百万的级别,现在平衡车商业发展基本可以说占了全球大部分份额。我国平衡车发展速度非常之快。2003年,中国科学院技术大学研制出了,有电机进行控制的载人二轮自平衡小车,如图1-5所示他的形状和Segway有一些类似,但相比于前者,他加入了各种传感器件,如陀螺仪,加速度计等来采集他的速度,角速度等相关的信号。在根据这些数据指制定相应的控制方法,从而运用PWM脉冲技术来调节电机的转速从而能够是车子在路面上达到平衡的效果。图1-5中国科学技术大学平衡车2012年刚刚成立的纳恩伯公司,推出了现在的小米平衡车一代其图片如右图1-6所示。他相比于Segway而言,没有了把手人只需要站在平衡车上,车子会自动检测人体的姿态宠儿调节车子的速度从而达到平衡,并且它还可以通过手机app来进行控制和查寻到车子的各个数据。这个与前面的平衡车相比有了很大的升级和改造,他也有两个电机分别来进行控制的,车内还有加速度计和陀螺仪等传感器来识别人的各种姿态,从而实现车子的加减速和转弯等一系列的操作。而且现在的最新版的平衡车已经有了防撞预警等一系列更加智能的操作,并且车子的续航等相较于以前也有了极大的提高,使得平衡车的真正解决了短距离绿色出行的难题。也是目前比较推崇的方案。图1-6小米第一代平衡车1.2.3总结上面两节对于国内外两轮自平衡车的发展分析,控制方法越来越多而我们学习了解后对其控制理论的学习也理解的更加深刻。而目前自平衡小车使用的最多控制算法的还是我现在学习和使用的PID经典控制算法。当然随着发展还有模糊控制,神经网络的一系列的新的控制方法。当时这些算法的主要思路都是先用相关的传感器收集小车的各个姿态位置,速度,温度等一系列的数据。这些传感器主要有,陀螺仪,加速度器,红外传感器,超声波传感器等一系列元器件来获得小车的各个数据,但是这些传感器都有一定的误差,我们需要去通过一定的滤波算法来减小它的误差值,使其系统的误差范围在我们的设计可控的误差区间内。目前我们的设计都是基于平面设计而言的如果在斜面等一系列曲面上,就需要重新去分析设计相关的方案。1.3论文的组织结构本文基于PID控制算法,是二轮小车能达到自平衡的效果,通过相关算法的提高小车的稳定性,一些是本文的组织结构。主要对小车的研究背景,国内外的发展进程进行相关的分析和介绍,并对本文的研究目标和研究内容进行一定的阐述。第1章绪论介绍了国内外研究背景和小车研究的意义及其未来的价值。第2章介绍小车的一些硬件结构,如OLED模块,MPU-6050模块、稳压模块等功能模块进行向相关的介绍和模块的使用方法。了解这些模块将会为我们对小车的整体架构有更好的把握,在后面编写相关的程序和控制算法是能够有更加深刻的理解。第3章介绍程序的设计过程并介绍相关的一些控制方法和一些滤波的算法,如PID控制算法、卡尔曼滤波算法等第4章介绍软件部分设计流程,并说明本文具体设计思路和核心代码的介绍。第5章对实验中所解决的问题和在实验中与到的问题进行相关的分析和总结,并对未来智能车的相关发展表示一些展望。
2硬件部分的介绍与分析2.1硬件系统的组成小车系统硬件模块由主控系统以下几个模块组成:STM32主控制器,6轴控制模块(MPU-6050)、OLED模块,电机驱动模块,稳压模块等五个模块组成。其中稳压模块负责给所有的模块进行供电,其余模块均设计为最小系统,并为控制器提供相关数据并保持系统的动态平衡。如下表2-1所示表2-1硬件IO对照表单片机接口硬件PA4蓝色Led灯PB8、PB9IIC接口PB3、PB4、PB5、PA15Oled接口PA9、PA10CH340接口PA5按键主要硬件模块接口在介绍模块时展示2.2主要电路模块的说明介绍本段将介绍小车使用的主要几个模块,并为他们提供一定的使用说明。2.2.1电机驱动模块LV8731模块是一个可以同时运行四个电机的驱动模块其电路图如图2-1所示,它可以很好的去控制工作的电流从而控制小车的速度,下面是该模块的一些使用说明。图2-1LV8731模块运行电流调节
拨码开关S4,S5,S6用来调节运行电流,拨码开关拨至ON表示1,反之表示0。当S4=0,S5=0,S6=1,设定工作电流为0.3A;当S4=0,S5=1,S6=0,设定工作电流为0.6A;当S4=0,S5=1,S6=1,设定工作电流为0.86A;当S4=1,S5=0,S6=0,设定工作电流为1.14A;当S4=1,S5=0,S6=1,设定工作电流为1.43A;当S4=1,S5=1,S6=0,设定工作电流为1.7A;当S4=1,S5=1,S6=1,设定工作电流为2.0A;拨码开关拨至ON表示1,反之表示0。保持电流调节拨码开关S1用来调节保持电流,当0.5秒内无步进脉冲输入时,自动降低流过电机电流,当步进脉冲再次到来,电机电流立即进入工作电流模式.S1=0保持电流为工作电流的50%S1=1保持电流为工作电流的20%拨码开关S1拨至1时为ON反之为OFF
拨码开关S2,和S3用来选择细分模式,共4种模式:细分选择S2=0,S3=0,1细分(整步);S2=1,S3=0,2细分;S2=0,S3=1,4细分;S2=1,S3=1,16细分;码开关拨至ON表示1,反之表示0信号输入端口CP+:步进脉冲信号+极CP-:步进脉冲信号-极EN+:使能信号+极EN-:使能信号-极DIR-:方向控制信号-极DIR-:方向控制信号-极注意:使能信号与另外两个信号不相同,即使没有信号输入,使能驱动器也可以进入工作模式;一旦有信号输入,驱动器将马上进入休眠模式。上位机控制器的控制信号可以设置为高电平有效也可以设计为低电平有效。如果高电平有效时,所有控制信号的负极连在一起全部接地,反之就把所有控制信号的正极全部连在一起作为信号公共端。现在以集电极开路为例子,其接口电路示意图如图2-2、2-3所示:图2-2输入接口电路共阳极接法图2-3输入接口电路共阴极接法1.有6个输入端接口,有共阳或共阴两种接法
2.输入的脉冲电平正常为5V,如果是12V的电平就要串联一个1KΩ电阻,若是24V电平则需要串联一个2.4KΩ的电阻
3.CP有脉冲时电机转动,如果0.5秒内CP没有脉冲,则进入电流保持状态,当CP脉冲再次传来时,电机电流立即进入工作电流模式
4.DIR方向控制信号为高电平,电机在步进脉冲触发下正转,为低电平或悬空则为反转
5.电源范围为:8-32V
6.通电前要仔细检测2.2.2STM32主控模块主控模块采用的主控芯片是STM32F103C8T6,其该模块的最小系统如下图2-4所示,这款单片机属于M3内核,其最高工作频率为72MHZ,它能够完成收集信号,处理信号和发送信号等多种功能。它的计算速度比较快、范围广和使用的时间很长。官方提供具体的使用说明和库函数,网上有丰富的内容解答。具体的硬件发面有如下需求他均能满足。1.STM32具有12位的数模转换器,其电压转换空间为0到3.6v,其转换的时间仅为1us,它的最高的频率可以达到1MHZ,完全满足我们对于要采集电源电压的要求。不需要我们重新再去设计AD转换电路节省很多时间。2.STM32的主频高达72MHZ远高于51单片机,使得它的运算速度十分的快,且因为他是ARM架构所以它的功耗会较低,且ST公司提高了强大DMA功能,使得AD转换以及串口通信的时间大大下降。3.STM32具有多个通道,对于串口的寄存器存取操作不需要经运算单元,使得操作起来相对简单,且串口通信时不需要考虑CPU的时序问题。4.STM32提供了七个定时器,多个中断系统。并且提供了多种通信方式,如SPI,IIC等,且就有4个PWM脉冲技术。图2-4STMF103最小系统2.2.3MPU—6050(姿态检测模块)小车的平衡非常以为与小车的位置姿态,如果不知道位姿,那么平衡也就无从说起,所以说小车的位姿检测传感器时小车保持平衡的重要因素,也是小车设计过程中最重要的一个模块,本文实验中检测位姿就是检测到小车的倾角和小车的加速度。要使小车保持平衡小车的倾角至关重要,这也表示我们必须要选取对于倾角相对来说比较敏感的传感器。位姿检测需要用到两个传感器分别是陀螺仪和加速度计我们先来看看他们的设计原理及区别。加速度计:主要测的时以平面为X,Y轴水平向上为Z轴,其中Y轴与小车保持平行,但是随着小车的运动,其X轴和Z轴在不断地发生变化,但是我们始终可以读取到三个轴的加速度,而且我们已知小车平行时的角加速度,所以我们把问题转化为一个求斜坡角度的一个物理模型,而这个模型就是我们高中做了无数次的小球求角度问题,那么我们可以直接用它做为陀螺仪测量它的角加速度呢,我设计了这个物理模型其图形如图2-5所示设向下的加速度恒为g,其斜坡处加速度为g1那么其角度就有公式就有。图2-5斜坡物理模型g1=g*sin(α)(2-1)a=arcsin(g1/g)(2-2)这样虽然可以求得小车的倾角,但是因为它的角度在高速不停的发生变化所以,它的姿势在不停的抖动所以它的加速度也在抖动,那么实时处理需要很大的计算量而且数据也不好处理,对于小车保持平衡会有很大的不利之处,所以我认为还是需要用的陀螺仪来准确读取小车的倾角。陀螺仪是时刻测量物体角速度的传感器,即把陀螺仪放在水平面上小车经过一段时间运动后小车便与水平面产生了一定的角度θ我们采集它在运动到一定位置过程中的三次角速度数据分别命名为ω1、ω2、ω3+取它们的对应时间分别为t1、t2、t3。纳那么我就可以算出他在运动中总的倾角θ。即θ=ω1*t1+ω2*t2+ω3*t3·(2-3)那么我们就可以通过这个公式得到车身的倾角,但是我们通过数学公式可以很好的看到这个公式在不停的经行积分的过程而我们每一次读取的数据都是有着一定的误差的。所以随着不停的积分那么每个数据中的误差也在不停的进行积分从而导致系统的误差会越来越大,最后的结果表现为数据会有严重的失真行为,即我们只能够去取它短期的数据。刚刚介绍了两种传感器的原理和他们在测量角度时都有着各自的误差,所以我们在实验中就需要去考虑制作相关的算法取得的平衡。MPU-6050:在文献中我们发现MPU-6050完美的平衡了相关的算法,它是一个6轴的传感器,其电路图和原理图如图2-6、2-7所示,集成了陀螺仪和加速度计且精度和速度的表现相对都表现得比较优秀。许多电子电子设备都有着它的身影,如我们现在做的平衡小车,四轮无人机等,它由一个三轴MEMS陀螺仪,一个三轴MEMS加速度计和一个数字融合处理引擎组成,其数据通过I2C接口进行传输操作简单。它的数据传输能力最高可以到达400Khz且工作电压为2.6~3.3v之间都可以正常运行。图2-6MPU-6050实物图(左)图2-7MPU-6050电路图(右)2.2.4电源开关管理芯片我们选取的稳电源开关管理片为LM2596T其电路内部结构图和电路图如图2-8、2-9所示,LM2596系列是由德州仪器(TI)生产的标准为电流3A的输出降压开关型集成稳压芯片,它自己带有固定频率振荡器(150KHZ)和基准稳压器(1.23v),并具有十分完善的电路保护、电流限制、过热自动关断电路等。利用该器件只需要在使用极少的外围器件就可以构成非常高效的稳压电路。该芯片提供了工作状态下的外部控制引脚。其主要特性如下:1、输出电压:3.3V、5V、12V及(ADJ)等,最大输出电压37V2、工作模式:支持低功耗运行和正常运行两种模式。可通过外部接口自行控制3、工作模式控制:TTL电平相容4、所需外部组件:仅四个(不可调);六个(可调)5、器件保护:过热自动关以及电流保护6、封装形式:5脚(TO-220(T);TO-263(S))图2-8LM2596T内部电路结构图图2-9LM2596T电路图3相关算法理论3.1PID算法PID算法是平衡小车保持平衡的核心算法整个小车的控制思路都是为他展开十分重要,PID中P是比例环节、I是积分环节、D是微分环节线性组合的总体。其控制流程原理图如图3-1所示.输入量通过PID控制器作用于被控对象,然后检测被控对象的输出值并把输出值与设定的目标值进行比较从而形成闭环负反馈系统。图3-1PID控制系统原理图在PID控制系统中e(t)是偏差值最后实际值与实际输出值y(t)的差值,其数学表达式为ut=Kpe公式中Kp是比例系数,T1是时间积分常数,TD是时间微分常数。由此可见PID控制是有三方面分别进行矫正的。比例部分就是通过检测偏差值,并进行相关的控制来减少偏差值,积分环节主要作用是去除静态误差,而微分部分就对超前校正即提前加入一个矫正信号,从而加快系统调节速度。上述公式所描述为连续型的函数,但是在实际使用中都是离散型的数据。下面我介绍两种离散型的PID控制方法。3.1.1位置型PID算法在这个方法中把时间常数用采样时刻序列来进行代替,把微分用求和来进行代替,把积分用向后差分来代替,在采样频率足够高时(即采样时间很短),即可得到离散化后的数学公式:uK=Kpek+T3.1.2增量式PID算法增量式PID是指数字控制器的输出只是控制量的增量Δu(k)。采用增量式算法时,计算机输出的控制量Δu(k)对应的是本次执行机构位置的增量,而不是对应执行机构的实际位置,因此要求执行机构必须具有对控制量增量的累积功能,才能完成对被控对象的控制操作。执行机构的累积功能可以采用硬件的方法实现;也可以采用软件来实现,如利用算式
u(k)=u(k-1)+Δu(k)程序化来完成。Δu(k)=KP[e(k)-e(k-1)]+k1e(k)+KD[e(k)-2e(k-1)+e(k-2)](3-3)两者的区别:(1)位置式PID控制的输出与整个过去的状态有关,用到了误差的累加值;而增量式PID的输出只与当前状态和前两次状态的误差有关,因此位置式PID控制的累积误差相对来说更大;(2)增量式PID控制输出的是控制量增量,没有积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,但位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。(3)由于增量式PID输出的是控制量增量,如果计算机出现故障,其误动作影响较小且执行机构本身有记忆功能恢复后可保持原位不变,不会严重影响系统的工作,但位置式的输出与对应对象的输出有着直接关系,因此对系统影响比较大。基于以上三点情况我们在使用PID算法的一般偏向于使用增量型PID算法。3.2Kalman滤波简介滤波的含义是传感器除了产生我所需要的信号外还有含有别的杂波信号但是这些杂波信号不是我所需要的所以我们需要去除那些杂波信号这个过程就叫做滤波。通常来说滤波指的是将不需要的信号通过一定的硬件或者软件算法进行过滤去除,留下或放大我自己所需要的目标信号。杂波信号也可以称作为称作噪声,它对于整个系统有着一定干扰作用使得系统偏离了自己的预期。滤波理论建立的基础是测量得到系统的可以观测的信号,然后种用某种方法对状态进行估计计算。这种滤波算法的应用十分广泛,在理论研究上卡尔曼滤波是建立在系统是线性的以及系统中的状态变量和噪声干扰都是呈高斯分布的45。但是在实际生活中要满足这两个条件非常的困难,这也因此限制了它在现实生活中的应用。为了解决它的这两现在,
研究人员提出了扩展卡尔曼滤波(EKF)这一思想方法。EKF的思想方法是这样的,假设卡尔曼滤波对系统当前的值估计的误差非常小和真实值比较接近。那么我们可以对非线性系统的当前的估计值处进行泰勒展开实现局部线性化。但是泰勒展开线性化本身就有一定的误差从而导致EKF存在一定误差。卡尔曼滤波在本质上利用不断递推运算,处理数据的原则是使误差的均方值为最小,根据前一组数据的估计值和观察数据的估计值来估计当前采集信息。卡尔曼滤波算法是优点非常突出:1)在使用卡尔曼滤波时,我们对观测数据个数的要求不高,有限的观测数据便可以进行相关递推运算。2)卡尔曼滤波算法中的时间域语言是非常直观的,在算法编写方面它的物理意义表述的十分清楚便于理解。3)卡尔曼滤波运算中的中间变量数目相对于其他滤波算法来说要少,这也便于计算机进行处理,加快了计算机处理的速度。4软件设计部分4.1两轮自平衡小车主程序设计两轮自平衡小车的主程序设计就是根据相关的模块,编写系统的总体程序框架。以主程序为主体各个子程序按照其功能依次被调用,其程序流程图如下图4-1所示,首先初始化各个模块声明,自定义声明,系统时钟的声明等,在所有的初始化完成之后,就可以通过编码采集小车的速度数据和角度的数据并对数据进行相关的滤波处理从而减小数据的误差或者错误。然后进行PID控制通过PWM来控制电机的转速从而调节小车的速度使小车达到保持平衡。在这个整个控制流程中我使用的主控芯片是STM32f103C8T6,位姿检测模块为MPU-6050,两者通过I2C进行通信传输数据,主控芯片从而获得小车的车身倾角和小车的加速度,而小车的实时车速则是通过编码器采集到的信息转化为小车的车速来进行功能实现的,左右电机分别都有一个编码器可以独立读取单个电机的速度从而实现小车的平衡。图4-1自平衡小车主控制程序流4.2介绍所使用的软件本次毕业设计中软件部分程序编写和编译用到的是keil5软件,下载所用的软件名为Fly。Keil软件平台是非常强大的微型控制器软件编译平台,从我们以前学的51单片机和现在STM32单片机都是在这上面进行的编程,它有着很强大的功能,它把程序编写、编译、调试、下载集成为一体。相比于其他软件操作起来更加简单,伸手广大师生及业界相关工作者的喜爱和欢迎。并且它还有一下几大特征。1.源代码编辑器功能很多十分的齐全且还有代码语法实时检测功能十分的方便和省心。2.该软件使用人数较多在遇到很多不懂的软件错误时,可以快速的找到相关的解决方法。3.该软件有官方提供的入门教程指导,相对其他软件来说上手更加的方便。4.该软件平台可以创建工程使得文件可以更好的阅读和维护我们已经写好的工程文件。4.3PID控制算法在这次实验中实验了速度环和控制环即PD算法和PI算法speed=Mean_Filter(velocity_left,velocity_right); Encoder*=0.7; Encoder+=speed*0.3; Encoder_Integral+=Encoder; if(Encoder_Integral>320000) Encoder_Integral=320000; if(Encoder_Integral<-320000) Encoder_Integral=-320000; Velocity=Encoder*Velocity_Kp/100+Encoder_Integral*Velocity_Ki/100;这个时PI控制器的核心算法,我先读取我们滤波完后的速度,然后对取的速度再进行一次低通滤波保证速度的准确性,然后进行在进行积分得到积分值,并给积分值设置一个幅值。我再根据使用位置式PI算法,其公式为u(t)=Kpe(k)+KiTe(k)dt(4-1)可得Velocity=Encoder*Velocity_Kp/100+Encoder_Integral*Velocity_Ki/100;其中KP和KI为比例系数而小车原来使用的是增量型的PID算法,他相对来说考虑的更加的周全它的偏差相对来说更小,但是我也在上面经过两次滤波也减小了其误差发生的概率。因为我用的是位置型算法,所以其滤波是我才采用了一阶滞后滤波的方法来进行调节。不会使得系统过于滞后。PD算法因为有些参数与结构有关就没有进行多加修改使用的是它的源代码。4.4滤波算法对速度的滤波我采用的是中位值平均滤波法,它的核心是兼顾了“中位值滤波法”+“算术平均滤波法”两种滤波法的优点,而缺点仅仅是计算量会大一点。相对于小车自带的平均值法来说准确性更好也显得更加平滑,核心代码如下所示。s32Sum_Speed=0;s16Filter_Speed;statics16Speed_Buff[FILTERING_TIMES]={0};//存储前面十个速度值for(i=1;i<FILTERING_TIMES;i++){Speed_Buff[i-1]=Speed_Buff[i];}Speed_Buff[FILTERING_TIMES-1]=moto1+moto2;for(i=0;i<FILTERING_TIMES;i++){Sum_Speed+=Speed_Buf[i];}Filter_Speed=(s16)(Sum_Speed/FILTERING_TIMES);4.5数据融合算法4.5.1卡尔曼滤波MPU-6050的噪声非常的大,所以我需要进行滤波处理才能去读取数据,我参考了小车的源代码发现,它使用的是DMP算法他的方法相对独特,我取网上查找了相关资料发现网上对于MPU-6050都是使用的Kalman滤波算法,于是我决定使用卡尔曼滤波算法,在经过一系列的调试后小车能够读取到传感器的数据但是相比于它的算法我的小车在直立运行的稳定性和小车从不平衡到平衡所需的时间更长。不过这种算法还是可以使用的,后面还要进行一定能的优化我会在后在接着进行相关的调试。Kalman代码如图16所示。voidKalman_Filter(floatAccel,floatGyro) {angle+=(Gyro-q_bias)*dt;//先验估计Pdot[0]=Q_angle-PP[0][1]-PP[1][0];//Pdot[1]=-PP[1][1];//PK-先验估计误差协方差的微分Pdot[2]=-PP[1][1];Pdot[3]=Q_gyro;PP[0][0]=PP[0][0]+Pdot[0]*dt;//PK-先验估计误差协方差的微分的积分PP[0][1]=PP[0][1]+Pdot[1]*dt;//先验估计误差协方差PP[1][0]=PP[1][0]+Pdot[2]*dt;PP[1][1]=PP[1][1]+Pdot[3]*dt;Angle_err=Accel-angle;//zk-先验估计 PCt_0=C_0*PP[0][0];PCt_1=C_0*PP[1][0];E=R_angle+C_0*PCt_0K_0=PCt_0/E;K_1=PCt_1/Et_0=PCt_0;t_1=C_0*PP[0][1];PP[0][0]=PP[0][0]-K_0*t_0; //后验估计误差协方差PP[0][1]=PP[0][1]-K_0*t_1;PP[1][0]=PP[1][0]-K_1*t_0;PP[1][1]=PP[1][1]-K_1*t_1; angle+=K_0*Angle_err; //后验估计q_bias+=K_1*Angle_err; angle=Gyro-q_bias; //输出值(后验估计)的微分等于角速度}4.5.2一阶互补滤波一阶互补滤波说的是如果我们在测量两个量时,一个量是高频杂波信号另一个量是低频杂波信号那么我们就可以设计一个高通滤波器和一个低通滤波器然后对这两个滤波器进行加权然后进行求和处理;Y=αx1+(1-α)x2(1)(4-1)MPU6050中的陀螺仪和加速度计刚好一个是含有低频杂波信号一个是含有高频杂波信号所以刚好可以使用一阶互补滤波算法来读取角速度和倾角。一阶互补滤波算法的代码为:angle=K1*angle_m+(1-K1)*(angle+gyro_m*0.005);其中K1为加权系数。这种算法相比于卡尔曼滤波来说小车的不稳定性更大,保持平衡相对来说更加的困难,但是也可以保持平衡。4.5.2DMP(数字运动处理器)MPU6050本身就一个数字运动处理器DMP,它可以直接输出小车的姿态解数据而不需要我们自己再去求取小车的姿态解,它的算法是用的四元法,误差相对更小、计算量也减小许多而且官方提供相应的库文件以及教程从而大大降低了开发的难度。我们只需要在进行调用即可。其核心代码如下所示longquat[4];dmp_read_fifo(gyro,accel,quat,&sensor_timestamp,&sensors,&more); if(sensors&INV_WXYZ_QUAT){q0=quat[0]/q30;q1=quat[1]/q30;q2=quat[2]/q30;q3=quat[3]/q30;Pitch=arcsin(2*q0*q2-2*q1*q3)*57.3; Roll=atan2(2*q2*q3+2*q0*q1,-2*q1*q1-2*q2*q2+1)*57.3;4.5两轮自平衡车的实物展示与测试图2-2为小车的侧面图,图2-3为小车保持自立的正面图。小车第一层有下车的主控芯片STM32,OLED液晶显示屏,MPU-6050芯片,第二层为小车的电机驱动电路,TTL转换电路的一系列电路设计模块和导热版进行导热。电池放在下车的最下面可以增加小的稳定增加地盘重量使得小车机械结构更加的稳定。图2-2小车侧面图图2-3小车保持直立时正面图我在烧录程序后将小车放在水平地面上观察小车状况发现小车存在些许抖动的情况,但是能够保持稳定,然后我轻轻推动小车后仍然能够保持平衡,实验结果基本能够达到开题时的要求,但是小车在运动时会有严重的发热现象,我尝试使用小车自带源代码进行测试小车发热也比较严重,我认为这是小车的硬件设计结构的问题暂时无法解决所以小车运行时间不能过长,大概一分钟左右小车导热板就感到烫手,且电路板温度较高。但对对小车平衡没有太大影响,我分析我同学小车应该该原因出现损坏。4.6本章小结本章首先介绍了主程序设计流程图并介绍相关的运行流程,其次介绍了作者在小车使用中的一些控制算法和多种滤波算法并贴出相关的源代码进行讲解和分析各种算法对小车稳定性的影响,最后我拍摄了小车的实物照片和小车保持直立状态的照片。验证了这些算法是可以在实际中是可靠的可以运行的。最后感谢我的父母对于我的支持。5总结与展望5.1总结解决我们最后一公里路程一直是人们
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于云计算的城市智慧停车诱导系统在2025年的应用前景分析
- 3 摩擦力 说课稿2025学年高中物理人教版必修1-人教版2004
- 2025-2026学年美丽的树教案
- 2025-2026学年民族歌曲的教案
- 2025-2026学年课堂实录与教学设计
- (听赏)小螺号(独唱)教学设计小学音乐接力版二年级下册-接力版
- 2025-2026学年餐柜设计教学
- 广东省东莞市寮步镇泉塘村九年级化学下册 8.4 常用的盐教学设计 (新版)粤教版
- 2025-2026学年美式台球教学设计海报app
- 2025-2026学年轮播图设计教学
- T/ZJSEE 0060-2025配电网电磁暂态数字仿真技术导则
- 海南省海口市2027届高三上学期摸底考试地理试卷(含答案)
- 2026年北京市公安局监所管理总队招聘勤务辅警380名考试备考题库及答案详解
- 可熔性聚四氟乙烯(PFA)制备及性能研究课件
- 2026年潍坊医学院辅导员招聘笔试试题(附答案)
- 2026年秋新教材人教PEP版小学英语六年级上册教学计划及进度表
- 2026年秋北师大版九年级上册数学《二次函数》公开课教案
- 2026年中考英语考前抢分速记手册(北京专版)
- 2026年江苏省普通高中学业水平合格性考试化学仿真模拟(一)
- 客车反恐知识培训内容课件
- 提高病案归档率的PDCA课件
评论
0/150
提交评论