【基于stm32两轮避障蓝牙遥控平衡小车设计(附图)16000字(论文)】_第1页
【基于stm32两轮避障蓝牙遥控平衡小车设计(附图)16000字(论文)】_第2页
【基于stm32两轮避障蓝牙遥控平衡小车设计(附图)16000字(论文)】_第3页
【基于stm32两轮避障蓝牙遥控平衡小车设计(附图)16000字(论文)】_第4页
【基于stm32两轮避障蓝牙遥控平衡小车设计(附图)16000字(论文)】_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

基于stm32两轮避障蓝牙遥控平衡小车设计摘要社会现代化信息化水平的不断提高,也导致平衡车信息化的持续快速发展。本文以STM32C8T6微控制器为平衡小车的核心芯片,完成传感器信号处理,提出了平衡小车的设计方案。陀螺仪MPU6050的使用使平衡小车不仅需要实时的倾斜信号,而且还利用角速度给出控制量来测量车身的倾斜角,加速度和速度,并完成检测汽车的姿态。使用超声波测距模块HC-SR04可以检测平衡车与障碍物之间的距离,并将其用于避开障碍物。蓝牙模块用于连接和通信。汽车的平衡控制更为复杂。它可以分为三个控件:平衡,速度和方向。余额控制主要基于主体。此控件类似于倒立摆,用于研究其应力并构造其传递函数。MPU6050用于测量其旋转角作为反馈量,以形成一个闭环系统。PID算法用于控制电动机的速度并计算相应的PWM值。可以控制电机的平衡,速度和方向。这种设计的优点是响应速度快。本文主要研究自平衡小车的两轮控制系统。通过编程,将PID比例积分微分控制算法与两轮平衡车的方向控制回路结合,从而提高了平衡车的转向性能,实现了两轮自平衡车的动态平衡。PID控制算法在解决严重的非线性问题方面具有非常好的效果,大大减少了系统达到稳定状态的时间并减少了干扰。摆轮的方向控制更加顺畅。整个模块的设计使他们能够履行职责。汽车可以保持自己的平衡。即使向上,向下,向左,向右或受干扰,它也可以快速恢复其平衡。大量测试结果表明,智能自平衡小车控制系统可以准确避开障碍物,稳定运动和动态平衡,满足设计要求。关键词:平衡小车;PID;陀螺仪;姿态检测目录摘要Ⅰ13394_WPSOffice_Level1第一章绪论 126464_WPSOffice_Level21.1研究背景 11814_WPSOffice_Level21.2选题的目的和意义 131426_WPSOffice_Level21.3两轮自平衡小车的国内外研究现状 228420_WPSOffice_Level31.3.1两轮自平衡小车在国外的研究现状 23421_WPSOffice_Level31.3.2两轮自平衡小车在国内的研究现状 217956_WPSOffice_Level21.4主要研究内容 327611_WPSOffice_Level21.5本章小结 323441_WPSOffice_Level1第二章两轮自平衡小车的原理 423999_WPSOffice_Level22.1两轮两轮自平衡小车直立运动分析 421048_WPSOffice_Level22.2小车的平衡控制 428_WPSOffice_Level22.3PID控制设计 623540_WPSOffice_Level22.4姿态控制 730086_WPSOffice_Level32.3.1加速度传感器 78089_WPSOffice_Level32.3.2陀螺仪 729174_WPSOffice_Level32.3.3小车的速度控制 820342_WPSOffice_Level32.4本章小结 88233_WPSOffice_Level1第三章两轮自平衡小车的电路和程序设计 911634_WPSOffice_Level23.1小车的整体电路框图 912908_WPSOffice_Level23.2单片机最小系统 105275_WPSOffice_Level23.3小车单元电路的设计 1211137_WPSOffice_Level33.1.1陀螺仪和加速度计传感器电路 1223580_WPSOffice_Level33.3.2电机驱动电路 141345_WPSOffice_Level33.3.3电源模块电路 1429870_WPSOffice_Level33.3.4蓝牙模块电路 1527120_WPSOffice_Level33.3.5超声波模块电路 1512491_WPSOffice_Level23.4本章小结 172753_WPSOffice_Level1第四章两轮自平衡车的软件设计 185987_WPSOffice_Level24.1开发环境的介绍 1819487_WPSOffice_Level24.2程序设计的总体方案 183204_WPSOffice_Level24.3模块程序的设计 197451_WPSOffice_Level34.3.1pid控制器的设计 1927526_WPSOffice_Level34.3.2蓝牙模块的设计 2713476_WPSOffice_Level34.3.3避障模块的设计 2910176_WPSOffice_Level24.4本章小结 31991_WPSOffice_Level1第五章两轮避障蓝牙遥控平衡小车程序设计 321244_WPSOffice_Level24.1小车的制作 325024_WPSOffice_Level24.2小车传感器的安装 3229671_WPSOffice_Level24.3功能调试 3332204_WPSOffice_Level34.3.1小车调试的条件 3315700_WPSOffice_Level34.3.2蓝牙调试 33134_WPSOffice_Level34.3.3避障调试 339540_WPSOffice_Level34.3.4性能调试 334394_WPSOffice_Level24.4本章小结 354872_WPSOffice_Level1结论 3717255_WPSOffice_Level1参考文献 3811077_WPSOffice_Level2附录 39结论绪论研究背景在近现代的发展以来,信息技术不断的提高,人们迫切的需要人力在重复的机械运动中解放出来,科学家研究者开始从平衡机器人不断地进行探究和考察,到如今机器人不断地在各行各业的发展越来越受到重视,因为其能够承担的任务多面化,机械化,稳定性都是人力不可比拟的,但是在研究移动机器人的同时,会面临这许多研究者需要进行考察的地方,一些环境一些场景对于机器人的实施,还需要从实际出来,需求到机器人能够快速高效准确完成任务的同时,不断地深度学习,判断背景进行行走,完成任务。由于世界各地在这方面有很大小的需求量,尤其是在狭窄的地方需要做运输,或者做载人工具,研究者们则提出了两轮自平衡小车的概念,两轮自平衡小车本身只有连个轮子,如何保证他在直立方向的水平,保持不断地平衡是很值得研究的地方,也可以说他是一个动态平衡的过程,也可以说是一直保持不稳定的状态,小车不断地去判断自己的姿态,姿态检测之后去维护自己的平衡,他同时还是一个非线性,强耦合的装置,因为它其体积小、运动灵活、零转矩等特点,不仅仅是处于一个研究的状态,甚至每家每户都有使用到他的地方,工厂的运输载人也会用它,这让两轮平衡小车有很大的实用价值和研究的意义,对于研究也是极其有趣的地方,这也是为什么近年来两轮平衡小车一直受到强烈的关注的原因。两轮自平衡小车也是对交通工具的革新发起的一项挑战。它是具有占地面积小,体积小,人人都能够驾驶的载物,在现如今交通便利的同时,人们也是想要去寻求能够作为代步的工具,那么这个时候两轮自平衡小车就很能为人们提供便利。选题的目的和意义两车自平衡轮有两个同轴轮,独立驱动。车身重心位于车轮轴线上方,运动平衡,可垂直移动,由于其特殊的结构,对地面变化的适应能力强,移动性能好,可在更复杂的环境中工作。与传统的移动轮式机器人相比,两轮自平衡小车具有有以下优点:转弯半径很小,基本接近0。这样就非常适合在小空间范围内使用。比如:大型商场、羊肠小道、人才市场、车间等,重心必须非常低,并且在设计中总是绘制大型和小型汽车的水平横截面以减小高度。没有使用制动进行刹车,使用陀螺仪和加速度计得到两轮自平衡小车的姿态倾斜角,姿态检测之后将小车维持平衡,能够保证载物在自平衡小车不会因为收到制动刹车而导致载物在车上的不稳定,能够很稳定的进行各种操作,灵活性和可实用性都大大增加,减少油气资源的消耗,也算是新能源代步的一种。两轮自平衡小车的国内外研究现状1.3.1两轮自平衡小车在国外的研究现状日本电通大学的YamatoTakahashi教授,他在自己实验室的导轨上,创建了一个具有两轮的移动机器人,他是一种倒立摆的形式的两轮机器人,他首次在世界上提出了一种自平衡移动平台的基本概念,奠定了两轮自平衡小车的基本理念和发展,为后续平衡小车的发展提供了很好的榜样,他的基本思想是使用数字处理器去检测倒立摆在两边上的平衡,同时对获得的信号做出反应,将获得信号发送至微处理器,微处理器获得姿态的变化信号,在下达指令给到可控元器件,这样就能够使得倒立摆保持直立方向的平衡。近些年,研究者们参考倒立摆移动平衡平台的模型,使用基本原理和基本理念,开发出了平衡小车,也就是现在的自平衡移动机器人,日本教授的倒立摆机器人同两轮自平衡小车的不同点在于实现在直立方向两轮平衡的控制原理,两轮自平衡车的本质是倒立摆问题,获取平衡车的倾角对于平衡车制作至关重要,一般考虑到经济成本大多采用MPU6050结合滤波算法进行倾角的估计。目前,日本三洋电机公司已经开发出一种平衡设备flatru反向机器人,它具有易于使用的维护机器人头,该机器人头使用三个陀螺仪和一个3轴加速度传感器。1.3.2两轮自平衡小车在国内的研究现状自平衡PTZ技术在国外正在兴起,但近年来在我国得到了很好的发展。自平衡技术的应用使飞行控制更加简单、稳定。航空摄影技术的发展也离不开自平衡云台技术。目前,自平衡控制技术的核心算法主要有模糊PID算法、串级PID算法和自适应PID算法。两轮自平衡小车在国内目前的研究成果是由中国科技大学多位教授、博士、研究生共同研发而成的,目前的两轮自平衡小车也叫作移动自平衡平台即动态平衡平台和机器人的一类,它的概念和原理主要是基于倒立摆的基本原理去实现的,也就是通过两轮自平衡小车判断姿态检测进行一个不稳定的动态平衡的过程,使用小车的步进电机和陀螺仪、加速度计来矫正每时每刻小车的运动状态,给予车轮向前或者向后加速的指令保持其平衡,单片机对陀螺仪和加速度计传输的信号做处理,对点击驱动给与信号。近年来,两轮自平衡小车的研究不断日益壮大,因为其具有可研究性,车辆占地面积小,方便人们代步,有着很大的发展空间。主要研究内容本论文的毕业设计上对两轮自平衡小车的选型上,单片机的最小系统选用STM32f103c8t6,来作为本次设计的主要芯片处理器,也是违小车的主要核心。STM32处理器主要负责的是接受MPU6050里陀螺仪和加速度计产生数据的信号,然后在根据MPU6050的数据进行姿态检测算法的转换,在传输给驱动电机,使得小车保持直立平衡的状态,同时使用超声波避障模块,超声波避障模块接受前方的数据,将受到的数据传输给STM32处理器,处理器对此将数据信号传输给电机,电机做出相应的反应。蓝牙模块用于接受蓝牙串口信号,当使用手机给小车传输前进后退等信号,小车则会做出反应,并且在做出这些动作的同时,小车一样会保持平衡。对两轮自平衡小车进行调研和研究;设计两轮自平衡小车各个模块的功能,并且将其实现,设计各个模块的电路图;烧写平衡小车程序,并且制作平衡小车硬件,最后进行实物的展示。本章小结两轮平衡车是一种能够进行分析判断、控制行为的非线性强耦合的复杂系统。它是一种移动机器人,在运动控制领域,FIM研究控制算法,建立两轮平衡车来验证控制算法,也是非常有用的,如何使两轮平衡车也被广泛研究作为一个领域的主题从自动控制理论。两轮平衡车的分析与控制是本课题研究的重点和难点,系统研究的目的是完成所设计的两轮平衡车的前、后、转等功能,并测试其是否能爬升,由于两轮平衡车(twrv)的动力学模型是多变量的,具有系统参数多、时变性和不确定性等特点,因此研究twrv是一个非常困难的问题。运动学非完整性的限制要求其控制任务的多样性,即必须在平衡状态下完成指定的控制任务,如复杂道路环境下的连续监测,这给系统的设计带来了很大的挑战。可以说,双向平衡车是一个比较复杂的控制系统,对控制方法提出了很高的要求,对理论和控制方法提出了很大的挑战。它是一种典型的控制方法实现平台,受到了控制领域专家的广泛关注,成为控制领域具有挑战性的课题之一。两轮自平衡小车的原理2.1两轮自平衡小车直立运动分析如果我们想要让两轮自平衡小车保持直立平衡,我们就需要给定小车一个负反馈的环到平衡小车中,因为我们在让小车前进的同时,需要给一个负反馈,让两轮自平衡小车保持一个角度回到正的一个过程,如果我们给他正反馈,则小车跟会趋同反应往前冲,所以我们会给一个负反馈,在这种情况下,我们就需要对小车的直立运动进行控制。控制可以分为以下三个部分:(1)控制两轮自平衡小车的垂直平衡:两轮平衡小车的垂直平衡我们通常采用控制小车的两个步进电机来进行调整自平衡小车的姿态。(2)控制两轮自平衡小车的速度:从理论来看,只要对两轮平衡小车的倾斜角做调度就能够控制两轮小车的速度,但是从实际情况来看,点击马达是控制两轮小车的重要因素。(3)控制两轮自平衡小车的方向:马达也是要控制汽车的方向的主要因素。2.2小车的平衡控制小车的平衡控制来自于汽车的姿态检测。姿态控制是平衡车中需要控制的反馈。在平衡状态下提供负反馈,实现两轮车的速度控制和方向控制。通过汽车的车轮转动,产生保持汽车平衡的姿态控制,平衡车姿态控制的目的是实现和保持平衡车的动态力平衡状态,如图2-1所示。通过姿态计算得到准确的姿态倾角后,建立数学模型,计算公式如下:(2-1)实际上,陀螺仪的输出角速度可以直接用来代替差动环节:(2-2)在这个公式中,每个参数表示:

代表k时刻姿态倾斜角;代表k时刻姿态倾斜角的角速度;代表k时刻姿态控制输出的控制量;代表姿态控制的比例系数;代表姿态控制的微分系数;图2-1平衡车自平衡示意图两轮平衡车就像一个倒立摆系统,如图2-2所示。如果想要让平衡车趋于稳定,保持在直立方向上的平衡,那么我们一定要去给一个能顾抵消θ的力,那么这个力用来抵消倾斜角,但是我们还要考虑到摩擦力,即这个力会0与倾斜角成正比,并且方向相反。图2-2两轮平衡车的受力分析我们可以通过控制电机转速,使得小车整体加速,我们可以假设站在车上,这时候会受到额外的惯性力,惯性力是同小车的加速方向成反比的。其作用力为:(2-3)如果我们想要让这个倒立摆系统能够比较快的在直立方向平稳下来的话,我们就需要在这块力的分析上增加一个摩擦力,我们增加的摩擦力是同倾斜角的速度的大小成正比例相关,方向相反,这样就能够快速的稳定下来,我们可以得出以下公式:(2-4)综上所述我们就可以得到控制关于两轮小车电机的加速度可得控制车轮加速度的算法:(2-5)在上面的公式中我们可以看到,θ标识车模倾斜角度,θ’为角速度,k、k1均为比例系数,上面我们对倒立摆系统的分析就是对两轮平衡小车的直立环分析,我们这时候只要k1>g,k2>0,小车就能够保持在同一水平线上,然后快速的平稳下来。2.3PID控制设计但今天的自动控制技术是提供反馈的理念和概论。反馈理论的如今,是包括测量、比较和执行三个部分,测量系统中一定要存在能够控制的变量,与之能够同期望值进行相比较,并利用此误差修正和调整控制系统的响应和反响。我们在设计上会经常用到PID调节控制,PID控制器其输入e(t)与输出u(t)的关系为:(2-6)比例(P)、积分(I)、微分(D)控制算法各有作用。比例,反应系统的基本(当前)偏差e(t),系数大,可以加快调节,减小误差,但过大的比例使系统稳定性下降,甚至造成系统不稳定;积分,反应系统的累计偏差,使系统消除稳态误差,提高无差度,因为有误差,积分调节就进行,直至无误差;微分,反映系统偏差信号的变化率e(t)-e(t-1),具有预见性,能预见偏差变化的趋势,产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除,因此可以改善系统的动态性能。但是微分对噪声干扰有放大作用,加强微分对系统抗干扰不利。

