智能遥控避障小车毕业设计_第1页
智能遥控避障小车毕业设计_第2页
智能遥控避障小车毕业设计_第3页
智能遥控避障小车毕业设计_第4页
智能遥控避障小车毕业设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、基于激光传感器和嵌入式系统的移动机器人作 者 姓 名 臧少刚 专 业 测控08-1 指导教师姓名 孙凯 专业技术职务 讲师 目 录 目录I第一章 绪论41.1选题背景41.2主要内容及研究意义41.3系统框架及整体设计思路5第二章 系统硬件设计62.1电源系统62.2智能车的眼睛:激光收发模块82.3智能车核心处理器92.4智能车动力部分马达132.5转向工具:舵机162.6调试工具17第三章 机械结构设计182.1激光头的安装方案设计192.2舵机位置的选择192.3核心板的设计202.4激光管结构设计21第四章 软件开发及调试224.1单片机程序设计234.2应用系统开发过程244.3工程

2、创建254.4程序编译274.1下载调试284.2单片机的资源分配28第五章 程序分析29第六章 参考文献35摘 要“飞思卡尔杯”全国大学生智能汽车邀请赛属教育部主办的全国五大竞赛之一,其专业知识涉及控制、模式识别、传感技术、汽车电子、电气、计算机、机械等诸多学科。根据大赛的技术要求,设计制作了智能车控制系统。在整个智能车控制系统中,如何准确地识别道路及实时地对智能车的方向进行控制是整个控制系统的关键。本文首先对智能车的硬件进行设计,其次对系统的软件部分进行设计,整个系统涉及车模机械结构调整以及传感器电路设计及与信号处理。通过软件与硬件的搭配,实现避障的功能和远程控制的功能。关键字:智能车 传

3、感器 嵌入式 AbstractFreescale Cup National Undergraduate Smart Car Competition is sponsored by the National Ministry of Education, one of the five contests, their professional knowledge related to control, pattern recognition, sensor technology, automotive electronics, electrical, computer, machinery and

4、 many other disciplines. According to the technical requirements of the contest, we design the intelligent vehicle control system. In the entire control system of the smart car, how to accurately identify the road and real-time control the direction of the Smart Car is the key to the whole control s

5、ystem. This paper first introduces the hardware of the smart car. The second part of the system is software design. The entire system is involved in mechanical models of structural adjustment and the sensor circuit design. Through the software and hardware collocation, realize the function of obstac

6、le avoidance and the function of remote control.Key word: intelligent car; Sensors; Embedded; Remote contr第一章 绪论1.1选题背景物质生活的提高,使人们更加注重和谐与健康,本来危险系数极高但人们却习以为常的工作,如今也少有人参与,因为如今的人们已找到了代替他们参与人类难以到达的位置的智能设备,当然,设备必须具有一定的智能性,能够独立的判断所处环境的所有有用信息,并加以判断,予以归类,寻找最合适的位置,捕捉最难得最珍贵最具实时性的信息,然后进行实时反馈,让我们可以更加客观地采取判断,不至于

7、因环境的变化或者不适应等各种外界因素影响我们的主管意识,可以说,这种智能设备的出现,一定程度上解放了人类的劳动力,既如此,我们就更应继续从事这方面的学习与研究,充分发挥这一领域给社会带来的益端.目前最为前沿的就是仿生机器人,但比之稍简单的就是智能车,因为它无需判断各种平衡的因素,更具稳定性和实用性,在此基础上赋予它一定的感知、判断和交互能力,同样可以做出与人类能力相及甚至超越人类极限的事情。工业上,这种机器人已经应用于各种行业,目前所要追求的目标就是更加的小巧与低成本,更大的实用性。1.2主要内容及研究意义智能车即轮式移动机器人,是一种集环境感知、决策规划、自动行驶等功能于一体的综合智能系统,

8、智能车集中地运用了自动控制、模式识别、传感器技术、汽车电子、电气、计算机、机械等多个学科的知识1 。随着控制技术、计算机技术和信息技术的发展,智能车在工业生产和日常生活中已经扮演了非常重要的角色。近年来,智能车在野外、道路、现代物流及柔性制造系统中都有广泛运用,已成为人工智能领域研究和发展的热点。目前,智能车领域的研究已经能够在具有一定标记的道路上为司机提供辅助驾驶系统甚至实现无人驾驶,这些智能车的设计通常依靠特定道路标记完成识别,通过推理判断模仿人工驾驶进行操作2。本文所述智能车就是一种自动导引小车,能够在给定的区域内沿着轨迹自动进行行进。1953年,美国Barrett Electric公司

