单片机灭火避障小车设计方案

目录

目录 II
摘要 III
1 智能小车概述 5
1.1 国内外研究动态 5
1.2 课题的目的和意义 5
2 系统设计概述 6
2.1 系统设计要求 6
2 总体方案设计 7
2.1 硬件设计 7
2.1.1 车体设计 7
2.1.2 主控制器模块 8
2.1.3 电源模块 8
2.1.4 电机驱动模块 9
2.2 火源检测模块 10
2.3 避障模块 11
2.4 显示模块 11
2.5 电机选取 11
2.6 最终方案 12
3 硬件实现及单元电路设计 13
3.1 主控制模块 13
3.2 单片机的时钟电路与复位电路设计 13
3.3 单片机的引脚功能描述 13
3.4 电源模块 16
3.5 显示模块 17
3.5.1 1602LCD的基本参数及引脚功能 17
3.5.2 显示模块采用1602液晶显示接口电路 18
3.6 火源检测模块 18
3.6.1 火焰检测传感器的安装 19
3.7 避障模块 19
3.7.1 避障模块的安装 21
3.8 灭火驱动电路 22
3.8.1 灭火风扇的安装 22
4 系统软件设计方案 23
4.1 避障的实现 24
4.2 寻找火源的实现 26
5 电路的调试 30
5.1 调试的步骤 30
5.2 遇到的问题 30
7 总结 31
致谢 31
参考文献 32
附件一:总体原理图设计 33

摘要

智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车就是其中的一个体现,本次设计的多功能智能灭火避障小车,以STC89C52单片机作为微控制器,设计出一种可以寻找火源(火源以蜡烛模拟)和自动避开障碍物的小车。通过光敏晶体管传感器检测火源信号,当检测到火源,小车自动调整姿态,对准火源。灭火电机启动将蜡烛吹灭实现模拟灭火。通过红外光电开关感应控制小车避障行驶。工作状态实时显示在1602液晶上。其中小车驱动由L298N驱动电路完成。
关键词:STC89C52单片机、光敏晶体管、红外光电开关、1602液晶模块、L298N

ABSTRACT
The new smart as a modern invention, is the future development direction, he can be pre-set according to the model in an environment where automatic operation, without human management, application of scientific exploration and so on. Intelligent vehicle is a show that, the design of the multifunctional intelligent fire extinguishing obstacle avoidance, MCU STC89C52 as the microcontroller, design a kind of can find the fire (fire with candles simulation) and automatically avoid obstacles car. The phototransistor sensor to detect the signal fire, when the detection to the fire, the car automatically adjust attitude, at the fire. Fire extinguishing motor start blow out the candles to simulate fire. Through the infrared photoelectric switch induction control car obstacle avoidance operation. The state of real-time display on the LCD in 1602. The trolley is driven by the drive circuit of L298N.

Key words: STC89C52 microcontroller, photosensitive transistor, infrared photoelectric switch, 1602 LCD module, L298N

1 智能小车概述

1.1 国内外研究动态
智能小车方面:智能小车,也称轮式机器人,是一种以汽车电子为背景,涵盖控制、模式识别、传感技术、电子、电气、计算机、机械等多学科的科技创意性设计。智能汽车作为一种智能化的交通工具,体现了车辆工程、人工智能、自动控制、计算机等多个学科领域理论技术的交叉和综合,是未来汽车发展的趋势。
机器人技术方面:目前已经开发出了多种类型机器人机构,其结构有串联、并联及垂直关节和平面关节多种。目前研究重点是机器人新的结构、功能及可实现性,其目的是使机器功能更强、柔性更大、满足不同目的的需求。同时机器人机构向着模块化、可重构方向发展。机器人控制技术现已实现了机器人的全数字化控制,基于传感器的控制技术已取得了重大进展。目前重点研究开放式、模块化控制系统,人机界面更加友好,具有良好的语言及图形编辑界面。同时机器人的控制器的标准化和网络化以及基于PC机网络式控制器已成为研究热点。机器人已经实现了全数字交流伺服驱动控制,绝对位置反馈。目前正研究利用计算机技术,探索高效的控制驱动算法,提高系统的响应速度和控制精度;同时利用现场总线技术,实现的分布式控制。
单片机方面:单片机的应用在后PC时代得到了前所未有的发展,但对处理器的综合性能要求也越来越高。综观单片机的发展,以应用需求为目标,市场越来越细化,充分突出以“单片”解决问题。单片机系统作为嵌入式系统的一部分,主要集中在中、低端应用领域。
1.2 课题的目的和意义
在国外机器人的发展有如下趋势。一方面机器人在制造业应用的范围越来越广阔,其标准化、模块化、网络化和智能化的程度越来越高,功能也越来越强,并向着技术和装备成套化的方向发展;另一方面,机器人向着非制造业应用以及微小型方向发展,如表演型机器人,服务机型器人,机器人玩具等。国外研究机构正试图将机器人应用于人类活动的各个领域。
在我国机器人主要应用于工业制造领域,我国工业机器人现在的总装机量约为120000台,其中国产机器人占有量约为 1/3,即40000多台。与世界机器人总装机台数7500万台相比,中国总装机量仅占万分之十六[1]。对中国这样一个拥有13亿人口的大国来说,仅在机器人数量上就和发达国家有着很明显的差距。因此大力发展我国的机器人事业刻不容缓。
自动灭火避障智能小车可以理解为机器人的一种特例,它是一种能够通过编程手段完成特定任务的小型化机器人。与普遍意义上的机器人相比智能小车制作成本低廉,电路结构简单,程序调试方便,具有很强的趣味性,为此其深受广大机器人爱好者以及高校学生的喜爱。全国大学生电子设计竞赛每年都设有智能小车类的题目,由此可见国家对高校机器人研究工作的重视程度。
2 系统设计概述
2.1 系统设计要求
根据自动控制的基本要求,自动灭火避障智能小车必须在无人干预的情况下依靠处理器自动完成所有的系统设计要求。灭火通过火焰检测传感器找到蜡烛,引导小车走向蜡烛附近并吹灭蜡烛。自动避障通过红外光电开关感应前方的障碍物,程序判断处理控制小车转弯避开障碍物。
系统具体设计要求如下:
1.实现直流减速电机的启、停、正、反控制;
2.利用直流减速电机实现对小车的运动控制;
3.利用稳压芯片为单片机电路系统提供稳定电压;
4.利用红外线光电开关对障碍物的检测;
5.利用光敏晶体管对火源的检测;
6.通过单片机控制小车运动状态实现小车的灭火避障;
7.利用1602液晶的工作状态显示;
8.通过编程实现系统程序的模块化设计;

