消防小车系统的设计_第1页
消防小车系统的设计_第2页
消防小车系统的设计_第3页
消防小车系统的设计_第4页
消防小车系统的设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、消防小车系统的设计摘要:本设计以玩具小车为车体,LM3S811单片机为控制核心,加以电源电路、电机驱动、光电传感器以及其他电路构成。实现电动车的智能控制,包括路面寻线、火源检测、智能避障、智能灭火等功能,寻线方式采用反射式光电对管感知与地面颜色有较大差别的引导线。系统由LM3S811通过PWM制小车的前进后退以及转向。寻迹由光电对管完成,避障用的传感器采用红外反射式。继电器控制风扇从而完成灭火功能。直至火源温度降到控制范围内,消防小车回到出发点继续待命。本设计结构简单,较容易实现,但具有高度的智能化、人性化,一定程度体现了智能。关键词:单片机;红外对管;LM3S811微处理器;灭火小车The

2、design of fire trolley systemAbstract:The smart car takes the self-made frame, LM3S811 single-chip microcomputer as the control core, constitutes to power supply circuit, motor drive, photoelectric sensor and power circuit and other circuits. In order to achieve the intelligent control of electric v

3、ehicles, which includes road line, fire detection, intelligent obstacle avoidance, intelligent fire extinguishing function, hunting way uses the reflection type photoelectric guide line of difference in perception and the ground color tube. The system controls the cars forward backward and turn thro

4、ugh LM3S811 by PWM. Tracing is done by the photoelectric tube, the sensor avoids obstacles by using the infrared reflection type. Relay controls fan to finish extinguishing function. Fire trolley returns to the starting point to wait until the fire temperature decreases into the controlled range. Th

5、e design has simple structure, which is easy to realize, but intelligent and humane, partly reflects the intelligence.Key words: MCU ; Infrared tube; LM3S811; Fire fighting car1 引言1.1选题的背景和意义火灾在现实生活中是非常普遍的,被称为三大自然灾害之一。消防人员时时刻刻冲到第一线,面临生命危险。随着科学技术的不断发展,消防车的发展迅速,消防车的发展经历了一个很长的历史,但是截止目前为止,消防车仍无法完全脱离人工操作

6、。随着时代的发展,智能化是以未来发展方向,它可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。人工智能已形成极广泛的研究领域,并且取得了许多令人瞩目的成就。人工智能是一门研究人类智能机理和如何用计算机模拟人类智能活动的学科。智能控制技术综合了计算机、控制论、机构学、信息和传感技术、人工智能、仿生学等多学科而形成的高新技术,集成了多学科的发展成果,代表高技术的发展前沿。智能机器的研究,大大促进了人工智能思想和技术的进步,渐渐成为一个备受关注的分支领域。1在这种背景下,智能消防小车就应运而生。实现了对安全防护质量的提高,大大减小了消防人员的危险。在智能灭火

7、系统中通过单片机的控制,可以实现自动化控制,简化了灭火的工作流程,降低了危险。此外灭火小车控制系统的研究也是一个很好的教学平台。通过它可以使学生将理论与实际结合起来,提高了学生的动手能力、创造能力、合作能力和综合能力。对我们在智能控制领域的发展做出了积极的贡献。在此次毕业设计中,以玩具小车为车体,硬件是以LM3S811为主控芯片,配合直流电机、光电对管等器件构成,并通过C语言程序代码实现控制小车的各种动作,实现了小车的自动循迹以及灭火等功能,本设计结构简单,可以根据不同场地进行不同的拓展或者改进使之更为实用。我们相信终有一天在危险的火场,消防员可以不用身陷火中就能灭火。1.2 本课题所涉及的国

8、内外研究现状国际上较早对智能灭火研究的是美国和前苏联,稍后,英国、日本、法国、德国等国家也纷纷开始研究该技术。目前已经有很多种不同功能的消防机器人用于救灾现场。国际上对智能灭火的研究可分为三个阶段(三代),第一代是程序控制消防小车,第二代是具有感觉功能的消防机器人,第三代是智能化机器人。1目前,工业发达国家正在加快开发具有不同功能的实用型的第二代消防机器人和第三代低级智能化消防机器人。而且高级智能化消防机器人已经被一些发达国家列入国家发展规划,成为其作为经济发展的一个重要保证手段。我国的智能研究开发开始于20世纪70年代初,现在已经历了30年的历程。前十年处于研究单位自行开展研究工作状态,发展