积分和微分都不能单独起作用,必须与比例控制配合。由小车静止时候其运动方程可以得到系统输入输出传递函数:(2-7)此时系统具有两个极点:,注意平衡控制的微分项最好是陀螺仪输出的原始数据,而不是经过量程转换或者滤波后的数据,这样在角速度很小的时候才能更好地进行超调抑制,因此减去零点漂移就很重要。通过小车受力分析可以知道两轮自平衡小车能够保持平衡的条件是电机加速度行驶和摩擦力。因此需要在控制系统中加入比例微分环节,如图2-4所示。图2-4加入比例微分环节后的控制系统结构图加入比例微分反馈后的系统传递函数为:(2-8)此时,系统的两个极点应该为,根据Nyquist的稳定性判据,稳定性要求两个极点都位于s方案的左半部分,为了满足这一点,我们需要K1>G,K2>0,可以得出当K1>G,K2>0时,汽车能够保持平衡的结论,这也与上述分析的结果相一致。2.4姿态控制在平衡小车的姿态平衡中,实现小车姿态控制在硬件上选择惯性传感器,在算法上能够选择姿态解算算法,互补滤波或者扩展卡尔曼滤波,使用mpu输出的硬件解算结果作为姿态控制,还有够使用姿态控制算法双环PID,也就是角度环和角速度环,角度环外环我们只要P。我们可以通过mpu6050产生16个原始位(16位ADC),然后通过算法得到四元数,然后把它转换成欧拉角,我们可以根据欧拉角的变化来进一步平衡小车。2.3.1加速度传感器由于从陀螺仪角速度获得角度信息,需要经过积分运算。如果角速度信号存在微小的偏差和漂移,经过积分运算之后,变化形成积累误差。这个误差会随着时间延长逐步增加,最终导致电路饱和,无法形成正确的角度信号,通过加速度传感器获得的角度信息对陀螺仪进行校正。通过对比积分所得到的角度与重力加速度所得到的角度,使用它们之间的偏差改变陀螺仪的输出,从而积分的角度逐步跟踪到加速度传感器所得到的角度。在进行姿态融合滤波时,要注意数据极性(或者说矢量方向),通常我们都是将加速度计2个轴取反正切值计算出的角度和陀螺仪积分计算出的角度进行滤波融合。这时候就必须保证由加速度计计算出的角度和陀螺仪计算出的角度极性必须相同。通常我们都是以加速度计算出的角度极性为准,确保陀螺仪计算的角度极性与其相同。加速度计内部有一个三轴参考系,加速度计可以测量这三个轴上的重力分量,得到加速度计与地面的夹角关系。而且由于加速度计的测量原理,短时间内角度变化的测量误差较大,适合长期测量,但不适合短期测量。2.3.2陀螺仪陀螺仪内部结构中存在一个陀螺仪,由于陀螺仪的作用,陀螺仪的轴线总是与初始方向平行。根据初始方向,可以得到角速度和旋转方向,因此可以通过积分得到角度。如果极性没有对应的话,比如加速度计算的角度是正的,而陀螺仪计算的角度是负的,那么在滤波的时候,我们短时间内是相信陀螺仪的,这样角度就会比实际值小,随着时间的增加,我们又更相信加速度计,因此加速度计算的角度会不断地进行修正,因此静止几秒后,滤波后的角度才会慢慢接近实际值。其实归根结底就是要根据MPU6050的坐标系来处理数据。2.3.3小车的速度控制在汽车能够保持平衡的前提下,由于安装误差,传感器测得的角度与汽车不同,平衡小车在平衡的前提下,应该想办法让他直立行走,也就是下面要讲的在直立控制下给予小车速度达到速度控制,速度控制应该控制的是倾斜角从而触发直立控制达到移动的目的,小车运动的速度和倾斜角成正比,向前运动时车身往前倾斜,角度越大速度越大。小车的速度测量:图2-5电机速度检测车轮转速由安装在电机输出轴上的光电编码器测量。如图2-5所示。计数器测量脉冲信号数量,信号数量也反映了转子的速度,这样就能够对小车的速度进行控制。=2.4本章小结控制汽车平衡的直观体验来自人们的日常生活体验。本章介绍了控制车模直立控制算法,通过测量车模的倾角和倾角速度控制车模车轮的加速度来消除车模的倾角。因此,车模倾角以及倾角速度的测量成为控制车模直立的关键。测量车模倾角和倾角速度可以通过安装在车模上的加速度传感器和陀螺仪实现,用来实现汽车的垂直平衡。两轮自平衡小车的电路和程序设计3.1小车的整体电路框图两轮避障蓝牙遥控平衡小车的整体电路框图如图3-1所示。图3-1两轮避障蓝牙遥控平衡小车的整体电路框图两轮避障蓝牙遥控平衡小车的整体电路框图划分为以下几个模块:STM32C8T6单片机的最小系统:包括DSC处理器,程序下载调试接口等;蓝牙模块:接收手机蓝牙控制信号;蓝牙模块作为无线串口,手机蓝牙作为蓝牙主机。一系列ASCII码数据通过手机上位机软件发送到蓝牙模块,然后蓝牙模块通过串口发送到单片机。单片机接收到数据后,对数据进行处理,得到方向信息,控制汽车的加速、减速或转向。陀螺仪和加速度计:mpu6050内置三轴MEMS陀螺仪和三轴MEMS加速度计;超声波避障:检测前方时候有障碍物,有障碍物的话会停下;电机驱动:驱动两个电机运行功率电路;电源:电源电压转换,稳压,滤波电路;设置于调试:显示系统运行状态、速度设定、程序下载和监控。3.2单片机最小系统本次设计采用Stm32f103c8t6单片机最小系统。它是一种集成电路。程序存储器容量为64KB,所需电压为2V~3.6V,如图3-2所示。图3-2STM32F103C8T6系统的引脚图单片机最小系统一般由晶体振荡器电路、电源电路、复位电路和调试电路组成。电源电路由两部分组成。一种是电源电路,采用通用USB接口电路,输出5V电源。如图3-3所示。图3-3电源电路的原理图二是降压电路,USB的5V输入,然后输出为3.3V,使用了两种不同的电容。如图3-4所示。图3-4降压电路的原理图大电容与小电容并联的作用:小电容与大容量电解电容并联时,其作用是绕过频率较高的波动电压。由于铝电解电容器的制造工艺使其具有较大的等效电感,不能滤除高频分量,因此需要增加一个小电容。采用晶体振荡器电路为芯片提供时钟信号。示意图如图3-5所示。晶体振荡器的底部应尽量不通过其他分支,以防止信号串扰。图3-5晶振电路的原理图STM32处理器一共有三种复位形式,分别是系统复位、上电复位和备份区域复位,复位电路的原理图如图3-6所示。图3-6复位电路原理图去耦电容电路主要用于滤除杂波,保持管脚电压稳定。这些电容器也尽可能靠近芯片的相关引脚。它可以分布在芯片周围,如图3-7所示。图3-7去耦电容的原理图STM32f103c8t6是一款基于armCortex-M3内核的32位微控制器。采用lqfp48封装,St公司引进,属于STM32系列。程序存储容量64KB,RAM容量20KB,2个12位ADC共12路,37个通用I/O端口,4个16位定时器,2*IIC,2*SPI,3*USART,1*can,工作电压2V~3.6V,工作温度-40℃℃°约85岁°C。系统时钟最高可达72mhz,因此本次设计采用该芯片来设计该车。3.3小车单元电路的设计3.1.1陀螺仪和加速度计传感器电路本两轮平衡小车的设计中,陀螺仪和加速度计电路的主芯片采用的是mpu6050,MPU6050是一个性价比相对来说很好,而且很多很好的实现小车平衡的一个组件,它不仅仅只是一个陀螺仪,他还包含着一个加速度计,用于小车的负反馈机制,MPU6050的I2C还具有着9轴的运动输出,MPU的引脚图如图2-3所示。图2-3mpu6050引脚图所以综上所述,在我们实际上应用两轮自平衡小车的时候,在使用MPU6050我们只是需要去做倾斜角的角度解算,那么我们在接MPU6050的引脚的时候我们只需要使用I2C进行通信就可以了,并且MPU6050里面还内置了一个温度传感器,用于小车组件对温度的感受和变化,同时还存在一个内嵌的振荡器。Vcc接电源正极5V,不过一般模块上都带有3.3V稳压芯片,即接3.3V也可以。GND接地,SCL,SDA为I2c,其他的基本上不用接了。XCL,XDA是辅助I2c,用来接其他的器件的。AD0用来确定mpu6050的物理地址。Mpu6050包含着一个陀螺仪,陀螺仪传感器它始终能够同水平方向保持一致,所以我们在启动程序的时候一定要将陀螺仪初始化,这样的话就能够让陀螺仪去判断初始化之后的水平方向和后面进行方向调整的角度差,通过角度差陀螺仪就能够判断当时的姿态进行姿态检测,才能够给stm32处理器信号,告知处理器当时的角度变化,通过mpu6050产生16个原始位(16位ADC),然后通过算法得到四元数,四元数再通过算法变成欧拉角在给处理器处理数据发出当时的倾斜角角度的信号,使得电机转子转动保持两轮小车的平衡状态。Mpu6050包含一个加速度计传感器,加速度传感器是一种能够测量加速度的传感器。它采用的是压电效应的原理。传感器在加速过程中,通过对质量块所受惯性力的测量,利用牛顿第二定律获取加速度值。Mpu6050之所以能够将倾斜角的角度转换成四元数等算法数据,是因为MPU6050中包含了一个数据处理模块,该数据处理模块就是DMP,DMP它的功能本身就是包含着卡尔曼滤波的算法,使得它能够在获得陀螺仪传感器和加速度计传感器的数据的同时,进行算法的转换,然后通过融合两顿输出的数据,处理之后通过算法转换输出四元数,MPU6050的系统结构整体框图如图3-8所示。图3-8MPU6050系统结构图我们从理论上就能够看出来,陀螺仪本身的计算就能够很好的保证了小车的平衡,因为从理论上来说我们只需要积分就能够保持两轮自平衡小车的直立稳定,但是在实际情况中,我们还会遇到数据上的误差以及电路上的噪音,或者实际上的摩擦力等等,所以这时候我们一定要使用加速度计进行负反馈调节,保证两轮自平衡小车能够很好地保持一个相对稳定的平衡状态。3.3.2电机驱动电路TB6612FNG电机驱动电路,他是具有相对来说比较大的电脑的一种桥结构,也是一个双通道电路来进行输出的,这个模块能够同时启动两个电机是一个相对比较性能强大,模块较小的电机驱动模块,在它启动的连续脉冲峰值电流还能够达到2A,如果是单脉冲的话能够达到3.2A的峰值;该电机驱动模块的引脚图如图3-9所示。图3-9电机驱动模块引脚图TB6612FNG的用法,双驱动,也就是可以驱动两个电机。STBY:接单片机的IO口,清零,电机全部停止。通过AIN1AIN2,BIN1,BIN2来控制正反转,VM接12V电源,VCC接5V电源,GND接地。3.3.3电源模块电路本次两轮自平衡小车的电源模块电路采用的是ASM1117,我们使用的该系列的电源电流稳压器是拥有可调整的版本和多种固定电压的模块版本,为了能够去保证电源模块的稳定性,在设计上用于去提供相对比较小的电流工作,大概是1A,并且工作的时候产生的压差会低到1V左右,在承受最大输出电流的时候,该电源模块的稳压器最小压差保证不能够超过1.3V,并且会随着负载电流的降低,稳压器的最小压差也在不断地降低,该电流稳压器模块的引脚图如图3-10所示。图3-10电源模块电路AMS1117引脚图3.3.4蓝牙模块电路BT-HC05蓝牙模块电路,它具有小型,快速链接等特性而深受大家的喜爱。本次设计上则是采用该蓝牙模块作为本次小车使用手机链接操作,它是一种蓝牙串口模块,也就是当蓝牙多媒体设备同蓝牙串口模块配对成功时候,建立起连接,就能够使用同通道进行数据的发送和接收BT-HC05的引脚图如图3-10所示,各个引脚为,RXD:接收端;TXD:发送端;VCC:模块供电正极(5V);GND:模块供电负极;;EN:使能端,需要进入AT模式时接3.3V,MASTER主模式,SLAVE从模式。图3-10蓝牙模块3.3.5超声波模块电路本次得超声波模块采用Hc-sr04,通过IO口触发器触发测距,产生至少10us的高电平信号;模块自动发送8个40KHz方波,检测是否有信号返回;有一个回波信号,通过端口的回波输出到IOa高电平,高电平持续时间是超声波从发射到返回的时间。测试距离=(高电平声速*(340m/s))/2;该模块易于使用。如果控制端口发送的高电平超过10us,可以等待接收端口的高电平输出,一旦有输出,就可以启动定时器。当门变低时,可以读取计时器的值。这时,就到了这个排名的时候了,然后你就可以计算出距离了。这种连续的周期性测量可以达到移动测量的值。超声波模块如图3-11所示。图3-11超声波测距Hc-sr04模块3.4本章小结两轮自平衡小车是一个综合而复杂的系统,集成了动态决策和计划,环境感知,行为控制以及多种功能的执行。关键是在解决自我平衡的同时还能够适应各种环境下的控制任务。通过使用外部速度传感器,角速度传感器等,汽车可以平衡,自主地前进。两轮自平衡车的软件设计4.1开发环境的介绍本次开发环境使用的是Keil5,因为Keil5能生成.hex文件的软件,STM32单片机需要hex文件,所以选择keil5作为本次设计的编译工具。4.2程序设计的总体方案程序功能主要包括对各个传感器信号的采集和处理;汽车交通控制、垂直控制、速度控制、转向控制、障碍物预防控制;PWM发动机输出;汽车循环过程控制:启动程序、汽车启动和结束、汽车状态监控;车辆信息对话框及参数配置:状态查看器、上位机监控、参数配置等。上述功能可分为两类:第一类包括前三类功能。所有这些函数都是在一个精确的时间周期内运行的,因此它们可以在一个周期内中断。第二种类型包括最后两个函数。执行不需要精确的时间周期,可以在主程序中完成。这两种类型的任务可以通过全局变量在Si之间进行通信。小车垂直控制的主要框图如图4-1所示。从以上程序的主框图可以看出,程序连接后,MCU将被初始化,初始化的主要任务包括两个:第一个任务是初始化MCU使用的所有模块;第二个是应用程序的初始化,即应用于变量值的自动控制程序的初始化。启动后,第一个输入是垂直车辆检测程序。该程序读取加速度计的值以评估车辆是否垂直。在垂直方向中,车辆的垂直控制、转向控制和速度控制被激活。图4-1主程序框图主程序的程序设计如下:Main主程序:intmain(void){u8t=0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组2 SystemInit();//72Mhz delay_init(); //延时函数初始化 OLED_Init(); MPU_Init(); //初始化MPU6050 TIM1_PWM_Init(7799,0); OLED_ShowString(0,0,"Angle:",16); OLED_ShowString(72,0,",",16); OLED_ShowString(0,16,"Kp=",16); OLED_ShowNum(24,16,Vertical_Kp,3,16);// OLED_ShowString(56,16,"PL=",16);// OLED_ShowString(0,32,"I=",16); OLED_ShowString(56,16,"D=",16); D=Vertical_Kd*100;OLED_ShowNum(72,16,D/100,1,16); OLED_ShowString(80,16,".",16); OLED_ShowNum(88,16,D%100,2,16);// OLED_ShowNum(24,16,Velocity_Kp,3,16);//速度// OLED_ShowNum(80,16,Vertical_Kp,3,16);// OLED_ShowNum(24,32,Velocity_Ki,3,16);// OLED_ShowNum(80,32,Vertical_Kd,3,16); OLED_Refresh(); while(mpu_dmp_init())//自检 {if(t==0) {OLED_ShowString(0,32,"Error",16); OLED_Refresh(); t++;} else {OLED_ShowString(0,32,"",16); OLED_Refresh(); t=0;} delay_ms(1000); }设置中断优先级分组2,抢占优先级取值为0到3,相应的优先级为0到3,2bit抢占优先级、2bit响应优先级。OLED_ShowString方法则是使用OLED显示字符串进行展示使用的,mpu_dmp_init()则是能够使用dmp读出姿态角,如果程序while能够进入,切t等于0则OLED屏幕会报错告知读取姿态角失败,否则屏幕会重新刷新。OLED_ShowString(0,32,"PWM=",16); OLED_Refresh();// EXTIX_Init(); Encoder_Init_TIM2(); Encoder_Init_TIM4();TIM3_FLASH(3599,99);//刷新角度平衡4.3模块程序的设计4.3.1pid控制器的设计平衡车是一个闭环控制的负反馈系统,需要两级PID来保持垂直和静止。PD的垂直电路控制器根据IMU数据(使用mpu6050的惯性测量单元)控制汽车的运动状态。速度调节器PI根据静止编码器的数据调节车轮的速度和运动状态,使两个车轮趋于平衡,本图PID结构图如图所示4-2。图4-2pid结构框图设置机械中值,能使得小车真正平衡住的角度,floatMed_Angle=0;对于平衡车来说,直立环是最为重要的,而PID的调节也是一级一级的来调节,所以我们从直立PD环开始调节。直立PD环代码:float Vertical_Kp=240, //直立环KP、KD500 Vertical_Kd=1.68;//3intVertical(floatMed,floatAngle,floatgyro){ intPWM_out; PWM_out=Vertical_Kp*Angle+Vertical_Kd*(gyro-0); returnPWM_out;}在设置KD之后,我们从零开始逐渐增加KD,直到机器对角度变化非常敏感,当几乎没有振荡时,PD调节器的参数设置就完成了。速度PI环代码:float Velocity_Kp=-1.0, //速度环KP、KI-0.5 Velocity_Ki=0;intVelocity(intencoder_left,intencoder_right)//高速转动后会失控,高速转动是因为离开地面负载变小{ staticintPWM_out,Encoder_Err,EnC_Err_Lowout,EnC_Err_Lowout_last;//【2】 floata=0.7;//【3】滤波值越大,滤波越好 //1.计算速度偏差 Encoder_Err=(encoder_left+encoder_right)-0;//舍去误差 //2.对速度偏差进行低通滤波作用是低速可以通过,高速削去 //low_out=(1-a)*Ek+a*low_out_last;=误差+a*(上次误差-这次误差)作用比较上次和这次误差,差越大输出越小 EnC_Err_Lowout=(1-a)*Encoder_Err+a*EnC_Err_Lowout_last;//使得波形更加平滑,滤除高频干扰,防止速度突变。 EnC_Err_Lowout_last=EnC_Err_Lowout;//防止速度过大的影响直立环的正常工作。 //3.对速度偏差积分,积分出位移? Encoder_S+=EnC_Err_Lowout;//【4】 //4.积分限幅 Encoder_S=Encoder_S>10000?10000:(Encoder_S<(-10000)?(-10000):Encoder_S) //5.速度环控制输出计算 PWM_out=Velocity_Kp*EnC_Err_Lowout+Velocity_Ki*Encoder_S;//【5】 returnPWM_out;我们调整PI积分去控制小车转速这个过程就叫做控制速度环的正反馈的过程,它就是在两轮自平衡小车的电机转子在转动的时候,电机的编码器数据的绝对值如果比零要大,那么进过PI的速度环积分运算之后就会变得更大了,如果PI的这个运算放大之后的数值如果放在了PWM的占空比的数值上面的话,那么还会使得电机转子转动的更加快速,转动快速的结果就是导致电机转动的会更加快,然后电机的编码器的数据绝对值也就变得更大,这一个运算放大的效果会一直持续到PWM的占空比变成最大值的时候。4.3.2陀螺仪加速度计的设计陀螺仪是用于测量或维护方位和角速度的设备。它是一个旋转的轮子或圆盘,其中旋转轴可以不受影响的设定在任何方向。当旋转发生时,根据角动量守恒定律,该轴的方向不受支架倾斜或旋转的影响,MPU6050的工作原理图如图4-3所示。图4-3MPU的工作原理图我们直接得到的是加速度计(测量的加速度)和陀螺仪(测量的角速度)。我们使用的是姿态角,分别是发射角、偏航角和滚转角,mpu6050DMP模块需要将原始数据转换成四元数,然后通过公式将四元数直接转换成姿态角如图4-4。图4-4MPU6050数据转化检测姿态角姿态检测完成后,mpu6050实时采集汽车的角速度和角加速度,并将数据传输给主控制器。主控制器驱动直流发动机驱动模块,负责将主控制器输出的PWM信号转换为控制信号,驱动两台直流发动机的转速和方向,发动机编码器应负责测量直流发动机的速度和方向,并将测量数据输入主控制器,以形成闭环控制。流程表如图4-5所示。图4-5MPU6050的总体框图MPU6050代码:u8MPU_Init(void){ u8res; MPU_IIC_Init();//初始化IIC总线 MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80); //复位MPU6050delay_ms(100); MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00); //唤醒MPU6050 MPU_Set_Gyro_Fsr(3); //陀螺仪传感器,±2000dps MPU_Write_Byte(MPU_USER_CTRL_REG,0X00); //I2C主模式关闭 MPU_Write_Byte(MPU_FIFO_EN_REG,0X00); //关闭FIFO MPU_Write_Byte(MPU_INTBP_CFG_REG,0X80); //INT引脚低电平有效 res=MPU_Read_Byte(MPU_DEVICE_ID_REG); if(res==MPU_ADDR)//器件ID正确 { }elsereturn1; return0;}这个是初始化代码,主要内容:初始化I2c总线,如果返回0为成功,其他就为错误代码,复位MPU,设置模式,设置CLKSEL,PLLX轴为参考,设置采样率。u8MPU_Set_Gyro_Fsr(u8fsr){ returnMPU_Write_Byte(MPU_GYRO_CFG_REG,fsr<<3);//设置陀螺仪满量程范围设置MPU6050陀螺仪传感器满量程范围,fsr等于0,为±250dps;fsr等于1,为±500dps;fsr等于2,为±1000dps;fsr等于3,±2000dps,本次设置为fsr等于3。设置MPU6050加速度传感器满量程范围,fsr设置等于0,为±2g;fsr设置等于1,为±4g;fsr设置等于2,为±8g;fsr设置等于3,为±16g,如果返回值是0的话,就表示设置成功,如果为其他值的,就表示设置失败。u8MPU_Set_LPF(u16lpf){ u8data=0; if(lpf>=188)data=1; elseif(lpf>=98)data=2; elseif(lpf>=42)data=3; elseif(lpf>=20)data=4; elseif(lpf>=10)data=5; elsedata=6; returnMPU_Write_Byte(MPU_CFG_REG,data);//设置数字低通滤波器设置MPU6050的数字低通滤波器的数字低通滤波频率lpf,在程序中做判断,如果是188的话,data等于1;如果是98的话,data等于2;如果是42的话,data等于3;如果是20的话,data等于4;如果是10的话,data等于5;如果返回值是0的话,就表示设置成功,如果为其他值的,就表示设置失败。u8MPU_Set_Rate(u16rate){ u8data; if(rate>1000)rate=1000; if(rate<4)rate=4; data=1000/rate-1; data=MPU_Write_Byte(MPU_SAMPLE_RATE_REG,data); //设置数字低通滤波器 returnMPU_Set_LPF(rate/2); //自动设置LPF为采样率的一半}设置MPU6050的采样率rate,在4到1000赫兹之中,程序会返回LPF为rate的一半。shortMPU_Get_Temperature(void){u8buf[2];shortraw; floattemp; MPU_Read_Len(MPU_ADDR,MPU_TEMP_OUTH_REG,2,buf);raw=((u16)buf[0]<<8)|buf[1];temp=36.53+((double)raw)/340;returntemp*100;;}该方法能够得到MPU的温度,拿到温度值返回温度值的100倍率,可以进行控温,测温。u8MPU_Get_Gyroscope(short*gx,short*gy,short*gz){u8buf[6],res; res=MPU_Read_Len(MPU_ADDR,MPU_GYRO_XOUTH_REG,6,buf); if(res==0) { *gx=((u16)buf[0]<<8)|buf[1]; *gy=((u16)buf[2]<<8)|buf[3]; *gz=((u16)buf[4]<<8)|buf[5]; } returnres;;}拿到并返回陀螺仪值(原始值),gx,gy,gz是原陀螺仪的x,y,z轴的初始值。u8MPU_Get_Accelerometer(short*ax,short*ay,short*az){u8buf[6],res; res=MPU_Read_Len(MPU_ADDR,MPU_ACCEL_XOUTH_REG,6,buf); if(res==0) { *ax=((u16)buf[0]<<8)|buf[1]; *ay=((u16)buf[2]<<8)|buf[3]; *az=((u16)buf[4]<<8)|buf[5]; } returnres;;}拿到并返回加速度计值(原始值),ax,ay,az是原加速度计的x,y,z轴的初始值。u8MPU_Read_Len(u8addr,u8reg,u8len,u8*buf){ MPU_IIC_Start();MPU_IIC_Start(); MPU_IIC_Send_Byte((addr<<1)|1);//发送器件地址+读命令 MPU_IIC_Wait_Ack(); //等待应答 while(len) {u8MPU_Write_Byte(u8reg,u8data) {}u8MPU_Read_Byte(u8reg){ u8res;MPU_IIC_Start(); }这三个方法则是MPU读写寄存的方法,IIC可以连续读,读取寄存器地址和长度,还能选择读取到的数据存储区域,将数据写入寄存器地址,返回读到的数据。4.3.2蓝牙模块的设计系统在编程过程中以STM32微处理器为核心,通知并控制蓝牙模块的高低电平,进而控制发动机的旋转方向,控制车的旋转模式通过蓝牙模块实现。蓝牙移动助理连接到蓝牙模块,以检查汽车的各种操作模式。总体框图如图4-6所示。图4-6蓝牙模块框图串口初始化:#include"usart3.h" voiduart3_init(u32bound){ //GPIO端口设置 GPIO_InitTypeDefGPIO_InitStructure; USART_InitTypeDefUSART_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//时钟GPIOB,USART3 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//USART3_TXPB.10 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_Init(GPIOB,&GPIO_InitStructure); //USART3_RX PB.11 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB,&GPIO_InitStructure); //USART初始化设置 USART_InitStructure.USART_BaudRate=bound;//一般设置为9600; USART_InitStructure.USART_WordLength=USART_WordLength_8b; USART_InitStructure.USART_StopBits=USART_StopBits_1; USART_InitStructure.USART_Parity=USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; USART_Init(USART3,&USART_InitStructure); USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);//开启中断 USART_Cmd(USART3,ENABLE);//使能串口}通过串口3与蓝牙连接,手机连接蓝牙将信息发送给蓝牙模块,再传至STM32获取控制信息。串口1中断服务程序,接收中断标志位拉高,保存接收到的指令。保存就收指令的程序如下:u8Fore,Back,Left,Right;voidUSART3_IRQHandler(void) //串口1中断服务程序{intBluetooth_data;if(USART_GetITStatus(USART3,USART_IT_RXNE)!=0)//接收中断标志位拉高{Bluetooth_data=USART_ReceiveData(USART3);//保存接收到的指令if(Bluetooth_data==0x00)Fore=0,Back=0,Left=0,Right=0;//刹车elseif(Bluetooth_data==0x01)Fore=1,Back=0,Left=0,Right=0;//前进elseif(Bluetooth_data==0x05)Fore=0,Back=1,Left=0,Right=0;//后退elseif(Bluetooth_data==0x03)Fore=0,Back=0,Left=1,Right=0;//左转elseif(Bluetooth_data==0x07)Fore=0,Back=0,Left=0,Right=1;//右转elseFore=0,Back=0,Left=0,Right=0;}}保存到发送的指令之后,需要通过蓝牙串口发射信号给stm32://发送一个voidUSART3_Send_Data(chardata){USART_SendData(USART3,data);while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==0);//除非发送完成}//发送一串voidUSART3_Send_String(char*String){u16len,j;len=strlen(String);for(j=0;j<len;j++){USART3_Send_Data(*String++);}}4.3.3避障模块的设计图4-7避障模块程序框图超声波模块接舵机信号端输入PWM信号调节速度,避障程序框图如图4-7所示,实现控制电机转向的程序如下:#include<AT89x51.H>

#include<intrins.h>

#defineSevro_moto_pwmP2_7//接舵机信号端输入PWM信号调节速度

#defineECHOP2_4//超声波接口定义

#defineTRIGP2_5//超声波接口定义

#defineLeft_moto_go{P1_0=1,P1_1=0;}//左边电机向前走

#defineLeft_moto_back{P1_0=0,P1_1=1;}//右边电机向后转

#defineLeft_moto_Stop{P1_0=0,P1_1=0;}//两个电机向后

#defineRight_moto_go{P1_4=1,P1_5=0;}//两个电机向前

unsignedcharconstdiscode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/};