2 总体方案设计

系统采用STC89C52单片机作为核心控制单元用于系统的控制,小车车头装有2个红外光电传感器用来避障。光敏晶体管将火源转化成电信号,用于寻找火源。系统总体的设计方框图如图1所示。

图1 系统总体方框图
2.1 硬件设计
2.1.1 车体设计
方案1:
购买玩具电动车。购买的玩具电动车具有组装完整的车架车轮、电机及其驱动电路。但是一般的说来,玩具电动车具有如下缺点:首先,这种玩具电动车由于装配紧凑,使得各种所需传感器的安装十分不方便。其次,这种电动车一般都是前轮转向后轮驱动,不能方便迅速的实现原地保持坐标转90度甚至180度的弯角。再次,玩具电动车的电机多为玩具直流电机,力矩小,空载转速快,负载性能差,不易调速。而且这种电动车一般都价格不扉。因此我们放弃了此方案。
方案2:
买现成的车模。经过反复考虑论证,我们制定了买左右两轮分别驱动,后万向轮转向的车模方案。即左右轮分别用两个转速和力矩基本完全相同的直流减速电机进行驱动,后装一个万向轮。这样,当两个直流电机转向相反同时转速相同时就可以实现电动车的原地旋转,由此可以轻松的实现小车坐标不变的90度和180度的转弯。
综上考虑,我们选择了方案2。
2.1.2 主控制器模块
方案1:
选用一片CPLD(如EPM7128LC84-15)作为系统的核心部件,实现控制与处理的功能。CPLD具有速度快、编程容易、资源丰富、开发周期短等优点,可利用VHDL语言进行编写开发。但CPLD在控制上较单片机有较大的劣势。同时,CPLD的处理速度非常快,而小车的行进速度不可能太高,那么对系统处理信息的要求也就不会太高,在这一点上,MCU就已经可以胜任了。若采用该方案,必将在控制上遇到许许多多不必要增加的难题。为此,我们不采用该种方案,进而提出了第二种设想。
方案2:
采用单片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。充分分析我们的系统,其关键在于实现小车的自动控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。因此,这种方案是一种较为理想的方案。
针对本设计特点——多开关量输入的复杂程序控制系统,需要擅长处理多开关量的标准单片机,而不能用精简I/O口和程序存储器的小体积单片机,D/A、A/D功能也不必选用。根据这些分析,我选定了STC89C52单片机作为本设计的主控装置,51单片机具有功能强大的位操作指令,I/O口均可按位寻址,程序空间多达8K,对于本设计也绰绰有余,更可贵的是51单片机价格非常低廉。
在综合考虑了传感器、两部电机的驱动等诸多因素后,我们决定采用一片单片机,充分利用STC89C52单片机的资源。
综上所述,我们选择了方案2。
2.1.3 电源模块
由于本系统采用电池供电,我们考虑了如下几种方案为系统供电。
方案1:
采用12V蓄电池为系统供电。蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。但是蓄电池的体积过于庞大,在小型电动车上使用极为不方便。因此我们放弃了此方案。
方案2:
采用6节1.5 V干电池共9V做电源,经过7805的电压变换后为单片机,传感器供电。经过实验验证小车工作时,单片机、传感器的工作电压稳定能够满足系统的要求,而且电池更换方便。
综上所述采用方案2
2.1.4 电机驱动模块
方案1:
采用SM6135W电机遥控驱动模块控制直流电机,SW6135W是专为遥控车设计的大规模集成电路,能实现前进、后退、向右、向左、加速五个功能,但是其采用的是编码输入控制,而不是电平控制,这样在程序中实现比较麻烦,而且该电机模块价格比较高。
方案2:
采用电阻网络或数字电位器调节电动机的分压,从而达到分压的目的。但电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。更主要的问题在于一般的电动机电阻很小,但电流很大,分压不仅会降低效率,而且实现很困难。
方案3:
采用功率三极管作为功率放大器的输出控制直流电机。线性型驱动的电路结构和原理简单,加速能力强,采用由达林顿管组成的 H型桥式电路(如图2)。用单片机控制达林顿管使之工作在占空比可调的开关状态下,精确调整电动机转速。这种电路由于工作在管子的饱和截止模式下,效率非常高,H型桥式电路保证了简单的实现转速和方向的控制,电子管的开关速度很快,稳定性也极强,是一种广泛采用的 PWM调速技术。现市面上有很多此种芯片,我选用了L298N(如图3),L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。用该芯片作为电机驱动,操作方便,稳定性好,性能优良。
因此我们选用了方案3。

