基于飞思卡尔16位单片机电磁型智能小车的设计毕业设计论文.doc
本科毕业论文基于飞思卡尔16位单片机电磁型智能小车的设计BASED ON FREESCALE 16-BITMICROCONTROLLER SMART CAR DESIGN学院(部): 机械工程学院 专业班级: 机设09-12 2013年 月 日基于飞思卡尔16位单片机电磁型智能小车的设计摘要 本文是以飞思卡尔智能车竞赛为背景设计的一个智能小车运行系统。本系统是以飞思卡尔MC9S12XS128单片机为核心通过传感器识别道路的智能车控制系统。本文着重阐述了道路信息的获取,处理和识别过程,并设计出PID控制器,运用有效的控制算法对智能小车进行控制,使智能小车能准确快速地对道路进行跟踪。该系统通过光电传感器获取当前道路信息,通过有效的数字图像处理算法对原始图像进行处理,对主要的有用信息进行分析和提取。在智能小车运动的控制中,对小车的转向和速度采用PID控制算法,控制表来对智能小车进行转向和速度控制。关键词:单片机,智能小车,PID控制算法Based on Freescale 16-bit microcontroller smart car designAbstractIt is based on freescale intelligence car competition as the background design of a smart car running system in this article. This system is based on freescale MC9S12XS128 single-chip microcomputer as the core through the sensors to identify road intelligent car control system.The article focuses on the acquisition,processing and recognition of the target path information.The Fuzzy controller using an effective controlling algorithm for intelligent vehicle control makes the smart car track the road fast and accurate.With the CCD camera the system obtains the current road information and deal with the original image,the main useful analysis and information extraction through effective digital image processing algorithms.According to the motion rules of the intelligent vehicle,fuzzy control algorithm and fuzzy PID algorithm can be applied to control the steering and speed of the intelligent vehicle separately.Fuzzy control rules can be generated according to the requirement of the path tracking,which is followed by the generation of the fuzzy control table,then the steering and motion speed of the intelligent vehicle can be regulated after querying the fuzzy control tableaccording to the path information which is already inquired.KEYWORDS:mcu, smart car , PID,目录摘要(中文)I摘要(外文)II1、绪论11.1 智能汽车赛事概况11.2 课题研究现状11.3 本课题的研究内容22、智能车原理32.1 直立行走任务分解32.2 车模直立控制42.3 车模速度控制82.4 车模方向控制102.4.1 道路电磁中心线的偏差检测102.4.2 电机差动控制102.5 车模倾角测量112.5.1 加速度传感器112.5.2 角速度传感器-陀螺仪123、智能车硬件设计与软件设计163.1智能车硬件设计163.1.1 整体电路框图163.1.2 单片机最小系统173.1.3 倾角传感器电路193.1.4 电机驱动电路203.1.5 速度传感器213.1.6 电磁线检测电路223.2智能车软件设计243.2.1 软件功能与框架243.2.2 单片机资源配置273.2.3 主要算法及其实现283.2.4 程序调试与参数整定364、智能车机械设计374.1 车模简化改装374.2 传感器安装384.2.1速度传感器安装384.2.2电磁传感器安装394.2.3车模倾角传感器404.3 注意事项40结论42附录 程序代码43参考文献48致谢491、绪论1.1 智能汽车赛事概况“飞思卡尔杯”全国大学生智能汽车竞赛是由教育部高等学校自动化专业教学指导分委员会主办,飞思卡尔半导体公司协办的全国性的比赛;全国大学生智能汽车竞赛是在统一汽车模型平台上,使用飞思卡尔半导体公司的8位、16位微控制器作为核心控制模块,通过增加道路传感器、设计电机驱动电路、编写相应软件以及装配模型车,制作一个能够自主识别道路的模型汽车,按照规定路线行进,以完成时间最短者为优胜。与以往的专业竞赛不同,智能汽车竞赛是以快速发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科交叉的科技创新比赛,己经成为各高校展示科研成果和学生实践能力的重要途径,同时也为社会选拔优秀的创新人才提供了重要平台。1.2 课题研究现状智能车辆作为智能交通系统的关键技术,是许多高新技术综合集成的载体。智能车辆驾驶是一种通用性术语,指全部或部分完成一项或多项驾驶任务的综合车辆技术。智能车辆的一个基本特征是在一定道路条件下实现全部或者部分的自动驾驶功能。智能车辆的研究始于20世纪50年代初,美国Barrett Electronics公司开发出的世界上第一台自动引导车辆系统(Automated Guided Vehicle System,AGVS)。1974年,瑞典的Volvo Kalmar轿车装配工厂与SchiinderDigitron公司合作,研制出一种可装载轿车车体的AGVS,并由多台该种AGVS组成了汽车装配线,从而取消了传统应用的拖车及叉车等运输工具。由于Kalmar工厂采用AGVS获得了明显的经济效益,许多西欧国家纷纷效仿Volvo公司,并逐步使AGVS在装配作业中成为一种流行的运输手段。中国第一汽车集团公司和国防科技大学机电工程与自动化学院于2003年7月研制成功我国第一辆自主驾驶轿车。该自主驾驶轿车在正常交通情况下,在高速公路上行驶的最高稳定速度为130公里/小时,最高峰值速度为170公里/小时,并且具有超车功能,其总体技术性能和指标已经达到世界先进水平。轿车自主驾驶的基本原理是仿人驾驶。车内的环境识别系统识别出道路状况,测量前方车辆的距离和相对速度,相当于驾驶员的眼睛;车载主控计算机和相应的路径规划软件根据计算机视觉提供的道路信息、车前车辆情况以及自身的行驶状态,决定是沿道路前进还是换道准备超车,相当于驾驶员的大脑;接着,自动驾驶控制软件按照需要跟踪的路径和汽车行驶动力学,向方向盘控制器、油门控制器和刹车控制器发出动作指令,操纵汽车按规划好的路径前进,起到驾驶员的手和脚的作用。1.3 本课题的研究内容本课题的主要研究内容包括:(1)竞赛用智能赛车系统的总体设计,围绕智能赛车系统要求,从而确定了控制系统的硬件设计和软件设计方案。(2)机械结构的调整与完成,对智能汽车车模进行了结构改造,完成了定位参数的优化、车辆重心位置的调整、转向舵机的力臂的改造以及齿轮传动机构的调整等。(3)控制系统的硬件设计与完成,从电源模块设计开始,完成道路信息采集模块、速度测量模块、驱动控制模块、故障诊断模块及串口模块等的设计。(4)控制系统软件的设计及实现,从单片机的功能入手完成系统各个模块的设计,根据所选用的硬件,完成赛车信息的算法和车体的控制算法。2、智能车控制原理2.1 直立行走任务分解电磁组比赛要求车模在直立的状态下以两个轮子着地沿着赛道进行比赛,相比四轮着地状态,车模控制任务更为复杂。为了能够方便找到解决问题的办法,首先将复杂的问题分解成简单的问题进行讨论。为了分析方便,根据比赛规则,假设维持车模直立、运行的动力都来自于车模的两个后车轮,后轮转动由两个直流电机驱动。因此从控制角度来看,由控制车模两个电机旋转方向及速度实现对车模的控制。车模运动控制任务可以分解成以下三个基本任务:(1) 控制车模直立:通过控制两个电机正反向运动保持车模直立状态;(2) 控制车模速度:通过控制两个电机转速速度实现车模行进控制;(3) 控制车模转向:通过控制两个电机之间的转动差速实现车模转向控制。以上三个任务都是通过控制车模两个后轮驱动电机完成的。可以假设车模的电机可以虚拟地被拆解成三个不同功能的驱动电机,它们同轴相连,分别控制车模的直立平衡、前进行走、左右转向,如图2.1 所示。图 2.1 车模运动控制分解示意图直流电机的力矩最终来自于电机驱动电压产生的电流。因此只要电机处于线性状态,上述拆解可以等效成三种不同控制目标的电压叠加之后,施加在电机上。在上述三个任务中保持车模直立是关键。由于车模同时受到三种控制的影响,从车模直立控制的角度,其它两个控制就成为它的干扰。因此在速度、方向控制的时候,应该尽量平滑,以减少对于直立控制的干扰。三者之间的配合如图2.2 所示。图2.2 三层控制之间相互配合,底层尽量减少多上层的干扰上述三个控制各自独立进行控制,它们各自假设其它两个控制都已经达到稳定。比如速度控制时,假设车模已经在直立控制下保持了直立稳定,通过改变电机的电压控制车模加速和减速。车模在加速和减速的时候,直立控制一直在起作用,它会自动改变车模的倾角,移动车模的重心,使得车模实现加速和减速。下面分别讨论三个任务的实现原理。2.2 车模直立控制控制车模直立的直观经验来自于杂技表演。一般的人通过简单练习就可以让一个直木棒在手指尖上保持直立。这需要两个条件:一个是托着木棒的手掌可以移动;另一个是眼睛可以观察到木棒的倾斜角度和倾斜趋势(角加速度)。通过手掌移动抵消木棒的倾斜角度和趋势,从而保持木棒的直立。这两个条件缺一不可,实际上就是控制中的负反馈机制,参见图2.3。世界上还没有任何一个天才杂技演员可以蒙着眼睛使得木棒在自己手指上直立,因为没有了负反馈。图2.3 通过反馈保持木棒的直立车模直立也是通过负反馈实现的。但相对于上面的木棒直立相对简单。因为车模有两个轮子着地,因此车体只会在轮子滚动的方向上发生倾斜。控制轮子转动,抵消倾斜的趋势便可以保持车体直立了。如图2.4 所示。 图 2.4 通过车轮运动控制保持车体直立那么车轮如何运行,才能够最终保持车体垂直稳定?为了回答这个问题,一般的做法需要建立车模的运动学和动力学数学模型,通过设计最优控制来保证车模的稳定。为了使得同学们能够比较清楚理解其中的物理过程。下面通过对比单摆模型来说明保持车模稳定的控制规律。重力场中使用细线悬挂着重物经过简化便形成理想化的单摆模型。直立着的车模可以看成放置在可以左右移动平台上的倒立着的单摆。如图2.5 所示。图 2.5 车模可以简化成倒立的单摆普通的单摆受力分析如图 2.6 所示图2.6 普通单摆受力分析当物体离开垂直的平衡位置之后,便会受到重力与悬线的作用合力,驱动重物回复平衡位置。这个力称之为回复力,其大小为F = -mg sin -mg在此回复力作用下,单摆便进行周期运动。在空气中运动的单摆,由于受到空气的阻尼力,单摆最终会停止在垂直平衡位置。空气的阻尼力与单摆运行速度成正比,方向相反。阻尼力越大,单摆越会尽快在垂直位置稳定下来。图2.7 显示出不同阻尼系数下,单摆的运动曲线。图2.7 单摆在不同阻尼下的运动情况总结单摆能够稳定在垂直位置的条件有两个:(1) 受到与位移(角度)相反的恢复力;(2) 受到与运动速度相反的阻尼力。如果没有阻尼力,单摆会在垂直位置左右摆动。阻尼力会使得单摆最终停止在垂直位置。阻尼力过小(欠阻尼)会使得单摆产生震荡,阻尼力过大(过阻尼)会使得单摆到达平衡位置时间拉长。存在一个阻尼临界阻尼系数,使得单摆最快稳定在平衡位置。为什么倒立摆在垂直位置时,在受到外部扰动的情况下,无法保持稳定呢?分析倒立摆的受力,如图2.8 所示。 图 2.8 在车轮上参照系中车体受力分析倒立摆之所以不能象单摆一样可以稳定在垂直位置,就是因为在它偏离平衡位置的时候,所受到的回复力与位移方向相同,而不是相反!因此,倒立摆便会加速偏离垂直位置,直到倒下。如何通过控制使得倒立摆能够像单摆一样,稳定在垂直位置呢?要达到这一目的,只有两个办法:一个是改变重力的方向;另一个是增加额外的受力,使得恢复力与位移方向相反才行。由此,能够做的显然只有第二种方式。控制倒立摆底部车轮,使得它作加速运动。这样站在小车上(非惯性系)看倒立摆,它就会受到额外的力(惯性力),该力与车轮的加速度方向相反,大小成正比。这样倒立摆所受到的回复力为F = mg sin - ma mg - mk1 (2-1)式中,假设控制车轮加速度与偏角成正比,比例为k1。显然,如果k1 > g,(g是重力加速度)那么回复力的方向便于位移方向相反了。此外,为了使得倒立摆能够尽快地在垂直位置稳定下来,还需要增加阻尼力,与偏角的速度成正比,方向相反。因此式(2-1)可变为F = mg - mk1 - mk2 (2-2)按照上面的控制方法,可把倒立摆模型变为单摆模型,能够稳定在垂直位置。因此,可得控制车轮加速度的控制算法 a=k1 +k2 (2-3)式中, 为车模倾角;为角速度;k1、k2均为比例系数;两项相加后作为车轮加速度的控制量。只要保证在k1 >g, k2 >0 条件下,可以维持车模直立状态。其中, k1决定了车模是否能够稳定到垂直位置,它必须大于重力加速度;k2 决定了车模回到垂直位置的阻尼系数,选取合适的阻尼系数可以保证车模尽快稳定在垂直位置。因此控制车模稳定,需要下列两个条件:(1)能够精确测量车模倾角 的大小和角速度的大小;(2)可以控制车轮的加速度。2.3 车模速度控制车模运行速度是通过控制车轮速度实现的,车轮通过车模两个后轮电机经由减速齿轮箱驱动,因此通过控制电机转速可以实现对车轮的运动控制。电机的运动控制有三个作用:(1) 通过电机加速度控制实现车模直立稳定。(2)通过电机速度控制,实现车模恒速运行和静止。(3)通过电机差速控制,可以实现车模方向控制。电机运动控制是通过改变施加在其上的驱动电压实现的。对于电机的电磁模型、动力学模型以及车模的动力学模型进行分析和简化,可以将电机运动模型简化成如下的一阶惯性环节模型。施加在电机上一个阶跃电压Eu(t),电机的速度变化曲线为(t)=Ekm(1-e-t/T1)u(t) (2-4)式中,E为电压;u(t)为单位阶跃函数;T1为惯性环节时间常数;km为电机转速常数。对应不同的电压,电机的速度变化曲线如图 2.9 所示。 图 2.9 电机在不同电压下的速度由图 2.9 可以看出,电机运动明显分为两个阶段:第一个阶段是加速阶段;第二个阶段为恒速阶段。其中,在加速阶段,电机带动车模后轮进行加速运动,加速度近似和施加在电机上的电压成正比,加速阶段的时间长度取决于时间常数T1,该常数由电机转动惯量、减速齿轮箱、车模的转动惯量决定;在恒速阶段,电机带动车模后轮进行恒速运行,运行速度与施加在电机上的电压成正比。调整车模直立时间常数很小,此时电机基本上运行在加速阶段。由上一节式(2-3)计算所得到的加速度控制量a再乘以一个比例系数,即为施加在电机上的控制电压,这样便可以控制车模保持直立状态。车模运行速度调整时间相对很长,此时,电机速度与施加在其上的电压成正比。通过传统的PID 反馈控制,便可以精确控制电机的运行速度,从而控制车模的运行速度。电机速度控制需要测量电机的转速,电机旋转速度可以通过安装在电机输出轴上的光电编码盘方便获得。如图2.10 所示。 图2.10 电机速度监测利用控制单片机的计数器测量在固定时间间隔内速度脉冲信号的个数可以测量电机的转速。对于电机速度 PID 控制方法如图2.11 所示。图2.11 电机PI反馈控制 电机速度控制采用了 PI 调节器,具体实现可以通过单片机软件编程实现。2.4 车模方向控制2.4.1 道路电磁中心线的偏差检测道路电磁中心线检测简单的方法可以通过安装在车模前方的两个电磁感应线圈实现。线圈一般采用10mH 的工字型电感。2.4.2 电机差动控制利用电磁线偏差检测信号分别与车模速度控制信号进行加和减,形成左右轮差动控制电压,使得车模左右轮运行角速度不一致进而控制车模方向。如图2.12所示。图2.12 通过差动控制左右电机驱动电压控制车模方向通过左右电机速度差驱动车模转向消除车模偏差,这个过程是一个积分过程。因此车模差动控制一般只需要进行简单的比例控制就可以完成车模方向控制。2.5 车模倾角测量通过测量车模的倾角和倾角加速度控制车模车轮的加速度来消除车模的倾角。因此车模倾角以及倾角加速度的测量成为控制车模直立的关键。测量车模倾角和倾角加速度可以通过加速度传感器和陀螺仪实现。2.5.1 加速度传感器加速度传感器可以测量由地球引力作用或者物体运动所产生的加速度。加速度传感器采用飞思卡尔公司生产的加速度传感器。该系列的传感器采用了半导体表面微机械加工和集成电路技术,传感器体积小,重量轻。基本原理如图2.13图2.13 加速度传感器通过微机械加工技术在硅片上加工形成了一个机械悬臂。它与相邻的电极形成了两个电容。由于加速度使得机械悬臂与两个电极之间的距离发生变化,从而改变了两个电容的参数。通过集成的开关电容放大电路量测电容参数的变化,形成了与加速度成正比的电压输出。MMA7260 是一款三轴低g 半导体加速度计,可以同时输出三个方向上的加速度模拟信号,如图2.14 所示。图2.14 三轴加速度传感器通过设置可以使得 MMA7260 最大输出灵敏度为800mV/g。只需要测量其中一个方向上的加速度值,就可以计算出车模倾角,比如使用Z 轴方向上的加速度信号。车模直立时,固定加速度器在Z 轴水平方向,此时输出信号为零偏电压信号。当车模发生倾斜时,重力加速度g 便会在Z 轴方向形成加速度分量,从而引起该轴输出电压变化。变化的规律为u = kg sin式中,g为重力加速度; 为车模倾角;k为比例系数。当倾比较小的时候,输出电压的变化可以近似与倾角成正比。只需要加速度就可以获得车模的倾角,再对此信号进行微分便可以获得倾角加速度。但在实际车模运行过程中,由于车模本身的运动所产生的加速度会产生很大的干扰信号叠加在上述测量信号上,使得输出信号无法准确反映车模的倾角,如图2.15所示。 图 2.15 车模运动引起加速度计信号波动车模运动产生的振动加速度使得输出电压在实际倾角电压附近波动,可以通过数据平滑滤波将其滤除。但是平滑滤波也会使得信号无法实时反映车模倾角的变化,从而减缓对于车模车轮控制,使得车模无法保持平衡。因此对于车模直立控制所需要的倾角信息需要通过另外一种器件获得,那就是角速度传感器-陀螺仪。2.5.2 角速度传感器-陀螺仪陀螺仪可以用来测量物体的旋转角速度。选用EN-03 系列的加速度传感器。它利用了旋转坐标系中的物体会受到克里利奥力的原理,在器件中利用压电陶瓷做成振动单元。当旋转器件时会改变振动频率从而反映出物体旋转的角速度。在车模上安装陀螺仪,可以测量车模倾斜的角速度,将角速度信号进行积分便可以得到车模的倾角。如图2.16所示。图2.16 测量车模角速度和角度由于陀螺仪输出的是车模的角速度,不会受到车体振动影响。因此该信号中噪声很小。车模的角度又是通过对角速度积分而得,这可进一步平滑信号,从而使得角度信号更加稳定。因此车模控制所需要的角度和角速度可以使用陀螺仪所得到的信号。由于从陀螺仪的角速度获得角度信息,需要经过积分运算。如果角速度信号存在微小的偏差,经过积分运算之后,变化形成积累误差。这个误差会随着时间延长逐步增加,最终导致电路饱和,无法形成正确的角度信号,如图2.17 所示。图2.17 角度积分漂移 对于积累误差的消除,可以通过上面的加速度传感器获得的角度信息对此进行校正,如图 2.18所示。图2.18 角度积分漂移校正利用加速度计所获得的角度信息g与陀螺仪积分后的角度进行比较,将比较的误差信号经过比例Tg放大之后与陀螺仪输出的角速度信号叠加之后再进行积分。从图2.18中的框图可以看出,对于加速度计给定的角度g,经过比例、积分环节之后产生的角度必然最终等于g 。由于加速度计获得的角度信息不会存在积累误差,所以最终将输出角度中的积累误差消除了。加速度计所产生的角度信息g 中会叠加很强的有车模运动加速度噪声信号。为了避免该信号对于角度的影响,因此比例系数Tg应该非常小。这样,加速度的噪声信号经过比例、积分后,在输出角度信息中就会非常小了。由于存在积分环节,所以无论比例Tg多么小,最终输出角度必然与加速度计测量的角度g相等,只是这个调节过程会随着Tg的减小而延长。为了避免输出角度跟着g过长,可以采取以下两个方面的措施:(1)仔细调整陀螺仪的放大电路,使得它的零点偏置尽量接近于设定值,并且稳定。(2)在控制电路和程序运行的开始,尽量保持车模处于直立状态,这样一开始就使得输出角度与g相等。此后,加速度计的输出只是消除积分的偏移,输出角度不会出现很大的偏差。2.6 车模直立行走控制算法总图将车模直立行走主要的控制算法集中起来,形成控制算法总框图,如图2.19图2.19 车模运动控制总框图 为了实现车模直立行走,需要采集如下信号:(1) 车模陀螺仪信号;(2) 车模加速度计信号(z 轴信号);(3) 车模电机转速脉冲信号;(4) 车模电磁偏差信号(两路)。需要进行如下控制环节,控制车模电机转动:(1)车模直立控制:使用车模倾角的PD(比例、微分)控制;(2)车模速度控制:使用PI(比例、积分)控制;(3)车模方向控制:使用P(比例)控制。可通过单片机软件实现上述控制算法。车模的三种控制(直立、速度、方向)最终是将控制量叠加在一起作为电机输出电压控制量。直立控制是基础,它的调整速度非常快,速度和方向控制相对调整速度慢。速度和方向控制的输出量是直接叠加在电机控制电压上。它们假定直立控制会始终保持车模不跌倒,直立控制会自动调节车模的倾角以适应车模的加速、减速和转弯的需要。车模加速前进时,由速度控制算法给出电机增加的正向电压,电机开始逐步加速旋转。在此同时,车模直立控制会迅速进行调整,使得车模往前倾斜,车模开始加速。当车模速度达到设定值,由车模速到控制算法使得电机进入恒速运行。此时车模直立控制算法也会相应调整车模出于直立状态,车模恒速运行。车模减速过程与此类似,由速度控制算法减少了电机的电压,电机开始减速运行。直立控制算法会自动调整车模往后倾斜,使得车模减速。车模转向控制是在车速控制基础之上,调节两个电机驱动电压差使得电机运行速度出现差动,进而调整车模的方向。3、智能车硬件设计与软件设计3.1智能车硬件设计3.1.1 整体电路框图设计车模控制系统的电路,首先需要分析系统的输入、输出信号,然后选择合适的核心控制嵌入式计算机(单片机),逐步设计各个电路子模块,最后形成完整的控制电路。系统的输入输出包括:(1) AD 转换接口(至少4 路) a) 电磁监测:左右两路,用于测量左右两个感应线圈电压。 b) 陀螺仪:一路,测量陀螺仪输出电压。 c) 加速度计:一路,测量加速度 Z 轴输出电压。 d) 辅助调试:(备用)1 到3 路,用于车模调试、设置作用。(2) PWM 接口(4 路) a) 控制左右两个电极双方向运行,需要四路 PWM 接口。(3) 定时器接口(2 路) a) 测量两个电机转速,需要两个定时器脉冲输入端口。(4) 通讯接口(备用) a) SCI(UART):一路,用于程序下载和调试接口; b) I2C:(备用)如果选择飞思卡尔公司的数字加速度计,可以通过I2C 接口直接读取加速度值。 (5) IO 接口(备用) 4 到8 路输入输出,应用车模运行状态显示,功能设置等。整体电路框图如图3.1图3.1 整体电路框图根据图 3.1,控制电路划分为如下子模块:(1) 单片机最小系统:包括DSC 处理器,程序下载调试接口等; (2) 电磁线检测:包括两路相同的电磁感应信号放大与检波电路; (3) 陀螺仪与加速度计:包括两个姿态传感器信号放大滤波电路; (4) 速度检测:检测电机光电码盘脉冲频率; (5) 电机驱动:驱动两个电极运行电路; (6) 电源:电源电压转换、稳压、滤波电路; (7) 设置与调试:显示系统运行状态、速度设定、程序下载与监控。3.1.2 单片机最小系统单片机选择MC9S12XS128。主要外设包括(1)PWM 6 通道;(2)AD 6 通道,12bit;(3)定时器,16bit,4 通道;(4)外部串行接口:SCI,I2C,SPI;(5)IO 口:最多可以提供26 路。单片机的最小系统电路如图 3.2所示。图3.2 单片机最小系统电路(1) 模拟量检测接口 a) ANA0(PIN12):陀螺仪电压; b) ANA1(PIN11):加速度计电压; c) ANB0(PIN5):右侧电感检波电压; d) ANB1(PIN6):左侧电感检波电压。(2) 电机转速脉冲接口 a) T0(PIN19):右侧电机光电码盘脉冲; b) T2(PIN22):左侧电机光电码盘脉冲。(3) 电机PWM 驱动接口 a) PWM0-3(PIN23,24,28,29):电机驱动。(4) 程序下载调试JTEG 接口 a) TDI(PIN30); b) TDO(PIN32); c) TMS(PIN31); d) TCK(PIN14); e) /RESET(PIN15)。(5) 串口监控UART 接口: a) RXD(PIN1); b) TXD(PIN3)。没有使用的 IO 和模拟量口作状态显示、运行设置以及辅助调试作用。3.1.3 倾角传感器电路车模倾角传感器电路主要是将陀螺仪信号进行放大滤波。由于加速度传感器采用是低g 值的传感器MMA7260,它的输出信号非常大,不需要再进行放大。电路图如图3.3所示。图3.3 陀螺计、加速度计电路图 3.3 中,将陀螺仪的输出信号放大了10 倍左右,并将零点偏置电压调整到工作电源的一半(1.65V)左右。放大倍数需要根据选取的传感器输出灵敏度设计。将上述电路单独制作成小的电路板,可以比较方便放置在车模的最稳定的位置。实际的电路图如图3.4所示。图 3.4 传感器电路3.1.4 电机驱动电路车模有两个后轮驱动电机,需要两组电机驱动桥电路。图3.5选用了两片33886芯片组成电机驱动电路。图3.5 电机驱动电路为提高电源的应用效率,驱动电机的PWM 波形采用单极性的驱动方式。如图3.6所示。图 3.6单极性PWM、双极性PWM因此每一路电机为了能够实现正反转,都需要两个PWM 信号。两个电机总共需4路PWM 信号。具体实现的驱动电路如图3.7所示。图 3.7 两片33886 组成的电机驱动电路为了防止电机输出电流对于电源的冲击,在电路板的电源输入(7.2V)端口并联了一个1000 微法的电容。3.1.5 速度传感器电机速度传感器使用了固定在电机输出轴上的光码盘以及相互配合的光电对管器件,如图3.8所示。图 3.8速度传感器电路由于光电管器件直接输出数字脉冲信号,因此可以直接将这些脉冲信号连接到单片机的计数器端口。每个光电管输出两个脉冲信号,它们波形相同,只是相位相差90°。如果电机正转,第二个脉冲落后90°;如果电机反转,第二个脉冲超前90°。可以通过这个关系判断电机是否正反转。在实际电路中,只检测了一路脉冲信号。通过他的频率测量得到电机的转速。电机的转向是通过施加在电机上的电压正负进行判断的。通过实验验证这个方法可以有效判断电机的转动方向并进行速度控制。3.1.6 电磁线检测电路道路中心线的电磁线检测是保证车模能够运行在赛道上。电池检测电路图如图3.9图3.9电磁检测电路按该电路制作电路如图 3.10图3.10 电机检测电路板3.2智能车软件设计车模是否能够正常高速稳定运行,需要通过软件编写和调试来完成。软件编写与调试主要任务包括:(1)建立软件工程,配置单片机资源;(2)编写单片机软件程序框架,编写上位机监控软件,建立软件编译、下载、调试的环境;(3)实现并测试各个子模块的功能正确性;(3)逐步完成车模闭环控制,整定各个待定参数;(4)进行车模整体运行性能测试与提高。3.2.1 软件功能与框架软件的主要功能包括有:(1)车模运行状态检测;(2)电机PWM 输出;(3)车模运行控制:直立控制、速度控制、方向控制;(4)车模运行流程控制:程序初始化、车模启动与结束;(5)系统界面:状态显示、上位机监控、参数设定等。上述功能可以分成两大类:第一类包括 1-3 功能,它们属于需要精确时间周期执行,因此可以在一个周期定时中断里完成。第二类包括4-5 功能。它的执行不需要精确的时间周期。可以放在程序的主程序中完成。这两类任务之间可以通过全局变量实现相互的通讯。主程序框架如图 3.11 所示图3.11主程序框架图 3.11 中,程序上电运行后,便进行单片机的初始化。初始化的工作包括有两部分,一部分是对于单片机各个应用到的模块进行初始化。这部分的代码由CodeWarrior 集成环境的ProcessorExpert 工具生成。第二部分是应用程序初始化,是对于车模控制程序中应用到的变量值进行初始化。初始化完成后,首先进入车模直立检测子程序。该程序通过读取加速度计的数值判断车模是否处于直立状态。如果一旦处于直立状态则启动车模直立控制、方向控制以及速度控制。程序在主循环中不停发送监控数据,在通过串口发送到上位机进行监控。同时检查车模是否跌倒。跌倒判断可以通过车模倾角是否超过一定范围进行确定,或者通过安装在车模前后防撞支架上的微动开关来判断。一定车模跌倒,则停止车模运行。包括车模直立控制、速度控制以及方向控制。然后重新进入车模直立判断过程。车模的直立控制、速度控制以及方向控制都是在中断程序中完成。通过全局标志变量确定是否进行这些闭环控制。中断程序框架如图 3.1.2 所示。图 3.1.2 中断服务程序框架图 3.1.2 中,使用一个定时器,产生一毫秒的周期中断。中断服务程序的任务被均匀分配在0-4 的中断片段中。因此每个中断片段中的任务执行的频率为200Hz。将任务分配到不同的中断片段中,一方面防止这些任务累积执行时间超过 1 毫秒,扰乱一毫秒中断的时序,同时也考虑到这些任务之间的时间先后顺序。这些任务包括:(1)电机测速脉冲计数器读取与清除。累积电机转动角度。累积电机速度,为后面车模速度控制提供平均数;(2)启动AD 转换。由于AD 转换启动到完成需要一定时间。所以读取AD 转换在下一个时间片段中。(3)读取AD 转换值。这些值包括有陀螺仪、加速度计数值、电磁场检测电压值等。读取完毕之后,便进行车模直立控制过程。包括车模角度计算、直立控制计算、电机PWM 输出等。(4)车模速度控制:在这个时间片段中,又进行0-19 计数。在其中第0 片段中,进行速度PID 调节。因此,速度调节的周期为100 毫秒。也就是每秒钟调节10 次。(5)车模方向控制:根据前面读取的电磁场检波数值,计算偏差数值。然后计算电机差模控制电压数值。3.2.2 单片机资源配置1)毫秒定时中断:TI1硬件模块:TMR2_Compare中短周期:Period:1ms触发事件:Event:Interrupt2)电机输出控制:PWMC1硬件模块:PWM_Timer输出频率:Frequence:10Khz输出模式:PWM0,1,2,3 Independent死区时间:Dead Time:0 3)ADC 采集通道:ADC硬件模块:ANA0,1,ANB0,1数值范围:Range:0 - 0x7ff0转换时间:Conversion Time:1.594us采集模式:Mode: Sequency转换分辨率:Resolution:12bit4)电机测速脉冲计数器:Counter1硬件模块:TMR0计数范围:16bit信号触发沿:Rising Edge5)电机测速脉冲计数器:Counter2硬件模块:TMR1计数范围:16bit信号触发沿:Rising Edge6) 监控 UART 串口硬件模块 SCI通讯速率:Baud:117647(实际值)7)读取MMA8452Q 的I2C 总线(备用)硬件模块:I2C中断模式: