大连理工大学-飞驰队

上传人:无*** 文档编号:157387845 上传时间:2022-09-29 格式:DOC 页数:40 大小:668.50KB
收藏 版权申诉 举报 下载
大连理工大学-飞驰队_第1页
第1页 / 共40页
大连理工大学-飞驰队_第2页
第2页 / 共40页
大连理工大学-飞驰队_第3页
第3页 / 共40页
资源描述:

《大连理工大学-飞驰队》由会员分享,可在线阅读,更多相关《大连理工大学-飞驰队(40页珍藏版)》请在装配图网上搜索。

1、第四届“飞思卡尔”杯全国大学生智能汽车邀请赛技 术 报 告学 校: 大连理工大学队伍名称: 飞驰队参赛队员: 朱政和 郝帅 夏天祥带队教师: 吴振宇关于技术报告和研究论文使用授权的说明本人完全了解第四届“飞思卡尔”杯全国大学生智能车邀请赛关于保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:带队教师签名:日 期:摘 要本智能车系统以Freescale16位微处理器作为核心控制芯片,基于数字图像传感器采集视频

2、图像,通过对采集的图像进行处理分析,获取道路信息,自主识别行驶路线,并结合测速反馈实现对车体的闭环控制,使智能车能够在规定的跑道上安全、快速地行驶。论文的主要工作如下:首先,针对控制要求对智能车系统的机械结构进行改造。结合现代汽车的相关理论,通过实验的方式对智能车前轮定位参数、齿轮传动机构、后轮及差速器进行了调整;讨论了图像传感器的安装原则与位置校正;分析了转向舵机对智能车系统产生的影响,为图像传感器与转向舵机设计出了合理、可靠的安装方式。其次,文章对智能车系统的硬件电路进行了设计。分别对核心控制模块、电源管理模块、图像采集模块、电机驱动模块、舵机驱动模块、测速功能模块等部分的电路进行设计,保

3、证智能车具有良好、稳定的硬件支撑。最后,在智能车系统的软件设计中,介绍了图像采集的流程,对图像处理及路径识别的算法进行了分析,在此基础上,提出了智能车的方向控制策略和速度控制策略。关键词:路径检测;智能车;控制策略;图像处理目 录摘 要31.1 智能车制作情况61.2 技术报告内容安排说明6第二章 机械部分72.1 车模系统改装72.1.1 前轮主销后倾角72.1.2 前轮主销内倾角72.1.3 前轮前束72.1.4 底盘离地间隙82.1.5 舵机安置82.1.6 差速器的调整82.1.7 系统板和电池的安装82.2 摄像头的选择与安装82.2.1 摄像头的选择82.2.2 摄像头的固定92.

4、3 测速模块选择与安装9第三章 电路设计部分93.1 电路整体设计思路93.2 电机驱动电路设计103.3 拨档开关10第四章 软件部分124.1 主函数控制流程124.2 数据采集和处理124.2.1 视频图像的采集124.2.2 视频图像的处理134.3 速度信息的采集和处理134.3.1 速度的测量134.3.2 电机的PID控制和参数选择144.4 决策算法144.4.1 模糊控制建模144.4.1.1 根据看到赛道信息以及转角大小建立速度控制表154.4.1.2 根据小车的位置和转角的大小建立弯道角度模糊控制表164.4.1.3 模糊控制的单片机实现164.4.2 整体角度和速度联合

5、控制174.4.2.1 赛道累计偏差量17第五章 开发工具、制作、安装、调试过程说明235.1 开发工具235.2 制作、安装、调试过程23第六章 结论246.1 模型车的主要技术参数说明246.1 总结24参考文献25第一章 引言1.1 智能车制作情况本小组成员学习了自动控制理论、传感器技术、汽车电子、电气、计算机、机械等多个学科的相关知识,不断实践,最终搭建成一个各方面性能都比较优化的智能车。我们小组成员分工负责,将智能车分为机械模块、硬件电路模块、软件算法模块。对于小车的机械部分我们巧妙的将舵机的力臂加长,使小车的转弯更加灵活,摄像头的安装采用单根铝合金杆在保证摄像头稳定的同时,智能车的

