黑龙江省大学生电子设计竞赛消防车优秀论文.docx

上传人:b****7 文档编号:23583035 上传时间:2023-05-18 格式:DOCX 页数:23 大小:158.19KB
下载 相关 举报
黑龙江省大学生电子设计竞赛消防车优秀论文.docx_第1页
第1页 / 共23页
黑龙江省大学生电子设计竞赛消防车优秀论文.docx_第2页
第2页 / 共23页
黑龙江省大学生电子设计竞赛消防车优秀论文.docx_第3页
第3页 / 共23页
黑龙江省大学生电子设计竞赛消防车优秀论文.docx_第4页
第4页 / 共23页
黑龙江省大学生电子设计竞赛消防车优秀论文.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

黑龙江省大学生电子设计竞赛消防车优秀论文.docx

《黑龙江省大学生电子设计竞赛消防车优秀论文.docx》由会员分享,可在线阅读,更多相关《黑龙江省大学生电子设计竞赛消防车优秀论文.docx(23页珍藏版)》请在冰豆网上搜索。

黑龙江省大学生电子设计竞赛消防车优秀论文.docx

黑龙江省大学生电子设计竞赛消防车优秀论文

 

---------------------------------------------------------------------------------------------------------------

学校编号:

JMSU-A-1-004

 

学校名称:

佳木斯大学

队长姓名:

xxx

队员姓名:

xxxxxx

指导教师姓名:

xxx

 

2012年8月3日

摘要

本设计为采用STC12C5A60S2单片机为核心控制的智能消防车。

设计分为自制光电开关模块、电机驱动模块、火焰传感器模块、灭火驱动模块、报警电路模块、开关电源模块六部分。

地面检测采用自制反射式红外开关来检测黑线循迹并完成计数,通过使用180度的舵机灭火云台,继电器控制风扇进行灭火;声音提示采用三极管驱动无源蜂鸣器;电机转弯控制采用PWM技术,最后使用探测器检测信号经单片机综合分析处理,最后达到识别蜡烛完成灭火。

关键词:

单片机检测模块灭火云台

一、设计任务

Forpersonaluseonlyinstudyandresearch;notforcommercialuse

1.1任务

该设计制作一个电动消防车,能在消防场地的任意地点进行灭火作业。

以蜡烛模拟火源,火源随机分布在场地中,消防场地如图1所示。

 

Forpersonaluseonlyinstudyandresearch;notforcommercialuse

 

图1消防场地示意图

1.2要求

(1)在场地中随机放置一只蜡烛。

消防车从车库启动,计时开始,消防车同时发出出库声音提示。

消防车从车库出口驶出车库,自动行走到距离火源10cm以内区域,发出火警声音提示,停车3秒钟。

(2)消防车执行灭火工作,灭火完毕后,发出火灭声音提示。

(3)消防车经由车库出口自动返回到车库,停稳后,发出返库声音提示,计时结束。

(4)上述过程用时尽可能少。

1.2.2发挥部分

(1)在场地中随机放置三只蜡烛。

消防车从车库启动,计时开始,消防车同时发出出库声音提示。

消防车从车库出口驶出车库。

(2)消防车能够找到一个火源,并自动行走到距离火源10cm以内区域,发出火警声音提示,停车3秒钟。

然后消防车执行灭火工作,灭火完毕后,发出火灭声音提示。

(3)再寻找下一个火源,重复过程

(2),直到三个火源都被扑灭。

(4)扑灭三个火源后,消防车经由车库出口自动返回到车库,停稳后,发出返库声音提示,计时结束。

(5)上述过程用时尽可能少。

(6)其他。

二、方案论证与比较

2.1系统方案

本题的核心问题是寻找随机放置的蜡烛并且进行返回车库的一系列操作实现,可以通过数线的方式建立坐标,确定消防车的位置信息,为顺利地回库做准备;也可以通过数线的方式设定一条遍历式路线,使得消防车能全面检测火源位置并能顺利回库;还有一种是用步进电机做消防车动力,能精确地控制小车所转角度和所要走的距离,因此能很精确判断消防车所在位子并进行一系列消防操作。

用数黑线建立坐标式寻找火源的方法能有效的进行查询、灭火、回库等操作,然而所面临的情况较多,程序量大且复杂;遍历式规定路线查询方式也能有效地查询火源且代码量很少,且适用于多个火源的查询并实施灭火,回库也较容易,但是有可能会碰倒已灭掉蜡烛;步进电机为动力方案,也能完成题设要求,但对程控的依赖较大,且速度较慢。

根据题目要求,结合多方面因素,本设计采用遍历式查询火源的方案。

因为遍历式查询法能用最小的代码量适用于多个火源情况。

系统分为6个基本模块,包括电源模块、驱动模块、火焰检测模块、灭火驱动模块、循迹模块、报警电路。