9、缓慢。1985年后开始列入国家有关计划,发展比较快。今年以来许多高校和单位都紧跟世界研究潮流,开展了很多领域的研究与开发工作,并取得一系列的进展。当前,我国已有数以万计的科研人员和大学师生从事不同层次的人工智能研究与学习,人工智能研究已经在我国深入开展。智能小车作为智能控制的一个部分,也得到了迅速的发展。我国智能控制科研事业从实验室走向生产车间最终战斗在火场,为我国消防装备的发展产生了积极的影响。消防装备作为一种重要的灭火手段,在消防救援中显示出越来越重要的作用。1.3 本文的研究内容 设计制作一个消防智能小车模型,能到指定区域进行抢险灭火工作。以蜡烛模拟火源,随机分布在场地中。基本要求:1)

10、 小车从安全区域启动,自动沿着预设轨道行驶,在行驶过程中能够自动寻检测预设的轨道,若有偏离,能够自动纠正,返回到预设轨道上来。2) 当小车遇到障碍物时,可以自动避开障碍物,从无障碍区通过,通过后继续自动循迹。3) 小车自动检测除安全区外场地随机出现火源,并且要求智能小车能够发现火焰并将其完全扑灭。4) 灭火完毕后小车能够返回到安全区域。为实现主要条件及技术指标,本文重点研究以下几个方面:消防车的动力系统:要能使小车准确的前进和转向,且检测到火源后准确地到达火源位置。火源检测系统:如何能排除干扰,快速准确地检测到火源并定位。灭火控制系统:在精确定位到火源位置后,如何控制风扇实现灭火功能,还有对小

11、车完成灭火后,顺利回到安全区的情况。2.系统方案选择2.1方案论证与实现方法2.1.1控制器选择方案一:采用AT89C51单片机作为主控制器。AT89C51是一个低电压、高性能的CMOS 8位微处理器,软件编程自由度大,可用编程实现各种控制算法和逻辑控制。但是89C51需外接模数转换器来满足数据采样,硬件电路相对复杂。其运算速度低,功能单一,RAM、ROM空间小、不稳定等缺点。本题目由于小车的颠簸和电机的干扰,需要比较稳定的系统,若采用89C51需要做RAM,ROM来扩展其内存空间,其硬件工作量必然大大增多。另外,51单片机无法在线仿真,需要用仿真器来实现软硬件调试,较为繁琐。方案二:采用FP

12、GA(现场可编辑门列阵)作为系统控制器。FPGA可以实现各种复杂的逻辑功能,规模大,集成度高,体积小,稳定性好,并且可利用EDA软件进行仿真和调试。FPGA采用并行工作方式,提高了系统的处理速度,常用于大规模实时性要求较高的系统。在本设计中小车速度不能过快,故FPGA的高速处理能力得不到充分发挥。方案三:采用LM3S811单片机作为主控制器。Cortex-M3主要应用于低成本、管脚数少和低功耗的场合,并且具有极高的运算能力和极强的中断响应能力。本次设计需要利用定时器计算时间,还要完成小车控制,设计到许多中断等复杂问题,所以采用Stellaris旗下Standstorm中系列最具代表的产品LM3

13、S811作为系统的主控芯片,该芯片集成了PWM端口,通过StellarisWare软件控制,更加易于上手开发,能够更好地完成对各个模块的控制。从方便使用和综合性能的角度考虑,选择了方案三。2.1.2 车体方案设计方案一:购买玩具电动车。购买的玩具电动车具有完整地车架车轮、电机及其驱动电路。但是一般情况下,这种玩具电动车装备紧凑,使得各种所需传感器的安装十分不方便,此外,这种电机空载转速差,负载性能差,不易调速,且价格不菲。因此我们放弃了此方案。方案二:改装电动车。过反复思考论证,我制定了左右轮分别驱动的自制小车,即左右轮分别用两个转速和力矩基本完全相同的直流电机驱动。这样可实现小车的任意转弯。

14、在安装时确定两个驱动电机同轴,以保证小车平稳,且防止了小车重心偏移的情况。故选择了该方案。2.1.3电机驱动电路方案选择方案一:采用专用芯片L298N作为电机驱动芯片。L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达5V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口通过光耦芯片提供信号;电路简单,抗干扰能力强。方案二:对于直流电机用分立元件构成驱动电路。由分立元件构成电机驱动电路,结构简单,价格低廉,在实际应用中应用广泛。但是这种电路工作性能不够稳定。方案三:采用继电器对电动机的开或关进行控制