图2 H桥式电路

图3 L298N

2.2 火源检测模块
火源检测有温度传感器、烟雾传感器、光敏晶体管传感器、紫外传感器以及CCD图像传感器。我们综合论证了这几种传感器,制定了如下几种方案。
方案1:
用温度传感器如热电偶,热电偶在工业应用上十分广泛。但是热电偶感应的范围太广,而且由于火焰只是周围温度稍高且范围较窄。试验验证用热电偶检测火焰精度不高,因此我们放弃了此方案。
方案2:
用烟雾传感器。烟雾传感器广泛应用与火警检测。但是由于此题目的火源是用蜡烛模拟的,没有太大的烟雾,因此用烟雾传感器作为此小型电动车的火焰传感器也不够实用,因此我们放弃了此方案。
方案3:
用紫外传感器检测火焰。紫外火焰传感器主要应用于火灾消防系统,尤其是一些易燃易爆场所,用来监测火焰的产生。紫外线火焰传感器的灵敏度高,相应速度快,抗干扰能力强,对明火特别敏感,能对火灾立即作出反应。但是紫外传感器检测的范围太大,不适用于本系统。
方案4:
用CCD图像传感器。用CCD图像传感器可以检测各种被检测量,适用于各种量的检测。但是用CCD图像传感器需要处理的信号量太大,且体积较大,不使用与本系统。
方案5:
用光敏晶体管传感器。经试验验证,光敏晶体管传感器检测距离远,线性度好,检测准确,且体积较小。很适用于本题目的要求。
因此我们选择了方案5。
在火焰传感器模块的设计中,我们在车体的前头离地大约15-20cm(相当于火焰高度)处安装远红外火焰传感器,且每一侧装有两个。由于火焰传感器的检测距离很远,为了避免小车判断不了火焰的远近的情况出现,我们设计了一路近距离火焰传感器。只有当这路检测到灭火电机才启动。经实验验证,系统工作稳定。
2.3 避障模块
方案1:
用超声波传感器进行避障。超声波传感器的原理是:超声波由压电陶瓷超声波传感器发出后,遇到障碍物便反射回来,再被超声波传感器接收。然后将这信号放大后送入单片机。超声波传感器在避障的设计中被广泛应用。但是超声波传感器需要40KHz的方波信号来工作,因为超声波传感器对工作频率要求较高,偏差在1%内,所以用模拟电路来做方波发生器比较难以实现。而用单片机来作方波发生器未免有些浪费资源。
因此我们考虑其他的方案。
方案2:
用红外光电开关进行避障。光电开关的工作原理是根据投光器发出的光束,被物体阻断或部分反射,受光器最终据此作出判断反应,是利用被检测物体对红外光束的遮光或反射,由同步回路选通而检测物体的有无,其物体不限于金属,对所有能反射光线的物体均能检测。光电开关E3F-DS10C4操作简单,使用方便。当有光线反射回来时,输出低电平。当没有光线反射回来时,输出高电平。
考虑到本系统只需要检测简单障碍物,没有十分复杂的环境。为了使用方便,便于操作和调试,我们最终选择了方案2。
2.4 显示模块
方案1:
用数码管进行显示。数码管显示速度快,使用简单,显示效果简洁明了,但是显示单一,不能表达出很好的人机界面,因此我们放弃用数码管显示。
方案 2:
用LCD1602液晶进行显示。LCD1602由于其显示清晰,显示内容丰富、清晰,显示信息量大,使用方便,显示快速而得到了广泛的应用。因此我们选择了此方案。
综上所述我们选择方案2
2.5 电机选取
本系统为智能自动循迹小车,对于电动车来说,其驱动轮的驱动电机的选择就显得十分重要。我们综合考虑了一下两种方案。
方案1:
采用步进电机作为该系统的驱动电机。由于其转过的角度可以精确的定位,可以实现小车前进路程和位置的精确定位。虽然采用步进电机有诸多优点,步进电机的输出力矩较低,随转速的升高而下降,且在较高转速时会急剧下降,其转速较低,不适用于小车等有一定速度要求的系统。经综合比较考虑,我们放弃了此方案。
方案2:
采用直流电机作为该系统的驱动电机直流电机的控制方法比较简单,只需要电机的两根控制线加上适当的电压即可使电机转动起来。电压越高则电机转速越快。对于直流电机的速度调节,可以采用改变电压的方法,也可采用PWM调速方法。PWM调速就是使加在直流电机两端的电压为方波形式,通过改变方波的占空比实现对电机转速的调节。直流减速电机转动力矩大,体积小,重量轻,装配简单,使用方便。由于其内部由高速电动机提供原始动力,带动变速(减速)齿轮组,可以产生大扭力。能够较好的满足系统的要求,因此我们选择了此方案。
2.6 最终方案
经过反复论证,我们最终确定了如下方案:
1、车模用购买的两驱车模
2、主控芯片采用STC89C52单片机作为主控制器。
3、用6节干电池供电。
4、用红外光电开关进行避障。
5、采用L298N作为直流电机的驱动芯片。
6、采用光敏晶体管检测火源。