由于STC12C5A60S2单片机的功能对于本项目的要求基本上够用,出于成本考虑选用该芯片作为系统主控芯片。

用两个最小系统板,STC12C5A60S2单片机最小系统板作为主控模块,STC89C51单片机最小系统作为报警控制模块。

其控制方案如图2所示。

图2控制方案的系统方框图

2.2方案的具体设计与论证

车体采用普通的履带式坦克车体。

车体稳定,大小适合,且其动力源为直流电机,具有优良的调速特性,可实现频繁地无极快速启动、制动和反转。

能满足各种不同的特殊运行要求。

性价比高,驱动电路相对简单。

驱动使用专用电机驱动芯片L298N。

 

主要是经由光电开关模块来实现路径的识别与位置判断。

分前后两组检测,前组6个,后组4个,分布如图3所示。

其中前组①②③④为循迹功能,①检测黑线,②③④检测白色,这样可以有效保证循迹的准确性,⑤为外部中断计数输入端,用来检测经过的黑线数目,辅助消防车位置识别,⑥为转弯控制计数端;后组的①检测黑线,②③检测白色,④为外部中断计数输入端。

车前一组用来引导前进行驶,车后一组用来引导回库行驶。

图3路面识别功能示意图

题设要求消防车出库、发现火源、灭火完毕、入库要有相应的声音提示。

实现这些要求可以用专用的语音芯片进行四种声音模拟;也可以用最简单的发声器件蜂鸣器进行声音提示。

介于蜂鸣器的驱动电路简单且使用简单,且能达到题设要求,本设计采用蜂鸣器电路进行声音提示。

声音驱动流程如图4所示:

图4提示音驱动图

方案一:

采用两个电源供电。

将电动机驱动电源与单片机以及其周边电路电源完全隔离,利用光电耦合器传输信号。

这样做可以将电动机驱动所造成的干扰彻底消除,提高了系统的稳定性,但是多一组电池,增加了车身重量,增大了小车惯性。

方案二:

采用单一电源供电。

这样供电电路比较简单;但是由于电动机启动瞬间电流较大,而且PWM驱动的电动机电流波动很大,会造成电压不稳。

为避免这一缺点,采用开关电源模块。

LM2596系列开关稳压集成电路具有可靠的工作性能、较高的工作效率和较强的输出电流驱动能力从而可以为单片机的稳定、可靠工作提供强有力的保证。

分析:

开关电源调节器件以完全导通或关断的方式工作。

因此,工作时要么是大电路流过低导通电压的开关管,要么完全截止无电流流过。

开关稳压电源的功耗极低,其平均工作效率可达70%~90%;而且开关管的高频通断特性以及串联滤波电感的使用对来自于电源的高频干扰具有较强的抑制作用。

经过综合考虑本设计采用方案二。

三、单元电路设计

3.1光电开关模块的的设计

将TR5000传感器采集的电平信号经过LM358比较放大,通过调节电位器可以调节灵敏度,电路中加有LED指示灯,能很直观地观察模块的工作状态,给调试带来了极大方便。

工作电压3.3V-5V,数字开关量输出(0和1)。

该电路具有功耗低、所用外界元件少,调整简便等优点。

其工作原理图如5所示:

图5光电开关原理图

3.2电机驱动模块的设计

电机驱动的设计采用传统电机专用芯片L298N。

为了避免电机启动、停止等状态对单片机I/O端口造成干扰,在驱动电路的输入级加了光电耦合器,且驱动的四个输出端分别对应有LED指示灯,能很方便地观察电机驱动的运行状态,为调试带来了方便。

这种电路通过占空比来调节电机转速。

原理图如下图6所示:

图6电机驱动原理图

3.3灭火模块的设计

本设计采用电脑散热器作为灭火动力。

因为普通的直流电机在高速运转时会产生很大干扰信号,会对单片机的正常工作带来很严重的干扰(如:

会导致单片机的外部中断失效),而电脑散热器的电机为无刷直流电机,用三极管驱动继电器来控制风扇的运转能轻松进行灭火。

本模块搭载在一个用舵机驱动的云台上,云台上分布有5个火焰传感器,通过这5个火焰传感器检测消防车前方视角180度距离30厘米范围内的火源位置,然后驱动舵机转过相应角度使灭火风扇对准火源进行灭火。

工作框图如图7所示:

图7灭火模块工作框图

四、系统软件的设计

本设计程序使用C语言编写。

程序上使用外部中断来记录消防车的位置及其识别,通过定时器中断来进行PWM占空比调速和舵机调角度。

软件上设置了一个状态寄存器,来记录消防车运行的状态,将运行状态分为黑线循迹行驶状态,发现火源状态,灭火状态,灭火完毕循迹回库状态,回到车库状态等。

