东北林业大学基于arm处理器的电磁导航智能车设计

上传人:沈*** 文档编号:124332617 上传时间:2022-07-24 格式:DOC 页数:49 大小:4.64MB
收藏 版权申诉 举报 下载
东北林业大学基于arm处理器的电磁导航智能车设计_第1页
第1页 / 共49页
东北林业大学基于arm处理器的电磁导航智能车设计_第2页
第2页 / 共49页
东北林业大学基于arm处理器的电磁导航智能车设计_第3页
第3页 / 共49页
资源描述:

《东北林业大学基于arm处理器的电磁导航智能车设计》由会员分享,可在线阅读,更多相关《东北林业大学基于arm处理器的电磁导航智能车设计(49页珍藏版)》请在装配图网上搜索。

1、第八届“飞思卡尔”全国大学生杯智能汽车竞赛技 术 报 告 基于ARM处理器的电磁导航智能车设计学 校:东北林业大学队伍名称:和谐号参赛队员:杨玉龙史佳俊潘国华带队教师:白雪冰王 琢关于技术报告和研究论文使用授权的说明 本人完全了解第七届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名: 带队教师签名: 日 期: 目 录第一章 引 言 . 1 1.1 概述 . 1 1.2

2、 各章主要内简介.1 第二章 系统设计 . 3 2.1 系统方案介绍 . 3 2.2 智能车系统总体结构 . 3 2.2.1 中央处理单元 . 4 2.2.2 电源模块 . 4 2.2.3 电磁检测模块 . 4 2.2.4 速度检测模块 . 4 2.2.5 电机驱动模块 . 4 第三章 机械结构设计 . 4 3.1 智能车参数要求 . 4 3.2 前轮 . 5 3.2.1 主销后倾 . 5 主销内倾. 6 3.2.3 前轮前束. 6 3.3 差速调整 . 7 3.4 车身布局 . 8 3.4.1 前瞻的安放.83.4.2 重心调整.83.4.3 底盘高度调整.93.5 舵机的安放及力臂的选择

3、. 93.6 其他调整. . .9第四章 智能车硬件系统 . 10 4.1 单片机最小系统 . . 10 4.2 电源管理模块 . . 10 4.3 电机驱动模块 . . 124.4 传感器模块 . . 13 4.5 速度检测模块 . 16 4.6 起跑线检测 . . 18 4.7 蓝牙模块 . 19 4.8 小车底板设计 . 20 第五章 软件系统设计 . 21 5.1 软件开发平台 . 22 5.2 软件系统总体设计 . 22 5.3 智能车控制系统总体方案 . . 245.4 各功能初始化 . . 245.4.1 初始化串口 . 245.4.2 AD初始化 . 24 5.4.3 拨码开关

4、初始化 . 24 5.4.4 控制舵机的PWM . 27 5.4.5 DMA编码器的初始化 . 27 5.5 路径识别模块的软件设计 . 30 5.6 智能车速度控制算法 . . . . . 32 第六章 智能车技术参数 . 32 第七章 总 结 . 33参 考 文 献. 34 附录A: 智能车电路原理图 . 35附录B: 智能车源代码 . 36第一章 引言1.1 概述 飞思卡尔杯全国大学生智能车竞赛是为了加强大学生实践、创新能力和团队精神的培养,促进高等教育教学改革,由教育部高等学校自动化专业教学指导分委员会主办全国大学生智能汽车竞赛。该竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导

5、思想,旨在促进高等学校素质教育,为优秀人才的脱颖而出创造条件。该赛事是以智能自循迹小车为研究对象的创意性科技竞赛,是由飞思卡尔半导体公司赞助的面向全国大学生的一种具有探索性的工程实践活动,其根本宗旨在于促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神。 飞思卡尔杯全国大学生杯智能汽车竞赛是国家教学质量与教学改革工程资助项目,以飞思卡尔半导体公司生产的32位单片机为核心控制模块,通过增加道路传感器、电机驱动电路以及编写相应程序,制作一个能够自主识别道路的汽车模型。因而该竞

6、赛是涵盖了智能控制、模式识别、传感技术、汽车电子、电气、计算机、机械等多个学科的比赛,对学生的知识融合和实践能力的提高,具有良好的推动作用。 本组采用第七届飞思卡尔杯全国大学生智能车竞赛的汽车模型作为研究平台,以32位单片机MK60DN512ZVLQ10作为主控制单元,运用IAR软件作为开发工具进行智能控制策略研究。道路信息检测模块普遍采用工字型电感 ,该传感器在工作稳定性、分辨率、价格等方面均比较优秀,基于研究需要,经过综合考虑,本设计采用电感传感器采集道路信息,经过后续处理,完成对赛道信号检测并以此来控制车子的转向和行驶速度。关于软件,我们采用鲁棒性较强的PID控制算法来作为车子的主导控制

7、。为满足智能车在高速与急转等恶劣情况下的动力性能和稳定性能,我们参考了前几届的队伍参赛经验,经过深思熟虑对整车经行了合理的重心与电路等的布局。1.2 各章主要内容简介 本文作为我们小组近一年的做车经历和经验的总结,主要从硬件电路设计、机械结构设计和软件设计制作过程等方面介绍了制作本智能模型车的各项关键技术,以供组委会老师审阅及以后的参赛队员参考,其概要内容如下:第一章 引言:主要介绍了该项比赛的背景、发展历程、以及本队的开发及控制策。第二章 系统设计:总体介绍了整个智能车系统各模块;第三章 机械结构设计及调整:详细介绍了本智能车机械结构设计与调校; 第四章 智能车硬件系统:分模块详细介绍了小车

8、硬件电路设计与制作; 第五章 软件系统设计:详细介绍了智能小车软件设计及算法实现; 第六章 智能车技术参数:智能车主要技术参数说明; 第七章 总结:主要说明一下我们在设计过程中遇到的问题和解决办法,以及还存在的问题; 附录A:智能车电路原理图附录B:智能车源代码第二章 系统设计2.1 系统方案介绍 本智能车系统采用“飞思卡尔”32 位单片机MK60DN512ZVLQ10 作为核心控制单元, 由安装在智能车前部的电磁传感器获得赛道空间磁场信息并传到核心控制单元单片机中,由智能车“大脑”接收并处理从传感器传回的信息,PWM 模块产生相应的PWM 波,通过输出不同占空比控制智能车的转向舵机与直流电机

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

10、DN512ZVLQ10单片机CPU 属于增强型32 位CPU,片内总线时钟最高200 MHz,IEEE1588以太网,全速和高速USB2.0On-The-Go带设备充电探测,硬件加密和防窜改探测能力。丰富的模拟、通信、定时和控制外设从100LQFP封装256KB闪存开始可扩展到256MAPBGA1MB闪存。大闪存的K60系列器件还可提供可选的单精度浮点单元、NAND闪存控制器和DRAM控制器。快速,高精度16位ADC、12位DAC、可编程增益放大器、高速比较器和内部参考电压。2.2.2 电源模块 为各个电路模块提供稳定电源,保证各模块正常工作。 2.2.3 电磁检测模块 完成对赛道中心导线产生

11、的磁场进行检测,判断道路信息,通过连接线把信息传送给中央控制单元分析、处理,使智能车沿着跑道轨迹稳定运行。2.2.4 速度检测模块 对模型车的速度进行检测,实现闭环控制,以便调整弯道和直道的速度,从而提高平均速度,使小车更快跑完全程。 2.2.5 电机驱动模块 对模型车上的电机进行驱动,控制赛车的速度。第三章 机械结构设计及调整智能车参数要求1、车模使用A型车模。车模运行方向为:转向轮在前,动力轮在后;2、参加电磁赛题组不允许使用光学传感器获得道路的光学信息,但是可以使用光电码盘测量车速;3、车模中禁止改动的部件发生损坏,需要使用相同型号的部件替换;4、车模改装完毕后,车模尺寸宽度不超过250

12、mm,长度没有限制;5、禁止改动车底盘结构、轮距、轮径及轮胎;如有必要可以对于车模中的零部件进行适当删减。前轮主销后倾主销的轴线相对于车轮的中心线向后倾斜的角度。前轮重心在主销的轴线上由于主销向后倾斜使前轮的重心不在车轮与地面的接触点上,于是产生了离心力,主销后倾形成的离心力,可以保证汽车直线行驶的稳定性还可以帮助车轮自动回正。主销后倾角延长线离地面实际接触越远,车速越高,离心里就越大。主销后倾角的作用:在中高速行驶中保持汽车直线行驶的稳定性,适当的加大主销后倾角可以帮助转向轮自动回正,可有效扼制转向器的摆振,可使转向便轻,单独适量调一侧主销后倾角可修理行驶跑偏主销后倾角靠离心力保证汽车直线行

13、驶和车轮自动回正。实际中经过实验我们选择原车设置。通过如图3.2.1红色圈中的黄色垫片调节。主销内倾是指主销装在前轴略向内倾斜的角度,它的作用是使前轮自动回正。角度越大前轮自动回正的作用就越强烈,但转向时也越费力,轮胎磨损增大;反之,角度越小前轮自动回正的作用就越弱,因此这个主销内倾角都有一个范围,约58之间。经过不断的实验,本车采用大约5度的内倾角。通过如图3.2.2红色圈内螺丝调节。前轮前束所谓前束是指两轮之间的后距离数值与前距离数值之差,也指前轮中心线与纵向中心线的夹角。前轮前束的作用是保证汽车的行驶性能,减少轮胎的磨损。前轮在滚动时,其惯性力会自然将轮胎向内偏斜,如果前束适当,轮胎滚动

14、时的偏斜方向就会抵消,轮胎内外侧磨损的现象会减少。在实际调整中我们开始采用大约-3度的角度,但是发现转弯轻松但是转弯后不容易回正。经过不断的改进最终选择现在大约7的角度。通过如图3.2.3红色圈内螺丝调节。 差速调整飞思卡尔智能车使用的是滚珠差速器(如图3.3),虽然差速效果不及行星轮差速器,但如果调整得好的话,足以满足车模的需要。飞思卡尔车模的差速器的松紧程度可以通过后轮的紧固螺母来调节。最终差速的效果需要达到在加速时差速不会打滑,但是在转向时两轮能有不同的运动速度。车身布局前瞻的安放为了能快速提前检测到赛道信息我们需要尽量长的前瞻,但前瞻太长又使得车的重量增加不利于转弯,同时也给前瞻的固定

15、增加难度。最终经过我们不断的实验与改进,选择了碳纤维杆搭建前瞻传感器支架,因为没有长度要求,我们的前瞻长度大概为50厘米。此前瞻有点:1:机架简单,质量轻,强度大:2:可根据需要改变传感器位置和高度,固定简单牢固,减少了小车在行驶过程中的晃动,是检测的数值更加稳定。3:前瞻紧连车身,使转弯很灵活,能够很轻松转弯并快速稳定进入直道。4:拆卸更换方便,如果碳素杆不小心折断能够很快更换。重心调整车身重心位置的前后调整,对智能车行驶性能有很大的影响。按照车辆运动学理论,车身重心前移会增加转向,但会降低转向的灵敏度,同时降低后轮的抓地力;重心后移会减少转向,但会增大转向灵敏度,后轮抓地力也会增加。因而调

16、整合适的车体重心,让智能车更加适应跑道是很关键的。根据实际调试经验,鉴于当前舵机响应迟缓,因此,需要将车的中心前移,增加转向性能。 小车的布局以精简、可靠、稳定为前提。电路板尽量贴近车底盘,并与电池、舵机尽量集中在地盘中心。最终小车重心实现重心集中并稍有靠前。使得前轮有很好的抓地力的同时转弯也相对轻盈。车身总体如图3.4。底盘高度调整飞思卡尔A车模前轮与后轮的悬架的高度均可调。前轮是通过改变垫圈的个数来调节。后轮是通过安装不同高度的支架来调节。为了是小车转弯稳定,车的底盘需要尽量的低,但是考虑到需要过障碍,我们将车的底盘高度调整到了大约1厘米。舵机的安放及力臂的选择舵机安装直接影响到转向问题。

17、如果舵机调整不到位,将很大程度上限制转向角度和转向灵敏度。车模原始舵机被安放在了车模中心,为了空间的合理利用,我们把舵机转移到了两前轮之间,为小车主板留出了一定的空间。为了能完全固定舵机,我们自制了L型铝片并使用铜柱。如图3.5。舵机力臂对舵机转向有很大影响,舵机力臂太短会使舵机打角增加,这样就增加了舵机的响应时间;舵机力臂太长会使转弯力矩增加,可能造成舵机转弯没力甚至烧坏舵机。在不断的实验中我们选择了合适的舵机力臂,并对舵机采用直立式。最终是舵机转弯灵活、轻盈。其他调整底盘上为了安放电路板、舵机等会有打孔,甚至对于有些影响安放的地方会打磨掉。为了减轻重量,部分螺钉、螺母是使用塑料的。本车轮胎

18、使用橡胶填充海绵形式,摩擦力是不错的,所以对于轮胎没有大的改动,只是在跑的过程发现轮胎软了后性能会更好,所以新轮胎会简单进行打磨。第四章 智能车硬件系统4.1 单片机最小系统 单片机最小系统为本智能车系统的核心。为了稳定和可重复使用,易于更换,我们购买了单片机最小系统板。这个最小系统板引出了几乎所有功能引脚,板上自带晶振电路、复位电路、单片机电源电路,指示灯。电路图如图4.1.1 所示。图4.1.1 单片机最小系统原理图4.2 电源管理模块 电源模块相当于有缸内的燃油,给整个系统提供电能,而供电的稳定直接关系到整个小车的稳定运行。 比赛要求智能车供电电源只能使用指定型号的7.2V 2000mA

19、h Ni-Cd 电池供电。而系统单片机需要3.3 电源,电机驱动需要7.2V 电池供电,检测电路需要5V 电源,数字舵机需要6V电源。对于单片机电源我们用的是低压差稳压器TPS7350稳压到5V,其特点是其输出电压精度高(20);输出噪声低(2a);压差低,在输出为100ma时,最大压差为35mv;静态电流小,典型值为340a(与负载电流大小有关);有关闭电源控制端,在关闭电源状态时,耗电仅为a;内部有监视输出电压电路,降到门限电压时,reset端输出低电平复位信号(当输入电压上升时,使输出电压上升到门限电压时,有200ms的延迟后,输出正常电压);内部有过流限制及过热保护。再用稳压到为整个单

20、片机系统提供电源。如图所示。检测电路是整个系统的眼睛,检测电路的的电源也是要做的稳定才不至于有大纹波信号干扰,才能使检测得到的信号更准确,基于此相比其他的稳压元件来说TPS7350更有优势。舵机所用电源是6V,用TPS7350稳压,再用两个二极管抬升对地电压,把输出电压控制在之间,其电路简单,且控制舵机更加灵敏。如图所示。对于液晶、无线模块、蜂鸣器等其他一些外围电路只需用一片LM2940足以。如图如图所示。4.3 电机驱动模块 起初的驱动芯片我们沿用了英飞凌公司的大电流电机驱动半桥芯片BTS7970。输出最大电流68A,内部带有一个P 沟道的高边MOSFET、一个N 沟道的低边MOSFET和一

21、个驱动IC。BTS7970 通态电阻典型值为16m。P 沟道高边开关省去了电荷泵的需求, 因而减小了EMI(Electro Magnetic Interference)。集成的驱动IC 具有逻辑电平输入、电流诊断、斜率调节、死区时间产生和过温、过压、欠压、过流及短路保护的功能。 但在使用中,发现BTS7970应对A型车电机发热严重,而且驱动力不足,电池电压到了就相当于没电了,我们采取了直接并联多片,或者更改电机的控制频率,效果都不是很好,最后,我们选用了导通内阻更小,输出电流更大的MOS管来搭建H桥驱动电路。其电路图如图所示。图4.3.1 MOS管H桥电路4.4 传感器模块 稳定的电磁传感器是

22、小车稳定运行的前提。起初用的LM358,在做测试时,当小车速度很快转过一个弯道时,其转换速率不够,出现丟值现象。其特性如图所示。为了提高转换速率,我们选择了性能更好、参数更优的高速运放NE5532。NE5532应用在无数优秀的前级放大调音电路之中。其具有较好的噪声性能,优良的输出驱动能力及相当高的小信号与电源带宽。其特性如图所示。但其需要双电源来维持供电,这样对于设计PCB电路板时需要更多空间,而且还需设计双电源,元件多而且复杂。基于以上的因素,我们选用了TLC2274,其特性如图所示,单电源供电,4运放,低功耗器件,其转换速率足以满足需求。基于选用的TLC2274运放,设计电路如图所示,对于

23、12的采样精度,小车静止时采样数据数值上下波动-15+15之间,且设计电路简单,总以满足采样需要。图4.4.4 传感器原理图4.5 速度检测模块 速度检测模块是为了反馈小车当前速度,形成闭环,获知小车当前状态并决定控制策略的一个环节。根据经验,我们直接选用了欧姆龙E6A2-CW3C型500线编单片机最小系统为本智能车系统的核心。为了稳定和可重复使用,易于更换,我们购买了单片机最小系统板。这个最小系统板引出了几乎所有功能引脚,板上自带晶振电路、复位电路、单片机电源电路,指示灯。电路图如图4.1.1 所示。电源模块相当于有缸内的燃油,给整个系统提供电能,而供电的稳定直接关系到整个小车的稳定运行。

24、比赛要求智能车供电电源只能使用指定型号的7.2V 2000mAh Ni-Cd 电池供电。而系统单片机需要3.3 电源,电机驱动需要7.2V 电池供电,检测电路需要5V 电源,数字舵机需要6V电源。对于单片机电源我们用的是低压差稳压器TPS7350稳压到5V,其特点是其输出电压精度高(20);输出噪声低(2a);压差低,在输出为100ma时,最大压差为35mv;静态电流小,典型值为340a(与负载电流大小有关);有关闭电源控制端,在关闭电源状态时,耗电仅为a;内部有监视输出电压电路,降到门限电压时,reset端输出低电平复位信号(当输入电压上升时,使输出电压上升到门限电压时,有200ms的延迟后

25、,输出正常电压);内部有过流限制及过热保护。再用稳压到为整个单片机系统提供电源。如图所示。检测电路是整个系统的眼睛,检测电路的的电源也是要做的稳定才不至于有大纹波信号干扰,才能使检测得到的信号更准确,基于此相比其他的稳压元件来说TPS7350更有优势。舵机所用电源是6V,用TPS7350稳压,再用两个二极管抬升对地电压,把输出电压控制在之间,其电路简单,且控制舵机更加灵敏。如图所示。对于液晶、无线模块、蜂鸣器等其他一些外围电路只需用一片LM2940足以。如图如图所示。起初的驱动芯片我们沿用了英飞凌公司的大电流电机驱动半桥芯片BTS7970。输出最大电流68A,内部带有一个P 沟道的高边MOSF

26、ET、一个N 沟道的低边MOSFET和一个驱动IC。BTS7970 通态电阻典型值为16m。P 沟道高边开关省去了电荷泵的需求, 因而减小了EMI(Electro Magnetic Interference)。集成的驱动IC 具有逻辑电平输入、电流诊断、斜率调节、死区时间产生和过温、过压、欠压、过流及短路保护的功能。 但在使用中,发现BTS7970应对A型车电机发热严重,而且驱动力不足,电池电压到了就相当于没电了,我们采取了直接并联多片,或者更改电机的控制频率,效果都不是很好,最后,我们选用了导通内阻更小,输出电流更大的MOS管来搭建H桥驱动电路。其电路图如图所示。稳定的电磁传感器是小车稳定运

27、行的前提。起初用的LM358,在做测试时,当小车速度很快转过一个弯道时,其转换速率不够,出现丟值现象。其特性如图所示。为了提高转换速率,我们选择了性能更好、参数更优的高速运放NE5532。NE5532应用在无数优秀的前级放大调音电路之中。其具有较好的噪声性能,优良的输出驱动能力及相当高的小信号与电源带宽。其特性如图所示。但其需要双电源来维持供电,这样对于设计PCB电路板时需要更多空间,而且还需设计双电源,元件多而且复杂。基于以上的因素,我们选用了TLC2274,其特性如图所示,单电源供电,4运放,低功耗器件,其转换速率足以满足需求。基于选用的TLC2274运放,设计电路如图所示,对于12的采样

28、精度,小车静止时采样数据数值上下波动-15+15之间,且设计电路简单,总以满足采样需要。速度检测模块是为了反馈小车当前速度,形成闭环,获知小车当前状态并决定控制策码器,其输出脉冲稳定,500线足以满足精度要求,且其数字量输出,可供单片机直接采集以获得速度值。安装图如图所示。4.6 起跑线检测 经过测试,在满足检测空间距离的前提下,我们选择了干簧管。干簧管是一种磁敏的特殊开关,它的两个触点由特殊的材料制成,被封装在真空的玻璃管里, 只要用磁铁接近它,磁场达到一定强度,干簧管两个触点就会吸和在一起,使电路导通。应用此原理可以准确的检测起跑线处的高强度磁场。但要注意的是当干簧管经过磁铁正中央时,两个

29、簧片受力相同,出现干簧管不吸合的现象,即干簧管的盲区。而且干簧管在摆放时,偏有一定角度其检测更灵敏,电路图如图所示。图4.6.1 干簧管检测电路4.7 无线模块和液晶调试过程中,无线模块在小车冲出赛道时可以人为的让小车及时停车,防止小车撞击外界物体而损坏,起到保护作用。而且在赛道上有时有几辆车再跑,稍有不慎就会发生撞车,为了防止撞车也可以用无线模块控制其停车。但在比赛时不能使用无线设备。如图所示。液晶在调试时的作用很大,可以通过视觉来观看显示的信息,更直观更方便。我们所用的液晶是OLED,小巧节省空间,易于控制。如图所示。4.8 电路板设计前期的小车底板我们直接采用万通板搭建,元件大空间利用率

30、低,而且重心过高,导致速度提不上去,如图所示。中期考虑PCB设计电路板,使电路板降低,落在车盘上,这样重心有所降低,易于过连续弯道。如图所示。后期的电路板设计更多的是配合车的整体机械在调整,使车底盘降低,重心前移,这样在提速时不易出现甩尾,稳定不易冲出赛道。如图所示。第五章 软件系统设计 软件开发平台 此次智能车软件开发环境采用了飞思卡尔MK60DN512ZVLQ10系列单片机开发软件IAR。该软件具有支持多种语言、开发界面统一、交叉开发平台以及支持插件工具等特点。在界面完成编译后,通过Jlink工具,在IAR环境下向MK60DN512ZVLQ10模块下载程序。Jlink工具使用简单,十分方便

31、且支持在线调试。K60 微控制器系列具有以下性能:IEEE 1588 以太网,全速和高速 USB 2.0 On-The-Go 带设备充电探测,硬件加密和防窜改探测能力。丰富的模拟、通信、定时和控制外设从100 LQFP 封装 256 KB 闪存开始可扩展到256 MAPBGA 1MB 闪存。 大闪存的 K60 系列器件还可提供可选的单精度浮点单元、NAND 闪存控制器和DRAM 控制器。 软件系统总体设计 在整个系统设计中,主要用到了单片机5个基本功能模块:PLL模块、PWM输出模块、ECT模块、PIT模块、AD转换模块。通过配置寄存器先对所用到的模块进行硬件初始化,并通过相应的数据寄存器或状

32、态寄存器的读写,实现期望的功能。为实现期望的功能所需芯片资源如表5.2.1所示。表5.2.1 系统所用到的芯片资源AD模块ADC1, ADC0电感ECT模块PIT0, PIT1定时器中断PWM模块FTM0, CH7舵机控制FTM1, CH0, CH1电机控制IO 端口模块 PORTA按键PORTEOLED, 干簧管5.3 智能车控制系统总体方案道路检测由电感传感器完成。其中使用了MK60N512VMD100的FTM模块。电机、舵机驱动和测速部分使用了单片机的PWM 模块,SPI 模块,外部中断等。小车主程序框图如图5-1。控制策略的选择对于小车的行驶性能是非常重要的。速度固然越快越好,但也要使

33、小车能够平稳完成比赛。譬如,直道入弯道前速度需要减慢,以免冲出道路;而从弯入直时则应让小车加速,在直道上能够以较高速度完成。 所以控制小车是要使小车在平稳安全行驶的前提下,尽可能地以最快的速度和最短的路线行驶。为保证小车一直沿轨迹快速行驶,系统的主要控制对象是通过路径识别单元的电感传感器检测小车相对轨迹的当前位置,控制小车的转向和速度。小车相对轨迹黑线的三种典型位置如图5-2 所示,根据检测结果判断小车与轨迹偏离的情况,如前方为直线轨迹,则控制舵机转向正中,同时控制驱动电机使其速度上升到最大速度;如检测到前方为左弯曲线 (或右弯曲线),则控制舵机使前轮向左(或向右)偏转相应的角度,同时根据车速

34、检测单元检测的当前速度,控制电机使速度下降,当前速度越大,则下降速度越大,以免小车冲出道路。图5-2 小车相对黑线的典型位置5.4 各模块初始化INIT(); OLED_Init(); KEY_Init();uart_init(UART5, 9600); /初始化串口,用来发送转换数据adc_init(ADC1, SE13); / 最右gpio_init(PORTA,13,GPI_UP,HIGH); /拨码开关初始化gpio_init(PORTA,2,GPI_UP,HIGH); /干簧管gpio_init(PORTE,2,GPO,LOW); /ledexti_init(PORTA,2,zero

35、_up); /干簧管pit_init_ms(PIT0,2); /总线频率 2ms 定时器中断*/gpio_init(PORTA,17,GPO,LOW); /灯PORTA17;FTM_PWM_init(FTM0, CH7, 100, 500); /控制舵机的PWMDMA_count_Init(DMA_CH3, PTA25 ,0x7FFF,DMA_rising); /DMA 编码器的初始化5.4.1 uart_init(UART5,9600); /初始化串口,用来发送转换数据 UART_C2_REG(UARTxuratn) &= (UART_C2_TE_MASK | UART_C2_RE_MASK

36、 ); /计算波特率,串口0、1使用内核时钟,其它串口使用外设时钟if (uratn = UART0) | (uratn = UART1) sysclk = core_clk_khz * 1000; /内核时钟 else sysclk = bus_clk_khz * 1000; /外设时钟 /设置 UART 数据通讯波特率。通过设置 UART 模块的波特率寄存器 sbr = (u16)(sysclk / (baud 8); UART_BDL_REG(UARTxuratn) = (u8)(sbr & UART_BDL_SBR_MASK); /brfa = (sysclk*32)/(baud *

37、16) - (sbr * 32); brfa = (sysclk 5) / (baud 4) - (sbr 5); /* Save off the current value of the UARTx_C4 register except for the BRFA field */ temp = UART_C4_REG(UARTxuratn) & (UART_C4_BRFA(0x1F); UART_C4_REG(UARTxuratn) = temp | UART_C4_BRFA(brfa); /* 允许发送和接收 */ UART_C2_REG(UARTxuratn) |= (UART_C2_T

38、E_MASK | UART_C2_RE_MASK ); adc_init(ADC1, SE13) /ad初始化SIM_SCGC3 |= (SIM_SCGC3_ADC1_MASK ); SIM_SOPT7 &= (SIM_SOPT7_ADC1ALTTRGEN_MASK | SIM_SOPT7_ADC1PRETRGSEL_MASK) ; SIM_SOPT7 = SIM_SOPT7_ADC1TRGSEL(0);5.4.3 gpio_init(PORTA,13,GPI_UP,HIGH); /拨码开关初始化ASSERT( (n 32u) & (data 2u) ); /使用断言检查输入、电平 是否为1b

39、it/选择功能脚 PORTx_PCRx ,每个端口都有个寄存器 PORTx_PCRx PORT_PCR_REG(PORTXportx, n) = (0 | PORT_PCR_MUX(1) | cfg); /端口方向控制输入还是输出 if( ( (cfg & 0x01) = GPI) | (cfg = GPI_UP) | (cfg = GPI_UP_PF) ) / 最低位为0则输入 | 输入上拉模式 | 输入上拉,带无源滤波器 GPIO_PDDR_REG(GPIOxportx) &= (1 n); /设置端口方向为输入 else GPIO_PDDR_REG(GPIOxportx) |= (1 1

40、; /bus频率/2 u16 mod; u8 sc_ps; u8 cv; ASSERT( (ftmn = FTM0) | ( (ftmn = FTM1 | ftmn = FTM2 ) & (ch = CH1) ); /检查传递进来的通道是否正确 ASSERT( freq 1) ); /用断言检测 频率 是否正常 ,频率必须小于时钟二分之一 /* 计算频率设置 */ mod = (clk_hz 16 ) / freq ; for(sc_ps = 0; (mod sc_ps) = 1; sc_ps+); if(freq sc_ps) / freq; cv = (duty * (mod - 0 +

41、1) / FTM_PRECISON;5.4.5 DMA_count_Init(DMA_CH3, PTA25 ,0x7FFF,DMA_rising); /DMA 编码器的初始化 u8 byten = DMA_BYTE1; u8 BYTEs = (byten = DMA_BYTE1 ? 1 : (byten = DMA_BYTE2 ? 2 : (byten = DMA_BYTE4 ? 4 : 16 ) ) ); /计算传输字节数 if(count 0x7FFF )count = 0x7FFF; count_initCHn = count; /* 开启时钟 */ SIM_SCGC7 |= SIM_S

42、CGC7_DMA_MASK; /打开DMA模块时钟 SIM_SCGC6 |= SIM_SCGC6_DMAMUX_MASK; /打开DMA多路复用器时钟 /* 配置 DMA 通道 的 传输控制块 TCD ( Transfer ControlDescriptor ) */ DMA_SADDR(CHn) = (u32)COUNTSADDR; / 设置 源地址 DMA_DADDR(CHn) = (u32)COUNTDADDR; / 设置目的地址 DMA_SOFF(CHn) = 0; / 设置源地址不变 DMA_DOFF(CHn) = 0; / 每次传输后,目的地址不变 DMA_ATTR(CHn) =

43、(0 | DMA_ATTR_SMOD(0x0) / 源地址模数禁止 Source address modulo feature is disabled | DMA_ATTR_SSIZE(byten) / 源数据位宽 :DMA_BYTEn 。 SSIZE = 0 - 8-bit ,SSIZE = 1 - 16-bit ,SSIZE = 2 - 32-bit ,SSIZE = 4 - 16-byte | DMA_ATTR_DMOD(0x0) / 目标地址模数禁止 | DMA_ATTR_DSIZE(byten) / 目标数据位宽 :DMA_BYTEn 。 设置参考 SSIZE ); DMA_CITER_ELINKNO(CHn) = DMA_CITER_ELINKNO_CITER(count); /当前主循环次数 DMA_BITER_ELINKNO(CHn) = DMA_BITER_ELINKYES_BITER(count);/起始主循环次数

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!