3 硬件实现及单元电路设计

3.1 主控制模块
主控制最小系统电路如图3所示。

图 4
3.2 单片机的时钟电路与复位电路设计
本系统采用STC系统列单片机,相比其他系列单片机具有很多优点。一般STC单片机资源比其他单片机要多,而且执行速度快;STC系列单片机使用串口对单片机进行烧写,下载程序较为方便;STC51单片机内部集成了看门狗电路;且具有很强抗干扰能力。
本系统采用内部方式的时钟电路和加电自复位的复位电路,如下图5图6所示:

图5 时钟电路 图6 复位电路
由于单片机P0口内部不含上拉电阻,为高阻态,不能正常地输出高/低电平,因而该组I/O口在使用时必须外接上拉电阻。
3.3 单片机的引脚功能描述
下面对STC89C52各引脚的功能进行较为详细的介绍:
1)电源引脚Vcc和Vss
Vcc(40脚):电源端为+5V Vss(20脚):接地端。
2)时钟电路引脚XTAL1和XTAL2
XTAL2(18脚):接外部晶体和微调电容的一端。在单片机内部它是振荡电路反向放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时针电路时,该引脚输入外时钟脉冲。要检查89C52的振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。
XTAL1(19脚):接外部晶体和微调电容的另一端。在片内,它是振荡电路反向放大器的输入端。在采用外部时钟时,该引脚必须接地。
3)控制信号脚 RST ALE PSEN 和EA。
RST(9脚):RST是复位信号输入端,高电平有效。在此输入端保持两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。
ALE/PROG(30引脚):地址锁存允许信号端。当STC89C52上电正常工作后,ALE引脚不断向外输出正脉冲信号。此频率为振荡器频率fosc的1/6,当CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号。在CPU访问片外数据存储时,每取值一次(一个机器周期)会丢失一个脉冲。平时不访问片外存储时,ALE端也以1/6的振荡频率固定输出正脉冲,因而ALE信号可以用作对外输出时钟或定时信号。如果你想看一下STC89C52芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出,如有脉冲信号输出,则STC89C52基本上是好的。ALE的负载驱动能力为8个LS型TTL(低功耗高速TTL)。
PSEN(29脚);程序存储允许输出信号引脚,在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。此引脚接ERROM的OE端。PSEN端有效,即允许读出ERROM/ROM中的指令码。CPU在从外部ERROM/ROM取指令期间,每个周期PSEN两次有效。不过,在访问片外RAM时,要少产生两次PSEN负脉冲信号。要检查一个STC89C52小系统上电后CPU能否正常到ERROM/ROM中读取指令码,也可用于示波器看PSEN端有无脉冲输出。如有,说明基本上工作正常。
EA/VPP(31脚):外部程序存储器地址允许输入端/固化编程电压输入端。当EA引脚接高电平时,CPU只访问片内ERROM/ROM并执行内部程序存储器中的指令。但在PC(程序计数器)的值超过OFFFH(对8751/8051为4k)时,将自动转向执行片外存储器的程序。当出入信号EA引脚接低电平(接地)时,CPU只访问外部ERROM/ROM并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无芯片内的ROM的8031或8032,须外扩ERROM,此时必须将EA引脚接地。如果使用有片内ROM的STC89C52,外扩ERROM也是可以的,但也要使EA接地。
4)I/O(输入/输出端口,P0,P1,P2,P3)
P0口:P0口是一个漏极开路的8位准双向I/O端口。
P1口:8位准双向I/O端口。
P2口:即可以做地址总线输出地址高8位,也可以做普通I/O用,(此时为准双向口)。
P3口:双功能口,即可以做普通I/O口用(此时为准向口,也可以按每位定义实现第二功能操作)。见表1。
表1 P3口的第二功能表
引脚 第二功能
P3.0 RXD (串行输入口)
P3.1 TXD (串行输出口)
P3.2 INT0(外部中断0)
P3.3 INT1(外部中断1)
P3.4 T0(定时器0外部中断)
P3.5 T1(定时器1外部中断)
P3.6 WR(外部存储器写选通)
P3.7 RD(外部存储器读写通)