15、,通过开关的切换对小车的速度进行调整,此方案设计电路比较简单,但是继电器的响应时间慢,易损耗,寿命较短,可靠性不高。通过比较,使用L298N芯片充分发挥了它的功能,能稳定地驱动直流电机,且价格不高,故选用L298N驱动电机。2.1.4行进黑线的检测方案选择方案一:用光敏电阻组成光敏探测器。光敏电阻的阻值可以跟随周围环境光线的变化而变化。当光线照射到白线上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱。因此光敏电阻在白线和黑线上方时,阻值会发生明显的变化。将阻值的变化值经过比较器就可以输出高低电平。但是这种方案受光照影响很大,不能够稳定的工作。因此要考虑其他更加稳定的方案。方案二:采用简

16、易光电传感器结合外围电路探测,但实际效果并不理想,对行驶过程中的稳定性要求很高,且误差几率较大,易受光线环境和路面情况的影响,在使用过程中极易出现问题,而且容易因为该部件造成整个系统的不稳定。故排除该方案。方案三:采用三只红外对管,红外发射管发出红外线,当光线照射到下方场地上时会发生反射,由于黑色胶皮和白色胶纸的反射系数不同,光电传感器可根据接收到的反射光强弱来判断是否偏离白线。当发出的红外线照射到白色的平面后反射,若红外接收管能接收到反射回的光线则检测出白线继而输出低电平,若接收不到发射管发出的光线则检测出黑线继而输出高电平。这样自己制作组装的寻迹传感器基本能够满足要求根据传感器状态的变化来

17、判断小车偏离胶纸的情况以及路口的不同情况,从而调整小车的运动。因此本设计选择了方案三。2.1.5火源检测的选择方案方案一:用温度传感器如热电偶,热电偶在工业应用上十分广泛。但是热电偶感应的范围太广,而且由于火焰只是周围温度稍高且范围较窄。试验验证用热电偶检测火焰精度不高,故放弃了此方案。方案二:用一个火焰传感器,安装在小车前方,从火焰传感器得到的信号经整流放大,再通过AD转换接单片机由程序将火焰距离分为远近两档,远距离测到火焰可确定小车的基本行进方向,进入近距离档后调整方向对准火源,开启风扇将其吹灭。但这样增加了程序编写的难度,并且试验证明AD转换不够稳定,误差较大,故排除了该方案。方案三:用

18、紫外传感器检测火焰。紫外火焰传感器主要应用于火灾消防系统,尤其是一些易燃易爆场所,用来监测火焰的产生。紫外线火焰传感器的灵敏度高,相应速度快,抗干扰能力强,对明火特别敏感,能对火灾立即作出反应。但是紫外传感器检测的范围太大,不适用于本系统。方案四:采用红外接收传感器。原理和循迹电路相同,只是不需要发射管,只要使用接收管即可检测到光源的发出的红外线。用两个传感器分别安装在小车的两侧进行远近距离的定位检测,火焰传感器反馈的信号经电容滤波,再通过比较器后,输入到单片机的I/O端口,通过调节变阻器大小改变比较器的参考电压,该方案优点是工作电压低,择向性好,远近距离的定位准确,能消除火源放置的各种特殊情

19、况,而不存在盲区。所需器件相对价廉,能够准确寻找到火源。优势很明显,故采用此种方案。综上所述,最终选择了方案四。2.1.5 避障模块的选择方案方案一:用超声波传感器进行避障。超声波传感器的原理是:超声波由压电陶瓷超声波传感器发出后,遇到障碍物便反射回来,再被超声波传感器接收。然后将这信号放大后送入单片机。然而超声波传感器对工作频率要求较高,偏差在1内,所以用模拟电路来做方波发生器比较难以实现。而用单片机用作方波发生器未免有些浪费资源。此外,超声波传输时是以椭球形发射接收不完全是直线传输,这对测距障碍物有一定的要求,一般要求障碍物在0.5平方米以上时测距相对准确。因此考虑其他的方案。方案二:用红

20、外光电对管进行避障。光电对管的根据发出的光束,被物体阻断或部分反射,受光器最终据此作出判断反应,是利用被检测物体对红外光束的遮光或反射,由同步回路选通而检测物体的有无,对所有能反射光线的物体均能检测。光电操作简单,使用方便。当有光线反射回来时,输出低电平。当没有光线反射回来时,输出高电平。考虑到本系统只需要检测简单障碍物,没有十分复杂的环境。为了使用方便,便于操作和调试,最终选择了方案二。2.2最终方案经过反复论证,最终确定了如下方案:a) 手工改装车体。b) 采用LM3S811单片机作为主控制器。c) 用红外对管进行寻迹。d) L298N作为直流电机的驱动芯片。e) 红外对管传感器作为本系统