6、重量也得到了很大的减轻;我们自己设计和制作了智能车的主控制板,将所有的电子元器件集中到一张电路板上,极大的降低电路之间的相互干扰,提高了系统的稳定性;控制策略上我们采用了神经网络和遗传算法相结合的控制思路,基于赛道的整体信息,而不是将赛道进行类型分类,提高小车的自适应能力。1.2 技术报告内容安排说明此技术文档的正文部分大致分为三个部分:机械部分,电路硬件部分和软件部分。机械部分介绍了我们对智能车机械结构所做的改装;电路设计部分介绍了各个模块的电路设计方案以及采用的相关电路;软件部分包括摄像头数据处理、PID控制、以及上层算法等控制策略的说明。第二章 机械部分2.1 车模系统改装智能车竞赛所使

7、用的车模是一款带有差速气器的后轮驱动模型赛车,它由大赛组委会同一提供如图2.1所示。其基本尺寸参数见表2.1表2.1 车模基本参数基本参数尺寸(mm)轴距198前轮距137后轮距138/146后轮直径52传动比18/762.1.1 前轮主销后倾角“主销后倾角”是车轮的主销纵向平面内与竖直线的夹角。主销后倾使车轮偏转后产生一个回正的力矩。调整主销后倾角可以角通过增减上横臂轴上的黄色垫片的数量可以改变其大小。我们为了使模型车转向灵活,经过调整将主销后倾角设为1度。横臂轴上每侧放置两个黄色垫片,即垫片安装采用前二后二的方式。2.1.2 前轮主销内倾角“主销内倾角” 是主销在横向平面内与竖直线的夹角。

8、主销内倾角也可以使车轮自动回正。当前轮偏转时,车轮在重力作用下恢复到原来中间位置。主销的内倾可以使转向轻便,同时还可减小从转向轮传回来的冲击力,但是主销内倾角不宜过大,否则在转向过程中轮胎与地面间将产生较大的滑动。 经过实验,我们最终确定主销内倾角为4。减小了赛道作用于前轮的阻力矩,使舵机转向更加轻便,同时车轮自动回正的速度加快,直线的指向性更好。2.1.3 前轮前束 “前轮前束”是指汽车两前轮的中心面不平行,两轮后边缘的距离与前边缘的距离之差。前轮前束可以减小由前轮外倾角带来的不利影响。一般前束值为012mm。考虑到前轮前束要与前轮外倾角相匹配,我们采取前束值为8mm。2.1.4 底盘离地间

9、隙考虑到摄像头安置较高,这样会造成小车的整体重心偏高,为了降低小车的重心,我们极大限度的降低小车底盘的高度 ,防止车翻倒。 2.1.5 舵机安置对于智能车的转向的灵敏度,舵机的响应速度是一个很重要的因素,为了加快舵机的响应速度,我们采用肖特基二极管从电池取电,这样提高了舵机的电源电压,同时将电池与舵机隔离保证系统的稳定工作。 同时机械部分,我们增加了舵机的力臂,这样可以使舵机旋转的角度进行机械放大,提高转向的灵敏度。2.1.6 差速器的调整在拐弯时由于弯道内侧轮比外侧轮的拐弯半径小,则内侧轮比外侧轮的速度小,这就使两轮胎有一定的速度差,称为差速。为了保证小车能够平稳过弯,我们仔细调节了后轮的差