unsignedcharconstpositon[3]={0xfe,0xfd,0xfb};

unsignedchardisbuff[4]={0,0,0,0,};

unsignedcharposit=0;

unsignedchartimer1=0;//扫描时间变量定义P2_7接舵机信号端输入PWM信号调节速度,定义P2_4,P2_5的接口,调节P1_0,P1_1,P1_2,P1_3的数据,使得电机能够前后左右行走。避障程序:voidStartModule()

{

TRIG=1;

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

TRIG=0;

}voidConut(void)//计算距离

{

while(!ECHO);//当RX为零时等待

TR0=1;//开启计数

while(ECHO);//当RX为1计数并等待

TR0=0;//关闭计数voidStartModule()/作为启动测距信号,之后count作为计算距离,去执行电机的走向。4.4本章小结在小车直立的情况下,小车的程序在住循环中不断地发送监控数据,送到上位机进行监控,同时检查小车是否跌倒。跌倒判断可以通过小车倾斜角是否超过了一定范围进行确定,或者通过安装在小车前后防撞支架上的微动开关来判断。一旦小车跌倒了,小车就会停止运动,小车的直立控制、速度控制和方向控制都停止运动。再重新去小车直立判断的过程。两轮避障蓝牙遥控平衡小车程序设计4.1小车的制作因为本次设计需要双电机驱动,选择TB6612FNG作为两轮避障蓝牙遥控平衡小车的电机,底盘使用亚克力板,使用芯片接在面包板上,如图4-1所示。图4-1小车的制作4.2小车传感器的安装小车传感器包括MPU6050,红外模块,将他们接在亚克力板上的面包板,这样可以很大程度的提升抗干扰能力,因为是在直立方向的,陀螺仪保持水平安装,如图4-2所示。图4-2小车的安装4.3功能调试4.3.1小车调试的条件在小车组装完成以后,需要小车达到以下准备条件:小车的电路调试,控制电路可以正确上电,单片机可以下载程序;小车调试辅助硬件和软件:小车运动保护和参数监控软件。4.3.2蓝牙调试首先写完程序,烧写之后,先试试可不可以实现单片机和串口助手的正常通信,尝试发送数据和接收数据,使用我们的OLED屏幕显示,经测试可以实现正常通信后,修改接收函数。采用Keil编写输入C程序,编译运行通过以后,生成HEX文件,再通过USB下载口把HEX文件下载到单片机中,上电之后就可以进行调试。4.3.3避障调试按照电路原理图进行电路检查,查看线路是否连接正确,特别是注意电机是否正确,然后查看电源模块有没有街上,检测电机的控制效果是否是正确的。打开波动开关之后,前方没有障碍物的时候,小车是平衡直立的。往前方放障碍物,在小车前方较远处,小车是平衡直立的。往前方放置障碍物,让小车运动,小车运动到一定距离之后,小车停止,随后保持直立。调试成功,当小车前方遇到障碍物的时候,小车就会停止下来。4.3.4性能调试通电后,测量电路的工作电流和各稳压电路的输出值是否在安全范围内,在开发和下载单片机软件的基础上,编写了单片机的PWM输出控制程序。检查发动机转速,检查驱动电路的正确性,确定两个电极输出电压的极性,确保释放正电压PWM时,发动机驱动汽车前进;当PWM产生负电压时,汽车后退,输出的PWM信号驱动发动机旋转。通过调节PID,使发动机在不同的外阻力下保持恒速运行。车辆的调试如图4-3所示。图4-3小车调试过程传感器参数调试:包括车辆静止时测量各传感器的零点偏移量及单位标度值转换。小车控制参数静态调试:包括角度参数(比例和微分参数)、速度参数(比例和微分参数)、方向参数(比例和微分参数)。垂直KP是p

温馨提示

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

评论

0/150

提交评论