智能跑车系统设计(四川大学二队).doc_第1页
智能跑车系统设计(四川大学二队).doc_第2页
智能跑车系统设计(四川大学二队).doc_第3页
智能跑车系统设计(四川大学二队).doc_第4页
智能跑车系统设计(四川大学二队).doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一届全国大学生智能汽车邀请赛技术报告 第一届“飞思卡尔”杯全国大学生智能汽车邀请赛技 术 报 告学 校: 四川大学队伍名称: 四川大学二队参赛队员: 覃宇 魏程鹏 刘宗斌带队教师:赵刚 4第一章 引言1第二章 硬件设计32.1 系统框图32.2 硬件电路设计32.2.1 传感器模块设计32.2.2 激光模块设计52.2.2 加速度模块72.2.4 动力模块82.2.5 电源模块92.2.6 速度测量模块10第三章 控制算法113.1 系统算法总框图1132 整体开发流程113.3 算法描述12第四章 系统参数测试结果154.1 模型车的主要参数154.1.1 几何参数154.1.2 车的功耗,电容154.1.3传感器的个数和种类154.1.4额外的伺服电机154.3 车模的改装及安装154.4 测试调试方案164.5 系统测试结果16第五章 结束语17致谢18参考文献:19第一章 引言 随着科学技术的不断发展,尤其计算机技术的突飞猛进,带动了其他的技术的不断的发展。机器人就是一个典型的例子。机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域。应该是一个多学科的综合体,随着他的技术的不断的发展,着人们的生活方式也慢慢的发生着变化。人们在对自然的不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。 机器人的历史并不算长,1959年美国英格伯格和德沃尔制造出世界上第一台工业机器人,机器人的历史才真正开始。英格伯格在大学攻读伺服理论,这是一种研究运动机构如何才能更好地跟踪控制信号的理论。德沃尔曾于1946年发明了一种系统,可以“重演”所记录的机器的运动。1954年,德沃尔又获得可编程机械手专利,这种机械手臂按程序进行工作,可以根据不同的工作需要编制不同的程序,因此具有通用性和灵活性,英格伯格和德沃尔都在研究机器人,认为汽车工业最适于用机器人干活,因为是用重型机器进行工作,生产过程较为固定。1959年,英格伯格和德沃尔联手制造出第一台工业机器人。随着现代科技的迅速发展,机器人正在经历着一个从初级到高级的飞跃,它正沿着达尔文的“进化论”逐渐发展自己,壮大自己,完善自己。研制具有人类外观特征,可以模拟人类行走与基本操作功能的类人型机器人,一直是人类机器人研究的梦想之一。类人型机器人研究是一门综合性很强的学科,代表着一个国家的高科技发展水平。1997年,日本本田公司率先研制出第一台类人型步行机器人样机。目前,机器人正在进入“类人机器人”的高级发展阶段,即无论从相貌到功能还是从思维能力和创造能力方面,都向人类“进化”甚至在某些方面大大超过人类,如计算能力和特异功能等。类人型机器人技术,集自动控制、体系结构、人工智能、视觉计算、程序设计、组合导航、信息融合等众多技术于一体。专家指出,未来的机器人在外形方面将大有改观,如目前的机器人大都为方脑袋、四方身体以及不成比例的粗大四肢,行进时要靠轮子或只作上下、前后左右的机械运动,而未来的机器人从相貌上来看与人无区别,它们将靠双腿行走,其上下坡和上下楼梯的平衡能力也与人无异,有视觉、有嗅觉、有触觉、有思维,能与人对话,能在核反应堆工作,能灭火,能在所有危险场合工作,甚至能为人治病,还可克隆自己和自我修复自己。总之,它们能在各种非常艰难危险的工作中,代替人甚至超过人类去从事各种工作。它的运用潜力将在不久的将来得到很好的验证。而自动寻迹也是机器人领域研究的一个热点,机器人的感觉传感器种类越来越多,其中视觉传感器成为自动行走和驾驶的重要部件。视觉的典型应用领域为自主式智能导航系统,对于视觉的各种技术而言图像处理技术已相当发达,而基于图像的理解技术还很落后,机器视觉需要通过大量的运算也只能识别一些结构化环境简单的目标。所以在这些方面很有研究的价值。 在这样的大背景下,飞斯卡尔半导体公司赞助了第一届飞斯卡尔杯全国大学生智能车大赛,题目很明确,在提供的开发系统上,对小车模型进行改造的基础上,利用控制算法使其对各种轨道(白底黑线)能自动寻迹,快速平稳地前进。在此基础上探索出新的控制算法和有新意的传感方式。在探索传感器方面,我们有了新的创新,突破了韩国竞赛时的以红外和CCD为主的传感方式,调制出了激光导航系统。为跑车系统装上了一幅望远镜,这样为车速的提高打下了伏笔。在有了激光导航后,加上普通的红外对管传感器的辅助,算法运行上系统有很强的预测性。车的速度也就有了进一步的提高。在下面的章节将分别从以下对整个设计说明:第二章将详细的对整个硬件的设计思想到方案的比较到最后的选取做一个详细的叙述。尤其对我们自主设计的激光导航系统将作一个比较具体的说明。第三章将对研究的控制算法做一下叙述。第四章将竞赛要求的具体参数和我们的测试方案将在这章作一个具体的叙述。第五章士结束语,对我们的整个工作做一个总结。第六章致谢。2第一届全国大学生智能汽车邀请赛技术报告第二章 硬件设计2.1 系统框图 系统主要有以下的几大模块,通过各个模块之间的协作完成了我们整个系统的设计和功能的实现。图2.1系统整体框图2.2 硬件电路的设计 2.2.1 传感器模块的设计方案一:激光导航系统。 激光束打在跑道上,通过接收反射光的强弱判断路面情况,在车模的前方可装几路激光。激光束始终对准黑线。再根据激光接收到的亮灭来判断前方是否有弯道了,车是否要减速了。图2.2 传感器安装示意图优点:可以获得前方较远的路面信息,而且精度可以做的较高。需要解决的问题:(1) 激光发射及接收器的设计。(2) 激光发射装置不能架的太高,否则会使小车的重心偏高,不利于高速行。 方案二:光电(红外)传感器组。 在小车前端安装八对光电传感器,来判断小车的位置和方向。这种也是非常基本的寻迹办法,根据黑色轨道对光的反射远远低于白色来判断车的位置。 如图2.3 所示:图2.3 红外对管传感器安装示意图 方案三:采用线阵CCD。 将CCD装在小车的前端,通过对CCD数据的处理来判断车体的位置与方向。但是存在的问题是CCD的处理速度始终是个瓶颈。 在分析对比了以上的几种方案后,考虑用激光导航,红外对管作辅助.首先需要选择好红外这种发射式的传感器,反射式光电传感器的光源有多种,常用的有红外发光二极管,普通发光二极管,以及激光二极管,前两种光源容易受到外界光源的干扰,而激光二极管发出的光的频率较集中,传感器只接收很窄的频率范围信号,不容易被干扰但价格较贵。理论上光电传感器只要位于被测区域反射表面可受到光源照射同时又能被接收管接收到的范围就能进行检测,然而这是一种理想的结果。因为光的反射受到多种因素的影响,如反射表面的形状、颜色、光洁度,日光、日光灯照射等不确定因素。如果直接用发射和接收管进行测量将因为干扰产生错误信号,采用对反射光强进行测量的方法可以提高系统的可靠性和准确性。红外反射光强法的测量原理是将发射信号经调制后送红外管发射,光敏管接收调制的红外信号。利用这种思想我们就可以避免外界可见光对我们采集信号的影响。 在本系统中,前端安装了八组红外对管,之间等距离的安放,根据八个红外对管返回的信息来判断目前车的位置状态。在接收管的前端安装了比较细长的黑色的胶皮套,这样在一定程度上避免了其他的红外光对这个系统的干扰。 对于激光模块,采用普通的激光发射,经过调制到发射38K的调制信号,接收我们选用日本索尼公司生产的红外遥控接收芯片CX20106,它采用单头列8脚直插式,超小型封装,+5V供电。 芯片的原理框图如2.4 :图2.4 CX20106 在红外信号的输入端我们放置普通的光敏管,而不是红外管,这样我们就可以接收到激光信号,在受到38K的调制信号后按照芯片的原理,会输出一个固定的电平,但存在的问题是接收管是普通的光敏二级管,一般的信号也会感应,那怎样来滤出这些干扰信号是这个设计的难点,首先,考虑到利用滤光片来滤出杂波的干扰,但是滤光片加工周期长,价格比较昂贵,无法短时间来完成调试,最后考虑到后极电路来滤波的思想,考虑到当接收器检测到激光的时候可,会输出一个低电平,而在这个低电平是夹杂在杂波信号,这样,可以通过一个低通滤波器将干扰的信号滤掉,这样有电路的平均值就可以判断是否激光照射的点是跑道。2.2.2 激光模块的设计 激光传感器的搭建具体的实施方法如下:主要有三个模块:2.2.2.1 激光的发射模块通过把一个低频信号调制到38k信号上来控制激光发射头。这样,经过调制的信号就可以被接收传感器收到:激光的发射电路如图: 图2.5 激光发射电路 图中两个三五电路一个产生载波38k信号,一个产生基带信号,通过7400与非门后调制成需要的调制信号来驱动激光器发射激光。2.2.2.2 接收传感器的设计这部分就是根据红外的设计思路来的,利用的集调制解调芯片就是CX20106, 在信号的输入端就是接的可见光接收管。这样就可以把用来接收红外的一化接收电路改良成需要的激光接收电路。由于现在最新的一体化的接收头都把接收管也集成到一起了,与本设计要求不符,所以尝试了CX20106这块老片子,具体的接收电路如图:图2.6 激光信号接收电路2.2.2.3 信号的处理模块 在CX20106的输出端输出的是已解调的信号,但在实际实验时发现了新的问题,首先,由于接收电路采用的是可见光的接收头,这样电路在输出端不是规整的高低电平,因为在空间还有很多的杂波信号。在这样的情况下要做的任务就是在这些有大量噪声的解调信号里提出想要的信号。 在实际实验时发现很大一部分干扰都是来自市内日光灯的信号,而且频率比较固定都是100HZ左右漂移。在这样的结果下就开始考虑是否可以将这个杂波信号通过低通滤波器给滤掉。在实际实验中我们发现这样一个问题由于存在很多的干扰信号,但干扰信号的高平成分多,在接收到激光后明显高频成分要下降,经过低通滤波器后,有激光信号和没有激光信号之间的电压上下有一定的差,我们真是利用这个差值送到比较器来比较来确定是否是检测到了路线。具体的原理图如图2.7 图2.7 信号提取 图中的MAX291是一款电容低通滤波器,滤波的频率根据输入信号CLK 的频率而定。在输出端会输出一个有压差的信号,经过设计比较器判决后可以输出比较稳定的高低电平来区别是否在路线上。 2.2.2 加速度模块 由于车在速度快的时候和转弯的时候存在着很大的惯性,我们为了对此能够控制,考虑使用一个双轴加速度传感器获取前进方向和侧向的加速度数据,通过感知加速度的变化来实现防止前进时车轮打滑和进入弯道时的侧滑。加速度传感器选用飞思卡尔的MMA6263Q,,它是电容微型加速度传感器,具有信号调理,一阶低通滤波和温度补偿,整个系统的自检功能可验证系统功能,它又以下的特点, 高灵敏度 低噪声 低功耗 2.7V到3.6V的工作电压 6mm6mm1.98mmQFN 具有低通滤波器的积分信号调理器 线形输出 自动增益性能 自检 有了以上的信能,对测量反映车的行驶状况能够给出一个比较可靠的参考值。为了测量的准确,我们把加速度传感器装在车的中央位置,基本上是车的重心位置,这样我们就可以比较准确的获得整个车的加速度。电路单元图如下: 图2.8 加速度传感器模块 2.2.4 动力模块我们采用竞赛专用的电机和专用的驱动芯片MC33886,它集成了控制逻辑,电荷泵,门驱动。MC33886可控制的电流最大有5A,输入的脉宽调制最大有10KHz.驱动芯片飞思卡尔的MC33886,其电路如下: 图2.9 电机驱动 在使用时发现一个问题,在速度过快或是较长时间运转之后电机驱动芯片的发热量很大,在考虑到安全运行方面给MC33886加装了散热片。 另外还考虑到电机在高速转动时会给整个系统耦合进干扰的杂波,导致整个电路不稳定,所以在电机的电源和地之间加了滤波电容,来提高整个电路板的可靠工作。有了后轮的驱动,前轮的舵机也是竞赛提供的专用舵机,应用电路也非常的简单,电源地,外加一个PWM波的接口,但应该注意到的问题还是抗干扰问题,舵机在转舵时也会向电路耦合干扰脉冲。依旧需要在电源端加装滤波电容。在设计这部分电路时充分考虑到了这些干扰因素,主要是我们在初步尝试时出了各种问题,传感器采集数据老是不太稳,在分析原因时发现在考虑电机和舵机电路时欠考虑了干扰因素。在加装了电容电阻之后系统的稳定性有了明显的上升。2.2.5 电源模块小车采用7.2V 2000mAh Ni-cd蓄电池进行供电,根据单片机和传感器的需要对其进行电压调节。由于这个系统对供电没有特殊的要求。在7.2V电压转5V电压模块用LM2940芯片取代了发热量较大的LM7805,同时为了节省空间在生成3.3V电压的模块中,我们使用了LM1584,其外围电路器件较少。要求如下:驱动电机:7.2VCPU(9s12DG128):5V加速度传感器:3.3V视觉模块的传感器:5 V。电源模块的电路如下图: 图2.10 7.2V电压转5V电压模块图2.11 7.2V或5V转3.3V电压模块 还有一个问题就是电机和舵机在工作时会向整个电路添加干扰信号,所以在考虑电源设计时要充分考虑到滤波,滤出由于电源信号的干扰对整个系统的干扰,红外传感器是最为容易受到文波干扰的模块,如果红外传感器受到干扰整个系统就会跑飞。 所以整个电源的设计是系统稳定性的基础,只有一个稳定可靠的供电系统,整个车在行进中才能稳定。2.2.6 速度测量模块为了在赛车运动时获得更多的信息,尤其速度是算法的一个核心参数,我们需要比较精确的测量,我们在对比了目前比较常用的测速方法,试验了几种方法,用过红外对管和霍尔元件,两种方法相比,后者更有优势,电路简单,而且精度比较高。其中工程中的霍尔传感器主要种类有干簧管、磁敏二极管、磁敏三极管及磁阻传感器及霍尔传感器,按输出的信号种类可分为线性霍尔传感器和开关型霍尔传感器线性霍尔传感器的输出电压和磁感应强度成线性关系,在物理实验中主要用于测量磁感应强度。开关型霍尔传感器主要包括霍尔元件、放大器、稳压电源、滞回比较器及集电极开路输出器等,通常它有单极型、双极型及锁存型等几种单极型和双极型的主要差别在于作用在霍尔元件的磁感应强度的极性锁存型霍尔传感器是指当外加磁场作用去掉后还保持所处的电平状态,只有当反极性磁场作用时,输出电平才改变不管何种开关型霍尔传感器,描叙它们的参数主要有工作电压、最大动作点、最小动作点、开关上下降时间等,其中最大最小动作点是指霍尔传感器的输出状态改变时,磁感应强度的大小及极性,单位为mT安装示意图如图图2.1 霍尔传感器安装 对于这样的传感器,我们只需要在输出端上来一个电阻就可以直接送信号到单片机,所以整个电路很简单,达到了系统设计简单的目的。经过测试,测试结果可以道到比较好的结果。有了速度模块的精确测量我们就可以比较准确的控制我们的小车高速的行驶。 在安转霍尔传感器时,考虑到在后轮的齿轮上装一块磁铁,在实际测试中发现速度测量不是很准确,后来考虑可以多装了两块磁铁,这样,在一个转动周期内单片机可以采集到三个数据,在计算处理后可以得到比较准确的速度值。29第一届全国大学生智能汽车邀请赛技术报告第三章 控制算法 3.1 系统算法总框图 下面是整个算法的整体系统的框图:图3.1 系统开发框图32 整体开发流程了 图3.2 系统开发流程图 3.3 算法描述 算法的思想来源与模式识别和模糊控制理论,首先,我们将八个红外对光抽象成对跑道的一个二值化的图一行,利用速度传感器档轮子转动1/3圈时读一次对管的数据,这样,可以存一个八乘八的矩阵,利用模式识别里面的模式识别的思想,建立各种情况的模版,然后再去和采集到的数据和模板相作用,利用模糊控制的思想,每一个模版都有一个值域,但数据和模板作用位于某一个控制域是,发出相应的动作来控制车的加速,转舵,减速。 算法的核心是在建模版的时候加入经验值,比如说在由直线入弯道这里,速度大,弯道角小时,如果转弯角度不够就会冲出跑道,这些经验值得获取全部事先通过很多次的试验将这些经验值分析后建立表,在控制里面,对采集到的数据模糊后查表后输出我们事先试验好的经验值,这样保证车正常的行驶。由于我们系统有两路传感装置,一是激光,二是红外对管,安装示意图如图3.1所示。L激光传感器红外传感器图3.3 侧视图L图3.4俯视图图3.5 传感器布局示意图设红外传感器数据为RData:R1R2R3R4R5R6R7R8激光传感器数据为LData:一般情况的处理:红外传感器的12种状态与激光传感器的12种状态组合成24种状态,可根据经验值建立一个控制表对小车的转向和速度的增量进行控制。 整个表的建立是经过大量的实验后建立,比如在车在直道行驶一段时间后进入弯道这个过程,我们需要不断的调整车速,和弯道,来测临界值,这样在一定的误差之内,只要保证车能够在我们实验的控制范围之内,就可以保证车不出跑道 。总之,算法基本是基于我们在实验室对不同跑道测试的结果经过分析,参考了很多经典的控制理论的思想,比如PID和模糊控制的思想,但我们的算法又不是完全基于这些具体算法的框架,我们的思想主要就是凭着感觉和观察司机开车时的状态慢慢的捉摸,尝试综合起来的,由于有比较大的近似,所以程序的鲁棒性比较强,适应性也比较好,也得力于我们传感器设计方面的创新,为程序工作扫平了障碍。和心控制算法程序流程图:开始结束采集传感器数据根据红外、激光数据查规则表得到速度与角度的增量调整角度调整速度图3. 6 核心算法流程第四章 系统参数测试结果4.1 模型车的主要参数 4.1.1 几何参数 表4.1几何参数参数车长车宽车高车重数据40cm25cm15cm 2kg 4.1.2 车的功耗,电容 功耗:7.2W 电容:1680.5 uF4.1.3 传感器的个数和种类 总共用了四种传感器,速度传感器,加速度传感器,和红外对管,激光传感器。其中速度传感器一个,加速度传感器一个,红外对管八只,激光发射接收四组,总共传感器十四个。 4.1.4 额外的伺服电机系统没有用到额外的伺服电机。 4.3 车模的改装及安装 整个车的改动不是太大,在车的前方加装了红外对管传感器和激光传感器,在车的底座中央安装了加速度传感器,在车的后轮上旁边加装了速度传感器。整个车的改装是比较简单的,我们就希望以最简单的系统跑最快的速度。在设计传感器时我们考虑到这个车对系统的预测性,所以红外对管照射的距离应该做到越远越好,所以在安装时一方面要考虑到将传感器越靠前端。由于车长是固定的,所以考虑到将传感器架高,在综合考虑阻力和灵敏度的影响之后,我们折中高度和长度都选了一个中间值。这样阻力不是太大,但灵敏度的影响也不是太大。在安装激光模块是考虑到安放到车的中间,但问题是激光的有效探测距离就远了,这样最后综合考虑到激光的寿命和他的发光强度成反比的情况下,决定也和红外一样将激光也装到车的前方,这样不仅探测距离大了,而且在此基础上还可以降低激光的发光强度,有利于整个系统的稳定性和寿命。最后安装完成的示意图如 图4.1 车模的模型4.4 测试调试方案 整个系统算法的设计设计到比较多的参数,从前端的传感器到速度采集的数据的获取和分析处理 。由于板子的EPROM有限,所以必须想出办法来便于测试,我们最后买了市面上的无线遥控器,他刚好有四组控制输出,我们接到单片机的I/O 口,这样,可以通过手动在车行驶的时候控制车的行驶姿态,在需要采数据的点用无线遥控来控制单片机来采集数据保存到EPROM里面。这样就可以比较方便的采集到数据,用于我们后极算法的处理。 4.5 系统测试结果 表4.2测试结果最快车速:平均车速最小速度跑完周长10m跑道的时间2m/s1.5m/s1m/s8m/s 第五章 结束语 经过了几个月的努力我们的赛车总算能够跑起来了,经过这段时间的磨练,从硬件电路开始,搭建试验传感器,机械加工我们的车模,无数次的改革我们的算法,总算走到了最后, 在这个过程中我们不断地发动我们的大脑来想好主意,不断地学习遇到的新知识,这次竞赛不仅对我们的综合能力的培养,也是读我们吃苦耐劳的精神的一种考验尤其激光这块,我们可以参考的资料太少了,重属于摸着石头过河,尤其在考虑到抗干扰方面,应该是一种创新,我们是巧妙的利用了干扰信号,和数据信号之间的关系,巧妙的将有用信号和干扰信号分开,总算完成了激光采集模块的设计,为跑车装上了望远镜。系统还存在着一些缺陷,就是在红外接收端,系统地抗干扰能力比较弱,尤其是太阳光的干扰对红外的数据采集是一个比较大的考验。 总之,系统不会是十全十美的,但它凝结着我们这个团队的汗水,希望在跑道上能尽情地驰骋 。致谢 首先要感谢竞赛的主办方,能够给我们提供了这样难得的科研实习的机会。经过三个多月的没日没夜的奋战,我们成长了许多,不仅仅是知识上的拓展,更为重要的是在这期间培养了我们坚韧的人格和积极的科研态度和面对困难的态度。衷心感谢我们四川大学教务处,本次竞赛的一切后备工作都是教务处的老师们准备,在此之际我们要特别感谢教务处的成北良老师,每一件后备工作都由成老师亲自准备,这里我们表示由衷的谢意。最后,我们由衷的感谢我们的指导老师赵刚老师。在我们整个竞赛期间他给了我们很多的帮助和宝贵的意见。在次期间,我们被赵老师渊博的知识,严谨的科学态度,求实创新的科学精神所感染,不仅仅是这次竞赛,而且对我们今后的人生和科研道路打下了牢固的基础。还有实验室的樊仁玲老师,是您为我们的竞赛准备着一切的后勤工作和帮我们解决一些电路难题。还有要衷心的感谢我们亲爱的研究生生师兄张勇,武东东,武鹏鹏,刘晨,张晋,杨洁,徐园在实验室有事没事都要麻烦到各位师兄,但您们都无私的给与我们很大的帮助,在竞赛结束之际,衷心的给你们说声谢谢!竞赛结束了,可我们人生路才刚刚开始,有了这次痛并快乐的经历,有了这次与困难拼杀的过程,我们相信我们以后的人生路会少很多的坎坷。向所有为这次竞赛付出的老师致敬!参考文献: 1Steven F.Barrett,Daniel J.Pack 郑扣根等译. 嵌入式系统-使用68HC12和HCS12的设计与应用.北京:电子工业出版社.20006.3 2邵贝贝.单片机嵌入式应用的在线开发方法.北京:清华大学出版社,20004.103周炳琨等. 激光原理.国防工业出版社.2004.84Frank Vahid 著,骆丽译 .嵌入式系统设计.北京:航天大学出版社.2004.95池之恒. Protel DXP 电路原理图与电路板设计教程. 海军出版社. 2004.46傅友登,赵刚等. 数字电路与系统.成都: 四川大学出版社. 2003.87童诗白等. 模拟电子技术与基础. 北京:高等教育出版社. 20005.58李士勇等. 模糊控制,神经控制和智能控制论 .哈尔滨工业大学出版社. 附录附源程序代码:/* * 文件名: main.c * 功能: 基于mc9s12dg128的小车控制系统 * 日期:2006年6月6日 */#include includes.h#pragma LINK_INFO DERIVATIVE mc9s12dg128bEXT INT8U angle, speed;EXT INT8U ph, pt, pl;void InitHardware(void); void InitSoftware(void); void main(void) InitHardware(); InitSoftware(); SetAngle(angle); SetSpeed(speed); for(;) move();void InitHardware(void) /初始化LED InitDisplay(); Display(0x01); Delay_ms(100); /初始化串口 InitUART(); Display(0x02); Delay_ms(100); /初始化EEPROM InitE2PROM(); Display(0x04); Delay_ms(100); /初始化脉冲调制模块 InitPWM(); Display(0x08); Delay_ms(100); /初始化A/D模块 InitATD(); Display(0x10); Delay_ms(100); /初始化主定时器 InitTimer(); Display(0x20); Delay_ms(100); /初始化输入扑捉模块 InitInputCapture(); Display(0x40); Delay_ms(100); /开中断 EnableInterrupts; /打开定时器 StartTimer();void InitSoftware(void) angle = 90; /角度初始值 speed = 0; /速度初始值 Display(0xff); /*/* * 文件名:run.c * 功能:寻迹算法实现程序 * 日期:2006年7月12日 */ #include includes.hEXT INT8U angle, speed;EXT INT8U StartCounter;/* 功能:实现小车的寻迹控制 */void move(void) INT8U ViewData;/传感器信息 INT8U LaserData; /激光传感器信息 INT16U oldspeed; ViewData = GetViewData(); /获取红外传感器信息 LaserData = GetLaserData(); /获取激光传感器信息 oldspeed = speed; /处理红外传感器信息if (ViewData & 0x07) /左if (ViewData & 0x01)angle = 113;speed -= 6;elseif (ViewData & 0x02) if (speed = 100) speed -= 3; angle = 108;elseangle = 108;elseif (ViewData & 0xE0) /右if (ViewData & 0x80)angle = 60;speed -= 3;elseif (ViewData & 0x40)speed -= 8;angle = 75;elseangle += 20;/zhongelseif (ViewData & 0x18) /中间 if (angle = 80) angle = 90; else if (angle = 90) angle = 100; else if (angle = 75) angle = 75; speed += 2;/通过激光传感器信息控制速度if (ViewData & 0x81) angle = 90; speed += 1;if (ViewData = 0xff) speed += 2; angle = 90; if (LaserData & 0x02) speed += 2;else if (LaserData & 0x05) speed -= 2; else if (LaserData = 0) speed = oldspeed; if (speed =200) speed = 200; Display(ViewData); return ;/* 功能:实现小车的起跑 */void StartRun(void) speed = 150; SetSpeed(speed); while (StartCounter = 20) ; /*/* * 文件名:port.c * 功能: 设置端口 */ #include includes.h/* 功能:初始化传感器数据端口 * 说明:PORTT设为数据端口 */void InitViewPORT(void) DDRA = 0x00; DDRT = 0x00;/* 功能:初始化显示端口? * 说明:PORTB设为显示端口 */void InitDisplay(void) DDRB = 0xff; PORTB = 0x00; Delay_ms(100); PORTB = 0xff; Delay_ms(100); PORTB = 0x00;/* 功能:信息输出到led */void Display(INT8U d) PORTB = d;/* 功能:读出红外端口数据 */INT8U GetViewData(void) return PORTA;/*/* * 文件名: pwm.c * 功能: 脉冲输出模块 * 日期: 2006年4月15日 */ #include includes.h/初始化void InitPWM(void) DDRJ = 0xff; PTJ_PTJ7 = 1; /d2 PTJ_PTJ6 = 0; /d1 PWME = 0; /关闭所有PWM通道 PWMPOL = 0xb8; /3 4 5 7通道左对齐 PWMCAE = 0; PWMCTL = 0x40; /PWM4 5组合成一个16bit通道 PWMCLK = 0xb0; /SA作为PWM4 5的时钟源,SB作为PWM7的时钟源 PWMSCLA = 133; /CLOSA = CLOCK A /(2*133) PWMSCLB = 47; PWMPER4 = 0x07; PWMPER5 = 0x08;/PWM4 PWM5周期计数器设置 PWMPER7 = 0xff; PWMPER3 = 0xff; PWMDTY4 = 0; PWMDTY5 = 135; /PWM4 5占空比初始化 PWMDTY7 = 0; /PWM7 占空比初始化 PWMDTY3 = 0; PWME = 0xa8; /打开3 5 7通道 return ; return ; /设置电机速度void SetSpeed(INT8U v) static INT8U cspeed = 0; DisableInterrupts; if (cspeed v) for (;cspeed v; cspeed+) PWMDTY7 = cspeed; Delay_ms(3); else cspeed = v; PWMDTY7 = cspeed; PWMDTY3 = 0; EnableInterrupts; return ;/反转void BSetSpeed(INT8U t) PWMDTY3 = 160; PWMDTY7 = 0; Delay_ms(t); PWMDTY3 = 0; return ;/设置舵机void SetAngle(INT8S a) PWMDTY5 = a + 46;/*/* 文件名: atd.c * 功能: AD转换模块, 获取加速度的值 */#include includes.h/* 函数名:InitATD * 功能: ATD模块初始化 */void InitATD(void) ATD0CTL2_ADPU = 1;/AD模块使能 Delay_ms(200); ATD0CTL2_AFFC = 1;/读取转换结果后自动清零 ATD0CTL3 = 0x18;/选择三个转换序列,使能转换映射 ATD0CTL4 = 0x76;/10bit精度,采样时间为16个AD时钟,46分频/*获取加速度参数 */INT16S GetAccy(void) INT16S tmp; ATD0CTL5 = 0xa7; while (ATD0STAT0_SCF=0) ; tmp = ATD0DR0; return tmp;INT16S GetAccx(void) ATD0CTL5=0xa6; / 右对齐无符号,多通道 while (!(ATD0STAT1 & 0x01) ; return ATD0DR0; /*/* * 文件名:time.c * 功能: 设置系统时钟相关函数 * 时间: 2006年4月6日 */ #include includes.h#pragma DATA_SEG ROM_VARS#define

温馨提示

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

最新文档

评论

0/150

提交评论