10、速器,使其既能平稳过弯,又能保证直线的加速特性。2.1.7 系统板和电池的安装 由于考虑到智能车采用的是后轮驱动的方式,因此将电池放在车模的后端可以保证小车直线加速的指向性,可以使小车的直线加速特性更加显著,使小车可以在直线上以较快的速度行驶,因此我们将电池放置在小车的后面。由于采用的小车主控制板较大,我们将其垂直安装,这样就带来了一个问题,那就是空气阻力对小车的影响。我们经过试验测得小车的极限速度为4.2米每秒,即为28.48公里每小时,而空气阻力在这一速度范围以下时不会产生明显的影响,因此可以忽略这种安装对小车行驶的影响。2.2 摄像头的选择与安装2.2.1 摄像头的选择摄像头采用CMOS

11、彩色数字摄像头OV6620。其像素为具有十万像素,直接输出行场同步信号,接口Y0Y7输出图像的灰度值。数据采集处理相对比较容易,相对于模拟摄像头可以省去模拟摄像头的行场分离芯片MAX1881,同时由于OV6620内置AD,很好的解决了MC9S12DG256内置AD转换慢采集的数据量不足的问题,OV6620增加了图像采集的精度,可以满足区分起始线和十字线的要求。2.2.2 摄像头的固定由于摄像头相对于其他模块其固定位置偏高,因此必须考虑其固定支架的重量问题。我们采用单根高强度的铝合金杆,由于其强度较高,可以保证摄像头的稳定性,不会出现摄像头晃动的问题,另一方面其重量较轻,不会导致摄像头的重心过高

12、的问题,不会导致出现车在过弯时出现侧翻和车体倾斜的问题。 2.3 测速模块选择与安装测速模块采用光电编码器,由于激光雕刻码盘精度很高,所以该方法测速非常准确,同时其线数可达200线,可以充分满足测速的需求。图2.1第三章 电路设计部分3.1 电路整体设计思路为了让智能车硬件电路紧凑,我们将所有的电子元件集中到一块电路板之上。这样可以减少接线,减少干扰,提高系统的稳定性,同时也可以降低小车的重量。3.2 电机驱动电路设计智能小车安装的电机为RS-380电机, 为了有效的调节电机的转速,电机驱动方案采用TD340驱动4片大功率MOS管IRF3205组成的H桥,电路原理图如图3.1。TD340是ST

13、公司生产的NMOS驱动器,可由来自单片机的PWM控制,可以方便的与单片机接口;MOS管IRF3205工作电流大(最大工作电流为80A而380电机的启动电流为3A),正常情况下发热量小,可以不用安装散热片,降低系统重量,导通时间短,可以使小车加减速更加灵活,。驱动电路如图3.1。图3.1 电机驱动原理图3.3 拨档开关由于调试赛道及场地与比赛赛道和场地有所不同,因此智能车的最优速度不同,并且比赛赛道只在比赛当天公布,现场不能修改控制程序,因此这样就需要通过模式开关进行不同模式的设定,来实现小车的最优性能。我们采用了四位拨码开关来设定不同的模式,由于其电路较简单,可以在附件的原理图中看到。第四章

14、软件部分4.1 主函数控制流程开始调用初始化程序定时两秒到获取小车当前所需要的参数控制电机和舵机检测到起跑线关闭电机结束是否是否计算最佳阈值程序首先初始化各个模块,然后读取拨码开关的设定模式,然后等待定时两秒到,当定时时间到达时启动小车,在定时两秒的过程中会调用图像处理程序对图像信息进行分析,计算出最佳阈值。接下来进入主循环,在主循环中程序不断地获取小车当前的控制参数,控制电机和舵机的转向,并且在控制周期的最后对起始线进行检测,如果发现起始线,就会关闭电机,使小车停止在出发区三米以内。4.1主程序流程图4.2 数据采集和处理4.2.1 视频图像的采集 摄像头OV6620可以输出十万像素,但是单