3.3 驱动电路
电机驱动一般采用H桥式驱动电路,L298N内部集成了H桥式驱动电路,从而可以采用L298N电路来驱动电机。通过单片机给予L298N电路PWM信号来控制小车的速度,起停。其引脚图如7,驱动原理图如图8。

图7 L298N引脚图

图8 电机驱动电路
L298N的5、7、10、12四个引脚接到单片机上,单片机通过编程就可以实现两个直流电机的正反转。
3.4 电源模块
电源部分的设计主要采用7805芯片,使用7805芯片搭建的电路的优点是简单、实用,78系列三端稳压IC组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。并且完全能够满足壁障小车单片机控制系统和L298N芯片的逻辑供电的供电需要。7805芯片有3个引脚,分别为输入IN端、输出OUT端和接地GND端,通常情况下可以提供1.5A的电流,在散热足够的情况下可以提供大于1.5A的电流。7805芯片的输入电压可以为9V、12V、15V不等,输出电压稳定在5V,正负误差不超过0.2V。基于这样的情况再结合电机的工作电压,选取了6节干电池9V作为7805的输入电源,搭建的电源部分电路如图9

图9

3.5 显示模块
3.5.1 1602LCD的基本参数及引脚功能
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如图10所示。

                             图10 LM016L结构图

LCD1602主要技术参数:
容量:16×2个字符
芯片工作电压:4.5—5.5V
工作电流:2.0mA(5.0V)
模块最佳工作电压:5.0V
字符尺寸:2.95×4.35(W×H)mm
引脚功能说明:
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1所示:
表1引脚接口说明表
编号 符号 引脚说明 编号 符号 引脚说明
1 VSS 电源地 9 D2 数据
2 VDD 电源正极 10 D3 数据
3 VL 液晶显示偏压 11 D4 数据
4 RS 数据/命令选择 12 D5 数据
5 R/W 读/写选择 13 D6 数据
6 E 使能信号 14 D7 数据
7 D0 数据 15 BLA 背光源正极
8 D1 数据 16 BLK 背光源负极
第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
3.5.2 显示模块采用1602液晶显示接口电路

图11 1602液晶显示接口
3.6 火源检测模块
火焰传感器的好坏对于该系统的功能能否实现十分重要。我们设计制作的火焰传感器及其调理电路如图12所示。

图12 火源检测电路

在该电路中,当火焰传感器没有检测到火焰时,火焰传感器不导通而使得火焰传感器的阳极上拉电阻R4上拉为高电平,经比较器滤波整形后输出高电平。当检测到火焰时,火焰传感器导通,比较器输出低电平。经试验验证,本电路工作性能稳定,能耗较低,能够较好的满足题目的需要。因此我们选择此电路作为我们的传感器检测与调理电路。
3.6.1 火焰检测传感器的安装
系统总共使用了六个火焰检测传感器,分别以45度角排开。这样就可以在小车前进中多方位检测火源。实物安装图如图13

图13 火焰传感器实物安装图
3.7 避障模块
本系统对障碍物的检测采用E18-D50NK型号的红外传感器,E18-D50NK传感器是一种红外线反射式接近开关传感器,用于物体的反射式检测,该传感器具有体积小,功耗低,应用方便,稳定可靠等优点。输出信号为数字量,不需要进行A/D转换,可直接与单片机的I/O口相连,检测到目标时信号线输出是低电平,正常状态时为高电平,为能让单片机正常检测,在信号输出端需外接一个1KΩ上拉电阻。检测距离可达50cm,距离可通过可调电位器调节。

光电开关E18-D50NK的技术参数:
1、输出电流 DC/SCR/继电器 Control output:100mA/5V供电
2、消耗电流 DC<25mA
3、响应时间 <2ms
4、指向角:≤15°,有效距离3-50CM可调
5、检测物体:透明或不透明体
6、工作环境温度:-25℃~+55℃
7、标准检测物体:太阳光10000LX以下 白炽灯3000LX以下
8、外壳材料:塑料

电气特性:
U:5VDC
I:100mA
Sn:3-50CM
尺寸:
直径:17MM
传感器长度:45MM
引线长度:45CM

原理分析如图14

图14 避障原理
E18-D50NK红外光电开关发射出红外线,被物体阻断或部分反射,E18-D50NK内部红外接收管接收到反射回来的红外线,然后有一个由高到低的电压变化,E18-D50NK内部电压比较器根据这个电压的变化输出数电信号给单片机处理。当有光线反射回来时E18-D50NK信号脚输出低电平。避障模块接口电路如图15。

图15 避障模块接口电路

3.7.1 避障模块的安装
在避障传感器的设计中,我们在车体底盘的前端装有二个避障传感器,用来起到避开障碍物的作用。两个传感器微微向两边倾斜一点,防止有障碍物时擦边。具体的安装位置实物图如图16所示:

图16 避障传感器安装实物图