下车控制部分主程序流程图如图8所示:

五、理论分析与简单计算

5.1单片机定时器初值的计算

STC12C5A60S2单片机比51单片机性能优越很多,其中之一就是速度比51快8~12倍,其一个时钟周期即为一个机器周期,而51单片机十二个时钟周期为一个机器周期。

12单片机的机器周期为1×(1/晶振频率)≈

(本设计所用晶振为11.0592MHz)。

当用定时器1时,设机器周期为

,定时器产生一次中断的时间为t,那么需要计数的个数N=

,装入THX和TLX中的数分别为:

THX=(65536-N)/256和TLX=(65536-N)%256。

要计算计算机器周期

,需要知道系统时钟频率,也就是单片机晶振频率。

12单片机的机器周期为1×(1/晶振频率)≈

(本设计所用晶振为11.0592MHz)。

由公式N=

可以计算出需要计数的个数,继而算出要装入的初值。

5.2PWM占空比的计算

通过设定定时器的周期为20ms,将20ms分为200份,将200中的x作为高电平的时间占有区间,则得到占空比为x/200的PWM波。

图8小车系统控制程序流程图

 

六、测试仪器与测试方法

6.1测试仪器

秒表,米尺,数字万用表。

6.2测试方法

将小车放在车库内,开启电源,让小车自由行使,以出库提示音为始以回库提示音为终,记录完成整个灭火过程的总时间。

观察并记录消防车运作中的各种状态,对比题设要求,针对性地进行改进优化。

多次改变火源位置,重复以上操作。

6.3测试结果及分析

测试全程执行灭火功能所完成的任务情况如表1所示:

表1

1

2

3

4

基础

发挥

基础

发挥

基础

发挥

基础

发挥

出车库是否有提示音

是否检测到火源

检测到后是否停车3秒并发出报警音

已灭火完毕个数

1

2

1

3

1

2

1

3

是否把火灭掉

灭火完毕后是否有提示音

是否返回到了车库

返回车库后是否有提示音

整个过程撞倒已灭火源次数

0

0

0

1

1

2

1

0

整个过程有无撞到障碍物

整个过程所用时间

1分9秒

1分31秒

1分12秒

1分36秒

1分12秒

1分35秒

1分13秒

1分36秒

 

七、结论和心得体会

经过10天的努力,在指导老师的引导鼓励下,我们克服了诸多困难,发现问题解决问题,辛苦并快乐着,最终达到了我们团队所期望的结果。

这里向指导老师表示深深地感谢。

本设计结构紧凑而合理,同类中系统简单而功能不减,能适应于所要求的场地各种复杂情况,全车模块均经过严格测试,性能稳定。

该作品不仅能完成发挥部分所要求的扑灭3个火源,而且还能额外扑灭多个火源。

本次参赛过程不仅是对我们平时所学知识的检验,更重要的是培养了大家的团队合作精神,了解到了相互合作、及时交流、商讨方案、定制目标、树立自信的重要性。

而且领悟到了从发现问题到解决问题过程经历解决方法。

附件

元器件清单

由于元件种类过多,在此仅附主要元件清单表,如表1。

表1元件清单表

元件

数量

元件

数量

元件

数量

STC12C5A60S2

1片

L298N

1片

光电开关

10个

STC89C52

1片

小车底盘

1辆

电池组

1个

12V开关电源模块

1个

杜邦线

若干

风扇

1个

5V开关电源模块

1个

火焰传感器

5个

继电器

1个

软件源程序

部分原程序如下:

(1)云台控制子函数:

voidduoji()