21、的火焰传感器。2.3系统设计与结构框图图1 系统结构框图3 硬件实现及单元电路设计3.1 LM3S811芯片介绍8位的51单片机长期占据着微控制器(MCU)的主流市场,但随着技术与需求的发展,32位微控制器应用增长率也在不断攀升。目前,基于ARM内核的32位微处理器在市场上处于领导地位2。ARM处理器不但便宜而且性能较传统的51单片机高得多,集成度也大大提高,为单芯片解决方案提供了非常方便的平台,在很多场合都可以用一个芯片就能包容所需的全部资源,同时ARM处理器具有功耗低、程序代码少、自动化程度高、响应速度快、体积小、可根据需要灵活定制等特点,适合于要求实时和多任务处理的场合。ARM处理器不但

22、便宜而且性能较传统的51单片机高得多,集成度也大大提高,为单芯片解决方案提供了非常方便的平台,在很多场合都可以用一个芯片就包容了你所需要的全部资源,无需扩展其他资源了。ARM处理器同时具有系统功耗低、程序代码少、自动化程度高、响应速度快、体积小、效率高、可根据需要灵活定制等特点,特别适合于要求实时和多任务处理的情况。ARM控制器凭借其功耗低、性价比高、代码密度高三大特色成为行业公认的嵌入式RISC处理器标准。ARM微处理器目前包括:ARM7系列、ARM9系列、 ARM9E系列、 ARM10E系列、 SecurCore系列、Intel XScal系列、Cortex系列。它们具有ARM体系的共同特

23、点外还具有各自特长领域的应用特点。如,ARM7系列微处理器主要应用领域是:工业控制设备、移动电话等领域。Cortex-M3主要应用于低成本、管脚数少和低功耗的场合,并且具有极高的运算能力和极强的中断响应能力。本次设计采用Stellaris旗下Sandstorm中最具代表的产品LM3S811作为系统的主控芯片。 在LM3S811中,有很多功能模块:JTAG、UART(串口)、PWM(脉冲宽度调制)、Timer(定时器)、ADC(模数转换)等,其中一些功能模块,如PWM端口,该芯片含有43个PWM发生器,8路PWM信号,灵活的可控输出模块,对于小车的电机控制,非常方便。LM3S811芯片特点3:

24、32位RISC功能,工作频率范围为050MHz; 支持132个可编程I/O口; 内置3个定时模块,提供6个16位定时器; 具有8个中断优先级和26个中断; 储存为64k单周期flash,8K单周期访问SRAM; 内置看门狗定时器; 中断为向量中断控制器,可配置优先级和向量地址; 低功耗设计,具备睡眠模式和深度睡眠模式; PWM具有3个PWM信号发生模块,提供3个16位的计数器、6个比较器,3个PWM信号发生器以及一个死区发生器; 具有4通道的模数转换器,支持500000次/秒的采样率; 内置温度传感器和模拟比较器; 具有2个异步收发器模块UART; 支持Freescale SPI、MICROW

25、IRE、和德州仪器三中格式的同步串行传输数据;LM3S811芯片通过复用管脚上实现大量的功能。芯片管脚复用及分布如图2所示。图2 LM3S811芯片引脚表1 本次设计所用管脚介绍管脚数目管脚名称管脚功能25、26PWM0、PWM1控制风扇29、30、35、36PWM2、PWM3、PWM4、PWM5控制驱动电机5、37、38、39、40/RST、TDO_SWO、TDI、TMS_SWDIO、TCK仿真接口9、10OSC0、OSC1外部时钟信号接口6LDO低压稳压电源输出口7、15、23、32VDD电源接口8、16、24、31GND地43PB5JTAG防锁死按键口11、12、13、14、29、30、

26、33、34、42、43、44、45、46、47、48PC7、PC6、PC5、PC4、PB2、PB3、PB6、PB5、PB4、PD4、PD5、PD6、PD7通用I/O端口备注:LM3S811的管脚是可以复用的,在本次设计中不使用过多管脚资源,不需 复用管脚,因此只介绍管脚常用功能。 注意:在作为通用输入输出端口时,其中的PB7及PC0PC3一般不要使用,因为此五个引脚通常是用于JTAG的,它是用作烧写程序的,一旦被使用,可能芯片在执行命令时会出现无法估计的错误,导致把芯片锁死,无法再次使用。 3.2 L298N电机驱动电路设计3.2.1 控制信号PWM在介绍直流电机的驱动电路前,先介绍由LM3S