3.8 灭火驱动电路
灭火电机驱动我们采用大功率三极管驱动,单片机P1.1口接三极管Q1基极,当单片机给低电平信号时,三极管导通,接通灭火电机的电源。

图17 灭火电机驱动

3.8.1 灭火风扇的安装
灭火风扇固定一根弯曲的铝合金长条上,可以上下搬动控制灭火风扇的角度。灭火风扇的安装实物图如图18和图19所示:

图18 灭火风扇安装实物前视图

图19 灭火风扇俯视图

4 系统软件设计方案

该方案的编程思路是先确定主程序,之后根据各硬件电路功能来设计子程序模块,最后再将各模块嵌入主程序中。这样编程结构简单,由于子程序模块与硬件电路一一对应,所以调试起来十分方便。本设计软件方框图如图16所示。

图16 主程序流程图

4.1 避障的实现
根据红外传感器工作原理,当检测到前方障碍物时信号线将被置为低电平,信号线均与单片机相连,提供单片机检测。
本系统共使用两个红外传感器,放置在小车车头,左右各一个,用来判断前方障碍物;
表2 小车运动状态表
左避障头 右避障头 小车运动状态
传感器状态 0 0 后退
0 1 右转
1 0 左转
1 1 前进
如表2所示,红外传感器检测到障碍时,小车将根据障碍物的方向控制转向;在无障碍的情况下,单片机控制电机向前走;当右侧光电开关检测到障碍时,单片机控制电机向左转;当左侧光电开关检测到障碍时,单片机控制电机向右转;当左、右两侧光电开关都检测到黑线时,单片机控制电动机使其后退;当两侧光电开关都没检测到障碍物时,单片机控制电动机直走。

传感器的位定义如下:
sbit biz_l = P2^0; //左边避障
sbit biz_r = P2^1; //右边避障
小车避障控制程序如下:
void hongwai_bizhang()
{
if((biz_l == 1) && (biz_r == 1)) //没有障碍物时就前进
{
xunguan_che();
}
if(q_miehuo_yuan == 1) //当前面没有光源时才能避障
{
if((biz_l == 0) && (biz_r == 0))//两个传感器都有障碍物时,先后退然后再右转
{
stop();
delay_1ms(100);
back();
delay_1ms(500);
right_s();
delay_1ms(380);
go();
}
else if(biz_l == 0) //左边传感器都有障碍物时,先停下然后再右转
{
stop();
delay_1ms(100);
right_s();
delay_1ms(200);
go();
}
else if(biz_r == 0) //右边传感器都有障碍物时,先停下然后再左转
{
stop();
delay_1ms(100);
left_s();
delay_1ms(200);
go();
}
}
}
void IO_test()
{
if(r_miehuo == 0)
write_sfm2(1,0,1);
else
write_sfm2(1,0,0);
if(r_miehuo_s == 0)
write_sfm2(1,3,1);
else
write_sfm2(1,3,0);
if(q_miehuo_yuan == 0)
write_sfm2(1,6,1);
else
write_sfm2(1,6,0);
if(l_miehuo_s == 0)
write_sfm2(1,9,1);
else
write_sfm2(1,9,0);
if(l_miehuo == 0)
write_sfm2(1,12,1);
else
write_sfm2(1,12,0);
}
为了简化算法,本系统对传感器的检测都使用软件查询的方式。
4.2 寻找火源的实现
根据前面介绍的火源检测电路工作原理,当检测到前方火源信号时将输出低电平,信号线均与单片机相连,提供单片机检测。
本系统共使用6个火焰传感器,装在小车车头,每隔45度角装载一个,正前方装有两个,一个近距离的,一个远距离的。近距离火焰传感器用来判断是否启动灭火风扇;
表3 小车检测到火焰运动状态表
左1 左2 中近 中远 右2 右1 小车运动状态
传感器状态 1 1 1 1 1 1 前进
0 1 1 1 1 1 左转
1 0 1 1 1 1 左转
1 1 1 0 1 1 前进
1 1 0 0 1 1 停止
1 1 1 1 1 0 右转
1 1 1 1 0 1 右转
1 1 1 0 1 1 前进
0 0 1 1 1 1 左转
1 1 1 1 0 0 右转
如表3所示,火焰传感器检测到火源时,小车将根据火源的方向控制转向;在无火源的情况下,单片机控制电机向前走;当右侧火焰传感器检测到火源时,单片机控制电机向右转;直到中间火源传感器检测到火源,然后前进到中间近距离火源传感器检测到火源。当左侧火源检测到火源时,单片机控制电机向左转;直到中间火源传感器检测到火源,然后前进到中间近距离火源传感器检测到火源。
传感器的位定义如下:
sbit r_miehuo = P1^4; //右边寻火传感器定义
sbit r_miehuo_s = P2^2; //右上边寻火传感器定义
sbit q_miehuo_yuan = P1^5; //前面寻火传感器下面那个定义
sbit l_miehuo = P1^6; //左边寻火传感器定义
sbit l_miehuo_s = P2^3; //左上边寻火传感器定义
sbit q_miehuo_jin = P1^7; //前面寻火传感器上面那个定义
小车灭火控制程序如下:
void xunguan_che()
{
static uchar value;
if(flag_stop == 0)
{
if(((l_miehuo_s == 0) && (q_miehuo_yuan == 0) && (r_miehuo_s == 1)) ||
((l_miehuo == 0) && (l_miehuo_s == 1) && (q_miehuo_yuan == 1) && (r_miehuo_s == 1) && (r_miehuo == 1)) ||
((l_miehuo == 1) && (l_miehuo_s == 0) && (q_miehuo_yuan == 1) && (r_miehuo_s == 1) && (r_miehuo == 1)) ||
((l_miehuo == 0) && (l_miehuo_s == 1) && (q_miehuo_yuan == 0) && (r_miehuo_s == 1) && (r_miehuo == 1)) ||
((l_miehuo == 0) && (l_miehuo_s == 0) && (q_miehuo_yuan == 1) && (r_miehuo_s == 1) && (r_miehuo == 1)))
{
value = 0;
left();
}
else if(((l_miehuo_s == 1) && (q_miehuo_yuan == 0) && (r_miehuo_s == 0)) ||
((l_miehuo == 1) && (l_miehuo_s == 1) && (q_miehuo_yuan == 1) && (r_miehuo_s == 1) && (r_miehuo == 0)) ||
((l_miehuo == 1) && (l_miehuo_s == 1) && (q_miehuo_yuan == 1) && (r_miehuo_s == 0) && (r_miehuo == 1)) ||
((l_miehuo == 1) && (l_miehuo_s == 1) && (q_miehuo_yuan == 0) && (r_miehuo_s == 1) && (r_miehuo == 0)) ||
((l_miehuo == 1) && (l_miehuo_s == 1) && (q_miehuo_yuan == 1) && (r_miehuo_s == 0) && (r_miehuo == 0)))
{
value = 0;
right();
}
else if(q_miehuo_yuan == 0)
{
value = 0;
go();
}
else if((l_miehuo_s == 0) && (q_miehuo_yuan == 0) && (r_miehuo_s == 0))
{
value = 0;
go();
}
else
{
value ++;
if(value >= 3) //300ms
{ //防止传感器一下子就没有检测到了
value = 0;
go();
}
}
}
}