{

if(Xunhuo1==0)

{

tingche();//停车

P0_3=0;//发出火警声

P0_4=P0_5=P0_6=1;

delayms(5000);//火警声为3500

P0_3=P0_4=P0_5=P0_6=1;

Dwidth=58;//舵机转角度为55PWM

Fengshan=1;//吹风

delayms(9000);//吹5000

Fengshan=0;//停止吹风

P0_5=0;//灭火提示声

P0_4=P0_3=P0_6=0;

delayms(3500);//灭火提示声为3500

P0_3=P0_4=P0_5=P0_6=1;

}

if(Xunhuo2==0)

{

tingche();

P0_3=0;

P0_4=P0_5=P0_6=1;

delayms(5000);

P0_3=P0_4=P0_5=P0_6=1;

Dwidth=80;

Fengshan=1;

delayms(9000);

Fengshan=0;

P0_5=0;

P0_4=P0_3=P0_6=0;

delayms(3500);

P0_3=P0_4=P0_6=P0_5=1;

}

if(Xunhuo3==0)

{

tingche();

P0_3=0;

P0_4=P0_5=P0_6=1;

delayms(5000);

P0_3=P0_4=P0_5=P0_6=1;

Dwidth=100;

Fengshan=1;

delayms(9000);

Fengshan=0;

P0_5=0;

P0_4=P0_3=P0_6=0;

delayms(3500);

P0_3=P0_4=P0_6=P0_5=1;

}

if(Xunhuo4==0)

{

tingche();

P0_3=0;

P0_4=P0_5=P0_6=1;

delayms(5000);

P0_3=P0_4=P0_5=P0_6=1;

Dwidth=113;

Fengshan=1;

delayms(9000);

Fengshan=0;

P0_5=0;

P0_4=P0_3=P0_6=0;

delayms(3500);

P0_3=P0_4=P0_6=P0_5=1;

}

if(Xunhuo5==0)

{

tingche();

P0_3=0;

P0_4=P0_5=P0_6=1;

delayms(5000);

P0_3=P0_4=P0_5=P0_6=1;

Dwidth=125;

Fengshan=1;

delayms(9000);

Fengshan=0;

P0_5=0;

P0_4=P0_3=P0_6=0;

delayms(3500);

P0_3=P0_4=P0_6=P0_5=1;

}

if((Xunhuo1==1)&&(Xunhuo2==1)&&(Xunhuo3==1)&&(Xunhuo4==1)&&(Xunhuo5==1))

{

Fengshan=0;

Dwidth=100;

}

}

(2)回库子函数

voidhuiku()

{

while

(1)

{

if(Hount==2)//后方传感器检测到第2条黑线右转

{

do

{

delayms(180);

Hyouzhuan();

}

while(Duan1==1);

}

elseif(Hount==6)////后方传感器检测到第6条黑线右转

{

do

{

delayms(180);

Hyouzhuan();

}

while(Duan1==1);

}//后方传感器测到第9跟黑线

elseif(Hount==9)

{

do

Hqianjin();

while(Duan==0);//继续后退知道前方传感器测到出库黑线

delayms(400);//继续后退300

tingche();//停车

P0_6=0;//开唱入库音乐

P0_3=P0_4=P0_5=1;

delayms(2000);

P0_3=P0_4=P0_5=P0_6=1;

while

(1);//程序最后停在这

}

/******************************回库时的循迹判定**************/

elseif((Sxun2==1)||(Sxun3==1))

{

Hzuozhuan();

}

elseif((Sxun1==0)&&(Sxun2==0)&&(Sxun3==0))

{

Hyouzhuan();

}

elseif((Sxun1==1)&&(Sxun2==0)&&(Sxun3==0))

{

Hqianjin();

}

}

}

(3)主函数

voidmain(void)

{

Init();//初始化

P0_4=0;//放出库音乐

P0_3=P0_5=P0_6=1;

delayms(3500);//音乐响3500

P0_3=P0_4=P0_5=P0_6=1;

while

(1)

{

if(Count==4)//前方传感器计数到4,9,12,15,17,19时左转

{

if(Guai==1)

do

{

zuoguai();

duoji();

}

while(Duan==0);

qianjin();

delayms(5);

}

elseif(Count==9)

{

if(Guai==1)

do

{

zuoguai();

duoji();

}

while(Duan==0);

qianjin();

delayms(5);

}

elseif(Count==12)

{

if(Guai==1)

do

{

zuoguai();

duoji();

}

while(Duan==0);

qianjin();

delayms(5);

}

elseif(Count==15)

{

if(Guai==1)

do

{

zuoguai();

duoji();

}

while(Duan==0);

qianjin();

delayms(5);

}

elseif(Count==17)

{

if(Guai==1)

do

{

zuoguai();

duoji();

}

while(Duan==0);

qianjin();

delayms(5);

}

elseif(Count==19)

{

if(Guai==1)

do

{

zuoguai();

duoji();

}

while(Duan==0);

qianjin();

delayms(5);

}

/**************************倒车回库***************************/

elseif(Count==21)//前方传感器加到21执行回库动作

{

tingche();

delayms(1000);

Hount=0;

EX0=0;

huiku();

while

(1);

}

/****************正常走时的循迹判定*************************/

elseif((Hxun1==0)&&(Hxun2==0)&&(Hxun3==0)&&(Hxun4==0))

{

zuozhuan();

}

elseif((Hxun2==1)||(Hxun3==1)||(Hxun4==1))

{

youzhuan();

}

elseif((Hxun1==1)&&(Hxun2==0)&&(Hxun3==0)&&(Hxun4==0))

{

qianjin();

}

duoji();//舵机子函数

}

}

 

仅供个人用于学习、研究;不得用于商业用途。

Forpersonaluseonlyinstudyandresearch;notforcommercialuse.

NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.

Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;pasàdesfinscommerciales.

 толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях. 

以下无正文

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1