温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
技术
报告
湖南大学
电磁
致知队
第八届“飞思卡尔”杯全国大学生智能汽车竞赛技 术 报 告学校:湖南大学队伍名称:致知队参赛队员:刘洪剑石岩杰欧阳高带队老师:黎福海何敏全国大学生智能汽车邀请赛技术报告关于技术报告和研究论文使用授权的说明关于技术报告和研究论文使用授权的说明本人完全了解第八届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:带队教师签名:日期:目目录录目目录录第一章 引 言.11.1 智能车研究背景.11.1.1 发展历史.11.1.2智能车的应用前景.11.2 飞思卡尔智能小车以及基本原理.2第二章 智能汽车整体设计.32.1 电磁车体系结构设计.32.2 系统整体程序流程图.4第三章 硬件设计.53.1 最小系统电路设计.53.2 传感器选择.63.3 信号放大电路设计.63.4 起跑线检测.73.5 电机驱动电路的设计.73.6 运放供电&主芯片供电等.83.7 舵机驱动电路的设计.83.8 编码器电路的设计.93.9OLED 显示&按键模块.103.10 小结.10第四章 机械结构调整.114.1 舵机的安装.114.2 编码器的安装.124.3 前轮定位.124.4 底盘调整.144.5 传感器安装.144.6 差速机构的调整.14第五章 软件系统设计.155.1 电磁感应原理.155.2 检测方案.165.3 电感布局.175.4 舵机 P 控制.185.5 电机 PID 控制.195.5.1 电机增量式 PID 原理.195.5.2 速度控制策略.20第六章 调试模块与环境.206.1 开发工具.206.2 调试过程.216.2.1 无线串口.216.2.2 速度采集软件.21第七章 车模的各项技术参数.22第八章 结论.23参考文献.24附录 A:.25全国大学生智能汽车邀请赛技术报告摘要本文设计的智能车系统以 MC9SXS128 微处理器为核心控制单元,通过电感LC 谐振电路感应赛道中心线磁场的大小获取赛道信息,得到中心引导线,通过线性拟合分析赛道各项参数,进行舵机转向,电机速度 PID 调节控制。整个系统涉及车模机械结构调整、传感器电路设计及信号处理、控制算法和策略优化等多个方面。为了提高模型车的速度和稳定性,使用 labview 上位机、MATLAB 数据处理,Flash、键盘模块,OLED 显示屏等调试工具,进行了大量硬件与软件测试。实验结果表明,该系统设计方案确实可行。关键字:MC9SXS128,PID,MATLAB,路径控制第 1 页第一章 引 言1.1 智能车研究背景1.1.1 发展历史发展历史智能小车系统是迷你版的智能汽车,二者在信息提取,信息处理,控制策略及系统搭建上有很多相似之处,可以说智能小车系统将为智能汽车提供很好的试验和技术平台,推动智能汽车的发展。摄像头作为很多智能汽车的信息输入的传感器具有其他很多传感器所不具有的优势,如对物体的特征提取,视野宽广等,因此基于摄像头的智能小车系统的研究将推动智能汽车的发展。智能汽车是未来汽车的发展方向,将在减少交通事故、发展自动化技术、提高舒适性等许多方面发挥很重要的作用;同时智能汽车是一个集通信技术,计算机技术,自动控制,信息融合技术,传感器技术等于一身的行业,它的发展势必促进其他行业的发展,在一定程度上代表了一个国家在自动化智能方面的水平。汽车在走过的 100 多年的历史中,从没停止过智能化的步伐,进入 20 世纪 90年代以来,随着汽车市场竞争激烈程度的日益加剧和智能运输系统(ITS)地兴起,国际上对于智能汽车及其相关技术的研究成为热门,一大批有实力有远见的大公司、大学和研究机构开展了这方面的研究。很多美国、日本和欧洲等国家都十分重视并积极发展智能车系统,并进行了相关实验,取得了很多成就。我国的相关研究也已经开展,清华大学成立了国内最早的研究智能汽车和智能交通的汽车研究所,在汽车导航、主动避撞、车载微机等方面进行了广泛而深入的研究,2000 年上海智能交通系统进入实质性实施阶段,国防科大研制出第四代无人驾驶汽车,西北工业大学、吉林交通大学、重庆大学等也展开了相关研究。这一新兴学科正在吸引越来越多的研究机构和学者投入其中。1.1.2智能车的应用前景智能车的应用前景智能车系统有着极为广泛的应用前景。结合传感器技术和自动驾驶技术可以实现汽车的自适应巡航并把车开得又快又稳、安全可靠;汽车夜间行驶时,如果装上红外摄像头,就能实现夜晚汽车的安全辅助驾驶;他也可以工作在仓库、码头、工厂或危险、有毒、有害的工作环境里,此外他还能担当起无人值守的巡逻监视、物料的运输、消防灭火等任务。在普通家庭轿车消费中,智能车的研发也是很有价值的,比如雾天能见度差,人工驾驶经常发生碰撞,如果用上这种设备,激光雷达会自动探测前方的障碍物,电脑会控制车辆自动停下来,撞车就不会发生了。全国大学生智能汽车邀请赛技术报告第 2 页1.2 飞思卡尔智能小车以及基本原理飞思卡尔智能小车利用传感器检测赛道中心线,获取小车位置,并提取赛道信息控制舵机,电机,以使得小车在赛道上完美快速运动。可以将小车体系结构大致大致分为包括传感器、控制、执行机构、人机接口和电源五大部分。1.传感器部分负责感知外部世界的环境信息和车模自身的状态信息,为小车完成赛道的检测与跟踪以及实现小车的运动控制提供所需的信息。2.控制部分分析传感器数据,提取赛道信息,运行控制算法,向执行机构发出动作信号,控制赛车沿赛道行驶。控制部分主体是MCU。3.执行机构负责执行动作信号,实现车的前进、变速和转向。执行机构包括电机驱动、电机和舵机。4.电源部分负责向各部分提供合适的电源,包括电池和稳压模块。第 3 页第二章 智能汽车整体设计2.1 电磁车体系结构设计根据需求分析,经过仔细研究,决定采用模块化设计。智能汽车的硬件系统由核心控制模块(MCU)、传感器模块、电源管理模块、电机驱动模块、舵机驱动模块、无线通讯模块、信号采集模块和调试模块组成。系统结构框图如图所示MC9S12XS128控制部分起始线检测编码器电池7.2V稳 压模 块按键蓝牙OLED 显示屏电源部分驱动电路舵机电机5V传感器图 2.1 系统框架图全国大学生智能汽车邀请赛技术报告第 4 页2.2 系统整体程序流程图软件开发是智能小车开发过程中的精髓部分,软件运行需要配置单片机各个模块寄存器数值,使单片机各个模块正常工作。初始化中包括:单片机时钟配置、I/O 口配置、PWM 模块配置、A/D 模块配置、RTI 实时中断配置、脉冲捕捉模块配置。当初始化完毕后,开始对传感器输入信号进行采样,当完成一次采样后将采样值输入控制算法,控制算法经过运算得到应该偏转的角度和速度,通过改变PWM 模块内部寄存器数值可以得到不同占空比的方波信号,实现对舵机和电机的调节。否是开始赛道信息检测数据处理舵机转角计算和速度计算各个模块初始化延时 2s 是否到读取赛道信息和编码器脉冲数控制舵机和电机停车停车中断申请图 2.2软件流程图第 5 页第三章 硬件设计要实现电磁车的功能,必须首先构建硬件平台。在导线中通以 20KHz 的交变电,需要通过传感器检测周围的磁场来确定导线相对小车的位置。特别是对MC9S12XS128 单片机对静电敏感,小车在磁场上奔跑很容易由于静电问题而导致小车冲出赛道流。3.1 最小系统电路设计主芯片我们采用的是 XS128,其内部有 16 通道 AD 采样转换通道,8 通道 PWM(可以双通道级联),脉冲累加器等等,对于电磁而言,其包含的各个模块足以满足使用。而且为了减轻小车的重量,以及增强电路的可靠性和稳定性,我们选择直接将芯片焊接在主电路板上,最小系统模块如下:图 3.1XS128 最小系统板电路图全国大学生智能汽车邀请赛技术报告第 6 页3.2传感器选择我们在传感器的方案上依然延续了之前很多人采用的传感器工字谐振电感。根据经验,挑选电感的时候要选择磁芯磁导率大的,电感圈数比较多的,等效内阻小的。综合考虑后选择10mH的工字电感。根据并联谐振电路的频率。带入频率可以得到电容大小。公式为f=1/LC2。其中L=10mH,得到C=6.33nF。图 3.2LC 谐振电路电感和电容的筛选和匹配对后续的采集工作非常重要,所以我们在一方面也做了很多的工作:我们购买了大量的电感和电容,然后从中进行筛选,并借助示波器观察谐振感应出来的波形,幅值大小,左右对称性等等。通过严格的筛选,确保传感器的一致性。为信号的采集奠定良好的基础。3.3 信号放大电路设计由于电磁传感器感应的原始信号幅度很弱,不便于对其进行采样分析,故需要先在采样前进行信号的放大。放大电路的设计我们选则了 OPA2340RAIL-TO-RAIL INPUT&RAIL-TO-RAIL OUTPUT,而且其温漂非常的低,在其典型应用中还特别提到:DRIVING A/D CONVERTERS(驱动 AD 转换器)。3.4 起跑线检测按照比赛规则,起跑线是6个按照一定间隔放置的磁钢(表面磁场强度3000到5000高斯)组成,而且磁钢的极性是随机放置的。我们选择用对磁场比较敏感的干簧管来对起跑线进行检测,这就避免了使用霍尔元件所考虑的极性问题。第三章硬件系统设计第 7 页而且干簧管不用供电,其一段接地,另一段接上拉的单片机I/O口,通过检测I/O的低电平触发中断,来判断是否为起跑线。3.5 电机驱动电路的设计电机驱动我们采用的是两个BTN7971B构成的全桥驱动电路:选择一路PWM对芯片进行使能控制,另外还需两路PWM可以对其进行正反转控制,电路原理非常简单,故不多赘述。图 3.5BTS7971 电机驱动芯片3.6 运放供电&主芯片供电等由于采集的电磁信号为模拟信号,而单片机及外围为数字信号,为避免二者之间的相互影响,我们采用两片 TPS76750 分别给单片机和运放模块进行供电,去除外围电路电流对单片机的扰动。单片机电源 5V 电源经过 3.3V 稳压后给 OLED及加速度计和陀螺仪供电。图 3.6系统供电电路全国大学生智能汽车邀请赛技术报告第 8 页3.7 舵机驱动电路的设计今年的电磁采用 A 车,其舵机型号为 Futaba S3010,供电电压范围在 4.06.0,我们采取折中值,选用 UCC383 提供舵机 5V 的电压,既保证了稳定性,又延长了舵机的使用寿命。除供电外,舵机还需要一路 PWM 进行控制,周期为20ms,为保证精确性,我们选用双通道 PWM 级联形成 16 位对舵机进行精确控制。图 3.7 舵机驱动模块3.8 编码器电路的设计编码器我们采用常用的欧姆龙 500 线的,用其中两根信号线用于电机的正反转速度检测。编码器的输出通过一个两输入端的施密特缓冲器,对脉冲进行一定的优化。然后再输入一个 DQ 触发器,其中一个信号接 CLK,另一个接数据端,由于编码器两相信号间的相位差,正反转时会使 DQ 触发器输出不同的电平,通过对此电平的检测便可知道电机是正转还是反转。测速仍然使用 XS128 的内部脉冲累加器(PT7),而且只需对上述一个信号进行捕捉即可。电路图比较简单,故不多赘述:图 3.8编码器硬件电路第三章 硬件系统设计第 9 页3.9 OLED 显示&按键模块为了方便调节参数以及速度档位等信息,我们特别添加一个 OLED 显示屏以及 5 个按键:按键用来调节速度参数等,OLED 用来直观的显示,如此便很直观的了解到程序运行,十分方便。3.10 小结对于硬件电路的设计,一定要经过理论研究,然后经过实际的长时间测试,稳定后,才可以应用。其抗干扰的能力要强,各个供电模块,要多加一些储能元件,保证供电系统的稳定性,尤其是运放的供电模块,过度的纹波会使检测出来的数值很不精确。同时,电路的 PCB 布局,一定要合理,数字与模拟信号模块一定要分开,各个模块单独划分。硬件是智能车的基础,只有把硬件做的扎实,才能保证后续工作的顺利进行。全国大学生智能汽车邀请赛技术报告第 10 页第四章机械结构调整4.1 舵机的安装比赛车模的转向是通过舵机带动左右横拉杆实现。舵机的转动速度和功率是一定,要想加快转向机构的响应速度,唯一的办法就是优化舵机的安装位置及其力矩延长杆的长度。由于功率是速度与力矩乘积的函数,过分追求速度,必然要损失力矩,力矩太小也会造成转向迟钝,因此设计时就要综合考虑转向机构响应速度与舵机力矩之间的关系,选取折衷方案。最后我们采用实验室现在主流的直立式安装,下面为其效果图。图 4.1 舵机的安装效果图4.2 编码器的安装编码器采用欧姆龙 500 线,体积比较大,安装过程中要尽量使其重心很低,同时编码器齿轮和电机齿轮契合的程度决定了测速性能的好坏。过松导致测速不准确,过紧不利于车体加速。安装方法:将编码器架好后,让电机空转,若电机发出比较浑浊的声音,说明电机运动吃力,齿轮间距太紧了,应该拧松点;若电机发出特别清脆刺耳的声音,说明电机咬力不紧,齿轮间距太松了,应该拧紧点,按照这种规律,调整齿轮,直至电机恰好吻合为止.4.3 前轮定位小车在调试过程中,转向轮定位参数是很重要的因素,它通常不易被察觉,但是却有着较大的危害。如果取得不恰当,那么将造成转向不灵活,效率低以及转向轮侧滑等问题,使得小车性能下降,加速轮胎的磨损。转向轮定位参数包括:主销内倾角、主销后倾角、转向轮外倾角及转向轮前第四章 机械结构调整第 11 页束。主销内倾是指主销装在前轴略向内倾斜的角度,它的作用是使前轮自动回正。角度越大前轮自动回正的作用就越强烈,但转向时也越费力,轮胎磨损增大;反之,角度越小前轮自动回正的作用就越弱。图4.3小车前轮主销示意主销后倾是指主销装在前轴,上端略向后倾斜的角度。它使车辆转弯时产生的离心力所形成的力矩方向与车轮偏转方向相反,迫使车轮偏转后自动恢复到原来的中间位置上。由此,主销后倾角越大,车速越高,前轮稳定性也愈好。主销内倾和主销后倾都有使汽车转向自动回正,保持直线行驶的功能。不同之处是主销内倾的回正与车速无关,主销后倾的回正与车速有关,因此高速时后倾的回正作用大,低速时内倾的回正作用大。前轮外倾角对汽车的转弯性能有直接影响,它的作用是提高前轮的转向安全性和转向操纵的轻便性。前轮外倾角俗称“外八字”,如果车轮垂直地面一旦满载就易产生变形,可能引起车轮上部向内倾侧,导致车轮联接件损坏。同时前轮外倾,在过弯是内侧转向轮转角更大,这样过弯能力更强,所以事先将车轮校偏一个外八字角度,这个角度约在1左右。所谓前束是指两轮之间的后距离数值与前距离数值之差,也指前轮中心线与纵向中心线的夹角。前轮前束的作用是保证汽车的行驶性能,减少轮胎的磨损。前轮在滚动时,其惯性力会自然将轮胎向内偏斜,如果前束适当,轮胎滚动时的偏斜方向就会抵消,轮胎内外侧磨损的现象会减少。在小车的调试过程中,我们发现不改变其他角度,仅将前轮前束调成 V 字形,即外八形,向外倾 1 度左右最为好。全国大学生智能汽车邀请赛技术报告第 12 页4.4 底盘调整在保证顺利通过坡道的前提下,底盘尽量降低,从整体上降低模型车的重心,可使模型车转弯时更加稳定、高速。4.5 传感器安装传感器的排布应兼顾很多方面,从赛道检测,算法控制,机械结构上都要进行考虑。从机械结构上考虑,支持电感的碳杆,会直接影响到车身重心位置,碳杆升的太长,容易使前轮过重,转向笨重,不利于转向;碳杆升的太短,对于控制来说,前瞻不够,也不利于转向,故我们选择折衷方案,选择把传感器架在小车前端的 40cm 左右,使用轻质的碳杆材料,放置三排传感器,距车身 10cm,20cm,40cm 排布.4.6 差速机构的调整差速机构的作用是在赛车转弯的时候,降低后轮与地面之间的滑动;并且还可以保证在轮胎抱死的情况下不会损害到电机。差速器有差速作用和限滑作用:差速作用使两轮可以相对转动,并使两轮转动速度的平均值等于整驱动轴的转动速度;限滑作用在两轮相对转动时产生阻力,以限制两轮速度差,防止其中一个轮子发生过度打滑和空转。在转弯的过程中,外侧轮的转弯半径大于内侧轮的转弯半径,所以外侧轮需要比内侧转的更快。如果这时差速过紧(限滑作用过大),造成两个轮子互相角力以使自己得到适当的转速,从而使总体抓地力下降。另一方面,如果差速比较松,当一个轮子失去抓地力的时候(比如通过一个起伏),会造成过度的空转,使另外一个轮子失去动力。这样会减少加速的反应。滚珠差速通常是由两块摩擦片,夹住装有差速珠的齿轮,并有调整压力的装置(弹簧/压力片和轴承)。在差速珠和摩擦片间涂有摩擦油。差速珠可以使摩擦片相对转动,而调整压力的装置和摩擦油可以控制差速珠在摩擦片上滚动时产生的阻力。对于滚珠差速来说,将差速拧紧,或者使用更浓的摩擦油,可以限制轮子相对转动;放松差速,或者使用更稀的摩擦油,可以使轮子更容易相对转动。一般来说,不宜使齿轮可相对于滚珠差速整体滑动,这样会损失动力,并且容易磨损差速珠和摩擦片。因此差速不能拧得过松。如果差速太紧,但齿轮仍能滑动,请更换更稀的摩擦油。第五章 软件系统设计第 13 页第五章 软件系统设计5.1 电磁感应原理根据麦克斯韦电磁场理论交变电流会在周围产生交变的电磁场。智能汽车竞赛使用路径导航的交流电流频率为20kHz,产生的电磁波属于甚低频(VLF)电磁波。甚低频频率范围处于工频和低频电磁波中间,为3kHz30kHz,波长为100km10km。电流周围的电磁场示意图如下:图5.1 电流周围电磁场示意图由于小车尺寸远远小于电磁波的波长,电磁场辐射能量很小(如果天线的长度远小于电磁波长,在施加交变电压后,电磁波辐射功率正比于天线长度的四次方),所以能够感应到电磁波的能量非常小。为此,可将导线周围变化的磁场近似缓变的磁场,按照检测静态磁场的方法获取导线周围的磁场分布,从而进行位置检测。由毕奥-萨法尔定理可知,空间任一点的磁感应强度可以看成是导线上电流元产生的磁场之和,即:aalIduBdB30*4对于智能车小车检测来说,我们将问题简化为通有稳恒电流I的无限长直导,其磁场分布可简化为:全国大学生智能汽车邀请赛技术报告第 14 页图5.1.2磁场分布示意图因垂直方向的距离为固定,只需要测试水平方向的距离,得出赛道偏移量。5.2 检测方案测量磁场的方法有很多,我们选择了原理简单、频率响应快、价格便宜的工字型电感线圈。由于导线周围的空间充满了交变的电磁场,我们可以在这个电磁场里放置一个电感线圈,电磁感应就会在线圈中产生交变的电流。当导线的电流按一定规律变化时,导线周围的磁场也随之发生变化,根据法拉第电磁感应定律,线圈中将感应出一定的电动势,电动势的大小可近似为:dtdIrkdttdE)(式中,r 为线圈到中心导线的距离,k 为常量。由上式子可知,在导线位置和导线中的电流固定的条件下,线圈中感应电动势是空间位置函数。因此我们就可以用电感线圈来作为电磁车的“眼睛”。第五章 软件系统设计第 15 页图 5.2 线圈感应电动势与导线导线水平位置5.3 电感布局我们使用一字型传感器的布局,最前方使用三个。如下图所示10cm10cm图 4.3 三点一线型使用三个传感器,一方面简化了电路,另一方面每个电感之间的距离比较远,相互产生的影响比较小。这种布局中,由于每个传感器的感应范围有限,因此我们在制作电路时,让每个传感器有信号输出的范围在左右 3cm,左右两个电感与中心电感的距离为 9cm。对于单独一个感应线圈,由图 2.7 可知感应电动势 E 与导线位置 x 是一个偶函数,它能够反映线圈与水平位置 x 的大小。因此,我们可以结合三个线圈的得出的位置量 x 来判断小车的具体位置。全国大学生智能汽车邀请赛技术报告第 16 页5.4 舵机 P 控制由于赛道宽度至少为 45cm,舵机转向控制存在比较大的安全裕度,不要很精确,所以舵机控制仅采用 P 控制就可以了。PWM_Servo=Kp*Center_error+PWM_center;PWM_Servo 为舵机控制量;Center_error 为赛道离车身中心位置的偏差;PWM_center 为舵机中心位置。在调试的过程中,我们发现,线性的 P 控制在慢速效果很好,当速度增大到2.5m/s 以上后,弯道存在转角不足,小车过弯速度严格受到限制,这大大影响速度。在组员的讨论在,我们了解到小车的转向模型,智能小车的控制应该是一个高度的非线性系统,表现在小车在直道时转向应很小,入弯的转向应非常灵敏,转向应在几个周期内很快达到转向最大,速度越快,转向就越灵敏,同时转向的控制也和车身此刻速度关联,最后,我们决定采用变化的 P 控制,偏差越小,P系数越小,偏差越大,P 系数越大,满足小车的转向模型。5.5 电机 PID 控制5.5.1 电机增量式电机增量式 PID 原理原理由于计算机的出现,计算机进入了控制领域。人们将模拟 PID 控制规律引入到计算机中来。对连续的 PID 控制规律进行适当的变换,就可以用软件实现 PID控制,即数字 PID 控制。由于计算机控制是一种采样控制,它只能根据采样时刻的偏差计算控制量,而不能像模拟控制那样连续输出控制量,进行连续控制。由于这一特点,连续 PID中的积分项和微分项不能直接使用,必须进行离散化处理。离散化处理的方法为:以T作为采样周期,k作为采样序号,则离散采样时间kT对应着连续时间t,用矩形法数值积分近似代替积分,用一阶后向差分近似代替微分。这样就将拟 PID控制演变为数字 PID 控制的增量式的 PID 控制,增量式 PID 控制算法可以通过公式 2 推导出。其算法公式如下:)2()(211nnndninnpneeeKeKeeKu第五章 软件系统设计第 17 页其中,nu为第 n 次输出增量;ne为第 n 次偏差;1ne为第 n1 次偏差;2ne为第 n2 次偏差。图 4.5.1增量式 PID 控制算法原理图5.5.2 速度控制策略速度控制策略在速度控制策略上,我们采用直道加速,入弯减速,出弯加速的控制策略。直道上高速行驶,入弯的过程减速,以给舵机转向缓冲时间,出弯又开始加速。速度的控制上,我们采用车身与赛道的偏差来作为速度控制策略,偏差越大,大致说明已经入弯,偏差变小,小车出弯,基本已经满足这一条件。电磁前瞻比较小,减速性能要求很高,所以考虑线性函数的减速效果在速度越高的情况已经不理想,故采用二次函数的模型进行减速,赛道出现一点点偏差,减速曲线不明显,偏差大到一定程度,减速期望曲线系数很大,最后在大量的调试下,基本满足要求。全国大学生智能汽车邀请赛技术报告第 18 页第六章 调试模块与环境6.1 开发工具程序的开发是在组委会提供的 CodeWarrior IDE 下进行的,包括源程序的写、编译和链接,并最终生成可执行文件。CodeWarrior for S12 是面向以 HC1 和 S12 为 CPU 的单片机嵌入式应用开发软件包。包括集成开发环境 IDE、处理器专家库、全芯片仿真、可视化参数显示工具、项目工程管理器、C 交叉编译器、汇编器、链接器以及调试器。6.2 调试过程在智能车系统的硬件和软件确定后,最后一个环节就是调试。有效的调试手段对我们及时地发现问题并解决问题极其重要。在调试过程中,我们需要借助调试工具来获取小车检测到的路面信息以及速度等参数,以便对算法进行针对性的分析。在调试中我们主要使用了一下几种工具。6.2.1 无线串口无线串口小车在行驶时,不能通过有线方式的来获得其参数,借助无线蓝牙,将小车在不同路况下的数据发回到PC机,是一种有效实用的调试手段。图6.2.1 无线蓝牙的实物图该模块的功能其实是跟有线的串口的功能一样,只是有无线的区别。利用无线蓝牙给我们的调试带来了很大的方便。通过串口调试软件,可以充分显传感器采集信号的原始数据,调试过程中的中心线位置,弯道的曲率,速度的瞬时值,及再现赛道的实际情况。第六章 调试模块与环境第 19 页6.2.2 速度采集软件速度采集软件由于电机调节我们采用增量式PID调节,好的PID参数自然能够使直流电机调节速度响应迅速。为此,我们在VC的环境下开发了一套基于PC机平台的速度采集软件。图6.2.2速度采集软件界面全国大学生智能汽车邀请赛技术报告第 20 页第七章 车模的各项技术参数类别参数车模总体重量(kg)1.4车长(mm)680车宽(mm)160电路功耗(W)4电容总量(uF)1600传感器型号及个数工型电感 7速度编码器 1陀螺仪 1干簧管 6附加伺服电机个数0赛道信息检测精度1cm信息检测频率100Hz第八章 结论第 21 页第八章 结论智能小车比赛是一个非常能够锻炼学生综合素质的一项比赛。做好一部小车,涉及方方面面的知识,小车良好的机械结构,小车运动的特性,即运动模型,小车良好电路设计,小车控制算法,小车调试模块和方法,以及作为学生时间上的付出等等,都是关键。全国大学生智能汽车邀请赛技术报告第 22 页参考文献1 卓晴,黄开胜,邵贝贝等.学做智能车挑战“飞思卡尔”杯M.北京航空航天大学出版社,2007 年.2 王开宜,曹金华.嵌入式系统设计实践-基于飞思卡尔 S12X 微处理器M.北京:北京航空航天大学出版社,2011.53 Freescale Semiconductor.MC9S12XS256RMV1 DatasheetS4 童诗白,华成英模拟电子技术基础M北京:高等教育出版社,20015 黄开胜,陈宋汽车理论与智能模型车机械结构调整方法D清华大学汽车安全与节能国家重点实验室,20066 孟德远,季明江,秦键.第六届“飞思卡尔杯”全国大学生智能汽车竞赛国防科技大学技术报告.EB/OL.http:,2011.87 陈晓波,陆永东,张华灵.第六届“飞思卡尔杯”全国大学生智能汽车竞赛广州技术师范学院技术报告.EB/OL.http:,2011.88 熊慧,魏翼鹰,黄加勇,陈华伟.基于图像识别的循迹车路径识别算法研究J.单片机与嵌入式系统应用.2009年,第3期9 李仕伯,马旭,卓晴.基于磁场检测的寻线小车传感器布局研究J.电子产品世界,2009.12附 录第 23 页附录 A:源程序/*#*Filename:hj2013_7_28.c*Project:hj2013_7_28*Processor:MC9S12XS128MAL*Version:Driver 01.14*Compiler:CodeWarrior HCS12X C Compiler*Date/Time:2013/7/28,20:23*Abstract:*Main module.*This module contains users application code.*Settings:*Contents:*No public methods*#*/*MODULE hj2013_7_28*/*Including needed modules to compile this module/procedure*/#include Cpu.h#include Events.h#include SerialPort.h#include SensorAD.h#include SystemTimer.h#include Encoder.h#include ServoDuty.h#include ACC.h#include Inhr1.h#include Inhr2.h#include CommonPort_J.h#include MotorPWM1.h#include MotorPWM2.h#include Keyboard.h#include OLEDInit.h#include MotorEN.h/*Include shared modules,which are used for whole project*/#include PE_Types.h#include PE_Error.h#include PE_Const.h#include IO_Map.h全国大学生智能汽车邀请赛技术报告第 24 页/*User includes(#include below this line is not maintained by Processor Expert)*/#include INC.hbyte rtn;int32 en=0,en_1=0,en_i=0;uint8 Uart_flag=0,Start_line_flag=0,Motor_flag=0,Check=2;int8 Status=0,Level=0;uint16 q10;uint16 ad0,ad1,ad2,ad3,ad4,ad5,ad6,ad7,ad8,ad9;int16 speed_real,speed_exp,speed_error;int32 MotorPWM;uint32 distance=0;float a,b;int16 shift_x,shift_y,shift_z;int8 shift86;word cnt;byte B2=0,A2,E0;void main(void)/*Write your local variable definition here*/*Processor Expert internal initialization.DONT REMOVE THIS CODE!*/PE_low_level_init();/*End of Processor Expert internal initialization.*/*Write your code here*/system_init();/*-系统初始化-*/for(;)/*rtn=ACC_SendChar(0 x39);rtn=ACC_SendChar(0 x2B);/point addressrtn=ACC_RecvChar(&B2);/get The corresponding register datartn=ACC_SendChar(0 x39);rtn=ACC_SendChar(0 x2A);/point addressrtn=ACC_RecvChar(&A2);/get The corresponding register data附 录第 25 页rtn=ACC_SendChar(0 x39);rtn=ACC_SendChar(0 x0E);/point addressrtn=ACC_RecvChar(&E0);/get The corresponding register data*/*Processor Expert end of main routine.DONT MODIFY THIS CODE!*/for(;)/*Processor Expert end of main routine.DONT WRITE CODE BELOW!*/*End of main routine.DO NOT MODIFY THIS TEXT!*/*END hj2013_7_28*/*#*This file was created by Processor Expert 3.02 04.44*for the Freescale HCS12X series of microcontrollers.*#*/*#*Filename:Events.c*Project:hj2013_7_28*Processor:MC9S12XS128MAL*Component:Events*Version:Driver 01.04*Compiler:CodeWarrior HCS12X C Compiler*Date/Time:2013/7/28,20:23*Abstract:*This is users event module.*Put your event handler code here.*Settings:*Contents:*No public methods*#*/*MODULE Events*/#include Cpu.h全国大学生智能汽车邀请赛技术报告第 26 页#include Events.h/*User includes(#include below this line is not maintained by Processor Expert)*/#include INC.hextern byte B2,A2,E0;#pragma CODE_SEG DEFAULT/*=*Event:SystemTimer_OnInterrupt(module Events)*Component:SystemTimer TimerInt*Description:*When a timer interrupt occurs this event is called(only*when the component is enabled-and the events are*enabled-).This event is enabled only if a*is enabled.*Parameters:None*Returns:Nothing*=*/void SystemTimer_OnInterrupt(void)/*Write your code here.*/*-识别路径-*/CalcRoad();/ms/*-按键识别模式-*/KeyDetection();/12us/*-舵机电机控制-*/Control();/*-调试数据发送-*/SCI();/1.6ms/周期:9.83ms/*-起始线检测-*/StartLineDetect();附 录第 27 页/*rtn=ACC_SendChar(0 x39);rtn=ACC_SendChar(0 x2B);/point addressrtn=ACC_RecvChar(&B2);/get The corresponding register datartn=ACC_SendChar(0 x39);rtn=ACC_SendChar(0 x2A);/point addressrtn=ACC_RecvChar(&A2);/get The corresponding register datartn=ACC_SendChar(0 x39);rtn=ACC_SendChar(0 x0E);/point addressrtn=ACC_RecvChar(&E0);/get The corresponding register data*/*=*Event:ACC_OnRxChar(module Events)*Component:ACC SW_I2C*Description:*Called when a correct character is received.In the SLAVE*mode,this event is not called if the component receives the*first byte with slave address and R/W bit.*Parameters:None*Returns:Nothing*=*/voidACC_OnRxChar(void)/*Write your code here.*/*=*Event:ACC_OnTxChar(module Events)*Component:ACC SW_I2C*Description:*Called when a correct character is sent.In MASTER mode,*this event is not called if the component sends the first*byte with slave address and R/W bit.*Parameters:None*Returns:Nothing全国大学生智能汽车邀请赛技术报告第 28 页*=*/voidACC_OnTxChar(void)/*Write your code here.*/*=*Event:ACC_OnNACK(