/灭火程序****/
void miehuo_jin()
{
if(q_miehuo_jin == 0)
{
delay_1ms(30);
if(q_miehuo_jin == 0)
{
stop();
delay_1ms(500);
relay = 0;
delay_1ms(2000);
relay = 1;
delay_1ms(200);
beep = 0 ;
delay_1ms(200);
beep = 1 ;
delay_1ms(200);
beep = 0 ;
back();
delay_1ms(100);
beep = 1 ;
delay_1ms(100);
beep = 0 ;
delay_1ms(100);
beep = 1 ;
delay_1ms(100);
beep = 0 ;
stop();
delay_1ms(200);
beep = 1 ;
delay_1ms(200);
beep = 0 ;
right_s();
delay_1ms(100);
beep = 1 ;
delay_1ms(100);
beep = 0 ;
delay_1ms(100);
stop();
beep = 1 ;
delay_1ms(300);
flag_stop = 1;
}
}
else
{
flag_stop = 0;
}
}

标题5 电路的调试

小车在调试的时候遇到了很多问题,经过努力问题都解决了。
5.1 加qq749986419,程序及原理图获取
第一步为目测,单片机应用系统电路全部手工焊接在洞洞板上,因此对每一个焊点都要进行仔细的检查。检查它是否有虚焊、是否有毛剌等。
第二步为万用表测试,先用万用表复核目测中认为可疑的连线或接点,查看它们的通断状态是否与设计规定相符,再检查各种电源线与地线之间是否有短路现象。
第三步为加电检查。当系统加电时,首先检查所有插座或器件引脚的电源端是否有符合要求的电压值,接地端电压值是否接近零,接固定电平的引脚端是否电平正确。
第四步是联机检查。
5.2 遇到的问题
1、电路焊接完后进行进行上电测试,发现电源指示灯都没有亮,然后就闻到一股焦味,用手一摸稳压电源芯片发现很烫,于是赶紧拔掉电源。用外用表测量电源的正负极,发现电阻很小。仔细检查一看原来是单片机供电的稳压芯片7805接反了。1脚本来是电压输入端,结果接成了1脚输出端。把稳压芯片取下,换上新的,并且把引脚接对后,通电电源指示灯也亮了,测量电压符合要求5.01V。并且芯片也不发热
2、灭火传感器的安装,开始设计的时候,只设计了4个火焰检测传感器,分别是前面装两个,一个近距离的一个远距离的,然后左右各装一个。这样做发现小车在寻找火源的时候很容易出现偏差,因为火焰传感器之间是相隔90度,检测的范围广但是不够细,在90度中间的检测不到,在车子行走很长一段路后才能找到,这样导致车头对不准蜡烛,也就不好吹灭蜡烛。最后把电路重新设计,采用5个远距离的火焰检测传感器,一个近距离检测传感器的方案。这样就把180度的平面划分为45度一个火焰检测传感器。小车在行驶过程中就很容易发现火源。
3、在小车吹蜡烛的过程中发现只要灭火电机一转动,单片机就会复位,然后小车就会碰上蜡烛,开始以为是电源电压太低,于是把电源模块的滤波电容加大些,防止灭火电机启动时瞬间拉低电源,这样处理后没有效果,还是和之前一样。于是用示波器测量,灭火电机在启动的时候,没火电机两端电压有什么变化。用示波器测量发现灭火电机启动的时候,有很大的杂波出来,于是怀疑是电机转动的时候产生的高频电磁波干扰了电源,导致单片机复位。于是在灭火电机的电源端加了0.1UF的瓷片滤波电容。把电容接上后,发现杂波明显减少。然后再测试小车,没有出现复位的情况了。
4、避障传感器调试,开始的时候避障传感器只安装了一个,发现一个避障时遇到障碍物不知道是左边遇到的还是右边遇到的,程序里无法判断,也就没法控制小车准确的避开障碍物。经过调试发现两个避障头可以解决这个问题,在小车车头左右各装一个。