27、811产生的小车电机驱动L298N电路的PWM控制信号。PWM脉冲宽度调制,也简称为脉宽调制,是一项实用的技术,它是一种对模拟信号电平进行数字化编码的方法。在脉宽调制中使用高分辨率计数器来产生方波,并且可以通过调整方波的占空比来对模拟信号电平进行编码,PWM通常应用在开关电源和电机控制等方面4。LM3S811的PWM模块具有极大的灵活性,它可以产生简单的PWM信号,也可以产生带死区延迟的成对PWM信号。PWM模块有3个PWM发生器模块和个PWM控制模块,其中每个PWM发生器模块包含1个定时器(16位递减或先递增后递减计数器)、2个比较器、1个PWM信号发生器、1个死区发生器以及一个中断/ADC

28、触发选择器,它能产生两个PWM信号,这两个PWM信号可以是独立的信号(基于同一定时器因而频率相同的独立信号除外),也可以是一对插入了死区延迟的互补信号,而控制模块的功能是控制PWM信号的极性以及决定将哪个信号传递到管脚。PWM模块的每个PWM发生器都有一个16位定时器、两个比较器,可以产生两路PWM。当PWM发生器运作时,定时器不断计数并和两个比较器的值进行比较,当配置好定时器的计数速度、计数方式、定时器的装载值、两个比较器的值、以及PWM受什么事件的影响、什么影响后,就可以产生许多复杂的PWM波形。LM3S811的PWM特性如下: 灵活的PWM产生方法,有4个PWM发生器,产生8路PWM信号

29、; 灵活可控的输出控制模块,自带死区发生器; 安全可靠的错误检测保护功能,具有丰富的中断机制和ADC触发;3.2.2 直流电机的L298N驱动控制电路设计在小车的驱动电路设计时,通过对各种相关资料的学习,了解到驱动电路可以采用经典的H桥驱动电路,其使用微处理器控制三极管使之工作在导通或截止的状态,通过调节PWM波的占空比对电机速度进行精确的调整,可以实现简单的前进后退和方向的控制,效率很高,稳定性也挺好;随着相关资料的学习进展,了解到一个更好的小车驱动电路方案,使用集成了两个H桥的驱动电路芯片,即SGS公司的L298N作为主控芯片,其片内含两个H桥的高电压大电流全桥式驱动器;具有两个使能控制端

30、,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路4通道逻辑驱动电路;是一种二相和四相电机的专用驱动器,采用标准逻辑电平信号控制,可以接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机直流电动机和步进电动机、继电器线圈等感性负载。且由L298N结合单片机可实现对小车速度的精确控制。这种调速方式有调速特性优良、调整平滑、调速范围广、过载能力大,能承受频繁的负载冲击,还可以实现频繁的无级快速启动、制动和反转等优点。一个电动小车整体的运行性能,首先取决于它的电源模块和电机驱动模块。电动小车的驱动系统一般

31、由控制器、功率驱动及电动机三个主要部分组成。电动小车的驱动不但要求电机驱动系统具有高转矩重量比、宽调速范围、高可靠性,而且电机的转矩-转速特性受电源功率的影响,而L298N就具有这种较宽的高效率区。下图2就是L298N的管脚及其内部原理图。图3 L298N管脚及内部原理图利用L298N构成的驱动电路原理4:对小车电机的调速控制,可以采用PWM调速的方法。其原理为开关管在一个周期内的导通时间为t,周期为T,则电机两端的平均电压UVcc*(t/T)=a Vcc。其中,a=t/T(占主比),Vcc是电源电压。电机的转速与电机两端的电压成比例,而电机两端的电压与控制波形的占空比成正比,因而电机的转速与

32、其占空比成比例,占空比越大电机转速得越快。在硬件电路的连接时,可以将微处理器的控制信号端分别连接到L298N的IN1IN4上,通过改变IN1IN4上加载的微处理器输出的控制信号的高低电平变化以控制小车的前进方向,通过改变IN1IN4上的高低电平的占空比来控制小车电机的转速。图4 L298B构成的小车驱动电路图图4是L298N构成的小车驱动电路图。图中L298N有两路电源分别为逻辑电源和动力电源,3.3V为逻辑电源,5V为动力电源;直流电机的电枢两端并联的一个磁片电容104的作用是稳定电机的电压以不致对微处理器造成于扰;ENA与ENB直接接入3.3V逻辑电源也就是说两个电机时刻都工作在使能状态,