9、制造了世界上第1台采用埋线电磁感应方式跟踪路径的自动导向车,也被称作“无人驾驶牵引车”(automated guided vehicle,简称AGV)。这些自动导向车主要用于自动化仓贮系统和柔性装配系统的物料运输3。20世纪60年代和70年代初,AGV仍采用这种导向方式。但是,20世纪70年代中期,具有载货功能的AGV在欧洲得到了应用并被引入到美国。这些自动导向车主要用于自动化仓储系统和柔性专配系统的物料运输。在20世纪70年代和80年代初,“智能车”的应用领域扩大而且工作条件也变得多样化,因此,新的导向方式和技术得到了更广泛的研究与开发4。自动导向无轨行走车辆常用蓄电池作为动力源,它是机电一

10、体化的典型5。AGV技术在汽车工业上有着广泛的用途,欧洲和美、日等国的汽车生产工业在80年代就开始大量使用AGV技术,现已成为比较成熟的技术。智能车有着极为广泛的应用前景6。结合传感器技术和自动驾驶技术可以实现汽车的自适巡航并把车开得开得又快又稳、安全可靠;汽车夜间行驶时,如果装上红外摄像头,就能实现夜晚汽车的安全辅助驾驶;他也可以工作在仓库、码头、工厂或危险、有毒、有害的工作环境里,此外他还能担当起无人值守的巡逻监视、物料的运输、消防灭火等任务。在普通家庭轿车消费中,智能车的研发也是有价值的,比如雾天能见度差,人工驾驶经常发生碰撞,如果用上这种设备,激光雷达会自动探测前方的障碍物,电脑会控制

11、车辆自动停下来撞车就不会发生了。对于历史而言,解放和发展劳动力永远是人们提出的自私却又可行的目标,这其中就包括人身安全的保证,在人类无法到达或者危险性极高的环境下,能够自行潜入并获取我们所需要的信息,最理想的就是能够自发的进行简单的处理,但是这种设想的实现却有着很大的难度。比如说这种机器人小车的运行,车子一旦研制出来,就应成批量生产,也就是外形无法随着环境的改变而改变,这就给机器人小车的制造产生了困难,比如说摩擦系数、软硬程度、空气阻力、倾斜度、行走空间等等各种无法预料的因素,只有生产一种小巧、灵活多变的探测设备,才能够真正的实现人力的替代;当然除了环境的多变性,还有车子整体的性能和承载外界不

12、良因素的力度,要采集信息的强弱与收发的干扰等等。无疑,四个或者更多轮子的车型机器人要比人形的机器人稳定的多,控制也更为简单,体积更加小巧,所以,目前世界各大探测公司都在研发这种机器人,比较实用且有代表性的是GE的探测小车,能够将外界采集的各种影像采集并进行处理和保存,然后完整的反馈回来,具有工业上的可行性。1.3系统框架及整体设计思路智能车系统采用飞思卡尔的16位微控制器MC9S12XS128单片机作为核心控制单元用于智能车系统的控制。在选定智能车系统采用光电传感器方案后,智能车的位置信号由车体前方的光电传感器采集,经MC9S12XS128 MCU的I/O口输入后,用于智能车的运动控制决策,同

13、时内部PWM模块发出PWM波,控制舵机转弯,同时驱动直流电机对智能车进行加速和减速控制,最终使智能车能够自主行驶,并自觉绕开前方障碍。第二章 系统硬件设计在小车的整体设计中,采用红外信号作收发模块,让小车具有识别功能;MC9S12XS128作为处理器,判断有误障碍物,并给与舵机相应命令,绕开障碍达到避障功能。机械上独特的设计,让小车在保证简单的情况下尽量的美观!下面将对智能避障车整体系统进行详细讲述!2.1电源系统整体结构图:图 2-1 电源系统供电图图 2-2 电机驱动板智能避障车的动力电源采用飞思卡尔比赛专用电源,负荷电压7.8V左右,在充电结束后会有一定的上浮,升至8.1V左右,对于小车

14、的马达,可以直接使用,期间曾试过变压后给马达供电,但是效果不是很好,经常导致变压块发热现象严重,后采用电源直接供电,这个直接供电当然也是通过下面将要介绍的这个模块予以驱动。这个驱动是用场效应管搭建H桥来驱动电机,因为场效应管具有内阻小、开关速度快等优点,并且方便加散热片。场效应管是电压驱动器件,只要栅极电压稍高一点就能使管子导通。本模块电路输入电压5-15V,最大输出电流理论上74A。如图所示,从正面看,CD4011的14脚接VDD(7.2V左右),7脚接GND,要接上拉电阻,否则可能会出现逻辑混乱。下图就是电机驱动的电路原理图:图 2-3 电机驱动电路原理图图 2-4 电源引脚显然,电源这对

