电磁组,东北林业大学,东林宝贝,东北林业大学教务处,东北林业大学研究生院,东北林业大学图书馆 QQ空间素材网 > 东北林业大学 > 电磁组,东北林业大学,东林宝贝,东北林业大学教务处,东北林业大学研究生院,东北林业 正文

电磁组,东北林业大学,东林宝贝,东北林业大学教务处,东北林业大学研究生院,东北林业大学图书馆

发布时间:2014-01-03 来源: 东北林业大学

作品:水冷电磁炉 团队名称:power 院校:桂林电子科技大学 作品:梳风 团队名称:... 院校:东北林业大学 作品:清雪设备 团队名称:逐梦扬帆 院校:杭州万向职业技术学院 ... 作品:走廊上的鬼影 团队名称:二根筋工作团队 院校:陕西科技大学 作品:东林商业街...

第九届“飞思卡尔”杯全国大学生 智能汽车竞赛 技 术 报 告 基于 ARM 处理器的电磁导航 智能车设计 学 校:东北林业大学 队伍名称:东林宝贝 参赛队员:许李尚 潘云峰 刘 带队教师:王 潮 琢 宋文龙 关于技术报告和研究论文使用授权的说明 本人完全了解第九届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、 使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比 赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的 设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编 纂收录在组委会出版论文集中。

参赛队员签名:________ 带队教师签名:________ 日 期:________ I 摘 要 本智能车系统以 MK60FX512VLQ15 Kinetis ARM-Cortex M4 为核 心控制器,软件平台为 Codewarrior IDE 10.5 开发环境。通过电磁传感器检 测赛道信息并提取赛道中心引导线位置,通过增量式旋转编码器检测模型 车的实时速度,使用 PID 控制算法和模糊控制算法调节驱动电机的转速和 转向舵机的角度,实现了对模型车运动速度和转动方向的闭环控制。我们 对系统的模型进行了分析,从而确定合适的算法。对不同电感摆放位置的 不同进行分析,从而确定合适的电感布局方式。为了使调试更加便捷,我 们使用 Visualscope 软件和无线蓝牙等辅助调试工具,对此进行大量硬件与 软件测试。实验结果表明,该系统设计方案确实可行。

关键词:MK60FX512VLQ15,磁场检测,旋转编码器,PID控制,舵机控 制 II 目录 关于技术报告和研究论文使用授权的说明.................................................... I 摘 要...............................................................................................................II 目录................................................................................................................. III 第一章 引 言................................................................................................. 1 1.1 概述............................................................................................................ 1 1.2 各章主要内容简介.................................................................................... 2 第二章 系统设计............................................................................................. 3 2.1 系统方案介绍............................................................................................ 3 2.2 智能车系统总体结构................................................................................ 3 第三章 机械结构设计及调整......................................................................... 7 3.1 智能车参数要求......................................................................................... 7 3.2 前轮............................................................................................................. 7 3.3 车身布局..................................................................................................... 9 3.4 舵机的安放及力臂的选择....................................................................... 13 3.5 主动差速................................................................................................... 17 3.6 其他调整................................................................................................... 19 第四章 智能车硬件系统............................................................................... 21 4.1 硬件设计方案.......................................................................................... 21 4.2 单片机最小系统...................................................................................... 21 4.3 电源管理模块.......................................................................................... 22 4.4 电机驱动模块.......................................................................................... 24 4.5 电磁传感器模块...................................................................................... 25 III 4.6 速度检测模块.......................................................................................... 28 4.7 起跑线检测............................................................................................... 29 4.8 避障处理模块.......................................................................................... 31 4.9 无线模块和液晶...................................................................................... 32 4.10 电路板设计............................................................................................. 33 第五章 软件系统设计................................................................................... 35 5.1 软件开发平台.......................................................................................... 35 5.2 软件系统总体设计.................................................................................. 35 5.3 智能车控制系统总体方案...................................................................... 36 5.5 路径识别模块的软件设计...................................................................... 41 5.6 模糊 PD 控制算法................................................................................... 42 第六章 智能车技术参数............................................................................... 43 第七章 总 结................................................................................................. 45 附录 A: 智能车电路原理图............................................................................. I 附录 B: 智能车源代码...................................................................................III IV 第一章 1.1 概述 引 言 “飞思卡尔”杯全国大学生智能车竞赛是为了加强大学生实践、创新 能力和团队精神的培养,促进高等教育教学改革,由教育部高等学校自动 化专业教学指导分委员会主办的全国大学生智能汽车竞赛。该竞赛以“立 足培养,重在参与,鼓励探索,追求卓越”为指导思想,旨在促进高等学 校素质教育,为优秀人才的脱颖而出创造条件。该赛事是以智能自循迹车 模为研究对象的创意性科技竞赛,是由飞思卡尔半导体公司赞助的面向全 国大学生的一种具有探索性的工程实践活动,其根本宗旨在于促进高等学 校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新 意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、 求真务实的学风和团队协作的人文精神。

“飞思卡尔”杯全国大学生智能汽车竞赛是国家教学质量与教学改革 工程资助项目, 以飞思卡尔半导体公司生产的 32 位单片机为核心控制模块, 通过增加道路传感器、电机驱动电路以及编写相应程序,制作一个能够自 主识别道路的汽车模型。因而该竞赛是涵盖了智能控制、模式识别、传感 技术、汽车电子、电气、计算机、机械等多个学科的比赛,对学生的知识 融合和实践能力的提高,具有良好的推动作用。

本组采用第九届飞思卡尔杯全国大学生智能车竞赛的汽车模型作为研 究平台,以 32 位单片机 MK60FX512ZVLQ15 作为主控制单元,运用 Code Warrior 软件作为开发工具进行智能控制策略研究。

道路信息检测模块普遍 采用工字型电感 ,该传感器在工作稳定性、分辨率、价格等方面均比较优 秀,基于研究需要,经过综合考虑,本设计采用电感传感器采集道路信息, 经过后续处理,完成对赛道信号检测并以此来控制车子的转向和行驶速度。

关于算法,我们采用经典 PID 控制算法结合模糊控制算法来作为车模的主 导控制。为满足智能车在高速与急转等恶劣情况下的动力性能和稳定性能, 我们参考了前几届的队伍参赛经验,经过实验研究对整车进行了合理的重 心与电路等的布局。 1 第九节全国大学生智能汽车邀请赛技术报告 1.2 各章主要内容简介 本文作为我们小组近八月的做车经历和经验的总结,主要从机械结构 设计、硬件电路设计和软件设计编程过程等方面介绍了制作本智能模型车 的各项关键技术,以供组委会老师审阅及以后的参赛队员参考,其概要内 容如下:

第一章 引言:主要介绍了该项比赛的背景、发展历程、以及本队的开 发及控制策略。

第二章 系统设计:总体介绍了整个智能车系统各模块。

第三章 机械结构设计及调整:详细介绍了本智能车机械结构设计与调 整。

第四章 智能车硬件系统:分模块详细介绍了车模硬件电路设计与制 作。

第五章 软件系统设计:详细介绍了智能车模软件设计及算法实现。

第六章 智能车技术参数:智能车主要技术参数说明。

第七章 总结:主要说明我们在设计过程中遇到的问题和解决办法,以 及存在的问题。

附录 A:智能车电路原理图 附录 B:智能车源代码 2 第二章 系统设计 2.1 系统方案介绍 本智能车系统采用飞思卡尔公司 32 位单片机 MK60FX512ZVLQ15 作为 核心控制单元,由安装在智能车前部的电磁传感器获得赛道空间磁场信息, 经内部 AD 进行模数转换后传到核心控制单元单片机中, 由主控芯片处理从 传感器传回的信息,据此 PWM 模块产生相应的 PWM 波,通过输出不同 占空比控制智能车的转向舵机与直流电机,以实现控制智能车按照规定在 赛道上行驶。还增加了键盘和液晶作为输入输出设备,用于智能车的角度 和方位控制的参数调整。

为了使智能车能够更加快速稳定的行驶, K60 单片机必须把对赛道路径 的判断、转向舵机的角度控制以及对直流电机的速度控制紧密的联系在一 起。因为不论是某一路采集信号的误判还是单片机对转向舵机控制的失当, 都会引起智能车在行驶过程中产生抖动甚至偏离赛道。所以,对智能车总 系统设计的合理性和科学性就显得尤为重要。 2.2 智能车系统总体结构 智能车系统总体结构如图 2.2 所示: 3 第九节全国大学生智能汽车邀请赛技术报告 图 2.2 智能车系统总体结构图 2.2.1 中央处理单元 本智能车系统采用 freescale 单片机 MK60FX512ZVLQ15 作为核心控制 芯片,对采集的信号进行分析和处理,再根据信号对直流电机和转向舵机 进行有效合理控制。

MK60FX512ZVLQ15 单片机 CPU 属于增强型 32 位 CPU, 片内总线时 钟最高 150 MHz,IEEE 1588 以太网,全速和高速 USB2.0 On-The-Go 带设 备充电探测,硬件加密和防窜改探测能力。丰富的模拟、通信、定时和控 制外设 100LQFP 封装及 256KB 闪存开始可扩展到 256MAPBGA 和 1M 闪 存。大容量存的 K60 系列器件还可提供可选的单精度浮点单元、NAND 闪 存控制器和 DRAM 控制器。快速,高精度 16 位 ADC、12 位 DAC、可编程 增益放大器、高速比较器和内部参考电压。 2.2.2 电源模块 为各个电路模块提供稳定电源,保证各模块正常工作。 4 第二章 系统设计 2.2.3 电磁检测模块 完成对赛道中心导线产生的磁场进行检测,将采集的各路电压值通过 连接线传送给中央控制单元分析、处理,判断道路信息[1],使智能车沿着跑 道轨迹稳定运行。 2.2.4 速度检测模块 对模型车的速度进行检测,实现闭环控制,以便调整弯道和直道的速 度,从而提高平均速度,使车模更快跑完全程。 2.2.5 电机驱动模块 对模型车上的电机进行驱动,控制赛车的速度。 5 第三章 机械结构设计及调整 3.1 智能车参数要求 1、车模使用 C 型车模。车模运行方向为:转向轮在前,动力轮在后。

2、参加电磁赛题组不允许使用光学传感器获得道路的光学信息,但是 可以使用光电码盘测量车速。

3、车模中禁止改动的部件发生损坏,需要使用相同型号的部件替换。

4、车模改装完毕后,车模尺寸宽度不超过 250mm,长度没有限制。

5、禁止改动车底盘结构、轮距、轮径及轮胎;如有必要可以对于车模 中的零部件进行适当删减。 3.2 前轮 3.2.1 主销后倾 主销的轴线相对于车轮的中心线向后倾斜的角度。

前轮重心在主销的轴线上由于主销向后倾斜使前轮的重心不在车轮与 地面的接触点上,于是产生了离心力,主销后倾形成的离心力,可以保证 汽车直线行驶的稳定性还可以帮助车轮自动回正。主销后倾角延长线离地 面实际接触越远,车速越高,离心力就越大。

主销后倾角的作用:在中高速行驶中保持汽车直线行驶的稳定性,适 当的加大主销后倾角可以帮助转向轮自动回正,可有效扼制转向器的摆振, 可使转向便轻,单独适量调一侧主销后倾角可修理行驶跑偏,主销后倾角 靠离心力保证汽车直线行驶和车轮自动回正。实际中经过实验我们选择原 车设置。

通过如图 3.2.1 中的黄色垫片调节。 7 第九节全国大学生智能汽车邀请赛技术报告 图 3.2.1 主销后倾 3.2.2 主销内倾 主销内倾是指主销装在前轴略向内倾斜的角度,它的作用是使前轮自 动回正。角度越大前轮自动回正的作用就越强烈,但转向时也越费力,轮 胎磨损增大;反之,角度越小前轮自动回正的作用就越弱,因此这个主销 内倾角都有一个范围,约 5°~8°之间[2]。经过不断的实验,本车采用大约 5 度的内倾角。通过如图 3.2.2 红色圈内螺丝调节。 图 3.2.2 主销内倾 8 第三章 机械结构设计及调整 3.2.3 前轮前束 所谓前束是指两轮之间的后距离数值与前距离数值之差,也指前轮中 心线与纵向中心线的夹角。前轮前束的作用是保证汽车的行驶性能,减少 轮胎的磨损。前轮在滚动时,其惯性力会自然将轮胎向内偏斜,如果前束 适当,轮胎滚动时的偏斜方向就会抵消,轮胎内外侧磨损的现象会减少。

在实际调整中我们开始采用大约 3 度的角度,但是发现转弯轻松但是转弯 后不容易回正。经过不断的改进最终选择现在大约 7 的角度。

通过如图 3.2.3 红色圈内螺丝调节。 图 3.2.3前轮前束 3.3 车身布局 3.3.1 前瞻的安放 为了能快速提前检测到赛道信息我们需要尽量长的前瞻,但前瞻太长 又使得车的头部重量增加不利于转弯,同时也给前瞻的固定增加难度。最 终经过我们不断的实验与改进,选择了碳纤维杆搭建前瞻传感器支架,经 过反复实验,为了同时兼顾质量轻反应快和长前瞻早预判的矛盾特点,我 们的前瞻长度大概为 42 厘米。另一方面为了进一步减轻前瞻重量我们省去 了前瞻杆的下部支撑。如图 3.3.1(a),3.3.1 (b)所示。 9 第九节全国大学生智能汽车邀请赛技术报告 (a) (b) 图 3.3.1 另一方面为了保证前瞻抗弯强度我们将传统的空心圆杆换成了外方内 圆的碳纤维杆,在不增加碳纤维杆的横截面积的基础上增强其抗弯强度。

如图 3.3.1(c),(d),(e)所示。 图 3.3.1(c)前瞻杆安放 10 第三章 机械结构设计及调整 图3.3.1(d)前瞻杆安放 图 3.3.1(e)前瞻杆安放 此前瞻有以下特点: 11 第九节全国大学生智能汽车邀请赛技术报告 1、机架简单,质量轻,抗弯强度大:

2、可根据需要改变传感器位置和高度,固定简单牢固,减少了车模在 行驶过程中的晃动,使检测的数值更加稳定。

3、前瞻紧连车身,转弯很灵活,能够很轻松转弯并快速稳定进入直道。

4、拆卸更换方便,在碳纤维杆折断后能够很快更换。

5、辅助加固车身,保证车底盘刚度。 3.3.2 重心调整 车身重心位置的前后调整,对智能车行驶性能有很大的影响。按照车 辆运动学理论,车身重心前移会增加转向,但会降低转向的灵敏度,同时 降低后轮的抓地力;重心后移会减少转向,但会增大转向灵敏度,后轮抓 地力也会增加。因而调整合适的车体重心,让智能车更加适应跑道是很关 键的。根据实际调试经验,鉴于 C 型车模为双电机车模,后轮主动差速, 可提供一定的转向力,所以为增强转向灵敏度重心可以适当的后移。车模 的布局以精简、可靠、稳定为前提。电路板尽量贴近车底盘,并与电池、 舵机尽量集中在地盘中心。最终车模重心实现重心集中并稍有靠后。使得 前轮抓地力适中后轮压力较大,可更好的提供动力,灵活转弯[2]。车身总体 如图 3.3.2。 图 3.3.2 车模整体图 12 第三章 机械结构设计及调整 3.3.3 底盘高度调整 飞思卡尔 C 车模前轮与后轮的悬架的高度均可调。前轮是通过改变垫 圈的个数来调节。后轮是通过安装不同高度的固定板来调节。为了是车模 转弯稳定,车的底盘需要尽量的低,但是考虑到需要过障碍,我们将车的 底盘高度调整到了前轮 9mm,后轮 4.5mm 左右。如图 3.3.3 所示。 图 3.3.3 后轮加固板 3.4 舵机的安放及力臂的选择 舵机安装直接影响到转向问题。如果舵机调整不到位,将很大程度上 限制转向角度和转向灵敏度。我们通过 Solidworks 软件建模进行了一系列 的运动仿真,如图 3.4(a) , (b) , (c) 。 13 第九节全国大学生智能汽车邀请赛技术报告 图 3.4(a)舵机的安放 图 3.4(b)舵机的安放 14 第三章 机械结构设计及调整 图 3.4(c)舵机的安放 我们也尝试过运用四杆转向机构控制前轮转向如图 3.4(d) ,但经过仿 真我们发现两前轮在转向角度比较大时速度瞬心后移如图 3.4 (e) 所示比较 大超出车身范围,转向性能较差,如图 3.4(f)所示。 图 3.4(d)四杆机构舵机的安放 15 第九节全国大学生智能汽车邀请赛技术报告 图 3.4(e)四杆机构舵机的安放 图 3.4(f)四杆转向机构转向速度瞬心 车模原始舵机被安放在了车模中心,我们把舵机转移到了两前轮之间, 为车模主板留出了一定的空间。为了能完全固定舵机,我们自制木方,并 配合塑料件固定。如图 3.4(j)。

舵机力臂对舵机转向有很大影响,舵机力臂太短会使舵机打角增加, 这样就增加了舵机的响应时间;舵机力臂太长会使转弯力矩增加,可能造 成舵机转弯没力甚至烧坏舵机。在不断的实验中我们选择了合适的舵机力 16 第三章 机械结构设计及调整 臂如图 3.4(g),并通过有限元分析图 3.4 (h) 保证我们设计的舵机力臂内部应 力分布合理, 最终我们对舵机采用直立式。

使舵机转弯灵活、 轻盈。

如图 3.4 (j) 。 图 3.4(g) 舵机力臂 图 3.4(h) 舵机力臂应力分析云图 图 3.4(j)舵机的安放 3.5 主动差速 3.5.1 电机控制策略 本次比赛电磁组使用 C 型车模,双 260 电机驱动,关于后轮差速问题 我们提出了两种解决方案,第一种方案不进行软件差速,增加后轮速度 PID 的响应时间,在实际试验中我们发现这种方案在车模稳定低速(<2.3m/s) 17 第九节全国大学生智能汽车邀请赛技术报告 运行时有较好的运行效果,但当车模速度较快时,由于速度 PID 响应较慢 无法有效降速导致弯道处理较差。第二种方案为主动差速,在转弯时左右 后轮给定不同速度配合舵机转向,使车模在较快速度下可以通过减速顺利 安全过弯。 3.5.2 左右轮速度比理论计算 对于转向时的两后轮的速度比值我们采用理论论证加实际测量的方法 进行求解。通过对已有的模型进行运动分析如图 3.5.2(a)我们绘制出了 舵机打角和车轮转向角度的函数关系如图 3.5.2(b) 。 图 3.5.2(a)运动分析模型 18 第三章 机械结构设计及调整 3.5.2(b)舵机角度-转向角度曲线 通过对速度瞬心的计算轮距的测量等等理论求解我们得出了我们的车 模舵机控制占空比 x 和左右轮速度比 a 的函数关系:

a=-0.003506133x+3.307035296。

经实际测量我们得出的函数关系和实际速度 只有大约±5%的误差可以使用。 3.6 其他调整 底盘上为了安放电路板、舵机等会有打孔,甚至对于有些影响安放的 地方会打磨掉。为了减轻重量,部分螺钉、螺母是使用尼龙塑料的。

本车轮胎使用橡胶填充海绵形式,摩擦力是不错的,所以对于轮胎没 有大的改动,只是在跑的过程发现轮胎磨合后性能会更好,所以新轮胎会 简单进行磨合处理。 19 第四章 智能车硬件系统 4.1 硬件设计方案 从最初进行硬件电路设计时我们就明确了系统的设计目标:可靠、高 效、简洁,在整个系统设计过程中严格按照规范进行。

可靠是系统设计的第一要求,我们对电路设计的所有环节都进行了电 磁兼容性设计,做好各部分的接地、屏蔽、滤波等工作,将高速数字电路 与模拟电路分开,使本系统工作的可靠性达到了设计要求。

高效是指本系统的性能要优良。

简洁是指在满足了可靠、高效的要求后,为了尽量减轻整车重量,降 低模型车的重心位置,应使电路设计尽量简洁,尽量减少元器件使用数量, 缩小电路板面积,使电路部分重量轻,易于安装。我们在对电路进行了详 细分析后,对电路进行了简化,合理设计元件排列、电路走线,使本系统 硬件电路的相应指标都达到了设计要求[3]。 4.2 单片机最小系统 单片机最小系统为本智能车系统的控制核心。为了保证系统工作的稳 定性, 我们购买了单片机最小系统板 K60 系列的 MK60FX512ZVLQ15。

这个最 小系统板引出了其几乎所有功能引脚,板上自带晶振电路、复位电路、单 片机电源电路,指示灯[4]。电路图如图 4.2.1 (a) (b)所示。 图 4.2.1 (a) 21 第九节全国大学生智能汽车邀请赛技术报告 图 4.2.1 (b)单片机最小系统原理图 4.3 电源管理模块 电源模块是智能车系统工作的动力来源,给整个系统提供电能,而供 电的稳定直接关系到整个车模的稳定运行。比赛要求智能车供电电源只能 使用指定型号的 7.2V 2000mAh Ni-Cd 电池供电。

而系统单片机需要 3.3 电 源,电机驱动需要 7.2V 电池供电,检测电路需要 5V 电源,数字舵机需要 6V 电源。

对于单片机电源我们用的是低压差稳压器 TPS7350 稳压到 5V, 其特点 是其输出电压精度高 (20%) ; 输出噪声低 (2μA) ; 压差低, 在输出为 100mA 时,最大压差为 35mV; 静态电流小,典型值为 340μA(与负载电流大小 有关) ; 有关闭电源控制端,在关闭电源状态时,耗电仅为 0.5μA; 内部 有监视输出电压电路,降到门限电压时,reset 端输出低电平复位信号(当 输入电压上升时,使输 出电压上升到门限电压时,有 200ms 的延迟后,输 出正常电压) ;内部有过流限制及过热保护。

再用低压差的 TPS7333 稳压到 3.3V 为整个单片机系统提供电源[4]。如图 4.3.1 所示。 图 4.3.1 单片机电源原理图 22 第四章 智能车硬件系统 检测电路相当于整个系统的眼睛,检测电路的的电源只有保证稳定才 不至于有大纹波信号干扰,才能使检测得到的信号更准确,鉴于此结合性 能和电路的可行性 LM2940 能可靠满足要求。

舵机所用电源电压采用 6.5V,用低压差可调稳压芯片 LM1084 通过电 位器的调解把输出电压控制在 6.5V 左右,其电路简单,且控制舵机灵敏度 较高,如图 4.3.2 所示。 图 4.3.2 舵机电源原理图 对于液晶、无线模块、蜂鸣器等其他一些外围电路只需用一片 LM2940 足以。如图如图 4.3.3 所示。 图 4.3.3 另外加若干 LED 显示各类电源工作状况。 23 第九节全国大学生智能汽车邀请赛技术报告 4.4 电机驱动模块 由于车模具有两个后轮驱动电机,因此需要两组电机驱动全桥电路。

所以我们采用两片 BTN7971 构成一个全桥驱动。专用芯片 BTN 系列的 7971,是专门应用于电机驱动的大电流、半桥高集成芯片,由于 BTS7971 是大电流驱动芯片, 故需要在单片机控制信号的输出和 BTS7971 的 IN 端之 间加入 74HC244 反相器起到隔离保护的作用。防止电路出现过流、短路等 故障时,当大电流流入单片机会使单片机损坏。为了防止电机输出电流对 于电源的冲击,在电路板的电源输入(7.2V)端口并联了一个 1000uF 的电 容。我们设计的电机驱动模块原理图如图 4.4 所示。 图 4.4 电机驱动模块原理图 由于电机驱动中流过的电流比较大,所以驱动电路的走线应选择较宽 的宽度,这就最大限度上防止了导线宽度对于电流大小的限制。 24 第四章 智能车硬件系统 4.5 电磁传感器模块 4.5.1 基本理论分析 根据麦克斯韦电磁场理论,交变电流会在周围产生交变的电磁场。赛 道中用于路径导引的交流电流频率为 20kHz,产生的电磁波属于甚低频 (VLF) 电磁波。根据电磁场理论分析可得无线长直导线周围磁场分布如公 式: 并且我们知道其分布情况符合右手螺旋法则,如下图 4.5.1 所示: 图 4.5.1 无线长直导线电磁分布图 从上面的分析我们可以得出以下两点启示:

1. 赛道上电磁场大小与高度成反比,必须寻找一个合适的高度来架设 传感器。

2. 赛道上电磁信号具有方向性,所以传感器布局十分灵活,可以充分 利用这样的方向性来提高系统的控制。

同时, 赛道上的交流电频率是 20kHZ, 为了达到滤波作用,必须用选频网络来提取正确的赛道信号,滤除掉不必 要的杂波信号。我们最后采用的是品质因数较高的工字电感,并配以计算 25 第九节全国大学生智能汽车邀请赛技术报告 后合适大小电容形成 LC 并联滤波网络(电感大小 103,电容 6.8nf) 。两 个线圈水平相距 L 垂直于交流电源线距离跑道高度 h,两线圈对称分布在 车前支架上。由于线圈的轴线是水平的,所以感应电动势反映了磁场的水 平分量。计算两个线圈感应电动势的差值: 在实际检测时,若左边传感器值大于右边则说明交流电源线位于车模 左侧,反之则在右侧。 4.5.2 运放型号的选择 稳定的电磁传感器是车模稳定运行的前提。起初用的 LM358,在做测 试时,当车模速度很快转过一个弯道时,其转换速率不够,出现丟值现象。

其特性如图 4.5.2(a)所示。 图 4.5.2(a) 为了提高转换速率,我们考虑了性能更好、参数更优的高速运放 NE5532。

NE5532 应用在无数优秀的前级放大调音电路之中。

其具有较好的 噪声性能,优良的输出驱动能力及相当高的小信号与电源带宽。其特性如 26 第四章 智能车硬件系统 图 4.5.2(b)所示。但其需要双电源来维持供电,这样对于设计 PCB 电路板时 需要更多空间,而且还需设计双电源,元件多而且复杂,固最终没有采用。 图 4.5.2(b) 基于以上的因素,我们选用了 TLC2272,5V 电源供电,2 路运放,低功 耗器件,其转换速率足以满足需求。对于 12 位的采样精度,车模静止时采 样数据数值上下波动 0-+2V 之间,且设计电路简单,可以满足采样需要。 4.5.3 检波电路设计 从仪表放大器出来的信号是类似正弦波的信号。为了将该信号转化成 直观的直流电平,我们也从网上参考了三种方法。

第一种,直接对该信号进行高速采样。采样速率在信号频率的 20 倍以 上。放大器出来的信号时 20KHz,那么采样频率就应该在 40KHz 以上才能 算出比较准确的值。这样无疑增加了程序上计算的负担,而且也没有电路 转换得到的结果的稳定。

第二种,AD637 真有效值转换芯片。参照 AD637 的 Datasheet,要得到 我们所需要精度的有效值需要 100 以上的周期, 也就是 5ms。

这种方法虽然 结果准确,但是延时是十分严重的,不适合高速情况下使用。还有一个致 27 第九节全国大学生智能汽车邀请赛技术报告 命的缺陷是成本太高。

第三种,运放检波。这种方法是最稳定,反映最快,效果最好的电路。

制作出来的 PCB 大小为较小,减轻了车体重量。该电路较为简单,可参考 官方的文档《电磁车模设计参考》内的检波电路,在此就不再复述。

利用 LC 谐振的选频特性选出 20KHZ 的信号,再通过运放将信号放 大,而后进行倍压整流,最终送入单片机 AD 转换接口的将是与距离引导 线距离有关的输出电压。框图如下: 基于选用的 TLC2272 运放,设计电路如图 4.5.3 所示: 图 4.5.3 传感器原理图 4.6 速度检测模块 速度检测模块是为了反馈车模当前速度,形成闭环,获知车模当前状 态并决定控制策略的一个环节。我们选用了 Mini512Z 型 512 线,其输出脉 冲稳定,512 线可较高满足精度要求,且其数字量输出,可供单片机直接采 集以获得速度值。安装图如图 4.6.1 所示。 28 第四章 智能车硬件系统 图 4.6.1 编码器安装图 4.7 起跑线检测 计时起始点两边分别有一个长度 10cm 黑色计时起始线,赛车前端通 过起始线作为比赛计时开始或者结束时刻。在黑色计时起始线中间安装有 永久磁铁,每一边各三只。磁铁参数:直径 7.5-15mm,高 1-3mm,表面 磁场强度 3000-5000Gs 根据干簧管的特性,可知,电磁组可以使用干簧管 作为识别起跑线的传感器。

起跑线采用了干簧管作为检测磁铁的元器件。常见的干簧管有玻璃封 装的,也有塑料封装的。一开始采用了在附近买的玻璃封装干簧管,很容 易碎,而且有时候震动会产生误判。后来就使用了塑料封装的干簧管,性 能稳定很多。

两种封装对比: 29 第九节全国大学生智能汽车邀请赛技术报告 玻璃干簧管 塑料干簧管 图 4.7.1 两种干簧管封装图 干簧管是一种磁敏的特殊开关。它通常由两个或三个既导磁又导电材 料做成的簧片触点, 被封装在充有惰性气体(如氮、 氦等)或真空的玻璃管里, 玻璃管内管内平行封装的簧片端部重叠,并留有一定间隙或相互接触以构 成开关的常开或常闭接点,干簧管实物图如上所示。当永久磁铁靠近干簧 管时,或者由绕在干簧管上面的线圈通电后形成磁场使簧片磁化时,簧片 的接点就会感应出极性相反的磁极。由于磁极极性相反而相互吸引,当吸 引的磁力超过簧片的抗力时, 断开的接点便会吸合;

当磁力减小到一定值 时,在簧片抗力的作用下接点又恢复到初始状态。这样便完成了一个开关 的作用,因此仅需要一个简单的开关电路即可实现起跑线的识别。一般认 为,干簧管周围的磁场强度达到或超过一定数值,其触点即吸合(闭合或开 启),但实际情况并非完全如此,它吸合与否不仅与场强有关,还与两极所 处的磁力线方向有关,我们通过做不同位置和不同安放方位的干簧管得出 适合的干簧管安放位置。

经过测试,但要注意的是当干簧管经过磁铁正中央时,两个簧片 受力相同,出现干簧管不吸合的现象,即干簧管的盲区。而且干簧管在摆 放时,偏有一定角度其检测更灵敏,起跑线检测直接使用干簧管。当干簧 管不在磁铁上方时,该 I/O 口处于高电平。当干簧管在磁铁上方时,该 I/O 口处于低电平。电路图如图 4.7.2 所示。 30 第四章 智能车硬件系统 图 4.7.2 干簧管检测电路 4.8 避障处理模块 道路的障碍元素由两块砖头叠放封装后放置在赛道上一侧。路障内侧 与赛道中心线距离为 8 厘米。要求车通过路障的时候,不允许冲出赛道。

对与障碍的处理,我们先后考虑超声波避障(因其占用 CPU 资源过多而舍 去),红外发收模块(受光线影响太大而舍去)和最终确定的不易受外界 因素影响的机械接触式的行程开关作为避障传感器。将其固定在前瞻支架 上,当其联动杆接触到障碍时,产生一个跳变信号,使舵机产生相应的打 角进行避障。其在前瞻上的安装如图 4.8.1 所示。 图 4.8.1 避障检测电路 31 第九节全国大学生智能汽车邀请赛技术报告 避障模块与单片机的接口电路图如图 4.8.2 所示 图 4.8.2 避障模块原理图 4.9 无线模块和液晶 调试过程中,无线模块在车模冲出赛道时可以人为的让车模及时停车, 防止车模撞击外界物体而损坏,起到保护作用。而且在赛道上有时有几辆 车再跑,稍有不慎就会发生撞车,为了防止撞车也可以用无线模块控制其 停车。但在比赛时不能使用无线设备。如图 4.9.1 所示。 图 4.9.1 调试用无线模块 由于不同赛道与车轮之间的摩擦力差别较大,因此需要根据实际情况 调整 PID 参数。另外,不同速度下的参数也需要外部输入。因此我们专门 设计了一个液晶调试模块,配合按键便可以对软件参数进行灵活修改。液 32 第四章 智能车硬件系统 晶在调试时的作用很大,可以通过视觉来观看显示的信息,更直观更方便。

我们所用的液晶是 OLED,小巧节省空间,易于控制。如图 4.9.2 所示。 图 4.9.2 oled 液晶显示屏 4.10 电路板设计 前期的车模底板我们直接采用万能板搭建,元件大空间利用率低,而 且重心过高,导致速度提不上去,如图 4.10.1 所示。 图 4.10.1 一代电路板 33 第九节全国大学生智能汽车邀请赛技术报告 中期考虑 PCB 设计电路板,使电路板降低,落在车盘上,这样重心有 所降低,易于过连续弯道。如图 4.10.2 所示。 图 4.10.2 二代电路板 后期的电路板设计更多的是配合车的整体机械在调整,使车底盘降低, 重心前移,这样在提速时不易出现甩尾,稳定不易冲出赛道。如图 4.8.3 所 示。 图 4.10.3 三代电路板 34 第五章 软件系统设计 5.1 软件开发平台 此次智能车软件开发环境采用了飞思卡尔 MK60FX512VLQ15 系列单 片机开发软件 Codewarrior。该软件具有支持多种语言、开发界面统一、交 叉开发平台以及支持插件工具等特点。

在界面完成编译后, 通过 JTAG 工具, 在 Codewarrior 环境下向 MK60FX512VLQ15 模块下载程序。JTAG 工具使 用简单,十分方便且支持在线调试。

K60 微控制器系列具有以下性能:IEEE 1588 以太网,全速和高速 USB 2.0 On-The-Go 带设备充电探测,硬件加密和防窜改探测能力。丰富的 模拟、通信、定时和控制外设从 100 LQFP 封装 256 KB 闪存开始可扩展 到 256 MAPBGA 1MB 闪存。

大闪存的 K60 系列器件还可提供可选的单 精度浮点单元、NAND 闪存控制器和 DRAM 控制器。 5.2 软件系统总体设计 在整个系统设计中,主要用到了单片机 5 个基本功能模块:PLL 模块、 PWM 输出模块、ECT 模块、PIT 模块、AD 转换模块[5]。通过配置寄存器先 对所用到的模块进行硬件初始化,并通过相应的数据寄存器或状态寄存器 的读写, 实现期望的功能。

为实现期望的功能所需芯片资源如表 5.2.1 所示。 表 5.2.1 系统所用到的芯片资源 AD 模块 ADC0, ADC1, ADC2, ADC3 PIT0,PIT1,PIT3 FTM0. CH4 FTM3. CH4, CH5, CH6, CH7 FTM1_PHA FTM1_PHB FTM2_PHA 电感 ECT 模块 定时器中断 舵机控制 电机控制 PWM 模块 编码器的采集 35 第九节全国大学生智能汽车邀请赛技术报告 FTM2_PHB IO 端口模块 PORTA PORTD PORTC 干簧管 按键 OLED 5.3 智能车控制系统总体方案 道路检测由电感传感器完成。其中使用了 MK60N512VMD100 的 FTM 模块。电机、舵机驱动和测速部分使用了单片机的 PWM 模块,SPI 模块, 外部中断等[6]。车模主程序框图如图 5-1。 图 5.1 主程序框图 控制策略的选择对于车模的行驶性能是非常重要的。速度固然越快越 好,但也要使车模能够平稳完成比赛。譬如,直道入弯道前速度需要减慢, 以免冲出道路;而从弯入直时则应让车模加速,在直道上能够以较高速度 完成。

所以控制车模是要使车模在平稳安全行驶的前提下,尽可能地以最 快的速度和最短的路线行驶。为保证车模一直沿轨迹快速行驶,系统的主 要控制对象是通过路径识别单元的电感传感器检测车模相对轨迹的当前位 置, 控制车模的转向和速度。

车模相对轨迹黑线的三种典型位置如图 5-2 所 示,根据检测结果判断车模与轨迹偏离的情况,如前方为直线轨迹,则控 制舵机转向正中,同时控制驱动电机使其速度上升到最大速度;如检测到 前方为左弯曲线 (或右弯曲线),则控制舵机使前轮向左(或向右)偏转相 应的角度,同时根据车速检测单元检测的当前速度,控制电机使速度下降, 36 第五章 软件系统设计 当前速度越大,则下降速度越大,以免车模冲出道路。 图 5-2 车模相对电磁线的典型位置 5.4 主程序和中断程序 这个车模的程序分为两大部分,主程序和中断程序。主程序包含了系 统的初始化,系统运行程序两部分。

/* * 函数名称:main * 函数参数:无 * 函数返回:无 * 函数功能:初始化底层库,并开始主程序循环 */ int main(void){ DisableInterrupts;

System_Init();

EnableInterrupts;

System_Start();

for(;;){ //禁止总中断 //初始化函数和开启响应的中断 //开总中断 //程序运行函数 } 37 第九节全国大学生智能汽车邀请赛技术报告 return 0;

} 中断程序,则包含了电感值得采集、编码器脉冲数的采集、偏差的处 理、舵机控制的模糊 PD 控制器和电机控制的 PID 控制器[7],其中最主要的 PIT 中断代码如下:

/* * 函数名称:pit1_isr * 函数参数:无 * 函数返回:无 * 函数功能:1ms 一次中断 */ void pit1_isr(void){ static uint8 Count20s=0;//是毫秒计数 static uint8 Count1s=0;//是秒计数 /* * 中断程序的运行平台 */ AD_sampling(ADV);

Count20s=Count20s+1;

Count20s = Count20s%20;

周期 /* * 10ms 电机控制 */ if(Count20s==10||Count20s==0){ //20ms 为一 //采集电感值 主要 38 第五章 软件系统设计 Quad_get(&(Speed_p->L),&(Speed_p->R));

器值 //采集编码 Motor_Sp(V_p,VRef,Slope_V,Running,Slope_Fl, Right_angle_state, RA_V);

Motor_PID(Speed_p,Speedpr_p,PIDpa,duty,V_p);

//进行 PID 控制 Motor_Change(duty);

PWM *Speedpr_p = *Speed_p;

S_L_Delay(V_p->V_Ref,&counter1);

counter2++;

} /* * 20ms 的舵机控制 */ if(Count20s==0){ AD_Norm(ADV,ADMax,ADVo);

Ampl_Limi(ADVo,ADVo_k);

Slope_state(ADVo_k[1],&Slope_Fl,&Count1s, &PuLse_Counter,Speed_p->L,Speed_p->R);

E_d = eCalculation(ADVo_k,dir,E_pre,Slope_Fl,&Lost_Flag);

E_a = ADVo[0] - ADVo[2];

//保存现在的值 //改变电机 Limit_State(&E_c,Slope_Fl,&PuLse_Counter1,&L_state,Speed_p->L,Speed_ p->R);

if(DIP_6_STATE==DIP_ON){ 39 第九节全国大学生智能汽车邀请赛技术报告 E =E_d +E_c;

} else{ E =E_d;

} SE_Control(E,E_pre,E_a,E_b,duty,Kp,Kd,PIDpa,PIDpa1,Duty_SE_Pre,Slope _Fl,Lost_Flag);

SE_pwm_Change(duty->SE);

/* * 保存上一次的值 */ Ed=E-E_pre;

Right_Angle(E,Ed,&Right_angle_state);

dir[1]=dir[0];

E_pre =E;

E_b = E_a;

Duty_SE_Pre = duty->SE;

} if((PIT_TFLG(1)&PIT_TFLG_TIF_MASK)!=0) { PIT_TFLG(1)|=PIT_TFLG_TIF_MASK;

位 } } //清除中断标志 40 第五章 软件系统设计 5.4.1 主程序 为了方便调试和节约中断资源,在主程序里,包含了车的 Visualscope 软件的下位机程序,在线调试 OLED 的界面程序,干簧管的扫描程序等。

其部分代码参见代码附录。 5.4.2 中断程序 中断程序其最主要的作用是使周期性的控制电机和舵机成为了可能。

通过 PIT 模块可以周期性的采集电感值,并对采集一定时间后的电感值进 行处理,获取赛道坐标,作为偏差量输入给舵机模糊 PD 控制器中,控制舵 机进行路径识别。

同时采集编码器的脉冲式,通过脉冲数和速度之间的比例关系转化成 速度,与设定速度比较获得偏差,输入给电机 PID 控制器中,控制电机以 设定速度经行运转。 5.5 路径识别模块的软件设计 图 5.5 路径识别框图 路径识别是智能车模的灵魂,是决定车模能否顺利完成赛道的关键部 分。好的路径识别模块程序,能够使车模能够顺利的完成赛道,并且表现 出良好的随动性。该设计使用电感传感器检测预先铺设在赛道下方的漆包 线发出的 20kHz 的交变电磁波。其软件设计主要有对电感传感器采样值的 处理,并将所得出的值用来控制车模转向舵机的转向。整个路径识别模块 41 第九节全国大学生智能汽车邀请赛技术报告 的工作过程为:在系统上电后,进行道路状况检测,当通过 AD 模块处理, 然后对采集的数据进行处理和计算,进行道路轨迹的获取,计算出道路大 致曲率,结合实时检测的速度值,控制舵机转向和直流电机转速从而控制 方向和速度的目的。其系统框图如图 5-4 所示。 5.6 模糊 PD 控制算法 PID 控制是过程控制中应用最广泛的一种控制规律。其具有算法简单、 稳定性好、可靠性高的特点。他对于各种线性定常系统的控制,都能够获 得满意的控制效果。智能车作为一个十分复杂的系统,器具有负载多变、 干扰因素复杂,要获得满意的控制效果,就需要对 PID 的参数分段分区的 精细调整。但器变化无常,往往没有可以确定不变的数学模型和规律可循。

而模糊控制器能充分的利用参赛队员丰富的实践经验对系统经行更好的控 制效果[8]。

下面就模糊 PD 控制器的规律表。

enum Fuzzy_Lau Kp_Law[4][4]=//kp 的规律表 {//|e| ZO S M L //ED {ZO, M, L, L}, //ZO { L, L, M, L}, //S { L, M, S, L}, //M { M, M, S, M} };

enum Fuzzy_Lau Kd_Law[4][4]=//kd 的规律表 {//|e| ZO S M L //ED //L {ZO, S, L, L}, //ZO { S, L, L, L}, //S {ZO, M, M, M}, // M {ZO,ZO, M, L} //L 42 第六章 智能车技术参数 车模基本尺寸:

车长:630mm 车宽:250mm 车高:140mm 电路电源情况及功耗情况:

电源电压范围:7.2V-8.5V 正常运行时总电流平均值:约 500mA 电容总容量:约 1742.85uF 传感器个数及动力装置数量 电磁传感器:3 个 起跑线检测传感器:8 个 避障传感器:2 个 测速传感器:2 个 传感器总数:15 个 电机:2 个 舵机:1 个 赛道检测精度及检测周期:

检测精度:3mm 检测周期:1ms 43 第七章 总 结 在此份技术报告中,我们主要介绍了准备比赛时的基本思路,包括硬 件设计机械设计、软件编写以及最重要的控制算法的思想。

我们组从今年 1 月份开始着手做智能车到现在近八个月的时间,经历 的不光是技术层面的问题,更多的是心理考验。每一次遇到各种困难,我 们都没放弃过,大家齐心协力,迎难而上,努力思考,大胆尝试。这一届 我们又在传感器和驱动设计和布局上下了功夫,运放类型从 LM358 到 TLC2272, 从尝试各类算法到最终算法的确定,从电感数目和摆放方式的探 索到最终方式的确定,遇到了多少困难不得而知,但总是能克服困难,直 至才走到了今天,冲进了国赛。

整部车模的制作,从最初的方案定型、传 感器选型、驱动电路设计,到方案确定,电路设计、机械改进、控制策略 的确定、算法的实现和调试,我们组 3 名队员齐心协力,发挥各自的优点, 分工协作,最后很好的完成了整个制作过程。在做车的过程中,学到的东 西不只是专业知识上的,更重要还有做人方面的经验,这份技术报告作为 我们小组辛勤汗水的结晶,凝聚着我们小组每个人的心血和智慧,随着它 的诞生,这份经验将永伴我们一生,成为我们最珍贵的回忆。

本车模的特点如下: 软件进行滤波处理,提高了传感器抗干扰能力。

传感器简洁、轻巧,多种方案并行。

利用驱动能力强的 BTN7971 作为电机的驱动芯片 。

传感器参数一致性好。

但在车模系统开发调试过程中,也遇到了不少问题:从车模总体性能 各因素考虑,车模系统分为采集、处理、控制三部分。电磁组特点决定了 车模的前瞻比较小,车模容易出现严重的滞后,因此信号的采集影响到车 模的控制策略。在实践中发现,工字电感采集回来的信号存在一定的滞后, 而且单片机 AD 精度有限,电感位置变动时存在死区造成检测精度不足, 在 运放电路上还需进行改进。在处理这些精度不太高的数据时如何合理的利 用其中规律我们有待研究。在控制算法上,有待尝试多种思路进行比较。 45 参考文献 [1] 卓晴,黄开胜.邵贝贝等. 学做智能车——挑战“飞思卡尔”杯[C]. 北京航空航 天大学 出版社,2007. [2]臧杰,阎岩《汽车构造》机械工业出版社 [3]杨欣.电子设计从零开始.清华大学出版社出版,2002. [4]华成英 童诗白.模拟电子技术基础(第四版)[M].北京:高等教育出版社,2007. [5]谭浩强.C 程序设计[M],北京:清华大学出版社,1999,87-186. [6]何立民.单片机高级教程[M],北京:北京航空航天大学出版社,2007,90-222 . [7]罗宇翔,俞恢春,李思雄. PCB 板层布局与 EMC. 安全与电磁兼容,2003. [8] 王威等.HCS12 微控制器原理及应用.北京航空航天大学出版社. 47 附录 A: 智能车电路原理图 原理图电路 PCB 电路板 I 附录 B: 智能车源代码 /* * 工程名称:NewCarcoder1.c * 工程作用:整个车模的程序 * 建立时间:2014 年 6 月 28 日 * 版本升级:

* 作者版权:许李尚 东北林业大学机电工程学院创新实验室 */ /* * 文件包含头文件 */ #include "includes.h" /* * 函数名称:main * 函数参数:无 * 函数返回:无 * 函数功能:初始化底层库,并开始主程序循环 */ III 第九节全国大学生智能汽车邀请赛技术报告 int main(void){ DisableInterrupts;

System_Init();

EnableInterrupts;

System_Start();

for(;;){ //禁止总中断 //初始化函数和开启响应的中断 //开总中断 //程序运行函数 } return 0;

} /* * 函数名称:System_Init * 函数参数:无 * 函数返回:无 * 函数功能:初始化函数包括各种底层 */ void System_Init(void){ /* * 1 初始化全局变量 */ Speed_p 集变量 = (MSPEED *)malloc(sizeof(MSPEED));

//初始化速度采 IV 附录 B Speedpr_p = (MSPEED *)malloc(sizeof(MSPEED));

集变量 duty= (DUTY PIDpa PIDpa1 *)malloc(sizeof(DUTY)); //初始化速度采 //初始化占空比参数 = (PIDpara*)malloc(sizeof(PIDpara));

//初始化参数 = (PIDpara*)malloc(sizeof(PIDpara));

//初始化参数 *)malloc(sizeof(MOTV));

//初始化速度变量 V_p = (MOTV ADV[0].num = ADV[1].num = ADV[2].num = 0;

个数 counter = 0; //初始化 ADV 的 //屏幕点亮计数器 //初始化脉冲计数 //初始化脉冲计数 1 //坡道识别标志位 //偏差 //偏差的变化率 //上一次的偏差 //避障,坡道用偏差用 PuLse_Counter = 0;

PuLse_Counter1 = 0;

Slope_Fl = 0;

E = 0;

Ed = 0;

E_pre = 0;

E_a = E_b =E_c = 0;

E_d = 0;

Lost_Flag = 0;

L_state = 0;

dir[0] = dir[1] =0;

Duty_SE_Pre = SE_DUTY_M;

一次值 VRef = 170; //电感丢失标志 //避障标志位 //方向标志清零 //舵机打角的上 //设定速度值 V 第九节全国大学生智能汽车邀请赛技术报告 Slope_V = 144; //设定坡道速度 //直角预设速度 //确定选择 //显示号码 //初始化页面号 //初始化调节精度 //起跑线初始化 RA_V = 120;

FaceSure = 0;

FaceNum = 0;

FacePage = 0;

Reg_pre = 1;

counter1 = 0;

Right_angle_state = Run_start = Running = Runwait = 0;

counter2 = 0;

/* * 2 开机所需底层函数的初始化 */ //初始化起跑三标志为 light_init(Light_Run1_PORT,Light_Run1,Light_ON);//初始化小灯 1 IFace_init();

//界面底层初始化函数 //PID 初 PIDC_init(Speedpr_p,duty,PIDpa,PIDpa1,V_p,&Kp,&Kd);

始化 IFace_start(ADMax);

Timer_Uart_init();

/* * 3 开中断,设置中断优先级 */ //初始化界面 //初始化定时器 VI 附录 B set_irq_priority (PIT0_irq,0);

set_irq_priority (PORT_D_irq_no,1);

set_irq_priority (PORT_B_irq_no,3);

set_irq_priority (PIT1_irq,2);

} //屏幕刷新的优先级最低 //按键的优先级 1 //按键的优先级 1 //电感采集的终端 2 /* * 函数名称:System_Start * 函数参数:无 * 函数返回:无 * 函数功能:主循环和主函数 */ void System_Start(void){ uint16 counter_v =0;

uint32 Counter_Light = 0;

float *p;

//保护计数 //小灯计数器 p=(float*)calloc(5,sizeof(float));

/* * 主循环 */ //开辟五个空间供屏幕使用 VII 第九节全国大学生智能汽车邀请赛技术报告 while(1){ Counter_Light++;

if(Counter_Light>100000){ //循环累加 //运行指示灯 light_change(Light_Run1_PORT,Light_Run1);

Counter_Light = 0;

} if(counter >

0){ counter=0;

switch(FacePage){ case 0: p[0] = Kp;

p[1] = Kd;

break;

case 1: p[0] = PIDpa->kpL;

p[1] = PIDpa->kiL;

p[2] = PIDpa->kdL;

break;

case 2: p[0] = PIDpa->kpR;

p[1] = PIDpa->kiR;

p[2] = PIDpa->kdR;

break;

case 3: //技术清零 VIII 附录 B p[0] = VRef;

p[2] = Run_start;

break;

case 4: p[0] = E;

p[1] = duty->SE;

break;

case 5: p[0] = ADVo_k[0];

p[1] = ADVo_k[1];

p[2] = ADVo_k[2];

break;

} p[4] = Reg_pre;

if(Running==0&&Runwait==0){ IFace_work(FacePage,p[0],p[1],p[2],p[3],p[4]);

IFace_choose(FacePage,&FaceNum,FaceSure);

} Protect_1(V_p->V_Ref,&counter_v);

} /* * 如果打开起跑标志 */ Run_Wait(&Runwait,&Run_start);

//保护延时 IX 第九节全国大学生智能汽车邀请赛技术报告 /* * 保护程序 */ Protect(V_p->V_Ref,counter_v, Speed_p->L,Speed_p->R, &Running,&FacePage,&FaceSure);

/* * 起跑线检测 */ Stating_line(V_p->V_Ref,counter1,E,&Running,&FacePage,&FaceSure);

/* * 丢失响 */ if( Right_angle_state == 1&&DIP_4_STATE==DIP_ON){ Buzzr_Ring;

} else{ Buzzr_Shut_Up;

} /* * 串口使用 */ if(counter2>1){ X 附录 B counter2 = 0;

//if(Running!=0) //VisualScope_Output(E - 150,Ed,duty->SE - SE_DUTY_M,0); VisualScope_Output(ADVo[0],ADVo_k[0],ADVo[2],ADVo_k[2]);

} } } /* *文件名称:isr.c *功能概要:中断处理函数 *创建日期: 2014 年 6 月 28 日 *版本更新: *作者版权:许李尚 */ 东北林业大学机电工程学院机电创新实验室 /* * 文件包含头文件 */ #include "includes.h" XI 第九节全国大学生智能汽车邀请赛技术报告 /* * 函数名称:pit0_isr * 函数参数:无 * 函数返回:无 */ void pit0_isr(void) { counter++;

//刷屏计数器 if((PIT_TFLG(0)&PIT_TFLG_TIF_MASK)!=0) { PIT_TFLG(0)|=PIT_TFLG_TIF_MASK;

位 } } //清除中断标志 /* * 函数名称:pit1_isr * 函数参数:无 * 函数返回:无 */ void pit1_isr(void){ static uint8 Count20s=0;//是毫秒计数 static uint8 Count1s=0;// /* XII 附录 B * 中断程序的运行平台 */ AD_sampling(ADV);

Count20s=Count20s+1;

Count20s = Count20s%20;

/* * 10ms 电机控制 */ if(Count20s==10||Count20s==0){ Quad_get(&(Speed_p->L),&(Speed_p->R));

Motor_Sp(V_p,VRef,Slope_V,Running,Slope_Fl, Right_angle_state, RA_V);

Motor_PID(Speed_p,Speedpr_p,PIDpa,duty,V_p);

//进行 PID 控制 Motor_Change(duty);

*Speedpr_p = *Speed_p;

S_L_Delay(V_p->V_Ref,&counter1);

counter2++;

} /* * 20ms 的舵机控制 */ if(Count20s==0){ AD_Norm(ADV,ADMax,ADVo);

Ampl_Limi(ADVo,ADVo_k);

//保存现在的值 //采集电感值 XIII 第九节全国大学生智能汽车邀请赛技术报告 Slope_state(ADVo_k[1],&Slope_Fl,&Count1s, &PuLse_Counter,Speed_p->L,Speed_p->R);

E_d = eCalculation(ADVo_k,dir,E_pre,Slope_Fl,&Lost_Flag);

E_a = ADVo[0] - ADVo[2]; Limit_State(&E_c,Slope_Fl,&PuLse_Counter1,&L_state,Speed_p->L,Speed_ p->R);

if(DIP_6_STATE==DIP_ON){ E =E_d +E_c;

} else{ E =E_d;

} SE_Control(E,E_pre,E_a,E_b,duty,Kp,Kd,PIDpa,PIDpa1,Duty_SE_Pre,Slope _Fl,Lost_Flag);

SE_pwm_Change(duty->SE);

/* * 保存上一次的值 */ Ed=E-E_pre;

Right_Angle(E,Ed,&Right_angle_state);

dir[1]=dir[0];

E_pre =E;

E_b = E_a; XIV 附录 B Duty_SE_Pre = duty->SE;

} if((PIT_TFLG(1)&PIT_TFLG_TIF_MASK)!=0) { PIT_TFLG(1)|=PIT_TFLG_TIF_MASK;

位 } } //清除中断标志 /* * 函数名称:pit3_isr * 函数参数:无 * 函数返回:无 */ void pit3_isr(void) { Running = 1;

Runwait = 0;

LCD_CLS();

hw_pit_end(PIT3);

hw_disable_pit_int(PIT3);

if((PIT_TFLG(3)&PIT_TFLG_TIF_MASK)!=0) { PIT_TFLG(3)|=PIT_TFLG_TIF_MASK;

//清空屏幕 XV 第九节全国大学生智能汽车邀请赛技术报告 } } /* * 函数名称:

PortD_isr * 函数参数:无 * 函数返回:无 */ void PortD_isr(void){ uint8 K_Va=0;

/* * 读取键值并进行统计 */ if(KEY_D_STATE==0){ K_Va=1;

} if(KEY_U_STATE==0){ K_Va=2;

} if(KEY_L_STATE==0){ K_Va=3;

} XVI 附录 B if(KEY_R_STATE==0){ K_Va=4;

} if(KEY_S_STATE==0){ K_Va=5;

} switch(K_Va){ case 1: FaceNum++;

if(FaceNum==5) FaceNum = 0;

break;

case 2: if(FaceNum == 0){ FaceNum=5;

} FaceNum--;

break;

case 3: if(FaceSure == 0){ if(FacePage==0){ FacePage=6;

} FacePage--; XVII 第九节全国大学生智能汽车邀请赛技术报告 } else{ switch(FacePage){ case 0: switch(FaceNum){ case 0: Kp -= Reg_pre;

break;

case 1: Kd -= Reg_pre;

break;

case 4: Reg_pre /=10;

break;

} break;

case 1: switch(FaceNum){ case 0: PIDpa->kpL-= Reg_pre;

break;

case 1: PIDpa->kiL-= Reg_pre;

break; XVIII 附录 B case 2: PIDpa->kdL-= Reg_pre;

break;

case 4: Reg_pre /=10;

break;

} break;

case 2: switch(FaceNum){ case 0: PIDpa->kpR-= Reg_pre;

break;

case 1: PIDpa->kiR-= Reg_pre;

break;

case 2: PIDpa->kdR-= Reg_pre;

break;

case 4: Reg_pre /=10;

break;

} break; XIX 第九节全国大学生智能汽车邀请赛技术报告 case 3: switch(FaceNum){ case 0: VRef-= Reg_pre;

break;

case 1: break;

case 2: break;

case 4: Reg_pre /=10;

break;

} break;

case 4: break;

case 5: break;

} } break;

case 4: if(FaceSure == 0){ FacePage++; XX 附录 B if(FacePage==6){ FacePage=0;

} } else{ switch(FacePage){ case 0: switch(FaceNum){ case 0: Kp += Reg_pre;

break;

case 1: Kd += Reg_pre;

break;

case 4: Reg_pre *=10;

break;

} break;

case 1: switch(FaceNum){ case 0: PIDpa->kpL+= Reg_pre;

break; XXI 第九节全国大学生智能汽车邀请赛技术报告 case 1: PIDpa->kiL+= Reg_pre;

break;

case 2: PIDpa->kdL+= Reg_pre;

break;

case 4: Reg_pre *=10;

break;

} break;

case 2: switch(FaceNum){ case 0: PIDpa->kpR+= Reg_pre;

break;

case 1: PIDpa->kiR+= Reg_pre;

break;

case 2: PIDpa->kdR+= Reg_pre;

break;

case 4: Reg_pre *=10; XXII 附录 B break;

} break;

case 3: switch(FaceNum){ case 0: VRef+= Reg_pre;

break;

case 1: break;

case 2: Run_start +=1;

break;

case 4: Reg_pre *=10;

break;

} break;

case 4: break;

case 5: break;

} } XXIII 第九节全国大学生智能汽车邀请赛技术报告 break;

case 5: FaceSure++;

FaceSure = FaceSure%2;

break;

} if(Reg_pre>100) Reg_pre = 100;

else if(Reg_pre<0.001) Reg_pre = 0.001;

/* * 清除标志位 */ PORT_PCR_REG(PORTD_BASE_PTR,KEY_Up)|=PORT_PCR_ISF_M ASK;

PORT_PCR_REG(PORTD_BASE_PTR,KEY_Down)|=PORT_PCR_ISF _MASK;

PORT_PCR_REG(PORTD_BASE_PTR,KEY_Right)|=PORT_PCR_ISF_ MASK;

PORT_PCR_REG(PORTD_BASE_PTR,KEY_Left)|=PORT_PCR_ISF_MAS K;

PORT_PCR_REG(PORTD_BASE_PTR,KEY_Sure)|=PORT_PCR_ISF_ MASK;

} XXIV

电磁组 东北林业大学 东林宝贝 电磁组 东北林业大学 东林宝贝 暂无评价 | 0人阅读 | 0次下载 | 举报文档 第?九?届?飞?思?卡?尔?技?术?报?告 浏览后50页 您的评论 *感谢支...

日,在吉林大学举行的东北赛区比赛中,共有来自东北三省及内蒙古自治区的 46 所高校 ... 为学校争取更加优异的成绩.(王琢) 组别 队伍 队员 奖项 排名 电磁组 东林宝贝 许李尚 ...

光之翼 Extra 东林宝贝 PJ 星海一号 启航 4 队 超级马力 队伍名称 决赛成绩 23.032 24.725... 晋豹一队 东秦电磁 1 队 北京科技大学电磁组一队 TYL 北理电磁一队 华科电磁 1 队 明月...

电磁组,东北林业大学,东林宝贝,东北林业大学教务处,东北林业大学研究生院,东北林业大学图书馆》出自:QQ空间素材网
链接地址:http://www.qzoneai.com/sucai/J2TuXT0IwnIpNfmV.html

相关文章阅读

网站地图 | 关于我们 | 联系我们 | 广告服务 | 免责声明 | 在线留言 | 友情链接 | RSS 订阅 | 热门搜索
版权所有 QQ空间素材网 www.qzoneai.com

电磁组,东北林业大学,东林宝贝,东北林业大学教务处,东北林业大学研究生院,东北林业大学图书馆