33、控制电机的运行状态只有通过改变IN1IN4上加载的微处理器输出的控制信号的高低电平;另外由于直流电机是线圈式的,在从运行状态突然转换到停止状态和从顺时针状态突然转换到逆时针状态时会形成很大的反向电流,在电路中加入的二极管的作用就是在产生反向电流的时候进行泄流,保护芯片的安全。在本次设计中,IN1IN4分别通过单片机输出的PWM进行控制,完成小车的前进、后退、转弯等功能。IN1IN4上加载的控制信号控制小车动作的电机转动状态编码如下表2所示:表2 小车电机转动状态表左电机右电机左电机右电机电动车运行状态IN1IN2IN3IN4?正转正转前行正转反转左转正转停止以左电机为中心原地左转反转正转右转停

34、止正转以右电机为中心原地右转反转反转后退3.3火焰传感器及其调试电路的设计火焰传感器坏对于该系统的功能能否实现十分重要。火焰传感器及其调理电路如图5示。5图5 火焰检测电路是这个电路吗?采用红外接收传感器。原理和循迹电路相同,只是不需要发射管,只要使用接收管即可检测到光源的发出的红外线。用两个传感器分别安装在小车的两侧进行远近距离的定位检测,火焰传感器反馈的信号经电容滤波,通过比较器实现电压比较器功能,两侧检测火源的传感器与环境光传感器做电压比较,检测到火源后输出高电平触发单片机中断,然后通过控制小车的转动实现火源的精确定位,当靠近火源处开启风扇,进行灭火。4 软件系统设计4.1编译语言及编译

35、环境的选择4.1.1 汇编语言概述为了克服机器语言的缺点,用英文字条来代替机器语言,这些英文字符被称为助记符,用助记符表示的指令称为符号语言或汇编语言。汇编语言是面向机器的语言,程序设计人员必须对单片机的硬件有相当深入的了解。助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用的存储空间小,运行速度快,因此用汇编语言能编写出最优化的程序。汇编语言程序能直接管理和控制硬件设备(功能部件),它能处理中断,也能直接访问存储器及I/O接口电路。但是,汇编语言和机器语言一样,都脱离不开具体机器的硬件,因此,这两种语言均是面向机器的语言,缺乏通用性。4.1.2 C语言概述C语言是国际上广泛流

36、行的计算机高级语言,既可用来写系统软件,也可用来写应用软件。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。因此,C语言特别适合于编写系统软件。它的特点如下:71、语言简洁、紧凑,使用方便、灵活。2、运算符丰富,数据结构丰富,具有现代化语言的各种数据结构。4、具有结构化的控制语句用函数作为程序的模块单位,便于实现程序的模块化。5、语法限制不大严格,程序设计自由度大。6、C语言允许直接访问物理地址。7、生成目标代码质量高,程序执行效率高,用C语言写的程序可移植性好。4.2 IAR软件IAR Embedded Work

37、bench for ARM(简称IAR EWARM)是一个针对ARM处理器的集成开发环境。IAR包含项目管理器、编辑器、C/C+编译器和ARM汇编器、连接器XLINK和支持RTOS的调试工具C-SPY,其C/C+交叉编译器及调试器是今天世界上最完整的和最容易使用的专业嵌入式应用开发工具,在EWARM环境下可以使用C/C+和汇编语言方便地开发嵌入式应用程序,相比其他的ARM开发环境,IAR EWARM入门更容易、使用更方便、其代码也更紧凑、编译效率更高、系统库功能也更完善。IAR从代码编辑、工程建立到C/C+编译、连接和调试可以是一套完整的集成开发,由于其和各种仿真器、调试器紧密结合,用户在开发

38、和调试时能仅仅使用一种开发环境就可以完成多种微控制器的研发。IAR EWARM集成的编译器的主要特征如下:8 高效的PROMable代码,完全标准的C语言兼容; 内含对应芯片的程序速度和大小优化器; 具有目标特性扩充; 版本控制和扩展工具支持良好; 便捷的中断处理和模拟特性; 瓶颈性能分析,高效浮点支持; 内存模式可自由选择; 工程中的相对路径支持。介于IAR的上述特性以及C语言具有广泛的库程序支持,编译执行效率高,支持工具也比较多较成熟,其在嵌入式系统中有广泛的运用,具有通用性强,较强可维护性,可移植性程度高,执行效率高等优点,本次设计决定采用C语言编程超声波测距和取消控制小车运作及声光警示