15、于小车的激光收发模块无疑是不能使用的,这就需要进行变压输出,降低至5V稳定输出,采用最简单的稳压模块LM7805,作为核心板的电源,78*系列的稳压集成块的极限输入电压是36V,最低输入电压比输出电压高3-4V。还要考虑输出与输入间压差带来的功率损耗,所以一般输入为9-15V之间,适合我所用的7.8V直流电源,同时再独立接另一个LM7805作为激光管的电源,这样可以避免激光管启动时的高功率干扰到核心板的电平信号;由于在允许电压范围内,电压越大,舵机响应速度越快,因此采用6V电压给舵机供电,由LM7806 为主要芯片的6V 稳压电路,完全可以满足舵机对电压和电流的要求,因此选用此电路作为舵机的供

16、电电源。具体5V和6V供电电路接线图2-5所示:图 2-5 电源原理图由于在智能车运行过程中阻力的变化频繁,这种阻力可能由于加速制动剧烈,也可能由于拐向带来的力矩方向变化造成的阻力,因此电池负载变化剧烈,输出电压也剧烈变化,且幅度很大,所以在电池端多加了滤波电容,予以补偿。2.2智能车的眼睛:激光收发模块说起激光传感器,相信大家都不陌生,下面先介绍下感应障碍物的原理:图 2-6 激光头由发射管发射一定波长的红光,经障碍物反射到接收管。由于在远近不同距离上反射回的光强度不同,在远处的大部分光线都被吸收或者散射掉了,而障碍物上可以反射回大部分光线,所以接收到的反射光强不一样,由障碍物反射回来的大量

17、光线直接导致接收三极管导通,而由远处(空旷处为无限远 )反射回来的光线不能导致接收三极管导通,信号输入到单片机中便是高电平和低电平,这样就可以将有无障碍物区分开来。但是一个好的激光传感器,多少会存在不稳定现象其实不稳定,很大的因素就是发射出来的激光信号频率,不是接收管最佳的接收管的最佳频率。尽管激光接收频率可以用芯片编程序,输出PWM信号驱动,但是那样的抗干扰能力欠佳,既然要做又知道哪里出的问题,那就尽量改善嘛!一个好的调制管,使用效果明显有改进,究其原因,半导体光电元件的频率特性是指它们的输出信号与调制光频变化的关系,当光敏电阻受到脉冲照射时,光电流达到其稳态值;当光突然消失时,光电流变为零

18、,这就是激光收发模块的基本原理。我所使用的调制管根据下拉电阻的不同能够产生140KHZ-205KHZ方波信号,经过信号发到驱动激光发射管,理论上接收管在频率180KHZ205KHZ左右的频率下接收能力最强,我的接收管发射管实测频率为180KHZ,另外配一个聚光透镜,增强接收管对反射光的吸收。当然,要对准焦点能够增强接收管接收效果和抗干扰能力!图 2-7 接收管及原理图在焊接激光模块的电路时,要注意的事项很多,激光发射器的供电电压应在,由于我的电源模块相互独立,因此避免了各种电路同时上电造成的电压波动,经过测试,能够保证激光发射器的电压在5.0±0.2V,也就保证了激光管的长使用寿命。

19、同时,由于激光发射器的特殊工作原理,具有静电敏感性,使用过程中要做好ESD,尽量避免人体接触和带静电物体接触激光管,避免静电伤害,否则容易出现发光效率降低甚至不工作等现象,解决办法是:1. 焊接前先洗手,摸一下暖气片,释放人体静电;2. 电烙铁接地,每次用之前释放静电;3. 坚持室内操作,避免日光直接照射激光接收芯片(多次试车,尽管楼道狭小,仍然坚持室内)。4. 每次试跑,注意极性不能戒饭,电压一定不超过5.5V(予以保证),电流不能大于50mA(予以保证)。图 2-8 调制管及原理图如图所示,电压经调制管调制给与激光头,产生所需调频光信号,电路搭建时一定要注意保证限流电阻大于65欧姆,这样才

20、能给予激光头足够的保护作用,但是不能过大,这样产生的激光信号将会很弱,影响小车前瞻的距离,直接影响小车对障碍物的判断时间,严重时,小车将会无法躲开障碍物。调制激光信号产生后,下面就是由接收管来接收我们的特定光信号,然后判断前方、左前方或者右前方是否有障碍物,也就是起到了眼睛的作用。 当然,这其中曾走过很多的弯路,比如说激光头焊接时,因为焊接技术不达标,造成激光头烧坏,理论上焊接时电烙铁与激光引脚的解除时间应不多于10s.为了增强对障碍物的敏感度,也就是增加对反射光线的吸收率,我在原来的接收管上增加了一个透镜,这样做有两个目的:1. 增强对反射光线的吸收;2. 利用透镜只能接收前方光线、阻隔侧面