15、片机内部的RAM有限,不能采集完摄像头输出的所有数据,因此我们每行采集106个点,间隔采集64行存放在Image64107,行同步信号通过外部中断PE1来采集,采用PH0采集摄像头场同步信号,为了保证信号采集的有序进行,需要将摄像头的场同步信号设定为中断的最高优先级。4.2.2 视频图像的处理滤噪算法采用的是基于边缘检测算法。基于边缘检测的关键是准确计算出距离小车最近的一行的点的坐标。然后基于这一行的黑线的平均位置对应到下一行的相应位置,同时左右各扩展20个点作为查找范围,这样可以快速高效的找到相邻行的线,降低十字线、起始线的干扰,提高系统的稳定性。4.3 速度信息的采集和处理4.3.1 速度

16、的测量 测速部分的传感器采用的是光电编码器。光电编码器的原理是将小车车轮的转速转换为光电编码器输出的脉冲的个数。转速越大,光电编码器输出的脉冲的个数越多。测速部分采用脉冲累加器对光电编码器反馈回来的脉冲的个数进行计数,采用RTI模块进行定时,这样便能获得规定的时间内小车的速度。4.3.2 电机的PID控制和参数选择 PID控制原理:在模拟控制系统中,控制器最常用的控制规律是PID控制。常规PID控制系统原理框图如图4.3所示。 由于在单片机中处理的数据为数字量,因此采用增量式数字PID公式: 4.4 决策算法智能车低速行驶时,其控制策略基本上采用的是线性的控制策略,提取赛道的斜率信息控制转角,

17、同时使角度和速度具有线性对应关系,这样可以充分满足智能车沿线快速行驶的要求。但是由于是竞速比赛,要想取得优异的成绩,必须提高智能车的速度,这样就带来了很多线性控制算法不能解决的问题,很多低速时近似线性的问题的条件已经不成立了,比如在弯道中小车视野中的曲线不能用斜直线来近似,同时赛道的斜率信息随着速度的不同,关键点的位置也是随着速度发生变化。因此为了使小车能够高速行驶,提高对复杂赛道的适应能力,我们采用模糊控制算法。4.4.1 模糊控制建模模糊控制器有三个功能模块:模糊化、模糊推理、反模糊化。考虑到采用了广角镜头,这样可以达到很远的前瞻和很宽的视角。因此考虑结合图像搜索,根据观测到的赛道信息的多

18、少可以建立速度控制表,根据小车所处弯道的位置合理限定转角的范围。由于DG256的运算速度有限,考虑到模糊控制函数的复杂性以及计算时间长的特点,采用查询模糊控制表的方法实现模糊控制。4.4.1.1 根据看到赛道信息以及转角大小建立速度控制表根据不同的赛道类型,以及小车处于赛道位置的不同,摄像头采集的有效的点的个数是不同的,根据这一事实建立速度变化范围的模糊控制表。速度变化范围为5个范围,由标志位speed_very_low、speed_more_low、speed_low、 speed_ mid 、speed_ fst、speed_ more_fst、speed_ very_fst,在表格中分别

19、用-3,-2,-1,0,1,2,3。在直线和小S上看到的有效的点数比较多,因此速度可以加到最大,即置位speed_ very_fst,对应根据模糊控制表查询得到的值为3;相反在弯道中看到的有效的点数较少,这样可以将速度设定到最大过弯速度,对应于表中输出值-3。表5.3 速度模糊控制表 本帧图像看到的有效的点数上一帧图像看到的有效的点数极少很少少中间多很多极多极少-3-2-10123很少-2-2-10123少-3-2-10123中间-3-3-20233多-3-3-21233很多-3-3-21233极多-3-3-212334.4.1.2 根据小车的位置和转角的大小建立弯道角度模糊控制表 摄像头采集