7 总结

经过近一个月的毕业设计,使我对集成电路的使用有了更进一步的认识和了解,要想学好它要重在实践,通过实践,我也发现我的很多不足之处,把所学习到的知识融合到一块还不是想象中的那么简单,其中涉及了单片机、数字电子技术、模拟电子技术、protel 99se等学科知识,要学好这门课程还需要更多的努力。
通过实践的学习,使我对整体的电路设计有了一个更全面的了解,锻炼了重全局考虑局部的能力。深刻体会了理论联系实际的重要性,从老师提出设计要求到完成设计报告,不断的完善自己的设计和电路。在图书馆查资料到写出具体的实施方案、画出电路图都要认真考虑,寻找最优的设计方案。经过多次修改最终于实现了设计要求。
在大学四年的学习和课题研究期间,老师们给予我许多悉心的指导和帮助,教给我知识和为人处世的道理。尤其是这次毕业论文设计,在这里非常感谢老师在设计中给我的建议、支持和帮助,非常感谢老师在我写论文期间对我的引导和启发。在整个论文的选题、理论研究、需求分析、总体设计、详细设计的过程中,自始至终得到了导师老师的悉心指导和深切关怀。感谢导师对我论文不厌其烦的精心修改,多次耐心地审阅了论文全稿,提出了许多宝贵的意见。还有一只在身边支持的同学,在我遇到问题时,他们都尽心为我解答,如果遇到我们都不熟悉的问题,他们都和我一起动手解决。由于老师的支持和同学的各方配合使我的课题能顺利的完成。

致谢

在完成本设计的写作过程中,我十分感谢我的指导老师。从选题到完成设计,老师一直都是很悉心的给我讲解着在设计中遇到的各种问题,循循善诱,严格把关,帮助我开拓设计思路,并不断地鼓舞着我,使我感到信心倍增,让我非常积极地投入到设计中,不断地完成设计中的一个个部分。在此,再次感谢老师在设计上不断地给与我帮助,让我在大学里的最后一次的学习过程中,充分感受到了自己对学习的兴趣和热情,使我能够圆满地完成自己的毕业设计。
回想大学四年的时光,仿佛尽在昨天。最后,我还要感谢在我大学四年的学习期间给我极大关心和支持的家人、各位老师以及我的同学和朋友。是你们在生活和学习上不断给与我支持、帮助和无微不至的关怀,是你们不断地给与了我信心,让我在人生中一次次坚强地走下去。

参考文献

[1]郭惠,吴迅.单片机C语言程序设计完全自学手册[M].电子工业出版社,2008.10:1-200.
[2]王东锋,王会良,董冠强. 单片机C语言应用100例[M]. 电子工业出版社,2009.3:145-300.
[3]韩毅,杨天. 基于HCS12单片机的智能寻迹模型车的设计与实现[J].学术期刊,2008,29(18):1535-1955.
[4] 王晓明. 电动机的单片机控制[J]. 学术期刊,2002,13(15):1322-1755.
[5]郭天祥.51单片机C程序教程[M].北京:电子工业出版社,2009.1.
[6]陶红艳,余成波.传感器与现代检测技术[M].北京:清华大学出版社,2009.
[7]康光华.电子技术基础—模拟部分(第五版)[M].北京:高等教育出版社,2006
[8] E18-D80NK反射式接近开关传感器说明书[Z].
[9]谭浩强.C程序设计[M].北京:清华大学出版社,1991.
[10]刘新杰.竞赛机器人小车设计的几个关键问题及解决[J].苏州科技学院学报.2004. Vol.24: 70-74.
[11]Yamato I , et al 1 New conversion system for UPS using high fre2
quency link[J ]1 IEEE PESC ,1988 :210-320.
[12]Yamato I , et al 1 High frequency link DC/ AC converter for UPS
with a new voltage clamper[J ]1IEEE PESC ,1990 :52-105.

作者:qq_1744828575

物联沃分享整理
物联沃-IOTWORD物联网 » 单片机灭火避障小车设计方案

发表评论