21、光线的功能,减小外接漫反射光线对接收管的影响。如图2-9,是我采用的透镜:图 2-9 聚光透镜固定时,透镜的焦点与激光发射然后反射回来的光线不在同一直线上,造成透镜不但没有发挥出聚光的作用,却将室内外的干扰光线连同激光信号一起屏蔽了,但是在这过程中,我却学习到很多课本上无法获得也无从想象的东西。在进行激光发射与接收的时候,曾如右图外接LED指示灯,用于测试小车激光发射与接收是否故障,这让故障的检测更加直观。2.3智能车核心处理器在所有的前期准备结束后,我已经获得了小车前方是否有障碍物的信号,下面就是要对这个信号进行判断、处理,我采用的是飞思卡尔半导体公司的MC9S12XS128单片机,是一个1

22、6位处理器,总体上分为三个模块:IO模块(带有中断)、脉冲宽度调制模块(主要针对舵机)和定时器模块。其中,大部分I/O引脚可由相应的寄存器位来配置选择数据方向、驱动能力,使能上拉或下拉式装置。当用作通用IO口时,所有的端口都有数据寄存器和数据方向寄存器。由于小车最大的难点在于转向的控制,所以下面主要介绍所用到的最多的模块。图 2-10 最小系统版引脚图XS128具有XS128具有8位8通道的PWM,相邻的两个通道可以级联组成16位的通道。XS128具有8位8通道的PWM,相邻的两个通道可以级联组成16位的通道。下面是脉冲调制模块的几种功能:PWME:PWM通道使能寄存器。PWMEx=1将立即使

23、能该通道PWM波形输出。若两个通道级联组成一个16位通道,则低位通道(通道数大的)的使能寄存器成为该级联通道的使能寄存器,高位通道(通道数小的)的使能寄存器和高位的波形输出是无效的。PWMPOL:PWM极性寄存器。PPOLx=1,则该通道的周期初始输出为高电平,达到占空比后变为低电平;相反,若PPOLx=0,则初始输出为低电平,达到占空比后变为高电平。PWMCLK:PWM时钟源选择寄存器。0、1、4、5通道,PCLKx=0使用Clock A,PCLKx=1使用Clock SA;2、3、6、7通道,PCLKx=0使用Clock B,PCLKx=1使用Clock SB。PWMPRCLK:PWM预分

24、频时钟源选择寄存器。PWMPERx:PWM通道周期寄存器,每个通道都有一个独立的8位周期寄存器,它的值将间接决定该通道的PWM波形周期。该寄存器采用双缓冲器设计,即写入的新值不立即生效,直到本次有效周期结束或者计数器寄存器清零或者该通道被禁止。读该寄存器将返回最近一次写入的值(不一定是当前生效的值)。复位将重置值为0xFF。下面是如何由周期寄存器的值计算最终PWM输出波形的周期与频率方法:左对齐输出:(CAEx = 0)PWMx Period = Clock (A, B, SA, or SB) * PWMPERxPWMx Frequency = Clock (A, B, SA, or SB)

25、/ PWMPERx中心对齐输出:(CAEx=1)PWMx Period = Clock (A, B, SA, or SB) * (2 * PWMPERx)PWMx Frequency = Clock (A, B, SA, or SB) / (2 * PWMPERx)Clock A、Clock B由下面的PWMPRCLK设置:表 2-1 表 2-2PWMDTYx:PWM占空寄存器。每个通道都有一个独立的8位占空寄存器,它的值将间接决定该通道的PWM波形占空比。该寄存器采用双缓冲器设计,即写入的新值不立即生效,直到本次有效周期结束或者计数器寄存器清零或者该通道被禁止。读该寄存器将返回最近一次写入的

26、值(不一定是当前生效的值)。复位将重置值为0xFF。下面是如何由占空寄存器的值计算最终PWM输出波形的占空比的方法:Polarity = 0 (PPOLx = 0)Duty Cycle = (PWMPERx - PWMDTYx) / PWMPERx * 100%Polarity = 1 (PPOLx = 1)Duty Cycle = PWMDTYx / PWMPERx * 100%定时器模块由1个增强的可编程预分频器驱动的可编程计数器、8个输入捕捉/输出比较通道和1个脉冲累加器组成。定时器模块一共有8个引脚,其中脉冲累加器与第7号通道的引脚是共用的。其中:TCNT:定时器计数寄存器。TSCR1

27、:定时器系统控制寄存器1。TTOV:定时器溢出时触发寄存器。TCTL1/TCTL2:定时器控制寄存器1/2。PR2、PR1、PR0三位决定了定时器预分频比。表 2-3PTPSR:精确定时器预分频器选择寄存器。若TSCR1中的PRNT=1,PTPSR的值将决定主定时器预分频比。表:2-4图2-11为处理器电路板:图 2-11 系统板外观2.4智能车动力部分马达驱动电机采用直流伺服电机,在此我选用的是RS-380SH型号的伺服电机,这是因为直流伺服电机具有优良的速度控制性能,它输出较大的转矩,直接拖动负载运行,同时它又受控制信号的直接控制进行转速调节。在很多方面有优越性,具体来说,它具有以下优点:

28、 (1)具有较大的转矩,以克服传动装置的摩擦转矩和负载转矩。 (2)调速范围宽,高精度,机械特性及调节特性线性好,且运行速度平稳。图 2-12 电机外观 (3)具有快速响应能力,可以适应复杂的速度变化。 (4)电机的负载特性硬,有较大的过载能力,确保运行速度不受负载冲击的影响。(5)可以长时间地处于停转状态而不会烧毁电机,一般电机不能长时间运行于停转状态,电机长时间停转时,稳定温升不超过允许值时输出的最大堵转转矩称为连续堵转转矩,相应的电枢电流为连续堵转电流。下图为该伺服电机的结构图。图 2-13 电机参数图2-14是此伺服电机的性能曲线。图 2-14 电机性能曲线由于小车的马达全速转动时,速

29、度过快,激光收发的距离又过短,所以,如果小车满功率运行,势必难以躲开障碍物,因此,必须给小车限速,这就用到了刚才介绍的PWM模块,让处理器给予马达一占空比较低的信号,这个过程可以理解为小车的功率受占空比所限制,因此达不到满功率,所以只能以与占空比相对应的速度行进。表2-5 RS380-ST/3545技术指标No Load无负载Max Efficiency最大效率(64.6)Max Output最大功率(26.68W)Stall停止Current电流Speed转速Current电流Speed转速Torque扭矩Current电流Speed转速Torque扭矩Current电流Torque扭矩Ar

30、pmArpmg·cmArpmg·cmAg·cm0.49153002.8513100998.61765034016.726802.5转向工具:舵机图 2-15 舵机外观舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转

31、动。舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。一般舵机的控制要求如图所示。图 2-16 舵机控制舵机的接线方法如图2-17:图 2-17 舵机接线控制线输入一个周期性的正向脉冲信号,这个周期性脉冲信号的高电平时间通常在1ms-2ms之间。而低电平时间应在5ms到20ms间,并不很严格。下表3.3表示出一个典型的20ms周期性脉冲的正脉冲宽度与微型伺服马达的输出臂的位置的关系:图 2-19 下载器图 2-18 位置关系图 由于我采用的是比赛中剩下的车模,在零件和机械结构上均作了变更,具体的参数都是后期实验调出来的,关于舵机的具体参数,将在软件部分具体介绍。在允许电压范围内,电压

32、越大,舵机响应速度越快,因此采用6V电压给舵机供电,模块在电源部分有介绍的。2.6调试工具BDM下载器,将程序下载到核心板中,我采用的是8位16位通用型BDM下载器,在程序拷贝过程中,会有红灯闪烁,若出现解除不良,等等其他原因,灯就不会出现闪烁现象。图示为下载器外观和内部结构电路板。第三章 机械结构设计本设计采用前轮驱动,前轮转向。使用激光收发模块判断有误障碍,主要电路板安装在车身后侧,舵机和马达位于小车腹部,整体重心偏后,有较好的稳定性,经过改装后的车模参数如下表:表 3-1长400mm 宽200mm 高350mm 重1.16Kg 传感器个数2个其它伺服电机个数0检测精度、频率50Hz车模平

33、均电流(匀速行驶)800毫安基本参数尺寸轴距173mm前轮距154mm后轮距149mm车轮直径65mm传动比18/76长150mm宽77mm除DG128外的主要芯片LM2940,MC33886,LM1881,B05123.1激光头的安装方案设计车身前端宽度比较大,舵机控制转向又只有±45°,这时候前轮导向距离如果过短,将会导致车身无法绕开障碍物。基于此问题,我们将两组激光收发模块的间距尽量紧凑,然后以相对的角度来增加前瞻的宽度,再采用两根钢丝,固定住我们的激光收发模块,然后以固定胶将其按照事先调好的角度固定在车身上,这样,就解决了由于车身庞大无法绕开的问题,同时又变相增加了

34、小车对障碍物的反应灵敏度。图 3-1 车身外观 在保证了探测障碍物和及时躲避的问题的同时,这种设计方案还让小车的重心前移了一定距离,由于重心基本都在后轮上,小车又是前轮导向,所以难免会有一点吃力,因此这样做也可以增加小车前轮的受力,让导向更加灵活有力。3.2舵机位置的选择如下图所示,舵机的位置选择在了车身的右侧,这样做有两个原因,一个就是车模原来的结构设计中,马达安装在称身左侧,通过传输轴给予前后轮驱动力,左侧已经没有足够的空间安装这个舵机了;另一个重要原因是,如果舵机安排在轮子正上方,理论上可以给予小车最大的力矩,但是这样做的话,需要多安装2-4个转轴和传输轴,加之转轴之间相互传输力的损耗,

35、基本可以与现在的力矩相差无几;机械上的难点还有,较大的力矩需要更有力的固定点,车身前端为弹簧减震器,没有多余的地方安装多个转轴,可以说,舵机的位置选择如何,直接影响到舵机的效率。当然,在进行软件调试的时候,本来应该先调好角度,然后再固定车模,但是图 3-2 舵机位置我的选择让我只能先固定舵机和前轮的连接,因为舵机的安装方向不是与车身平行,而是成一个30左右的角度,这就导致轮子在左右转开相同角度的时候,舵机向两个极端转过的角度也是不同的,为了尽量配合集合角度,舵机曾安装过多次,终于找到舵机的左极端、中点、右极端。具体位置如下图:3.3核心板的设计为了便于各部分电路在出现故障的情况下,能够及时统一

36、的断电,尽早保护元器件不受损害,在小车的尾部,固定了一个电源开关,负责整个小车所有电路的供电;同时为了保护核心板在调试时,遇到无法绕开障碍物的情况下,避免撞到障碍物,将核心板尽量安排在小车后面,将驱动电路安装在核心板的一侧,并外接了一个电脑散热板的散热扇,帮助小车在转向时由于马达降低转速而带来的负担,电池尽量紧贴小车底部,让小车在行进过程中的转向更加稳定。图 3-3 散热器位置为了便于调试,小车的前端传感器与核心板的连接均不用焊锡焊接,采用杜邦线,这样可以随时调试,查找问题,及时修改。3.4激光管结构设计图 3-4 激光束方向图激光头发射路径的设计,与小车自身的大小相关,就是在接收管所能感应到

37、的最远距离处的两束激光的宽度与车身大小相同或者大于小车的宽度,这样更加有利于小车对障碍物的躲闪。根据小车转向的多次测量,估算小车的转向半径,就是图中的R大于0.5m,这与不同路面的摩擦系数相关。简单示意图:图 3-5 舵机位置第四章 软件开发及调试 由于智能车的控制核心为Freescale 16位单片机,故用由飞思卡尔公司提供的软件CodeWarrior进行编译开发。程序的下载采用CodeWarrior软件包自带的下载工具hiwave.exe,智能车与PC采用BDM下载器进行通信,方便了车模参数调试。4.1单片机程序设计单片机的行为是受程序控制的,因此开发与使用单片机必然会遇到程序设计的问题,

38、单片机设计是一个硬件与软件结合的问题,而其软件设计的工作往往占有更多的成分。一个完整的嵌入式系统开发过程,除了硬件电路的设计外,软件工作包括程序编辑、汇编或编译、程序下载、程序调试、脱机验证等过程。程序的编辑就是按照一定的格式,采用汇编或者C等高级语言进行编写,在这里,我采用的是C语言。早期的单片机程序设计在DOS环境下符合一定的格式编辑,然后采用一个合适的软件汇编,生成二进制等CPU能识别的目标代码,将单片机(内带程序存储器的情形)或程序存储器放入编程器,编程器通过串口或USB等接口与PC机相连,将PC机存放的CPU能识别的代码下载到单片机或程序存储器中。下图是一个简单的说明。串并口或usb

39、目标文件源文件程序编辑软件汇编或编译软件编程器PC机上的下载软件程序设计过程采用以上方式进行开发的情形下,单片机必须是能从电路板上取下来,这对贴片封装的单片机就无能为力了。此时为了能在线仿真调试,需要昂贵的仿真头和仿真电缆与软件,而且几乎没有仿真器能做到100%的功能仿真,甚至有的问题正是来自于仿真器。随着技术的发展,采用ISP技术,只要在目标电路板上预留一个接口,通过一个很小的下载器,与PC机串、并口或USB口相连,就可以进行程序的调试与下载,尤其是有的单片机具有JTAG接口,下载调试更加方便,调试尽可能少占用单片机资源。单片机系统的开发离不开相应的开发工具,包括编程器、实时仿真器、虚拟仿真

40、软件、编译软件等。开发工具的主要作用包括系统硬件电路的诊断与检查、程序的输入与修改、程序的调试、程序的固化等。编程器的作用就是将单片机程序的机器码烧写到单片机的存储器中,也称为程序的下载、烧写或固化。对于支持ISP功能的单片机,只需要下载电缆(或下载器)就可以完成。实时仿真器包括相应的软件和硬件,一般是通过PC机,用软件监视程序在单片机中的实际情况。有的时候,程序实际是在PC机上运行,当需要与硬件交换信息的时候,才通过适当的接口实现PC机与目标板的信息交换。仿真器的主要功能是实时运行程序,在程序中设置断点,通过仿真接口,监视和控制程序的运行,查看和修改内部寄存器和数据存储器等。除了硬件实时仿真

41、器,另一种做法就是软件监控程序的方法,在单片机的程序存储器中开辟一块地方,预先下载一段代码,该代码与PC机通讯,接受PC机的命令,同时接管单片机正常的中断,读取单片机内部寄存器与存储器信息,并发送到PC机,以达到程序监控的目的。针对支持ISP功能的单片机,可以通过实时仿真器或监控软件完成程序的下载工作。在制作过程中,运行的编译环境为 CodeWarrior 5.0,CodeWarrior5.0是Metrowerks公司一套比较著名的集成开发环境,具有直观,易用的优点。CodeWarrior5.0包括项目管理,代码生成,语法敏感编辑器等,具有快速下载,单步调控的特点,同时可以融合C语言和汇编语言

42、的混合编程。CodeWarrior5.0具有在线调试,单步运行程序的功能,同时能够观察到主程序中定义的所有的变量的值。这一功能在进行程序错误检查和改正时起到了至关重要的作用。图4.1即为CodeWarrior5.0的编程界面:图 4-1 CodeWarrior界面图4.2应用系统开发过程(1)软件结构设计。当硬件设计完成后,就能够具体明确软件的设计要求了。软件结构设计的任务就是划分程序功能模块,把功能相对独立的程序划分成一个功能模块是一种常用的方法,如数据采集、数据处理、数据输出、程序循环等模块。模块划分后,进一步明确各模块之间的关系,各模块之间的接口。考虑一个系统的最后归档也需要详细的流程图

43、,所以无论模块简单还是复杂,都有必要画出各模块的流程图。在这一阶段,应尽量将和硬件有关的底层程序封装起来,以便底层硬件测试和驱动程序与高层程序可以同时研发,并保证程序的调试效率和可移植性。(2)选择开发平台(语言)。程序设计语言对程序设计效率有重大影响。汇编语言是最为常用的一种程序设计语言,用它编写的程序代码精简、直接面向硬件。但汇编语言的编程效率低下,不易缩短产品或系统的开发周期。现在普遍采用的单片机系统高级开发语言是C语言。(3)具体程序的编写。在程序编写时应注意程序模块的可测性,有些重要的模块可能还要规划出测试数据接口,便于使用软件仿真进行测试。(4)软件编译和仿真调试。采用各种显示手段

44、,尽量对程序进行比较完整的测试,不把问题遗留到硬件仿真和脱机验证阶段阶段。4.3工程创建图 4-2 工程创建一图 4-3 工程创建二图 4-4 工程创建三如需添加已经创建过的项目,则需在上图中选择下一步,则会进入到下个界面: 图 4-5 工程创建四找到项目,添加即可。4.4程序编译 图4-6 程序界面一图4-7 程序界面一主程序框架,显示程序地址和循环等部分。主程序要实现的具体功能见下表:表4-1避障电路功能表传感器避障电路输出(上升沿动作)待执行命令左转信号右转信号左 中 右右转左 中 右右转左 中 右右转左 中 右右转左 中 右左转左 中 右右转左 中 右左转左 中 右前进注解:“0”表示

45、有障碍物,“1”表示无障碍物4.1下载调试调试软件为Codewarrior4.5,调试器为清华大学工程物理系开发的 BDM。软件编写初期进行调试,只要让车在静态状态下,边采集传感器信息,边通过hiwave.exe程序的窗口中读取通过软件处理的数据,通过与理论值进行对比来判断程序的正误。利用 BDM 可以即时的对软件和硬件进行监控,在调试过程中可以方便的设置断点、选用单步运行的方式,同时查看各个寄存器的值,EEPROM中的数据掉电之后不会丢失,可以用来记录数据再进行后处理。这些强大的功能,都为我们的软件调试提供了极大的便利。我所采用的方法为在线调试,如上面介绍的开发工具,使车处于静止状态,利用

46、BDM 将数据从单片机传入电脑,可以直接在线分析数据,对错误和故障进行诊断。这个调试方法适用于整个智能车的制作和调试过程。根据实际情况与理想数值的偏差,不断修改数据,渐近于理想状态。总体上,可以充分利用了现有的调试工具和通信设备,得到了我所需要的数据和结果,以便更好的为我的决策进行优化。4.2单片机的资源分配根据本次设计的特点,智能车的控制系统主要有道路信息采集模块,电机驱动模块,舵机驱动模块及串口模块等。为了让这些模块能正常工作就要对单片机的引脚进行合理分配。对于XS128引脚资源丰富,它有两种封装80PIN和112PIN,由于设计时采用的是112PIN封装形式,故不用担心引脚不够使用的问题

47、。但是,DG128的112PIN封装引脚比较乱,同一功能的引脚有可能在不同的侧面,故在进行最小系统板的设计时,花了很长时间去调整单片机引脚的引出方法。最终,根据这些模块的功能和特点,现将所需要的资源总结如表4.1所示。表4.2系统资源分配表直流电机速度控制2路16位PWM输出,PWM01和PWM23工作电压7.2V舵机转向控制1路8位PWM输出,PWM45工作电压7.2VRPR220速度反馈1个脉冲累加器,PACN01工作电压5V摄像头图像采集AD端口AD0通道工作电压9V串口与PC进行数据通信接收RX口和发送TX口,属SCI控制板电源开关1个复位按钮1个指示灯4个,PB0-PB3第五章 程序

48、分析#include<hidef.h>#include"derivative.h"#include<MC9S12XS128.H>#include <stdio.h>int i;int j;int k;word *AD_wValue;int m;word sensortemp=0x0000;void Initial_PLL(void);void PORT_Init(void);void AD_Init(void);void sensor_judge(void); void AD_GetValue(void);void PWMInit(voi

49、d);void PWM_01(void);void PWM_02(void);#pragma CODE_SEG DEFAULTvoid Initial_PLL(void) /*锁相环初始化设定锁相环周期和总线周期 总线16M*/CLKSEL=0X00; PLLCTL_PLLON=1; SYNR=0x00 | 0x01; REFDV=0x80 | 0x01; POSTDIV=0x00; _asm(nop); _asm(nop); while(!(CRGFLG_LOCK=1); CLKSEL_PLLSEL =1; void PWMInit(void)PWMPOL=0X10; /*设置先输出高电平

50、PWMCLK=0X10; /*选择时钟源为Clock SA PWMPRCLK=0X07; /*始终分频寄存器,选择128分频 PWMCAE=0X00; /*所有通道对齐方式选择左对齐 PWMCTL=0X00; /*设置PWM通道不级联 PWMSCLA=0X05; /*0 和 2通道设置预分频 PWMPER4=0X64;/*对4脚周期寄存器设置 16M/(128*2*64)=1k PWMDTY4=100; /*通道占空比设置 PWME=0x10; /*4通道使能void PWM_01(void) /*PWM1通道设置PWMCTL_CON01=1; PWMCAE_CAE1=0; PWMCNT01

51、= 0; PWMPOL_PPOL1=1; PWMPRCLK = 0X04; PWMSCLA = 0x08; PWMCLK_PCLK1 = 1; PWMPER01 = 20000; PWMDTY01 = 2010; PWME_PWME1 = 1; void PWM_02(void) /*PWM2通道设置PWMPRCLK=0X60; PWMCLK_PCLK2=1; PWMSCLB=0X7D; PWMPOL_PPOL2=0XFF; PWMCAE_CAE2=0X00; PWMPER2=0X13; PWMDTY2=0X13; PWME_PWME2=1;void PORT_Init(void) /*磀端口

52、初始化*/ DDRA=0x00; /*端口A方向输入*/ PUCR_PUPAE=1; /*端口A信号上拉*/ PORTA=0x00; /*端口A初值为0*/ DDRP=0XFF; /*PWM口输出*/ PTP_PTP2=0X00; /*PWM2口为低电平*/ void AD_Init(void) /*AD初始化*/ ATD0CTL1=0X00; /*外部触发,8位精度,采样前不放电*/ ATD0CTL2=0X40; /*标志位自动清零,禁止外部触发,关中断,低电平有效*/ ATD0CTL3=0X90; /*右对齐,每次2个序列,非先进先出,遇到断点继续*/ ATD0CTL4=0X01; /*采样时间为4个AD时钟周期,PRS为预分频器=f(BUS)/2*(PRS+1)=6MHZ,即时钟分频为6MHZ*/ ATD0CTL5=0X30; /*特殊通道禁止,连续转换,多通道,其实通道0*/ ATD0DIEN=0X00; /*禁止数字输入*/ void AD_GetValue(void) /*读AD转换结果*/ *AD_wValue=ATD0DR0; /*读取结果寄存器的值*/ if(*AD_wValue>=128) m=1; else m=0; sensortemp=m; *AD_wValue=ATD0DR

温馨提示

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

评论

0/150

提交评论