20、图像计算出的平均值坐标数组AverageVIDEO_LINE_NUMBER中的Average0是距离小车最近的点,可以代表小车所处的赛道位置。根据其大小将赛道划分为五个区域:左大、左小、中间、右小、右大,在弯道当中的转角大小也可分为:左大、左小、中间、右小、右大。这样一来,便可以根据小车所处在弯道中的位置,调节小车在弯道中的转角。当小车左转同时发现小车在线的左侧,表明小车在弯道内道,这样应当将小车的转角限制一下,避免转角过大从内道中冲出跑道;当小车右转时,如果发现线在小车的左边,那么表明小车处在赛道的外圈,应当加大小车的转角。下表中我们规定转角的范围为五个量度等级:左大、左中、中间、右中、右大

21、,这五个量度等级对应于五个转角范围。表5.3 弯道方向模糊角度控制矫正规则表(a) 横坐标角度左大左小中间右小右大左大左大左大左小左小中间左小左大左小左小中间右小中间左小左小中间右小右小右小左小中间右小右小右大右大中间右小右小右大右大4.4.1.3 模糊控制的单片机实现 模糊控制算法的处理过程有三个环节:模糊化、模糊推理以及去模糊化。MC9S12DG256的指令集当中有这三个阶段的对应指令:MEM,REV,REVW,WAV。模糊化采用MEM指令,将输入的信息模糊化以便于模糊推理。模糊推理采用REV指令,进行模糊推理,建立模糊控制表。由于MC9S12DG256中规定各个前件之间只进行模糊与运算,

22、而如果几个规则对应的逻辑后件影响到同一个模糊输出,他们之间就隐含模糊或的运算,此时采用MIN-MAX法进行模糊推理。反模糊化采用重心法,WAV是解模糊的核心指令,它与EDIV指令配合完成模糊输出到控制输出的转换。4.4.2 整体角度和速度联合控制4.4.2.1 赛道累计偏差量赛道的位置信息存放在AverageVIDEO_LINE_NUMBER,为了有效的利用图像,对图像进行数据查找,找到一个极大值点和极小值点以及一个中值点,分别定义为:far_dot ,mid_dot ,near_dot。对于每个点赋予不同的权值,三个点对应的权值分别为:far_wei、mid_wei、near_wei,这样就

23、能很好的判断整体赛道是偏左还是偏右。最后的权值合成公式为:Position_warp_value = far_wei * Averagefar_dot + mid_wei* Averagemid_dot + near_wei * Averagenear_dot;在这个公式中,考虑到图像的近大远小的梯形效应,权值要保证far_wei= mid_wei= near_wei。最终将曲线整体的位置趋势和图像的偏转趋势合成为一个量化值:warp。由于这个量化值具有模糊的特性,因此我们经过在赛道上仔细的调试,根据warp的大小建立了一个模糊控制表,根据这个表查询输出对应的角度值。 第五章 开发工具、制作、

24、安装、调试过程说明5.1 开发工具开发工具使用的是Codewarrior4.6开发环境,应用PE高效合理开发单片机的各个模块。应用自制的BDM调试器对系统板进行程序的下载和数据的反馈。在调试方面同时开发了MC9S12DG256的SCI模块,通过串行接口通信,在PC机上的超级终端进行数据显示。使用Altium Designer Smmer 08作为设计电路原理图和PCB图的软件工具。5.2 制作、安装、调试过程在智能车的安装调试过程当中,我们小组成员充分体现了团队合作的精神,同时我也分工明确,三个人分别负责机械、电路以及软件程序编写。智能车的安装经过多个方案比较,最终考虑将电池安装在小车的前端,

25、而将电路的主板安装在小车的后端,这样的话可以使小车更加容易过弯。由于软件编写采用层次化得结构,这样可以保证应用层和物理层分开,将物理层调试稳定的基础上优化应用层的功能,不断提高小车的速度。第六章 结论6.1 模型车的主要技术参数说明a) 改造后的车模总体重量2.896Kg,长288,宽176;b) 电路功耗:空载5.22W,最大功率20.6W;所有电容总容量1933uf;c) 传感器共有2个,包括:CCD视频传感器1个,光电码盘 1个;d) 除车模原有的驱动电机、舵机之外无其他伺服电机;e) 赛道信息检测精度5mm、频率50Hz。6.1 总结经过一年的准备,我们搭建了一套功能齐全的智能车系统,

26、我们小组成员分工合作,充分体会到团队合作的重要性,虽然我们分别负责机械、电路、软件,但是我们互相学习,总体来说我们每个人都学到了很多知识参考文献1邵贝贝.单片机嵌入式应用的在线开发方法M.北京:清华大学出版社,2004.2王庆有.图像传感器应用技术.北京:电子工业出版社.2003 年9 月3杨国田,白焰.摩托罗拉68HC12系列微控制器原理、应用与开发技术M.北京:中国电力出版社,2003.4极品飞车.赛车技巧之弯道天书“外内外”5卓晴,黄开胜,邵贝贝等.学做智能车挑战“飞思卡尔”杯C.北京:北京航空航天大学出版社,2007.6陈家瑞.汽车构造(上、下)M.北京:机械工业出版社,2006.7余

27、志生.汽车理论M.北京:机械工业出版社,2006.8Freescale Semiconductor, Inc. MC9S12DG128 Device User Guide.9谭浩强.C语言程序设计M.北京:清华大学出版社,2005.10徐友春,王荣本,李兵,李斌。世界智能车辆近况综述J.汽车工程,2001.0711韩俊淑,韩佳文,高翔等.智能车辆的研究及发展J.世界汽车,2003.9.12陈宋,李立国,黄开胜.智能模型车底盘浅析.北京:清华大学,汽车安全与节能国家重点实验室13阮秋琦.数字图像处理学.北京:电子工业出版社,2001.20附录1:程序代码#include /* common de

28、fines and macros */#include /* derivative information */#include pid.h#include sample.h#include testspeed.h#include sci.h#include pwm.h#include SCIP.h#pragma LINK_INFO DERIVATIVE mc9s12dg256b#define VIDEO_SAMPLE INTCR_IRQEN=1#define NO_SAMPLE INTCR_IRQEN=0#define VIDEO_DOT_NUMBER107#define VIDEO_LIN

29、E_NUMBER64 extern unsigned char Image64107=0;signed int AverageVIDEO_LINE_NUMBER;volatile unsigned int speed_M=0;unsigned char g_tranTag;volatile int nSpeed = 0;volatile char speed_flag=1;/*/signed int Jump_count = 0; signed int Jump_sum = 0; /signed int Jump_dec = 0;signed int First_refer = 0;signe

30、d int last_nMiddle;char nDegree;signed int START_FLAGE = 0;volatile int Speed5;Bool bStartOn;/*/+extern volatile unsigned int PWMOUT;unsigned int far_wei=5, mid_wei=4,near_wei=3;unsigned int far_dot=5, mid_dot=4,near_dot=3;/+void main(void)unsigned char i=0;unsigned int j,k,mode;bStartOn = FALSE;Dis

31、ableInterrupts;Video_Init();SciInit();PLL_Init(); Start_PLL();angle_init();pwm_init();pid_init();g_tranTag = 0;VIDEO_SAMPLE;EnableInterrupts;SciTx(a);while(PTH_PTH1);/PWMDTY01=3185;/for(;);Delay(); mode=PTH; mode=mode4; if(mode=0) Speed0 = 10; Speed1 = 10; Speed2 = 10; Speed3 = 10; Speed4 = 10; far_

32、wei=5; mid_wei=4; near_wei=3; far_dot=7; mid_dot=20; near_dot=45; else if(mode=1) Speed0 = 15;/34; Speed1 = 15;/28; Speed2 = 15;/24; Speed3 = 15;/20; Speed4 = 15;/17; far_wei=5; mid_wei=4; near_wei=3; far_dot=7; mid_dot=20; near_dot=45; else if(mode=2) Speed0 = 36; Speed1 = 30; Speed2 = 26; Speed3 =