39、。4.2.1IAR编译环境的安装由于IAR EWARM的试用版有30天功能无限制版本、32K代码限制版本,32K代码限制版的优点是在使用时间上无限制,而我的设计从开始到结束30天不够,功能无限制版使用不便,我的程序32K内足够了,所以我在IAR公司的官网注册下载的就是32K代码限制版,在IAR公司官网获得了其序列码和KEY后就可以安装了。下载完成IAR安装软件EWARM-KS-CD-6307后,双击进入在安装页面中,点击Install IAR Embedded workbench开始安装,接下来输入刚才在IAR官网获得的试用版序列号和密钥KEY完成IAR安装,接下来还得要安装IAR的工程文件库

40、Stellarisware的软件SW-LM3S-8555以完成编译环境的安装。IAR编译环境安装完成后还得要安装M3-LINK的虚拟串口驱动程序,安装虚拟串口驱动程序后电脑才能识别仿真器,以完成烧写与仿真器相连接的EEPROM,方法为:首先将LM3S811最小系统板和仿真器连接,然后与电脑连接,之后电脑会出现新硬件安装向导,选择手动安装以打开德州仪器光盘中的USB仿真器驱动,选择并安装。由于仿真器是双虚拟串口,因此电脑还会提示安装新硬件,重复以上步骤,直到不再提醒。IAR开发环境的安装如下图6所示:图6 IAR开发环境的安装4.2.2 IAR工程文件的创建与设置IAR工程文件的创建:9*创建一

41、个工程文件目录,用来存放工作区文件、工程文件及程序源文件;*启动IAR EWARM,点击“project”,选择“Creat new project”,选择默认的ARM和Empty project,创建一个基于ARM的空项目,保存项目文件;*右击项目名称,点击“add”,选择“add group”,在弹出的add group对话框中输入文件组的名称lib、src、startup,用于存放不同类型的源文件;*右击文件组名称,点击“add”,选择“add files”,添加所需文件以及源程序的源文件,比如lib文件组中的driverlib.a,是任何一个项目中都必不可少的,另外在startup文件

42、组下的startup_ewarm.c也是必不可少的;IAR项目属性的设置:点击General Options选项,在Target选项下,点击Device,在右侧选择Texas Insruments LM3S811;点击Preprocessor选项卡,添加Include文件目录,在此我将StellarisWare文件夹下的全部子文件夹都包括了进来;在Output选项卡中,勾选General additional output,在output format里选择binary,再勾选override default,这样在编译时会自动生成工程二进制文件.bin,方便下载;在Linker选项卡中勾选o

43、verride default,再选择添加文件LM3S811.icf。在List选项中选择generate linker map file,便于生成MAP文件;在Debugger选项卡中,在setup里的driver选项选择LMFTDI;在download下勾选verify download和use flash load;在LMI FTDI选项卡中,在Interface下选择JTAG,在JTAG里选择100KHz。IAR项目属性的设置如下图7所示:图7 IAR项目属性的设置4.2.3 LM3S811最小系统版板的程序调试我使用了LM3S811的GPIO口控制LED闪烁发光的简单例程来测试系统版

44、是否可用以及是否能正常下载烧写程序,只要将LM3S811最小系统版的LED1灯处即JP1跳线连接到PE1,程序下载进去后,LED1灯能亮2秒熄1秒即可判定下载成功且开发板可用。PE1口控制LED1灯分三步走:1)调用函数SysCtlPeriEnable( )使能LED所在的GPIO模块;2)调用函数GPIOPinTypeOut( )配置LED所在的GPIO管脚为推挽输出;3)调用函数GPIOPinWrite( )对LED所在的GPIO管脚写0和写1来控制LED的亮灭,并在中间插入函数SysCtlDelay( )进行延时控制,以达到闪烁发光的效果。测试用程序8清单LED闪烁发光:#include

45、 systemInit.h#define LED_PERIPH SYSCTL_PERIPH_GPIOG#define LED_PORT GPIO_PORTG_BASE#define LED_PIN GPIO_PIN_2int main(void)jtagWait( ); / 防止JTAG失效,重要!clockInit( ); / 时钟初始化:晶振,6MHzSysCtlPeriEnable(LED_PERIPH); / 使能LED所在的GPIO端口GPIOPinTypeOut(LED_PORT, LED_PIN); / 设置LED所在管脚为输出for (;)GPIOPinWrite(LED_PO

