毕业设计(论文)-瑞萨MCU模型车设计与制作.doc_第1页
毕业设计(论文)-瑞萨MCU模型车设计与制作.doc_第2页
毕业设计(论文)-瑞萨MCU模型车设计与制作.doc_第3页
毕业设计(论文)-瑞萨MCU模型车设计与制作.doc_第4页
毕业设计(论文)-瑞萨MCU模型车设计与制作.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

郑州大学机械工程学院摘要瑞萨MCU模型车,是在搭载有瑞萨MCU主板的模型车上自行设计并编制独立的控制程序,组装制作成具有自动识别功能的MCU汽车模型。MCU模型车在跑道中央行驶时读取跑道中央的白线作为输入信息以控制行驶路线,其构造分两大部分:程控部分和机械部分。程控部分为传感器,当模型车行驶时车体前方的传感器迅速读取路面信息,并传达至主控制器,以控制行驶方向。机械部分为马达、齿轮、轮胎、舵机等。动力源为8节AA型电池。对模型车的深入研究,不仅可以加强我们对机电一体化产品的理解,还能使我们从中领悟到一些有关电动汽车理论的真谛。本文主要研究:MCU模型车的结构组成与工作原理;建立MCU模型车的几何模型,运动学模型及动力学模型,并对其进行理论分析和研究;调试MCU模型车的基本性能;通过实验研究MCU模型车在指定轨道上稳定运行的程序及对模型车运行造成影响的因素。关键词:MCU模型车、原理、模型、程序。AbstractThe Micom car of Renesas is a model of car which has the CPU board of Renesas with which you can design and input independent program, and it has the function of distinguishing the course automaticly. The Micom car reads the white central line when it runs in the middle of the course. The construction of the Micom car consists of two parts: One part which is controlled by the program is made up by the sensors in front of the Micom car which read the information of the course and convey it to the main controller. The other part which is the mechanical section is comprised of motors, gears, tyres, servo and so on. 8 pieces of secondary AA batteries are used as the source of the power.The research of the Micom car not only can enhance our understanding with the products of mechatronics, but also can make us grasp some theories about the motor car.This article mainly discusses the composition and the principle of the Micom car; establishes the geometric model, dynamic model and kinematic model of the Micom car; debugs the basical capabilities of the Micom car; writes the program which makes the Micom car run stabily on the course and analyses the factors that affect the process of running.Keywords: Micom Car, principle, model, procedures36目录摘要Abstract1 引言12 MCU模型车的结构组成及工作原理22.1 传感器基板22.2 传感器子基板32.3 CPU主板42.4马达驱动电路52.5伺服舵机控制电路82.6发光二极管电路92.7开/关电路102.8电源103 MCU模型车的几何模型、运动学模型和动力学模型分析113.1 模型车几何模型的建立与分析:113.2 模型车动力学模型的建立与分析:123.3 模型车运动学模型的建立与分析:164 MCU模型车在指定轨道上运行的程序设计185 影响MCU模型车稳定运行的因素326 结论34致谢35参考文献361 引言MCU模型车的设计与制作起源于由日本社团法人全国高中协会等主办的“JAPAN MCU 模型车大赛(英文:Japan Micom Car Rally)”,目前这项赛事已经在日本成功举办了十余届。由于这项大赛的科技层次较高,并且具有很强的竞争性和观赏性,如今“JAPAN MCU 模型车大赛”已经成为日本国内的全国性重大赛事。2007年,由瑞萨科技冠名赞助的“瑞萨超级MCU模型车大赛”首次在北京举行,并被教育部列为“全国大学生ITAT就业技能大赛”系列赛事之一。这个活动的目的是提高学生的制作能力和编程技巧水平,并培养业界相关人才。该项赛事首次举办就吸引了四十多所高校的六十多支参赛队伍,其中不乏许多知名高校。此次大赛的成功举办,不仅在于高校和大学生们对此项赛事的关注,更在于对大家对专业人才培养和锻炼的重视。该项赛事还将继续在我国举办。在高兴的同时,我们也应该清楚地看到,我国选手的MCU模型车在科技含量与创新层次上与国外高水平选手还有一定的差距。因此,为提高我国MCU模型车赛事的观赏性和赛事水平的竞争力,同时也为了提高我国高校大学生的科研能力、制作能力及创新层次,加强对MCU模型车的理论研究和科技创新具有一定的实际意义。2 MCU模型车的结构组成及工作原理MCU模型车基本上由以下几部分组成:传感器基板,传感器子基板,H8/3048F-ONE型号的CPU主板,马达驱动基板等。其整体结构如图1所示。图1传感器基板位于模型车的最前方,用于检测赛道信息。而传感器子基板则被固定在模型车车身上,对传感器输出的信号进行初步的预处理。安装在中心位置的CPU主板是整个模型车的核心部件,可以对模型车的各控制电路发出控制指令。位于车身最后的马达驱动基板是模型车驱动电路的集合体,在CPU的控制下它可以完成对左右马达和伺服舵机的驱动。2.1 传感器基板如图2所示,传感器基板主要由8个一字等距排开的传感器组成。每个传感器都可以识别赛道上的黑白颜色,通过发光二极管显示传感器检测到的状态,并能将其转化为数字信号“0”或“1”输出。传感器基板作为整个模型车控制系统的起始端,就好比人的眼睛,能读取赛道路面信息,为模型车要产生的相应动作提供必要依据,其作用不可忽视。同时,其识别精度及响应时间都将对整个控制过程造成较大的影响。图2传感器主要由两部分组成,利用“白色反射光线,黑色吸收光线”的原理,一部分发射光线,另一部分接收光线。发射光线部分为发光二极管,其发射到赛道上的光线为红外线,并不能被肉眼察觉。接受光线部分为光传感器S7136,它能判断出是否有光线被反射到其接受面上,并能将其转化为数字信号“0”或“1”输出。传感器的工作原理为:如果赛道上光线集中的地方是白色(光线由传感器的发光部分射出),光线将会被反射,并且被传感器的光线接收部分接收。这样,传感器输出数字信号“0”, 赛道上的该处被认为是“白色”,同时,具有指示作用的发光二极管工作。同理,如果赛道上光线集中的地方是黑色,光线将会被吸收,不能被光线接收部分接收,传感器输出数字信号“1”, 该处将会被认为是“黑色”,具有指示作用的发光二极管不工作。传感器基板上的蓝色方形旋钮为可调电阻,可以调节传感器的灵敏度。当传感器在赛道上的白线处正常工作,黑线处不工作时,传感器灵敏度的调节工作就可以结束了。如果赛道上有灰色,要通过调节旋钮使发光二极管在灰色处也能正常工作,模型车才能够在整个赛道上顺利运行。光传感器S7136主要由震荡电路、时钟信号发生电路、发光二极管驱动电路、缓冲放大电路、标准电压发生电路、比较电路、信号处理电路、输出电路等组成。它属于标准元件,共有四个引脚,此处不对其内部结构做过多介绍。传感器基板的电路如图3所示:发射红外线的发光二极管(LED2)的阴极与光传感器S7136(接收光线部分)的引脚1连接,阳极通过旋钮调节电阻(该电阻可以调节LDE2的输出)与电源相连。S7136的引脚3是输出端,并与发光二极管(LED1)相连。因为在数字电路中“0”通常表示0V,“1”通常表示“5”V,因此,当S7136接收到光线时,引脚3输出“0”,LED1工作。反之,当S7136没有接收到光线时,引脚3输出“1”,LED1不工作。为了将每个光传感器引脚3的输出值送到CPU做后续处理,引脚3还与接口CN1的引脚2-9分别相连。另外,光传感器S7136的引脚2和引脚4还要分别与电源和地相连,这样就构成了完整的传感器基板电路。图3要注意:此时由传感器基板输出的信号为:“1”代表“黑色”,“0”代表“白色”。这与人们通常的思维习惯相矛盾。为了便于在设计程序时理解起来更方便,还需要对传感器基板的输出信号做进一步的处理。这就是下面要介绍的传感器子基板的作用。2.2 传感器子基板传感器子基板的作用是将来自传感器的输入信号取反,使输出信号满足:当赛道颜色为白色时输出值为“1”,当赛道颜色为黑色时输出值为“0”。从而符合人们的思维习惯。又因为来自传感器的输入信号并不是非常清楚,因此传感器子基板同时还具有波形成型和防止信号抖动的功能。传感器子基板的外观如图4所示。图4由上述内容可知:传感器基板与传感器子基板间的关系密切,理论上可以将二者合为一体,放到一块板子上。但是,考虑到传感器基板的重量会影响到伺服舵机转向的快速性,因此将传感器子基板固定在车身上以减轻传感器基板的重量。图5为传感器子基板的电路图:电路中,利用非门电路(输入和输出是反的,输入是高的,输出就是低的)将输入信号取反,并采用元件74HC04实现该功能。图中电阻起到限流的作用。经过转化后的信号分别与接口CN12的引脚2-9连接,作为控制信号准备输出到CPU中。图52.3 CPU主板图6图示即为模型车的CPU主板。该主板采用由日本瑞萨科技生产的H8/3048F-ONE芯片。它是整个模型车的核心,也是提高模型车性能的关键所在。它的主要作用是利用控制程序对模型车的各驱动部分发出控制指令,从而实现对整个MCU模型车系统的程序控制。CPU主板的结构较复杂。共有11个接口,分别为接口1至B,其中大部分为8位接口(8个I/O接口),还有4个是少于8位的接口。另外,主板上还有一个4位的DIP开关,可以调节控制马达转速的PWM(来实现开关稳压电源输出晶体管或晶体管导通时间的改变)输出值。CPU主板的核心部分为H8/3048F-ONE芯片,该芯片共有100个引脚,可以实现对整个模型车的程序控制。而控制程序的输入还需要通过一个导入开关才能实现。然而,虽然主板上有11个接口,但是整个模型车系统只用到了接口7和接口B两个接口,使整个系统并未变得特别复杂。模型车开始工作后,该CPU主板从接口7读取传感器数值,经过执行芯片中定义的接口程序和创建的主控制程序得出左、右马达和伺服 的响应动作及其输出值,并将其通过接口B输出到马达驱动基板,以达到对模型车驱动系统控制的目的。2.4马达驱动电路马达驱动电路位于马达驱动基板上(马达驱动基板整体外观如图7所示),其作用是根据微处理器的指令来控制马达。但是来自微处理器的信号非常微弱,即使把马达直接与信号线相连,也不会产生任何响应。为了能控制马达,这个微弱的控制信号必须转化成可以诱发数百至数千毫安电流的信号。图7要使马达旋转,只需施加相应的电压。而要使马达停止,只需撤掉电压即可。但是,要如何才能实现速度的精确控制呢?下面将对这个问题进行详述的讨论。采用调节电阻可以改变电压。但是,这个调节电阻必须具有很大的热容量,因为马达工作时,将有大量的电流流向马达。对于没有施加到马达上的过剩电压,将会在电阻上以热辐射的形势被消耗掉。而此处采用的方法是不断重复高速的开、关操作来进行电压控制,其最终的结果就好像是高低电平间的某个电压值被输出。在固定的周期内,重复的开、关操作可以控制开、关比率的改变。这种控制方法称为“脉宽调制”,简称为PWM控制。脉宽的开通比率称为工作比率。当在一个周期内开通宽度被设定为50%时,可以称作工作比率为50%。还可以简称为PWM50%。下图即为脉宽调制(PWM)的示意图。图8不过“PWM”听起来有些难以理解。其实手动“接通”、“断开”马达与电池线的连接也被称为PWM。当接通时间较长时,马达旋转速度快。当断开时间较长时,马达旋转速度慢。手动“接通”、“断开”操作的执行可以在数秒内完成,但是,如果采用微处理器的话,这个过程只需要数毫秒。当这个PWM信号与马达相连时,马达的旋转速度就可以按照程序的设定来工作,哪怕只发生微小的变化。这样一来,精细的速度控制就能够实现了。当电路中连有发光二极管时,发光二极管的明亮程度可以通过PWM来改变。如果用CPU进行PWM控制,这项工作可以在数毫秒,甚至数微秒内完成。一个平稳的马达控制就可以实现了。这里,之所以采用脉宽控制,而不采用电压控制,是因为CPU非常善于处理数字值“0”和“1”,对于类似于xV这样的值处理起来则非常困难。虽然通过改变“0”、“1”的宽度表现的就像是电压控制一样,但实际上却是PWM控制。马达正、反转以及刹车的控制是通过H桥电路来实现的。H桥电路的原理图如图9所示,马达位于中心位置,4个开关分别位于两侧,共同构成一个H形。改变4个开关的状态就可以实现马达正、反转以及刹车的控制。此处的开关,是由FET(场效应晶体管)组成的控制开关。P沟型FET用在电源正极,N沟型FET被用在负极。对于P沟型FET而言,当G端电压S端电压时,导通电流。而对于N沟型FET而言,当G端电压S端电压时,导通电流。也就是说,无论是P沟型还是N沟型的FET,只要D端与S端有电压,就会有电流从其中导通。图9必须注意:左侧或右侧的两个FET不能同时接通。因为,如果那样的话,10V的电源与接地之间就没有任何负载存在了,就好像短路一样。它将会烧毁FET或者导线。马达在实现正、反转以及刹车的控制过程中,H桥电路的左侧和右侧两个FET的G端电压总是相同的。因此,可将左右两侧的上下两个FET的G端分别相连,以简化电路。当H桥电路被连接到整个控制电路中,并且执行PWM控制时,FET将会变得很热。这是因为,当信号从FET的门输入,并且PWM控制在FET的D端与S端执行时,根据图10中的“理想波形”图可知,由于P沟型FET和N沟型FET反应迅速,正转与刹车之间可以实现平稳的转换。然而实际波形中却存在延时,并不能立即执行。事实上,FET由开变关时的延时要比由关变开时的延时长。正如图10中的“实际波形”所示。虽然延时很小,但是同侧的两个FET都将会因延时造成短时间导通,引起电路短路,并产生大量的热能。 理想波形 实际波形图10从接通到实际开始产生反应的延时的持续时间称为“接通延时”,第一次打开到实际接通的时间称为“上升时间”。从断开到实际开始产生反应的延时的持续时间称为“断开时间”,第一次断开到实际断开的时间称为“下降时间”。实际上,由断开到接通的时间是“接通延时+上升时间”,由接通到断开的时间为“断开时间+下降时间”。由于延时的作用,马达驱动电路会产生短路的现象。防止短路的方法是利用电路及FET的开关特性来产生特定的延时,从而使同侧的P通道和N通道的FET不同时接通或断开。马达驱动基板中用来产生延时的部分是积分电路(图11所示)。因为有许多有关于积分电路的专业书籍,此处不对其作过多叙述。积分电路图如下,并可通过下式计算延时T=CRs。其中,电阻值为9.1千欧姆,电容大小为4700皮法,因此,延时T=42.77us.图11该电路中采用了74HC14。对于74HC系列产品而言,当输入电压为3.5V或者更高时,电信号将会被转换为数字信号“1”。在74HC14的实际波形中,电压达到3.5V所需要的时间大约为50us。这个50us的延时是由上面积分电路产生的。因为,除了FET,数字晶体管对于电压转换的延时取决于FET门的容量。综上所述,我们可以得到较完整的马达驱动电路。下图即为左马达的驱动电路图。它除了包含积分电路和由FET组成的H桥电路外,还包含了正、反转变换电路。电路图中,PB1是PWM的终端,PB2可以改变马达的正、反转。当接口PB1信号为“0”时,可以实现马达制动;为“1”时,执行接口PB2能够实现的操作。而对于PB2的信号而言,为“0”时,马达正转;为“1”时,马达反转。电路中还采用了分别由74HC08和74HC32实现的与门电路和或门电路。图12电路分析:晶体管元件TR5、TR6、TR7、TR8可以分别将0V5V的电压信号转换为10V0V的电压信号。当PB1的信号由“0”变为“1”时,FET2的门电压由10V变为0V,FET2断开。然而,由于FET2自身延时的作用,FET2的断开将会被拖延。此时,由于FET1和FET2均断开,马达将进入自由状态。由于积分电路也会产生延时,FET1的门电压将会在自身延时和积分电路产生的50us延时后由10V变为0V,FET1接通。相反,当PB1的信号由“1”变为“0”时,FET1的门电压由0V变为10V,FET1断开。同样由于FET1自身的延时作用,FET1的断开将也将会被拖延。此时,由于FET1和FET2均断开,马达也会进入自由状态。由于积分电路也会产生延时,FET2的门电压将会在自身延时和积分电路产生的50us延时后由0V变为10V,FET2接通。对FET3和FET4的分析与FET1和FET2类似。虽然马达驱动电路能很好的满足控制要求,可是,在过程中却去出现了暂时无法控制的自由状态。自由状态是为了避免短路,而由积分电路产生的。因此,在程序中无法控制这个自由状态。改变积分电路中电阻和电容的值,就可以改变自由状态存在的时间。2.5伺服舵机控制电路伺服舵机(如图13所示)为模型车的前轮转向机构,是模型车不可或缺的重要组成部分。其转动范围、响应速度及动作准确性均会对模型车的运行状态产生较大影响。伺服舵机的控制方法仍采用PWM控制,这样不仅能够保证动作的准确性,而且便于实现。图13加载到伺服舵机的脉冲周期为16ms,并且伺服舵机的转角大小取决于脉冲的接通宽度。伺服舵机的旋转角度与接通脉宽之间的关系为:当接通脉宽为0.7ms时,伺服舵机向左旋转90度;当接通脉宽为1.5ms时,伺服舵机位于中心位置;当接通脉宽为2.3ms时,伺服舵机向右旋转90度。控制该伺服舵机的PWM信号由H8微处理器的复位同步脉宽调制模式产生。并且由接口B的第5位输出。改变控制程序中的ITU4_BRB(ITU4寄存器中的缓冲寄存器)的值就可以实现对接通脉宽的调节。图14伺服舵机的控制电路图如图14所示。虽然接口可以与伺服舵机的引脚1直接相连,但是或门电路仍然作为一个缓冲器而存在于电路中。因为,当电源线错误的与引脚1相连或者有噪声混入且使端脚毁坏时,如果采用直接相连的方法,微处理器的接口将被烧毁,那将是致命的。相比之下,如果采用74HC32作为缓冲器,由于它的结构更简单、价格更便宜,即使毁坏,也不会造成太大的麻烦。伺服舵机的引脚2是电源供应接口。当为马达提供电源的电池少于4节时,JP1的上部短接,直接与电源连接。当电池数多于4节时,为了避免电压过高,供给给伺服舵机的电压被3端调节器限定为6V,并且JP1的下部短接。2.6发光二极管电路马达驱动基板上连有3个发光二极管。其中,两个(LED3和LED2)可以通过微处理器中的控制程序来控制其开/关状态。这两个发光二极管的负极分别直接与微处理器的接口6和接口7相连,正极与电源相连。限流电阻为1千欧姆。显而易见,该电路中的导通电流I=(电源电压发光二极管的端电压)/限流电阻。如果数字信号“0”从PB7输出,发光二极管LED2负极电势为0V,电流导通,发光二极管工作。如果数字信号“1”从PB7输出,发光二极管LED2负极电势为5V,两端电压为0V,电流不导通,发光二极管不工作。发光二极管LED3的工作原理与上述相同,不同之处是与接口6相连。图152.7开/关电路马达驱动基板上还有一个按钮开关,其作用是使模型车由无限等待状态跃变为开始执行主控制程序。该按钮开关通过10千欧姆的限流电阻与接口B的第0位(即PB0)相连。如果按钮没被按下,数字信号“1”将通过限流电阻输入到PB0。相反,如果按钮被按下,数字信号“0”将会通过接地端输入到PB0。图162.8电源众所周知,提升驱动系统的电压可以提高马达的旋转速度。整个模型车系统系统采用8节AA型电池作为动力源,电压可以达到9.6V。而这8节电池为控制系统和驱动系统所共享。对于马达,即使加载9.6V的电压也不会出现故障。然而,由于CPU能够保证正常工作的电压仅在4.5V-5.5V之间,如果电压高于5.5V,CPU将会损坏,如果电压低于4.5V,CPU将会复位。因此,需要三端调节器(LM2940-5)将CPU控制系统电压限定为5V。而LM350及其附件部分,将会产生供给给伺服舵机的6V恒定电压。3 MCU模型车的几何模型、运动学模型和动力学模型分析对MCU模型车的研究,除了要编写并调试相关的控制程序外,还要对其运动过程作深入的分析。模型车在赛道上的运行过程包括较多种情况,其中最典型的为弯道制动过程。对这些运行情况的综合分析,有利于我们更好地了解模型车的整个运行过程,并为程序的编写提供充足的理论依据和科学的运行参数。本文以转弯过程为例,对模型车建立了相关的几何模型、运动学模型及动力学模型,并做了较详细的分析。3.1 模型车几何模型的建立与分析:模型车的几何模型如下:其左右后轮的中心距离T=0.14m,前后轮轴心距W=0.175m。图17当模型车转弯时,伺服舵机转角与左右马达PWM值之间应保持一个确定的比例关系,使三者之间相互协调,才能保证模型车在弯道以最佳状态通过,其关系可通过下面的推导方法得出。在转弯过程中,左后轮、后轮轴中心、右后轮以及伺服舵机中心的轨迹为同心圆,并设其轨迹半径分别为r1、r2、r3和r。同时,设伺服舵机的转角为。根据图18所示几何关系,可得出r2与转角的关系为:tan=W/r2而由r2又可得出半径r1与r3的值:r1 = r2 - T/2; r3 = r2 + T/2若假设右马达的速度比率为100,则可以求得舵机转向时与之相匹配的左马达的速度比率,其值为:r1/r3100。利用上述方法,可以求出右马达速度比率为100,舵机转角从1度变至45度时,左马达相应的速度比率值。并以表格形式列出(参见附件)。若右马达的速度比率不是100,此时设为x,则左马达的速度比率为:x/100( r1/r3100)。图18当在程序中涉及到伺服舵机转角时,除了降低马达转速以外,还要尽可能使左右后轮满足上述关系,以使伺服舵机和左右马达在模型车运行过程中达到相互协调的效果。上面讨论的是舵机左转时,左右马达的速度比率情况。对于舵机右转的情况分析,与上述思想相同。如果舵机的中心值调节合适,因为其具有对称性,可以通过将左转时左右马达的速度比率对换,即可得到右转时与舵机转角相对应的速度比率值。3.2 模型车动力学模型的建立与分析:在模型车的整个运动过程中,其弯道的动力学分析最具有代表性,难度也最大。本文以模型车弯道制动过程为例,来建立其动力学模型,并作简要分析。为了使对模型车的分析与汽车更接近,从而具有更深刻的实际意义,此处假设不存在舵机,模型车的转向依靠左前轮和右前轮的自身转向来实现。由于模型车的重量较实际汽车的重量轻许多倍,这样的假设并不会对模型车的理论分析造成太大的误差。当模型车在水平的弯道上等速行驶时,拟作如下的假设:1)模型车是做平行于路面的平面运动,即只有前进运动、侧向运动和绕垂直轴的横摆运动。不考虑其俯仰运动和侧倾运动,及制动时负荷的前后转移。但计及了做圆周运动时由于向心加速度引起的左右负荷转移。2)不考虑制动过程中赛道摩擦系数的变化,即认为附着系数为常数。3)只考虑滚动阻力。4)在制动过程中,当某一车轮(i轮)达到附着极限工况时,认为该车轮所受的纵向力、侧向力和垂直力满足下面的关系: 式中 、分别表示作用于车轮上的纵向力、侧向力和垂直力,单位N; 表示纵向道路附着系数; m表示轮胎系数。下图为模型车弯道制动动力学模型。oxyz为固结于模型车上的动坐标,o为模型车的重心;x轴、z轴处于模型车纵向垂直于地面的中平分面内,z轴过模型车垂心垂直于地面,指向下放为正;x轴过重心平行于地面,指向模型车前进方向为正;y轴过重心,面对模型车前进方向时,指向右侧为正。根据右手定则确定模型车绕z轴的横摆角速度的正方向为顺时针方向。图19该动力学模型中,模型车具有三个自由度:沿x轴的纵向运动V;沿y轴的侧向运动v;绕z轴的转动。根据达朗贝尔原理,可得到三自由度的模型车运动方程: 式中 M模型车总质量,单位kg; V模型车质心处速度在动坐标系中沿x轴方向的速度分量,单位m/s; v模型车质心处速度在动坐标系中沿y轴方向的速度分量,单位m/s; 模型车绕z轴的横摆角速度,单位rad/s; 模型车对z轴的惯性矩,单位kg。设(i=1,2,3,4)为作用于各轮上的地面制动力(N),其值为: 制动器制动力,N;各轮所受的垂直负荷,N。由于模型车前轮无制动,即和均为0,因此前轮的地面制动力为0。而模型车的后轮转速是靠PWM值控制的。改变驱动后轮的PWM值,就可以改变后轮的转速。模型车后轮速度改变的过程,即为模型车的制动过程。其制动力的大小与PWM值的改变程度、齿轮啮合的紧密性及马达的响应速度密切相关。设车轮的滚动阻力为,其值为:,式中为滚动阻力系数。设(i=1,2,3,4)为各轮所受的侧向力,取轮胎系数m=1,其计算公式为:= 式中为各轮的侧偏角刚度,N/rad;为各轮的侧偏角,rad。而各侧偏角的计算公式如下: 、分别表示前后轴轮距,单位为m。而代表前轮平均转角,单位为rad。a、b分别表示前轮轴心到重心的距离和后轮轴心到重心的距离,单位为m。其中,模型车各轮垂直负荷的确定方法如下:当模型车处于静平衡状态时,各轮的静载荷为: 当模型车转弯行驶时(右侧),左侧车轮负荷增大,右侧车轮负荷减小,左右各轮负荷转移量为:其中,、前后悬架侧倾角刚度,Nm/rad; 模型车悬挂质量质心至侧倾轴线的距离,m; 、前后侧倾中心离地高度,m; 、前后非悬挂质量,kg; 、前后非悬挂质量质心至侧倾轴线的距离,m; 模型车的悬挂质量,kg; L模型车前后轮轴的中心距离,m。因此,可知在模型车转弯制动过程中,各轮所受的垂直动负荷为: (i=1,2,3,4)也就是说: 综上所述,我们可以得到模型车在弯道制动过程中的动力学模型方程:通常情况下,模型车是由直道进入弯道的,因此模型车进入弯道时的初始条件为:,。可利用四阶龙格库塔法求解有关初值的问题,此处不作介绍。模型车在弯道的行驶过程为先做弯道制动运动,稳定后再做匀速圆周运动。上面已经对弯道减速制动过程的动力学模型做了详尽叙述,随后的匀速圆周运动过程与弯道减速制动过程的分析方法相似,且比较简单,此处同样不做过多分析。3.3 模型车运动学模型的建立与分析:此处同样以模型车在弯道的运动过程为例,进行建模分析。不考虑模型车的弯道制动过程,只分析其做匀速圆周运动的过程。模型车在弯道的理想运动状态是模型车舵机产生摆角后的运动轨迹与圆弧赛道为一组同心圆。设传感器基板中心运动轨迹半径为R,舵机中心运动轨迹半径为r,圆弧赛道中心半径为,传感器基板中心至圆弧赛道中心的距离为d,舵机中心至传感器基板中心的距离为l。假设模型车在弯道运行过程中,传感器的状态保持不变,也就是说,舵机以恒定的摆角通过弯道,则其运动学模型简图如下:图20由于赛道为指定的赛道,则其弯角中心轨道的半径已知。而l和d的值可以通过测量获得。又根据几何关系得出:R-=d,r=且W/r=sin。将上式联立,可得到模型车在理想状态下弯道运行的最佳舵机摆角值:并且,可以根据舵机摆角值求出与之相关的左右马达的速度之比。然而,模型车在赛道上的运行情况受到诸如:进入弯道前的直道速度、弯道制动过程、轮胎与赛道表面的摩擦系数、舵机的响应速度等一系列因素的影响,其理论值并不能很好的满足其运行状态。因此,必须通过大量的实验对其理论值进行修改和校正,才能的到满意的运行结果。至此,我们已经完成了对模型车在赛道上运行的典型过程(即:弯道运行过程)的几何模型分析、动力学模型分析和运动学模型分析。而根据对弯道运行过程的建模与分析,我们又可以很容易得到模型车在任何运行情况下的模型,并能对其做出科学的理论分析。这对于模型车运行状态的研究有着至关重要的作用,并能依此对各运行状态编写相关的控制程序,最后经过综合得到能使模型车在指定赛道上顺利运行的主控制程序。4 MCU模型车在指定轨道上运行的程序设计MCU模型车是在预先设定好的具有明显黑白条纹的赛道上运行的,具有自动识别功能的MCU汽车模型。它的自动识别控制主要靠输入到瑞萨科技所生产的单片机芯片中的控制程序来实现。由于模型车组件较多,结构较复杂,且功能多样,其中任何一部分出现问题都将会影响模型车的正常运行。为了保证各部分均能按指定的要求工作,我们还需要对每个部分分别进行调试。因此,特为其编写了两组程序,分别为测试程序kit05test.c和主程序kit05.c。由于单片机不能直接执行C/C+程序,必须将编好的测试程序kit05test.c和主程序kit05.c进行转换后才能够输入到单片机中。以主程序的转换过程为例:已经编好的程序kit05start.src与kit05.c分别经过汇编和编译后,生成的文件kit05start.obj和kit05.obj再与文件kit05.sub进行连接,生成kit05.abs,然后再将其进行编译就可以得到瑞萨单片机所能执行的kit05.mot文件。首先,介绍一下程序中定义的一些变量的意义及其计算方法。#define TIMER_CYCLE 3071 #define PWM_CYCLE 49151#define SERVO_CENTER 4585 #define HANDLE_STEP 26 #define MASK2_2 0x66 #define MASK2_0 0x60 #define MASK0_2 0x06 #define MASK3_3 0xe7 #define MASK0_3 0x07 #define MASK3_0 0xe0 #define MASK4_0 0xf0 #define MASK0_4 0x0f #define MASK1_1 0x81 ITU标志着CPU操作时钟的时间。而TIMER_CYCLE是在ITU0寄存器中设置一毫秒时间所需要的值,它将会被存放到变量ITU0_GRA(通用寄存器A)中,通过与ITU0_CNT(定时器计数器)进行比较来设定这1ms的时钟周期。ITU0_CNT好比时钟的秒针,每隔一段确定的时间间隔,其值就会增加1。它是一个标准值。此处,我们需要让它循环一次的时间为一毫秒。单片机上石英晶体的固有频率为,我们取其频率的1/8,则每一次计数的时间间隔T=1/f=325.52ns。由于我们要设置的时间为1ms,因此,需要3072次计数,即ITU0_CNT=3072时,结束一个循环周期。但是,根据ITU的标准执行程序,知道只有当“ITU0_CNT=ITU0_GRA+1”时,才产生一次中断,即经过一个时钟周期。因此,需要使ITU0_GRA=3071,也就是说TIMER_CYCLE=3071。PWM_CYCLE是控制PWM周期大小的变量,它被存放到ITU3_GRA(通用寄存器A)中,由于要加载到左马达、右马达和伺服舵机的PWM周期为16ms,而定时计数器ITU3_CNT与ITU3_GRA的标准关系为:当满足ITU3_CNT=ITU3_GRA+1的条件时,产生一次中断,ITU3_CNT(ITU3寄存器的定时计数器)循环一个周期,该周期即为PWM的周期值。而又知ITU3_CNT=49152。因此,需要使ITU3_GRA=49151,也就是说PWM_CYCLE=49151。变量SERVO_CENTER是在程序中控制伺服舵机面向前方(即:转角为0)的值。而上面提到,伺服舵机的PWM周期为16ms,当接通脉宽大约为1.5ms时,舵机面向正前方,所以变量SERVO_CENTER的值应该为。然而,由于伺服舵机在生产过程中受各种因素的影响,不可能使每一个舵机的中心值均与理想值相同。因此,要使舵机在转角值恰为中心值SERVO_CENTER时,面向正前方,还需要对理论值进行调试校正。经过调试后,将该值取为4585。HANDLE_STEP是舵机旋转1度时,程序中与之对应的舵机转角值应增大或减小的幅度。对于伺服舵机而言,PWM的接通脉宽为2.3ms时舵机向右旋转90度,程序中与之对应的转角值为;PWM的接通脉宽为0.7ms时舵机向左旋转90度,程序中与之对应的转角值为。两值之差4915即为舵机旋转180度时要改变的程控值。因此,舵机旋转1度要改变的程控值为27。然而此处变量HANDLE_STEP的值定义为26,是为了保持其兼容性。MASK2_0是一个十六进制的值,它标志着对传感器输入状态的限制。其意义为:传感器基板上的左侧4个传感器中的两个传感器输出值和右侧4个传感器中的0个传感器输出值可以被正常使用,其余的全部被掩盖,值为0。MASK2_0定义为:传感器基板上除了第6、5位的输出值可以正常使用外,其余各位的输出值均被“0”覆盖。同理,MASK2_2定义为:传感器基板上除了第6、5、2、1位的输出值可以被正常使用外,其余各位的输出值均被“0”覆盖。MASK0_2定义为:传感器基板上除了第2、1位的输出值可以被正常使用外,其余各位的输出值均被“0”覆盖。MASK3_3定义为:传感器基板上除了第7、6、5、2、1、0位的输出值可以被正常使用外,其余各位的输出值均被“0”覆盖。MASK0_3定义为:传感器基板上除了第2、1、0位的输出值可以被正常使用外,其余各位的输出值均被“0”覆盖。MASK3_0定义为:传感器基板上除了第7、6、5位的输出值可以被正常使用外,其余各位的输出值均被“0”覆盖。MASK4_0定义为:传感器基板上除了第7、6、5、4位的输出值可以被正常使用外,其余各位的输出值均被“0”覆盖。MASK0_4定义为:传感器基板上除了第3、2、1、0位的输出值可以被正常使用外,其余各位的输出值均被“0”覆盖。MASK1_1定义为:传感器基板上除第7、0位的输出值可以被正常使用外,其余各位的输出值均被“0”覆盖。为简化程序的设计结构,程序中还用到一些函数。这里,对这些函数的具体内容及作用作简单介绍。1) 位转换函数char unsigned bit_change( char unsigned in ) unsigned char ret; int i;for( i=0; i8; i+ ) ret=1; ret|=in0x80; in=1; return ret; 函数中,变量“in”是位转换前的8位二进制数值,变量ret是经过位转换后函数的返回值。该函数的功能是将8位二进制数的前后对称的二进制位两两互换。其实现过程如下:先将变量ret右移一位,使第7位为0,第0位消失。随后,对变量ret的第7位与输入变量in的第7位进行或操作,并将取或后的值存到前者中。由于ret的第7位通常为“0”。因此,或操作后,变量ret的第7位中存放的值就是输入参数in的第7位的值。最后,将变量in左移一位,结束一次循环。如此循环8次后,就能实现函数预定的位转换功能。2) 传感器状态读取函数unsigned char sensor_inp( unsigned char mask ) unsigned char sensor; sensor=P7DR; sensor=bit_change( sensor ); sensor=mask; return sensor; 因为传感器子基板的输出端与CPU主板的接口7相连,所以传感器值由接口7输入并将该值存放到变量sensor中。函数的输入参数mask可以限制传感器的输入状态,将制定的传感器位覆盖为“0”。由于如今的传感器基板的第0位在最左侧,第7位在最右侧(与之前的传感器基板相反),为了保持其兼容性,变量sensor中的值经过位转换后再次存储到sensor中。经过位转换后的传感器值与函数的输入参数mask进行与操作,最终就可得到需要的传感器状态值,并存放到变量sensor中,作为返回值。3) interrupt_timer0函数void interrupt_timer0( void ) ITU0_TSR = 0xfe; cnt0+; cnt1+;该函数通过中断产生1ms的时间间隔来执行,变量cnt0和cnt1的值分别增加1。由于interrupt_timer0函数执行一次需要1ms,因此可以通过检测主程序中cnt0或cnt1的值来测量所持续的时间。变量ITU0_TSR表示计时器状态寄存器,它与0xfe执行与操作,并将结果保存到前者中,相当于将ITU0_TSR的第0位置“0”。之所以要在函数中编写这一句,是因为当中断产生时ITU0_TSR的第0位可以自动地变为“1”,但是却不会再自动的由“1”变为“0”。因此要利用与操作使第0位置“0”,为下一次操作做准备。4) 等待计时器函数void timer( unsigned long timer_set ) cnt0=0; While( cnt0timer_set );改变函数输入参数timer_set的值,可以改变等待计时器的工作时间。例如:取输入参数timer_set的值为1000,全局变量cnt0首先被初始化为0,接着执行while语句,程序转到cnt0被操作的地方,由于执行interrupt_timer0函数而产生的1ms中断将使cnt0的值增加1。然后,再次执行while语句,如此往复循环,直至cnt0的值为1000时终止,最后可以得出等待计时器函数的工作时间为1000毫秒,即1s。5) 横白线检测函数int check_crossline( void ) unsignde char b; int ret; ret=0; b=sensor_inp( MASK2_2 ); if( b=0x66|b=0x64|b=0x26|b=0x62|b=0x46 ) ret=1; return ret;该函数为无参数函数,主要用来判断是否已经检测到直角弯道前具有提示作用的第一条横白线。如果检测到横白线,返回值为1。相反,如果没有检测到横白线,则返回值为0。函数中,首先将作为返回值的变量ret置0,认为没有检测到横白线。然后,读取经MASK2_2掩盖后的传感器状态,并将该状态值存入变量b中。也就是说,除了左侧中间两个和右侧中间两个传感器的数据能正常使用外,其余各位传感器输出值均被置为“0”。当变量b中传感器的输入状态满足if语句中列举的几种状态中的一种时,就可以认为已经检测到横白线,变量ret置为1。否则,变量ret仍为0,认为没有检测到横白线。6) DIP开关状态读取函数unsigned char dipsw_get( void ) unsigned char sw; sw = P6DR; sw = 0x0f; return sw;由于DIP开关与接口6相连,故从接口6读取数据。如果DIP开关关闭,则接口数据为“1”。如果DIP开关打开

温馨提示

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

评论

0/150

提交评论