第八
光电
技术
报告
第八届“飞思卡尔”杯全国大学生 智能汽车竞赛 技技 术术 报报 告告 学 校:北京理工大学 队伍名称:光电一队 参赛队员:黄琨 王震 谢悦 带队教师:张幽彤 冬雷 第八届全国大学生智能汽车邀请赛 II 关于技术报告和研究论文使用授权的说明 本人完全了解第八届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:带队教师签名:日 期:第八届全国大学生智能汽车邀请赛 III 摘要摘要 本文介绍了北京理工大学光电一队智能车的整车设计方案,包括软硬件的设计以及一些调试方案。本文详细的介绍了车模机械结构的设计,传感器的选择与安装,电源电路、驱动电路、角度测量电路的设计,图像处理和控制策略分析及调试方法介绍等内容。该系统以飞思卡尔公司的 MC9S12XS128 单片机为控制核心,采用 AD 转换方法获取 CCD 采集信息以及角度测量信息,主要使用 PID 及模糊 PID 算法实现对车模直立、转向以及速度控制。经过大量底层和上层测试,实验结果表明,该方案运行稳定。关键词:智能车、MC9S12XS128、CCD、模糊、PID 第八届全国大学生智能汽车邀请赛 IV 目录目录 第一章第一章 引言引言.-1-1.1 研究背景研究背景.-1-1.2 章节安排章节安排.-2-第二章第二章 智能车整体方案设计智能车整体方案设计.-4-2.1 智能车系统分析智能车系统分析.-4-2.2 车模平衡控制车模平衡控制.-5-2.3 车模速度控制车模速度控制.-6-2.4 车模方向控制车模方向控制.-7-第三章第三章 机械结构设计说明机械结构设计说明.-8-3.1 重心位置及质量分布重心位置及质量分布.-8-3.2 编码器安装编码器安装.-9-3.3 CCD 安装安装.-10-3.4 电路板安装电路板安装.-10-第四章第四章 硬件系统设计硬件系统设计.-11-4.1 单片机最小系统单片机最小系统.-11-4.2 主板电路设计主板电路设计.-13-第八届全国大学生智能汽车邀请赛 V 4.3 角度测量模块角度测量模块.-13-4.4 电源模块电源模块.-13-4.5 电机驱动模块电机驱动模块.-15-4.6 测速模块测速模块.-16-4.7 现场调试模块现场调试模块.-17-第五章第五章 软件系统设计软件系统设计.-18-5.1 控制流程图控制流程图.-18-5.2 程序初始化程序初始化.-19-5.3 直立控制算法直立控制算法.-19-5.4 赛道识别赛道识别.-20-5.5 转向控制算法转向控制算法.-21-5.6 速度控制算法速度控制算法.-21-5.7 软件开发环境软件开发环境.-22-第六章第六章 智能车技术参数说明智能车技术参数说明.-24-总结总结.-25-致谢致谢.-26-参考文献参考文献.-27-第八届全国大学生智能汽车邀请赛 -1-第一章 引言 1.1 研究背景 教育部为了加强大学生实践、创新能力和团队精神的培养,在已举办全国大学生数学建模、电子设计、机械设计、结构设计等大竞赛的基础上,经研究决定,委托教育部高等学校自动化教学指导分委会主办每年一度的全国大学生智能汽车竞赛,并成立了由教育部、自动化分教指委、清华大学、飞思卡尔半导体公司等单位领导及专家组成的“第一届 飞思卡尔 杯全国大学生智能汽车邀请赛”组委会。该竞赛是为了提高大学生的动手能力和创新能力而举办的,具有重大的现实意义。与其它大赛不同的是,这个大赛的综合性很强,是以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感、电子、电气、计算机和机械等多学科交叉的科技创意性比赛,这对进一步深化高等工程教育改革,培养本新意识,培养硕士从事科学、技术研究能力,培养博士生知识、技术创新能力具有重要意义。以智能汽车为研究背景的科技创意性制作,是一种具有探索性的工程实践活动,其本质也是人类创造有用人工物的一种训练性实践,其过程属性是综合,而结果属性很可能是创造。通过竞赛,参赛的同学们培养了对已学过的基础与专业理论知识与实验的综合运用的能力;带着背景对象中的各种新问题,学习控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科新知识,包括来自不同学科背景大学生的相互学习,逐渐学会了在学科交叉、集成基础上的综合运用;若是以实用为目的,还必须考虑考虑可靠性、寿命、外观工业设计、集成科学与非科学,在具体约束条件下融合形成整体的综合运用。这样的训练是很有意义的。第八届全国大学生智能汽车邀请赛 -2-在智能车的开发过程中,各参赛队伍需要改装竞赛车模,完成智能巡线小车的制作。在此过程中需要学习嵌入式系统开发环境与在线编程方法、单片机接口电路设计,自行设计实现识别引导黑线的硬件电路、电机的驱动电路、车速反馈电路、智能车舵机控制电路及能使小车在不驶出赛道的前提下尽可能快速行驶的控制策略与软件算法。飞思卡尔智能车竞赛到目前为止已经成功组织了七届,在赛制、规则、组别的不断改进中,增加了比赛的观赏性、技术性和实用性。智能车的开发与设计涉及到多个专业领域,对于大学生综合素质的培养,知识面的拓展和分析问题解决问题的能力的提高很有意义,并且有利于提高大学生的动手能力、激发创新能力。此外,制作这样一个高性能智能小车的过程,也是需要同组成员相互协作、紧密配合的过程,在此过程中,团队成员的交流与合作也显得尤为重要。为了进一步提高全国大学生智能汽车竞赛创新性和趣味性,激发高校学生参与比赛的兴趣,提高学生的动手能力、创新能力和接受挑战能力,智能汽车竞赛组委会在去年电磁组直立行走的基础上规定今年光电平衡组车模直立行走。这项新的改动带来挑战的同时也给我们带来了新的动力。1.2 章节安排 第一章引言:主要介绍研究背景及智能车比赛的发展历程与竞赛内容,并介绍本组别规则产生的较大变化。第二章整体方案设计:简要叙述直立智能车的运行原理,并将整体控制任务进行分解,分模块介绍相关控制原理。第八届全国大学生智能汽车邀请赛 -3-第三章机械机构设计说明:主要介绍了对原有车模进行的改装,针对重心位置及质量分布所做的机械改造,并简要介绍车上硬件的安装方法。第四章硬件系统设计:以功能为依据,分模块对智能车电路进行介绍,并简述在制作及调试过程中遇到的相关问题及解决办法。第五章软件系统设计:根据控制任务分解,简单介绍相关算法实现,并介绍软件开发环境。第六章开发与调试:主要讲述智能车调试过程,以及在调试过程中遇到的主要问题及解决方法。第七章智能车技术参数说明:对最终制作完成的智能车主要技术参数进行说明。第八章总结与展望:总结整个做车过程的感受与收获,并对现有的缺陷尽心分析,展望未来的发展之路。第八届全国大学生智能汽车邀请赛 -4-第二章 智能车整体方案设计 2.1 智能车系统分析 车模直立行走比赛是要求仿照两轮自平衡电动车的行进模式,让车模以两个后轮驱动进行直立行走。近年来,两轮自平衡电动车以其行走灵活、便利、节能等特点得到了很大的发展。国内外有很多这方面的研究,也有相应的产品。在去年电磁组直立的基础之上,今年利用 D 型车模双后轮驱动的特点,实现两轮自平衡行走。由于在直立行走过程中,维持车模直立、运行与转向的动力全部都来自于后车轮。后轮转动由两个直流电机驱动。因此从控制角度来看,车模作为一个控制对象,它的控制输入量是两个电机的转动速度。车模运动控制任务可以分解成以下三个基本控制任务:(1)控制车模平衡:通过控制两个电机正反向运动保持车模直立平衡状态;(2)控制车模速度:通过调节车模的倾角来实现车模速度控制,实际上最后还是 演变成通过控制电机的转速来实现车轮速度的控制。(3)控制车模方向:通过控制两个电机之间的转动差速实现车模转向控制。三个分解后的任务各自独立进行控制。由于最终都是对同一个控制对象(车模的电机)进行控制,所以它们之间存在着耦合。为了方便分析,在分析其中之一时假设其它控制对象都已经达到稳定。比如在速度控制时,需要车模已经能够保持直立控制;在方向控制的时候,需要车模能够保持平衡和速度恒定;同样,在车模平衡控制时,也需要速度和方向控制也已经达到平稳。这三个任务中保持车模平衡是关键。由于车模同时受到三种控制的影响,从第八届全国大学生智能汽车邀请赛 -5-车模平衡控制的角度来看,其它两个控制就成为它的干扰。因此对车模速度、方向的控制应该尽量保持平滑,以减少对于平衡控制的干扰。以速度调节为例,需要通过改变车模平衡控制中车模倾角设定值,从而改变车模实际倾斜角度。为了避免影响车模平衡控制,这个车模倾角的改变需要非常缓慢的进行。2.2 车模平衡控制 车模平衡控制是通过负反馈来实现的。因为车模有两个轮子着地,车体只会在轮子滚动的方向上发生倾斜。控制轮子转动,抵消在一个维度上倾斜的趋势便可以保持车体平衡了。如图 2.2.1 所示。图 2.2.1 通过车轮运动控制保持车体直立 下面对倒立车模进行简单数学建模,然后建立速度的比例微分负反馈控制,根据基本控制理论讨论车模通过闭环控制保持稳定的条件。假设倒立车模简化成高度为 L,质量为 m 的简单倒立摆,它放置在可以左右移动的车轮上。假设外力干扰引起车模产生角加速度 x(t)。沿着垂直于车模地盘方向进行受力分析,可以得到车模倾角与车轮运动加速度以及外力干扰加速 a(t)以及外力干扰加速度 x(t)之间的运动方程。如图 2.2.2 所示。第八届全国大学生智能汽车邀请赛 -6-图 2.2.2 车模运动方程 车模引入比例、微分控制之后的系统框图如图 2.2.3 所示:图 2.2.3 加入比例微分反馈后的系统框图 其中 k1,k2 分别为比例与微分控制参数。其中微分参数相当于阻尼力,可以有效抑制车模荡。因此,车模的平衡控制可以简化为测量车模的倾角和倾角速度控制车模车轮的加速度来消除车模的倾角。2.3 车模速度控制 对于直立车模速度的控制相对于普通车模的速度控制则比较复杂。由于在速度控制过程中需要始终保持车模的平衡,因此车模速度控制不能够直接通过改第八届全国大学生智能汽车邀请赛 -7-变电机转速来实现。在直立控制下的车模速度与车模倾角之间传递函数具有非最小相位特性,在反馈控制下容易造成系统的不稳定性。最终经过相关计算及简化,确定速度角度控制方案如图 2.3.1 所示:图 2.3.1 速度控制方案 2.4 车模方向控制 在方向控制中,采用线性 CCD 对赛道信息进行采集,经过相关处理之后,计算得方向偏差。以此作为方向控制的输入量。通过左右电机速度差驱动车模转向消除车模距离道路中心的偏差。通过调整车模的方向,再加上车前行运动,可以逐步消除车模距离中心线的距离差别。这个过程是一个积分过程,因此车模差动控制一般只需要进行简单的比例控制就可以完成车模方向控制。但是由于车模本身安装有电池等比较重的物体,具有很大的转动惯量,在调整过程中会出现车模转向过冲现象,如果不加以抑制,会使得车模冲出赛道。根据前面角度和速度控制的经验,为了消除车模方向控制中的过冲,需要增加微分控制。要实现微分控制,可以使用一个竖直放置的陀螺仪来测量角速度。但是考虑到电路设计的简单性原则,最终通过对方向偏差进行差分来实现微分控制。第八届全国大学生智能汽车邀请赛 -8-第三章 机械结构设计说明 3.1 重心位置及质量分布 根据倒立摆原理分析可知,车模重心越低,越有利于保持平衡。为此,电池等质量较重不部件的安装应该慎之又慎,在可接受的范围只能全部往最低的位置安放,使车模重心尽可能的降低。同时考虑杠杆原理,将电池向后延伸,使车模倾角更大,底盘部分的重心降的更低。在去年电磁直立车的基础上,为了进一步提高比赛的趣味性,同时也为了考验参赛车模的抗干扰能力,今年的比赛规则中添加了障碍区。这对直立车来说确实是一个很大的挑战。当车模运行时,在遇到障碍的瞬间,相当于底端突然加上一个很大的外力,破坏原有平衡。在这种情况下,合理的质量分布将尽可能的增大车模以车轴为轴的转动惯量,使车模的平衡不容易被干扰。经过综合考虑,我们最终的机械结构整体设计如图 3.1.1 所示:图 3.1.1 车模整体结构 第八届全国大学生智能汽车邀请赛 -9-3.2 编码器安装 编码器作为车摸速度测量模块,其安装的合理程度将影响最终的速度反馈。在保持对称的基础上,调节编码器的位置,保证编码器齿轮与电机齿轮的合理啮合程度,防止打齿或增大阻力等弊端。其安装位置如下:图 3.2.1 光电编码器 第八届全国大学生智能汽车邀请赛 -10-3.3 CCD 安装 在整体机械结构的基础上,CCD 的安装位置也稍作改变。同时为保证其稳固性,加装两根较细碳纤维杆作为支架。其安装如下:图 3.3.1 线性 CCD 3.4 电路板安装 为保证合理的质量分布,驱动板安装如图 3.3.2 所示:图 3.4.1 驱动板 第八届全国大学生智能汽车邀请赛 -11-尽量降低角度测量模块高度,减小车体抖动对角度测量的影响。第四章 硬件系统设计 本方案的电路设计采用模块化的设计思想。这种情况下可以有效地防止因为某一种电路的损坏而使得整个 PCB 板子无法利用的结果,同时还可以有计划的排列各个模块板子的位置,使得小车的重心更加的合适,更加的优化。4.1 单片机最小系统 以 MC9S12XS128 为核心的单片机系统的硬件电路设计主要包括以下几个部分:时钟电路、电源电路、复位电路、BDM 接口 1。其中各个部分的功能如下:1、时钟电路给单片机提供一个外接的 16MHz 的石英晶振。2、电源电路主要是给单片机提供 5V 电源。3、复位电路在电压达到正常值时给单片机一个复位信号。4、BDM 接口让用户可以通过 BDM 头向单片机下载和调试程序。如图 4.1.1,本系统采用的是标准的 MC9S12 系列单片机的时钟电路,通过把一个 16MHz 的外部晶振接在单片机的外部晶振输入接口 EXTAL 和 XTA L 上,然后利用 MC9S12XS128 内部的压控振荡器和锁相环(PLL)把这个频率提高到 32MHz,作为单片机工作的内部总线时钟。第八届全国大学生智能汽车邀请赛 -12-4.1.1 外部振荡电路 图 4.1.2 是 PLL 模块的滤波电路,VDDPLL 引脚由单片机内部提供 2.5 V电压。其中 C24、C25 和 R2 的值是根据晶振、REFDV 寄存器和 SYNR 寄存器计算得出的。XFC 实际上是压控振荡器(VCO)的电压控制端,通过锁相环电路编程,以数字方式锁定 VCO 的控制端电压。如果不加如图的滤波器,或电容、电阻的值取得不合适,VCO 的控制端电压就会抖动,使整个系统工作不正常。图 4.1.2 PLL 的滤波电路 MC9S1 2 系列的单片机内部使 用 3 V 电压,I/O 端口和外部供电电压 为 5V。如图 4.1.3,L4、C31、C32 和 C34 构成的滤波电路可以改善系统的电磁兼容性,降低系统对电源的高频干扰。为了显示系统已经通电,在此加入指示灯电路,电阻 R10 是限流电阻。第八届全国大学生智能汽车邀请赛 -13-图 4.1.3 电源电路 BD M 接口是 接 BD M 调试工具,它是向 MC9S12XS12 8 单片机下载程序用的。它直接利用单片机所提供的专用引脚 BKGD 即可实现。4.2 主板电路设计 主板电路主要包括单片机最小系统、各供电模块、信息采集模块、以及用于现场调试的操作与现实模块。在尽可能密集分布的基础之上,隔离电源线路与信号线路,减少对信号的干扰。4.3 角度测量模块 在角度测量模块中,由于采用加速度计与陀螺仪相融合的方案进行角度测量,所以在电路设计中,将加速度计与陀螺仪相关电路单独设计为一块电路板,便于安装位置的调整。4.4 电源模块 在各部分电路电源中,整个电路的核心单片机的供电放在首位,首先应保证他电源供给的安全稳定。查阅单片机数据手册,其供电电压为 3.3V,而大赛提供的电源额定电压为 7.2V,实际充满电后电压则为 8.0-8.5V。因此需要一个降压芯片为 S12 芯片供电。第八届全国大学生智能汽车邀请赛 -14-比较常见的是线性稳压芯片 7805。虽然这种线性稳压器具有输出电压恒定或可 调、稳压精度高的优点,但是由于其线性调整工作方式在工作中会造成较大的“热损失”(其值为 V 压降I 负荷),导致其电源利用率不高、工作效率低下,不易达到便携式设备对低功耗的要求。由于其高压差因素,如果使用 7805,那么还应该考虑电源散热问题,使得整个系统的设计复杂且不能保证系统的有效工作时间。与线性稳压器件相比,开关电源调节器以完全导通或关断的方式工作,通过控制开关管的导通与截止时间,有效的减少工作中的“热损失”,保证了较高的电源利用率。开关管的高频通断特性以及串联滤波电感的使用对来自于电源的高频干扰具有较强的抑制作用。同时由于其低功耗特点,在进行电路板设计时,可以减少散热片的体积和 PCB 板的面积,有时甚至不需要加装散热片,方便了电路设计与使用。基于此,我们采用了 LM2596 为单片机供电,主要部分如图 4.4.1 所示:图 4.4.1 单片机供电电路 第八届全国大学生智能汽车邀请赛 -15-4.5 电机驱动模块 电机驱动电路,采用全桥驱动电路作为电机的驱动。主要是因其控制简单,并且驱动能力较强。通过对驱动芯片输出电流、加速、制动时间、稳定性能、发热情况等性能进行比较,最终选择 BTS7970 作为电机驱动芯片。使用四片BTS7970 搭成两个全桥电路对电机进行控制。芯片 加速性能 减速性能 稳定性 内阻 效率 MC33886 一般 一般 好 120m 低 BTS7960 好 好 好 16 m 高 BTS7970 很好 很好 好 16 m 很高 控制电路如图 4.5.1 所示:图 4.5.1 电机驱动电路 第八届全国大学生智能汽车邀请赛 -16-4.6 测速模块 经过多次试验,初期速度传感器选用了光电对射型的 GK122,使用光电码盘进 行速度检测。这种检测方式安装简单,电路轻便,使用电源为 5V,非常适合在类似的模型上使用,但缺点为检测精度不高,稳定性不好,容易出现丢齿漏齿现象,大大影响了整个系统的调速平滑性。后期经过修改测试,为了提高检测精度,最后确定为使用精度较高的光电编码器,光电编码器使用 5V 电源,输出相位相差 90 的两相 5%-85%VCC 的方波信号。这种测试方式电路较为简单,不需要增加外围电路,而且精度较高。图 4.6.1 光电编码器 第八届全国大学生智能汽车邀请赛 -17-由于所采用的 MC9S12XS128 内部仅有一个计数器,所以,使用 CD4520(二进制加法计数器)对一路编码器输出进行计数,并采用 HD74LS74 触发器对速度方向进行判别。4.7 现场调试模块 由于赛道情况各有不同,弯道、直道数量个不相等,赛道摩擦力情况不同等,所以必须能在不改变程序的前提下进行参数的调整,经过综合考虑,最终选择了拨码开关配合 LED 显示的形式,由开关分别进行参数选择和速度控制。此模块较为简单,不再赘述。图 4.7.1 现场调试模块 第八届全国大学生智能汽车邀请赛 -18-第五章 软件系统设计 5.1 控制流程图 本系统主要操作主要在中断程序中完成,按照先后顺序将不同的任务分在不同的时段去完成。整体框图如图 5.1.1 所示:图 5.1.1 控制流程 第八届全国大学生智能汽车邀请赛 -19-5.2 程序初始化 程序开始运行后,在进入功能循环之前首先要对很多参数进行初始化,以便在后面的程序中才能正确调用,芯片的许多功能都需要初始化才能正常工作。初始化一般没有先后顺序,但一般有一定的书写习惯,本程序按照以下流程初始化,流程图如图 5.2.1 所示:图 5.2.1 初始化流程 5.3 直立控制算法 直立控制算法按照第二章中 2.2 车模平衡控制中介绍的方案按进行控制。为避免在障碍区时速度控制对平衡造成过多干扰,对角度设定值限幅。速度控制框图如图 5.3.1 所示:第八届全国大学生智能汽车邀请赛 -20-图 5.3.1 角度控制算法 5.4 赛道识别 赛道识别选用大赛规定的线性 CCD(TSL1401)来实现。对线性 CCD 采集的线性信息进行二值化处理,应用排线算法计算车体与赛道的偏差距离,应用转向算法处理,最终将赛道信息体现到车体方向的控制。图 5.4.1 线性 CCD 模块 第八届全国大学生智能汽车邀请赛 -21-由于使用固定曝光时间,当光线强度变化时会对线性 CCD 采集到的信息造成干扰。未避免满曝光导致判断失误,我们采用较简单的动态阈值算法,使用当前最高亮度值乘以比例系数作为本次采集信息的阈值进行道路判断。经实验表明,本方案算法简单且效果较好。5.5 转向控制算法 车模转向控制利用 CCD 采集的信息处理之后,以左右黑线的误差值作为转向控制量。在转向控制中,我们应用了增量式 PD 算法,在快速跟随的基础之上克服车模本身的惯性,提高对急弯等难度较大弯道的应对能力。为了减少对直立控制的影响,对差速输出进行滤波,将控制变化量分散在多个控制周期,使其输出更为和缓。nValue=MotorDiffNew-MotorDiffOld;nValue=nValue*(DirectionControlPeriod)/(DIRECTION_CONTROL_PERIOD-1)+MotorDiffOld;MotorLeftRightDiff=nValue;5.6 速度控制算法 速度控制周期为 100 毫秒。读取两个光电编码器的脉冲进行累加,利用 100毫秒的脉冲数量可以反映车模的电机的转速。车模速度采用两个电机速度的平均值。由于直立控制系统的特性,速度最终由车模倾角控制。即以反馈速度为基础计算得到控制量,反相加载在电机上,改变车模倾角,最终达到速度控制的目的。第八届全国大学生智能汽车邀请赛 -22-图 5.6.1 速度控制算法 5.7 软件开发环境 此次智能车大赛的软件开发平台为 Metroworks 公司的 Code Warrior 5.2开发软件。其使用界面如图 5.7.1 所示:图 5.7.1CodeWarrior 操作界面 第八届全国大学生智能汽车邀请赛 -23-CodeWarrior 的功能非常强大,可用于绝大部分单片机、嵌入式系统的开发。用户可在新建工程时将芯片的类库添加到集成环境开发环境中,工程文件一旦生成就是一个最小系统,用户无需再进行繁琐的初始化操作,就能直接在工程中添加所需的程序代码。如图 5.4 所示,利用 CodeWarrior 4.6 和 BDM,用户可以进行一系列的调试工作,如监视寄存器状态、修改 PC 指针、设置断点等,这样能快速地帮助我们找到软件或硬件的问题。图 5.7.2CodeWarrior 调试界面 图 5.7.3 BDM 除开发软件之外,在调试的过程中,为了更好的反应车模信息采集与处理过第八届全国大学生智能汽车邀请赛 -24-程以及相关参数的变化情况,针对不同的信息反映需求,分别使用了拉普兰德电子技术的“CCD 调试助手”及程序匠人的“串口猎人”等调试工具。第六章 智能车技术参数说明 项目 参数 路径检测方法(赛题组)光电平衡组 车模尺寸(长,宽,高)(毫米)485,245,273 电容总容量(微法)1600 传感器种类及个数 陀螺仪*1、加速度计*1、光电编码器*2、CCD*1 赛道信息检测频率(次/秒)100 主要集成电路种类/数量 MC9S12XS128*1 车模重量(千克)1.2 第八届全国大学生智能汽车邀请赛 -25-总结 经过近一年的努力,我们最终完成了光电平衡智能车的制作与调试。现在总结整个做车流程及方案设计等方面,综合考虑,我们的智能车具有以下特色:(1)在本系统中,巧妙地使用迭代滤波和逻辑滤波,减少了检测误差,同时提高了小车运动的精度。(2)在机械上精心设计,增大了整个车模的倾角,实现了模块化的电路设计,在重心的调节上更加方便。(3)在连接件上,自行设计,由加工厂代工制造了机械加工零件,提高了安装精度,使得小车安装简洁、美观。尽管我们作了很大的努力,但是由于时间紧迫以及缺乏经验等原因,本系统仍然存在着一些问题,主要有以下几点:(1)由于车模的模块化电路管理,在小车上出现连线不稳,易松动的情况。(2)为了提高车模直立的抗扰动能力,尽量均匀分布质量,降低车模重心,导致车模转动惯量较大,对转向造成一定的影响。(3)路径检测传感器 CCD 的安装不稳固,由于路径检测的需求与整体车模结构导致 CCD 只能架空安装,即使额外使用了支架进行加固仍然很容易随车体抖动,增大了路径检测的误差。第八届全国大学生智能汽车邀请赛 -26-致谢 首先要感谢学校教务处的各位老师对我们的大力支持,以及指导老师张幽彤和冬雷对我们的悉心指导,在本方案的设计过程中,老师经常询问进度和鼓励我们,使我们有信心面对各种困难和挑战,顺利的完成了对模型车的制作和调试。特别是冬雷老师,经常观看校内比赛,并且对于我们当时出现的电机上的问题等费心为我们想办法,为我们的制作和参赛保驾护航。同时还要感谢在此过程中帮助过我们的老师。在此谨向各位老师致以崇高的敬意和衷心的感谢。此外还要感谢在设计和调试期间得到的友队和师兄们的支持,是你们的支持使我们能够顺利完成本次竞赛。最后要感谢本次大赛的各位评委,能够在百忙之中抽出宝贵的时间,对 我们的模型车方案进行评定并提出非常宝贵的改进建议。第八届全国大学生智能汽车邀请赛 -27-参考文献 1 卓晴,黄开胜,邵贝贝,学做智能车M.北京:北京航天航空出版社,2007 2 卓晴,黄开胜,邵贝贝等学做智能车挑战“飞思卡尔”杯M 北京:北京航 空航天大学出版社,2007.3 3 孙同景.Freescale 9S12 十六位单片机原理及嵌入式开发技术.北京:机械工业出版社,2008.5 4 张幽彤,陈宝江汽车电子技术原理及应用M北京:北京理工大学出版社,2006 5 孙浩,程磊,黄卫华.基于 HCS12 的小车智能控制系统设计及机械调整方法J.单片机 与嵌入式系统应用,2007,3:5157 6张宇河,董宁 计算机控制系统北京:北京理工大学出版社,2002 7 李庆常 模拟电子技术基础 北京:机械工业出版社,2007 8 王美玲 数字电子技术基础 北京:机械工业出版社,2010 9 张伟等 Protel DXP 高级应用 M 北京.人民邮电出版社 2002 第八届全国大学生智能汽车邀请赛 -28-附录 Main 函数:#include#include derivative.h#include init.h#include CCD.h/*定时变量*/unsigned char TimeMode,JS,HJ,BZ;unsigned int hfMSecond,Second,Minute,StartDelay;/*CARSUB 变量*/int i,j;float SpeedControlIntegral;char CarState,SpeedStrategy,StartWay,Sign,EventCount,BalanceSet;/标志位声明 unsigned char CCD_READ_PERIOD,SpeedControlCount,SpeedControlPeriod,DirectionControlCount,DirectionControlPeriod,Speed;int InputVoltage2;long InputVoltageSum2;int LeftMotorPulse,RightMotorPulse,LeftMotorPulseSigma,RightMotorPulseSigma;float AngleControlOut,LeftMotorOut,RightMotorOut;float CarSpeed,CarSpeedSet,CarSpeedOld;float LeftMotorSpeed,RightMotorSpeed;float CarAngle,GravityAngle,GyroscopeAngleSpeed,GyroscopeAngleIntegral;第八届全国大学生智能汽车邀请赛 -29-float CarAngleSet,CarAngleSet1,CarAngleSet2;long GyroSum,AccSum;float MotorLeftRightDiff,MotorDiffNew,MotorDiffOld;char M_Diff_CalcuOld,M_Diff_CalcuNew,Path_Dir,Path_DirD,DirDD;float T1,T2,TRO;/*速度控制*/float Speederr0,Speederr1,Speederr2;float CarAngleSetNew,CarAngleSetOld;float SpeedGoal,SpeedChange;float CarSpeedOld0,CarSpeedOld1,CarSpeedOld2;/*控制参数*/float GYROSCOPE_ANGLE_RATIO=0.052,GRAVITY_ADJUST_TIME_CONSTANT=1.5;int GYROSCOPE_OFFSET=1620,GRAVITY_OFFSET=2630;/float CAR_SPEED_P=0.018,CAR_SPEED_I=0.0002,CAR_SPEED_D=0.0007;/10号晚 float CAR_SPEED_P=8.5,CAR_SPEED_I=0.12,CAR_SPEED_D=0.15;/华北赛/float CAR_SPEED_P=8,CAR_SPEED_I=0.1725,CAR_SPEED_D=0;/10 号晚/float CAR_SPEED_P=0,CAR_SPEED_I=0,CAR_SPEED_D=0;/华北赛 float ANGLE_CONTROL_P=170,ANGLE_CONTROL_D=45;/原车 第八届全国大学生智能汽车邀请赛 -30-float DIR_P=7,DIR_I=0,DIR_D=55,DIR_P1=0;/210/float DIR_P=0,DIR_I=0,DIR_D=0,DIR_P1=0;/210 /*数码管显示*/char Fig_flag=0;char Figures4;char FigureTable15=0 xFA,0 x42,0 x79,0 x5B,0 xC3,0 x9B,0 xBB,0 x52,0 xFB,0 xDB,0Xcd,0X22,0X34,0X00,0 x01;/段选 char FigureTurnTable4=0 x2D,0 x2E,0 x2B,0 x27;/位选 char FigureDP=0 x10;/*路径判别*/int straight_time,nonstraight_time,Path_S,Path_T;char PathState,PathState_last=TURN,SEND,SendChar,Diff;unsigned char CCD1Data128=0;unsigned char CCD2Data128=0;unsigned char Max1,Max2;int Dir,DirD;/*主程序*/void main(void)第八届全国大学生智能汽车邀请赛 -31-PLL_init();PIT_init();/定时器中断初始化,也可以改成实时中断 PWM_init();AD_init();TIM_init();GPIO_init();EnableInterrupts;for(;)#pragma CODE_SEG _NEAR_SEG NON_BANKED /预编译指令 void interrupt 66 PIT0Interrupt(void)/PIT 中断,中断号 66,查询中断号可以搜索 MC9S12XS128.h,Interrupt PORTK_PK5=0;DisableInterrupts;/关闭中断,宏定义 EventCount+;DirectionControlPeriod+;CalculateMotorLeftRightDiff();TimeControl();/计算当前运行时间并设置时间模式 TimeMode(屏蔽内容)第八届全国大学生智能汽车邀请赛 -32-if(Second=StartDelay)Stop();/起跑线延时检测停车 MotorSpeedSet();/根据初始化和时间模式设置目标速度 (屏蔽内容)/下面是在三个中断里分别控制三个对象;/变量的宏定义可以在各个头文件中查找;if(EventCount=CONTROL_PERIOD)EventCount=0;for(i=0;iInputVoltageCount;i+)ReadAD();GetADValue();GetMotorPulse();/获取编码器脉冲,即电机转速 SpeedControlCount+;/速度控制计数,每个 100 个周期控制一次速度,这样做的目的是防止频繁变速不利于平衡稳定 if(SpeedControlCount=SPEED_CONTROL_COUNT)/车速控制 SpeedControl();SpeedControlCount=0;AngleSetOut();/速度控制量的输出 第八届全国大学生智能汽车邀请赛 -33-else if(EventCount=1)AngleCalculate();AngleControl();/角度控制量输出,为输出到电机的 PWM 占空比 MotorOutput();/电机 PWM 输出,差动 else if(EventCount=2)/路径检测部分,ReadCCD();CarDirectionControl();DirectionControlPeriod=0;CarStateShow();/数码管显示 PITTF_PTF0=1;EnableInterrupts;