46、RT, LED_PIN, 0x00); / 熄灭LEDSysCtlDelay(1000 * (TheSysClock / 3000); / 延时约1000msGPIOPinWrite(LED_PORT, LED_PIN, 0xFF); / 点亮LEDSysCtlDelay(2000 * (TheSysClock / 3000); / 延时约2000ms 4.3软件设计本软件设计通过循环控制实现小车一直前进。当中间红外对管探测到黑带时,运行左转程序;当左路对管探测到黑带时,运行微调右转程序;当右路对管探测到黑带时,运行微调左转。当检测到火焰时,驱动风扇,进行灭火;若未检测到,继续循环,直到灭火。

47、4.3.1软件流程图判断工作状态开始初始化 Y火源检测沿黑线检测Y发现火源控制方向N判断灭火情况Y结束图8 系统流程图流程和形式。4.3.2 对管检测模块int LTH1550Test(void) if (GPIOPinRead(LTH1550_PORT, LTH1550_PINLeft) = 0x00) / if( GPIOPinRead(LTH1550_PORT, LTH1550_PINRight) = 0x00 ) return 0; else return 1; else if( GPIOPinRead(LTH1550_PORT, LTH1550_PINRight) = 0x00 )

48、return 2; else return 3; 4.3.3 循迹模块及灭火模块main(void)char cBuf40;unsigned char LineFlag = 3; int TStartTest = 0; jtagWait(); / 防止JTAG失效 clockInit(); / 时钟初始化:晶振,6MHz CarInit(); uartInit(); LEDSInit(); / 风扇初始化 KeyInit(); TimerInit();LTH1550Init();/对管初始化 IntMasterEnable(); / 使能处理器中断for(int i = 0; i 2; +i)

49、 /自检通过 LedOn(); / 点亮LED,风扇工作 SysCtlDelay(1000* (TheSysClock / 3000); / 延时约1000ms LedOff(); / 熄灭LED,风扇停止 SysCtlDelay(1000* (TheSysClock / 3000); / 延时约1000ms for (;) int k = 0; KeyWait(); TimerStartCNT(); for(;) if( LineFlag = 0 )/左边检测到黑带 LedOff();/风扇不工作 CarRight();/小车右偏 if(LTH1550Test() = 1) LineFlag

50、 = 1; if( LineFlag = 1 )/右边检测到黑带 LedOff(); CarLeft();/小车左偏 if(LTH1550Test() = 2) LineFlag = 2; if( LineFlag = 3 )/检测到火源 if(LTH1550Test() = 0) CarStop(); LedOn;/LED亮,风扇转 SysCtlDelay(3000* (TheSysClock / 3000); / 延时约1000ms 5系统测试和调整5.1硬件调试5.1.1 驱动电路的调试电路焊接完成后,首先用万用表在检查线路焊接是否正确。给电机接上驱动电路之前,用直流电源直接控制电机,测

51、试电机的正反转是否正常,然后检测每个驱动电路是否可以驱动电机正反转,保证驱动电路完整。起初利用示波器测量电压的变化,比较麻烦,后来在在L298连接了LED显示灯,能够直观的反应电机的变化情况,调试方便。在控制小车前进、后退、转弯过程中,要不断的调节PWM波的占空比来实现。配置PWM波的周期,发现带动不起小车运动,然后反复调试占空比,达到一定数值后可以驱动小车运动。5.1.2红外对管测试本设计将两对红外对管焊接于同一个电路板,用示波器检测并调整其灵敏度。红外发射管的电流在520mA之间,电流大,发射的红外线强,但杂散反射光份量多,不易调整,检测误差大;电流小,工作可靠,检测头相对被检测的物体的距离范围窄,用手移于红外发射接收管底下用示波器观察波形是否存在低、高电平中跳变。若没有此现象,可进一步慢慢红外发射接收管离地面的距离或滑动变阻器,直到满意为止。5.2软件测试将程序烧写入芯片控制小车自动循行,程序要求小车按照预设轨道行驶。但小车不按程序编写的要求行驶,每次行驶到边缘黑带时小车都会冲出边缘黑带。最开始的第一个模型车体太小,装上风扇以后重心不好平衡的缘故,当行驶到有边缘黑带路面时,会由

温馨提示

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

评论

0/150

提交评论