33、 22; Speed4 = 20; far_wei=5; mid_wei=4; near_wei=3; far_dot=7; mid_dot=20; near_dot=45; else if(mode=3) Speed0 = 34; Speed1 = 28; Speed2 = 24; Speed3 = 20; Speed4 = 17; far_wei=5; mid_wei=4; near_wei=4; far_dot=7; mid_dot=20; near_dot=45; else if(mode=4) Speed0 = 39; Speed1 = 31; Speed2 = 27; Speed3

34、 = 24; Speed4 = 22; far_wei=5; mid_wei=4; near_wei=4; far_dot=7; mid_dot=20; near_dot=45; for(k=0; k1000; k+) for(j=0; j5000; j+); DDRP_DDRP3=1;Black_wait();for(;) Img_Perdeal(); control();SteerDriver(); pid_set(nSpeed);#include /* common defines and macros */#include /* derivative information */#in

35、cludesci.h/#includepwm.hextern unsigned int speed_M;extern volatile unsigned char speed_flag;/*void PaiInit(void)TCTL4 |= 0X02;PBCTL_PBEN=1; /PBEN=1,事件技术模式,上升沿触发,PACLK 允许中断/ICPAR = 0X0F;/PACN10 = 0X00;void RealTimer_Int(void)CRGINT_RTIE=1; /Open InterruptRTICTL=0x49; /5ms Interrupt#pragma CODE_SEG N

36、ON_BANKEDvoid interrupt 7 RealTime(void)CRGFLG_RTIF=1; /Clear Flagspeed_M = PACN10 ; PACN10=0;/PT7 采集speed_flag = 1; */#pragma CODE_SEG DEFAULT_ROMvoid pwm_init(void)/初始化控制电机的PWM初始化 PWMCLK|=0X04; /选择时钟源为SB PWMPRCLK|=0X00;/时钟B1分频:0-7,分频范围1,2,4,.,128 PWMCAE|=0X00;/Channel 7 operates in Center Aligned

37、Output Mode. PWMSCLB=6; /Clock SB = Clock B / (2 * PWMSCLB);/ PWMPOL|=0X04;/Pulse Width Channel 7 Polarity /DDRP|=0X20; /PP5 为输出状态 DDRM_DDRM0 = 1; DIR=0; PWMPER2=100; PWMDTY2=0; PWME_PWME2=1; /电机pwmS输出使能 void angle_init(void) /channel 67 由channel 7 的寄存器来控制 PWME_PWME1=0; PWMPOL=0x02;/ Polarity = 1 (P

38、POLx=1)-Duty Cycle = PWMDTYx / PWMPERx * 100% PWMCLK=0x02;/CHOOSE clock SA PWMPRCLK=0x02; / SA = bus clock / 4 PWMCAE=0x02; /Center Align Enable /Left Aligned Output (CAEx=0) PWMxPeriod=ChannelClockPeriod*PWMPERx /CAEx=1 PWMxPeriod=ChannelClockPeriod*PWMPERx*2 PWMCTL=0x10; /6,7连接 PWMSCLA=1;/Clock SB

39、 = Clock B / (2 * PWMSCLB) PWMPER01=38000; set_angle(0); PWME_PWME1=1;/使能channel 67的PWM输出void set_angle(char angle) /angle from -70 to 70 unsigned int dty; dty=(unsigned int)(int)(33*angle/10)+2550); / dty=(unsigned int)(int)(142*angle)3)+2815); PWMDTY01=dty;void Stop_Initial(void) PERP |= 0X80; PIE

40、P |= 0X80;#pragma CODE_SEG NON_BANKEDvoid interrupt 56 PP7_ISR() unsigned char data; PIFP |= 0X80; PWME = 0; for(;);#pragma CODE_SEG DEFAULT_ROM#include /* common defines and macros */#include /* derivative information */#include SCIP.h/unsigned short N_VIDEO_LINE_NUMBER;/unsigned short X_VIDEO_LINE

41、_NUMBER;extern unsigned char g_tranTag;/unsigned char Img_arrayY_lenthX_lenth;/unsigned char AverraVIDEO_LINE_NUMBER;/unsigned char Imgflg;/*-串口初始化-*/void SciInit(void)SCI0BDL = (unsigned char)(64000000UL /* OSC freq */ / 2) / 9600 /* baud rate */ / 16 /*factor*/);SCI0CR1=0;/*normal,no parity*/SCI0C

42、R2=0X2C; /*RIE=1,TE=1,RE=1*/X_VIDEO_LINE_NUMBER = 43;/ N_VIDEO_LINE_NUMBER = 3;/*-发射端程序-*/void SciTx(unsigned char text)unsigned char temp;temp=SCI0SR1; /*clear flag*/while (!(SCI0SR1&0x80); /* wait for output buffer empty */SCI0DRH=0;SCI0DRL=text;/*-接受端程序-*/char SciRx(void)char result,temp;temp=SCI

43、0SR1; /*clear flag*/while(!(SCI0SR1&0x20);result=SCI0DRL;return result; /*-中断程序-*/void interrupt 20 Serv_int(void)unsigned char data;DisableInterrupts; data=SciRx();if (data = FS_CONNECTION) /at first it receive a byte if it is /FS_CONNECTION change the tranTag if(g_tranTag = 0xff) g_tranTag = 0; el

44、se g_tranTag = 0xff; EnableInterrupts; return; /SciTx(data);switch(data) case +:PWMDTY2 += 5;break;case -:PWMDTY2 -= 5;break; case 1:PTM_PTM0 = 1;break; case 2:PTM_PTM0 = 0;break; case 3:PWME_PWME2=0;break;/PWMDTY2 = 0;break; case 4:PWMDTY01 += 10;break; case 5:PWMDTY01 -= 10;break; case 6:SciTx(A);

45、default: break;/SciTx(n);/SciTx(r);EnableInterrupts;void TranAverra(void) char i; unsigned char After_tr64; for(i = 0; i 64; i+) for(i = 0; i 8; i+) / Fill the first send buffer (8 byte) SciTx(FS_CONNECTION); for(i = 0; i 64; i+) SciTx(After_tri); /for(i = 0; i 8; i+) / Fill the last 4 byte. (26 * 1

46、8 % 8 = 4. need 8 - 4 = 4 byte) SciTx(FS_TRANFINISH);void delay1(void) unsigned int i, j; /SCI0CR2_SCTIE = 0; for(i = 0; i 700; i +) for(j = 0; j = 0; i-) cOuti = ; for(i = 0; i =60) num=3; else if(MPoint.counter=30&MPoint.counter60) num=3; else if(MPoint.counter16) num=2; else num=1; else if(flag_c

47、al=1) num=1; for(i=0;inum;i+) sum=sum+MPoint.Avrm-i; num1=sum/num; /sum=0; slop=(num1-MPoint.Avrn)*100/(int)length; else slop=0; return slop;/ (m-n)*100/lengthInt16 Slop_cal_1(UInt16 m,UInt16 n,UInt16 length)/ (m-n)*100/length Int16 slop; if(length!=0) slop=(MPoint.Avrm-MPoint.Avrn)*100/(int)length;

48、 else slop=0; return slop;UInt16 Wan_flag;UInt8 Road_Type;void Easy_Control(void)/这个函数为高层的控制函数提供支持 而改为不是直接控制舵机和电机/看来仅仅利用一个函数控制舵机和电机还有待于研究 UInt16 i,j,counter_slop_neg,counter_slop_pos,temp_loc5,*p,temp;UInt16 counter_temp,pos_counter;/统计斜率正的个数UInt16 temp_all_neg,temp_all_pos,falg_tab5,flag_length;Int16 slop20,d_slop19,duannum,

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