灭火机器人报告.docx

上传人:b****2 文档编号:1303504 上传时间:2023-04-30 格式:DOCX 页数:34 大小:1.18MB
下载 相关 举报
灭火机器人报告.docx_第1页
第1页 / 共34页
灭火机器人报告.docx_第2页
第2页 / 共34页
灭火机器人报告.docx_第3页
第3页 / 共34页
灭火机器人报告.docx_第4页
第4页 / 共34页
灭火机器人报告.docx_第5页
第5页 / 共34页
灭火机器人报告.docx_第6页
第6页 / 共34页
灭火机器人报告.docx_第7页
第7页 / 共34页
灭火机器人报告.docx_第8页
第8页 / 共34页
灭火机器人报告.docx_第9页
第9页 / 共34页
灭火机器人报告.docx_第10页
第10页 / 共34页
灭火机器人报告.docx_第11页
第11页 / 共34页
灭火机器人报告.docx_第12页
第12页 / 共34页
灭火机器人报告.docx_第13页
第13页 / 共34页
灭火机器人报告.docx_第14页
第14页 / 共34页
灭火机器人报告.docx_第15页
第15页 / 共34页
灭火机器人报告.docx_第16页
第16页 / 共34页
灭火机器人报告.docx_第17页
第17页 / 共34页
灭火机器人报告.docx_第18页
第18页 / 共34页
灭火机器人报告.docx_第19页
第19页 / 共34页
灭火机器人报告.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

灭火机器人报告.docx

《灭火机器人报告.docx》由会员分享,可在线阅读,更多相关《灭火机器人报告.docx(34页珍藏版)》请在冰点文库上搜索。

灭火机器人报告.docx

灭火机器人报告

 

灭火机器人设计

 

学院:

自动化学院

班级:

姓名:

 

指导老师:

 

2010年9月——2010年11月

 

第一章引言

1.1课题背景

随着社会的进步,机器人技术的不断发展使得机器人的应用领域不断扩展,从以往多应用于工业领域而渐渐融入人们的生活。

灭火机器人作为消防部队中的新兴力量,加入了抢险救灾的行列。

灭火机器人是一个集信号检测、传输、处理和控制于一体的控制系统,代表了智能机器人系统的发展方向。

1.2实现功能

制造一个自主控制的机器人在一间平面结构房子模型里运动,找到一根蜡烛并尽快将它熄灭,这个工作受地面摩擦、机器人惯性、机器人电机的转数差、齿轮箱与轮子的摩擦、电压变化等多个因素影响,它模拟了现实家庭中机器人处理火警的过程,蜡烛代表家里燃起的火源,机器人必须找到并熄灭它。

1.3模拟房子介绍

模拟房子平面图单位:

mm

图1.1灭火机器人比赛场地(国际赛制)

比赛场地的墙壁33cm高,由木头做成。

墙壁刷成白色。

比赛场地的地板将是被漆成黑色的光滑木制表面。

在所有的房间和走廊的地板上,可能会铺有小地毯,不会有粗毛地毯。

场地中所有的走廊和门口宽都是46cm。

门口并没有门,而是一个46cm的开口,将会有一个白色的2.5cm宽的白色带子或白漆印迹表示房间入口。

第二章系统整体方案设计

2.1系统硬件设计

本次设计的目的是设计一个在规定区域能自主搜索火源并实施灭火的智能机器人小车,本次设计使用的主控芯片使用了STC89C52单片机,所以设计重点在传感器和电机驱动上。

系统总体设计框图如图2.1:

图2.1系统总体设计框图

2.2系统软件设计

软件设计方案是以上述硬件电路为基础的,包括电机控制模块、传感器模块的程序设计与实现。

程序设计采用C语言编写,编程环境是集成KeilC51编译器的集成编译环境。

灭火机器人设计的软件设计结构框图如图2.2所示。

 

图2.2系统软件设计框图

第三章硬件设计

3.1电源管理模块

电源是任何一个系统稳定运行的前提条件,为了使机器人运行稳定,单片机和电机的供电系统采用独立供电的方法。

3.1.1稳压芯片LM7805CV、LM7812CV

LM7805CV的技术指标如下表:

表3-1稳压芯片7805参数

LM7812CV的技术指标如下表:

表3-2稳压芯片7812参数

3.1.2电源模块电路原理图

由于单片机及所有的传感器系统供电采用的是5V的电源,而车体要良好的运行电机的供电电压应该达到12V,所以在电源的处理上采用了稳压芯片7805CV和7812CV。

图3.1电源部分电路图

3.2电机驱动芯片L298N

L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。

是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。

其引脚排列如图1中U4所示,1脚和15脚可单独引出连接电流采样电阻器,形成电流传感信号。

L298可驱动2个电机,OUT1、OUT2和OUT3、OUT4之间分别接2个电动机。

5、7、10、12脚接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。

也利用单片机产生PWM信号接到ENA,ENB端子,对电机的转速进行调节。

3.2.1L298N的逻辑功能:

表3-3SHARPGP2D12实物图

3.2.2外形及封装:

图3.2L298N实物图

3.2.3L298N电路原理图:

由于一片L298N可以直接驱动两个电机,但是为了加大驱动力,我们采用两路并联的方式来驱动电机。

图3.3L298N电路图

3.3避障检测传感器HS0038

3.3.1HS0038简介:

HS0038B-系列微型接收机红外遥控器控制系统。

PIN二极管和前置上组装引线框架,环氧包被设计成红外过滤器。

该解调输出信号可直接解码的微处理器。

HS0038B是标准的红外遥控接收器系列,支持所有主要传输代码。

3.3.2HS0038特点:

1、光检测器和放大器一体封装

2、内部可集成PCM频率过滤器

3、与TTL和CMOS电平兼容

4、改进的屏蔽电场,抗干扰能力强

3.3.3检测原理:

红外发射管发射出经过调制过的38KHZ的红外光,当前方没有障碍物时,接收器收不到红外光,相反当前方有障碍物时,接受器可以收到红外光。

根据此原理,机器人可以感知前方的路况从而决定是否前行。

3.3.4HS0038与单片机连接原理图:

图3.4H0038电路图

HS0038内部集成了红外接收——运放——验波电路——带通滤波(中心频率)——整形电路——驱动电路,通过加入38k的调制信号可使该电路抗干扰能力增强,减少了自然光的影响。

其实在红外发射和VCC之间有一变位器,阻值为2~5欧左右此图没标上.

 

3.4地面灰度检测传感器ST188

3.4.1ST188特点:

1、采用高发射功率红外二极管和高灵敏度光电晶体管组成。

2、检测距离可调整X围大,4--13mm可用。

3、采用非接触方式。

3.4.2检测原理:

ST188是红外收发一体的器件,发射管发射出红外光线,接收管就可以根据接收的红外光线的强弱,感知地面的灰度。

由于此模拟房间的地面被处理成为黑白两种颜色,通过比较器设置灰度的门限值,可以很方便的感知地面的颜色,从而做出相应的决策。

3.4.3应用X围:

1、IC卡电度表脉冲数据采样。

2、集中抄表系统数据采集。

3、传真机纸X检测。

4、地面灰度检测,正反转速测量、行程测量等。

3.4.4外形尺寸(单位mm):

图3.5ST188实物图

3.4.5ST188原理图:

图3-6ST188电路图

图3-7L324图

LM324是四运放集成电路,它采用14脚双列直插塑料封装,外形如图所示。

它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。

3.5火焰传感器

此传感器本品可广泛应用于灭火机器人比赛中测量火焰值、足球比赛时,用于确定足球的方向。

下图为火焰传感器实物图。

图3.8火焰传感器实物图

3.5.1火焰传感器使用

此传感器具有优良的火焰探测性能,可根据可见光、红外光强弱变化输出电平的大小。

其输出端口是一个四针的插头,其中黑色线为地线、红色线为电源线(+5V)、黄色线为信号线,用于输出测量的红外光强度电平、棕色线为信号线,用于输出可见光强度电平。

 

第四章软件设计

4.1灭火机器人行进路线分析

当小车处于起点,小车要开始搜索房间有两种路径可以选择,一是不过台阶,绕着4号房间向外搜索。

二是直接过台阶,然后开始搜索。

显然直接过台阶可以节省很多的时间,路径更短,因为我们制作的小车为履带结构,结合我们小车的特点和前面分析,我们选择过台阶。

过台阶后,小车处于3号和4号房间中间,由图可知,沿着右走的方案比较好,因此我们采用是右手规则,首先搜索的是3号房间,如图中的红色箭头。

当在3号房间发现火源时,小车进入房间并灭火,灭火后按原路返回;如没有发现火源,小车继续按右手规则搜索房间,直到搜索4号房间,不管有没有搜索到火源,从4号房间出来都绕着4号房间返回起点,因为回家过程中的时间不记入总时间,而绕行比较安全,小车比较好控制。

图4.1灭火机器人行进路线

4.2软件流程图

图4.2灭火小车软件设计流程图

 

第五章调试记录及实验心得

5.1调试记录

⏹前方传感器检测最佳距离12cm,500R的电位器逆时钟旋转可加大发射管的发射功率,检测距离可变远。

⏹地面灰度传感器:

测试距离2.5cm,黑地面输出电压1.3-1.5V;白纸输出3.8-4.5V;

⏹前方火焰传感器最远测试距离2.5m,此次使用有效距离0.8m,输出电压0.6V,探测角度+30°。

⏹转弯:

动作

延时常数

动作

延时常数

原地右转90

18

原地左转90

19

右后转180

37

左后转180

37

⏹电池电压:

5V供电的电压不得低于7.2V。

⏹5.2实验心得

伊超:

本次的灭火机器人小车设计主要涉及驱动模块壁障模块,灰度模块,灭火模块,单片机开发,程序设计等等。

在这次试验中硬件部分和软件部分基本是我一个人完成的。

在硬件焊接时,我遇到了很多问题,比如两个电机不能同时驱动,H0038不能检测,没有A/D转换,单片机引脚不够用等等,通过我解决这些问题,我也学会了实验室的许多仪器的使用,我也体会到一个人的力量是有限的,在软件设计当中,我也遇到了许多问题,比如不能产生38KHZ方波,还有在调车时,不知怎么就是车跑的不稳定,原来是在整个系统当中没有反馈的设计,所以我又令设计了一下传感器位置,加了一个反馈调节,这样系统才能运行的稳定,这时我才知道系统反馈是多么的重要,在程序编程方面,我体会到硬件设计如果比较好的话,软件编程是比较容易的,所以这才启发我如果想搞好硬件,软件必须要懂,要想编出一个比较漂亮的程序,硬件设计也要必须懂,只有软硬兼顾,这才能开发出一个比较好的系统。

在智能车的设计中,电源部分可以说是核心的核心,电源设计显得尤为重要,特别是使用电池供电的系统。

电池在充电后,电压会变的很高,额定7.2V电压冲完电电压会达到8.5V,但在使用初,电压降的会很快,对系统的稳定性造成很大威胁,所以必须使用稳压芯片,而稳压芯片的压差在2V左右;另外,电源部分的滤波电容也是非常重要的,一般采用10uF的电解电容和104瓷片电容构成滤波电路。

稳压芯片的采用虽然能减小电压的波动,但是并不能消除。

所以,电压的变化还是对机器人的运动有一定的影响。

此外,由于地面的摩擦、机器人惯性、机器人电机的转数差、齿轮箱与轮子的摩擦等因素,控制机器人直行和转90度有一定的难度,要经过反复的调试、降低机器人的速度、通过传感器矫正等才能达到比较精确的控制。

所以在做的过程中,选择一个好的、稳定的车模是必须的。

通过这次比赛,我不仅学到的好多知识,而且锻炼了我分析问题和处理问题的能力及组织策划能力,我编程能力大大的提到了,并且焊接电路我也进一步提高了很多。

同时,一个人的能力及思想是有限的,团结就是力量,通过这次合作,进一步加强了我们的团队合

X少龙:

这次弄灭火机器人,收获真的不小,学到了不少东西,学会了如何去思考问题,如何设计一个比较简洁的方法,去实现机器人的动作,同时兼顾可能出现的一些特殊情况,还有程序执行的复杂度,与小车动作的流畅。

写一个比较完整的程序真的很锻炼思维。

关于硬件电路的设计,我没有从一开始接触,但基本上就是数字电路,51单片机的一个小系统,运行很稳定,倒是红外传感器让人还学了点东西,三极管与滑动变阻器的接法红外接收管与单片机的连接。

这次用的是HS38B20,直接输出数字量。

调试过程中发现灵敏度不好调,可能是提前没有计算好滑动变阻器的阻值吧。

最终采用了特殊方法调试好了。

接继电器时也遇到了一些实际问题,单片机的I/O口电流太小不能驱动NPN三极管。

最终加到了带上拉电阻的P0口上问题解决,其实在其他口上接上适当的上拉电阻问题也应该解决。

关于火焰传感器也是同灰度一样加在了四路集成运放上,做的电压比较器,所以数模转化问题简化了。

调试过程中发现太阳光对火焰传感器的影响很大,所以白天要在传感器上加一个罩子或者通过调节滑动变阻器调节LM324输入引脚的比较电压。

第一次写出一个真正实用程序

梁瑞华:

通过灭火机器人的制作,我对机器人的组成和原理,传感器有了全新的认识。

本次的灭火机器人小车设计主要涉及到单片机开发、机器人组成和原理、电机与驱动、传感器知识及程序算法设计等。

使用最多的是传感器,传感器是机器人的眼睛,只有传感器正确的识别道路,机器人才能正确搜寻房间。

因此传感器的设置很重要,须多次调试得出最佳参数值,如电压值、测试距离、探测角度等。

在整个实验过程中是最关键、最麻烦的就是系统的整体调试,我们要调节各个参数,保证车子能正常完成各个功能。

同时还要考虑出现的各种不良因素,这要求制作的机器人的适应能力好,到达现场时需要调整的参数越少越好。

在控制机器人小车精确转弯时一定要使用相关硬件器件进行控制,比如指南针或者采用好的算法不需要进行精确转弯。

还要考虑机器人的行走路径的选择,因为我们制作的小车为履带结构,结合我们小车的特点和前面分析,我们选择过台阶直接过台阶,然后开始搜索。

显然直接过台阶可以节省很多的时间,路径更短。

需要注意的是在平时调试时尽量在自己的比赛场地调试,虽然在现场比赛时,所有的比赛场地采用的都是相同的材料,各个部分看起来都是一样的,实际中却会有很大差异。

通过本次设计,将我把所学的理论知识真正应用到实际当中,不仅加深了对理论知识的理解,同时还进行了拓展、发散。

在整个过程中,我还体会到团队合作的无穷力量。

 

参考文献

[1]《国际赛制机器人灭火比赛规则》.PDF

[2]李全利、迟荣强.单片机原理及接口技术.:

高等教育,2004.1

[3]谭浩强.C程序设计(第二版).:

清华大学,1999.12

[4]童诗白、华成英.模拟电子技术基础(第三版).:

高等教育,2003.12

[5]康华光.电子技术基础数字部分(第四版).:

高等教育,1900.1

[6]黄智伟.全国大学生电子设计竞赛电路设计.:

航空航天大学,2006.12

[7]黄智伟.全国大学生电子设计竞赛系统设计.:

航空航天大学,2006.12

[8]文艳、谭鸿.Protel99SE电子电路设计.:

机械工业,2006.8

 

程序请单附录1:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitled1=P1^5;//红外发射管

sbitled2=P1^6;//

sbitled3=P3^7;

sbits1=P1^1;//红外接收管用于壁障检测

sbits2=P1^2;

sbits3=P1^4;

sbitstyou=P0^0;//灰度

sbitstzuo=P0^1;

sbithuo=P2^0;//火

sbitfeng=P0^7;//风

sbiten1=P2^2;//电机1/*L298的EnableA*/

sbiten2=P2^5;//电机2

sbitin1_1=P2^3;/*L298_1的Input1*左**/

sbitin1_2=P2^4;/*L298_1的Input2*/

sbitin2_1=P2^6;/*L298_2的Input1*右**/

sbitin2_2=P2^7;/*L298_2的Input2*/

uchart=0;/*pwm调速中断计数器*/

ucharsuozuo=100;/*电机速度值参数:

0~100*/

ucharsuoyou=57;

uchari=0;

uchark=0;//房间标志变量

ucharh=0;//火焰标志

ucharm=0;//寻找灰度标志

ucharz=0;//回家灰度标志

voidstop();//停止函数

voidtiaoyou();//

voidtiaozuo();//微调右

voidqian()/前进函数

voiddelay(uint);

voidzuo();//左90

voidyou();

voidsi();//左60

voidtiaohuo();//调火

voidpao();//跑函数

voidinit();//定时器

voiddus(uchar);//小延时

voidtiaohui();//灰度调节

voidxun1();//房间里寻函数

voidhui1();//回家函数

voidhui2();//

voidhui3();//

voidhui4();//

voidzhao();//在房间里找函数

voidqian()//

{

in1_1=1;

in1_2=0;

in2_1=1;

in2_2=0;

}

voidxun1()

{

in1_1=0;

in1_2=1;

in2_1=1;

in2_2=0;

delay(15);

while((m==0)||(m==1)||(m==2)||(m==3))

{

if((styou==1)||(stzuo==1))

{

if(huo==1)

{

stop();

delay

(1);

feng=1;

delay(20);

feng=0;

h=1;

si();

}

else

{

m++;

break;

}

 

}

else

{

if((s1==1)&&(s2==1))

{

qian();

delay

(1);

}

elseif((s1==0)&&(s2==1))

tiaozuo();

elseif((s1==1)&&(s2==0))

tiaoyou();

else

tiaoyou();

}

}

}

voidzhao()

{

if(((k==2)&&(m==0))||((k==4)&&(m==1))||((k==5)&&(m==2))||((k==7)&&(m==3)))

xun1();

else

pao();

}

 

voidsi()

{

in1_1=1;

in1_2=0;

in2_1=0;

in2_2=1;

delay(12);

}

voidtiaohuo()

{

in1_1=0;

in1_2=1;

in2_1=1;

in2_2=0;

delay

(1);

}

 

voidzuo()//90

{

in1_1=0;

in1_2=1;

in2_1=1;

in2_2=0;

delay(18);//更改参数可调节角度

}

voidyou()//90

{

in1_1=1;

in1_2=0;

in2_1=0;

in2_2=1;

delay(19);//更改参数可调节角度

}

voidhui1()

{

if(stzuo==1)

{

z++;

qian();

delay(5);

}

else

{

if((s1==1)&&(s2==1)&&(s3==0))

{

qian();

delay

(2);

}

elseif((s1==1)&&(s2==1)&&(s3==1))

{

qian();

delay(7);

you();

qian();

delay(50);

}

 

elseif((s1==1)&&(s2==0))

{

tiaoyou();

}

elseif((s1==0)&&(s2==1))

{

tiaozuo();

}

else

{

tiaoyou();

}

}

}

voidhui2()

{

suozuo=100;

suoyou=70;

if(stzuo==1)

{

z++;

qian();

delay(5);

}

else

{

if((s1==0)&&(s2==1))

tiaozuo();

elseif((s1==1)&&(s2==0))

tiaoyou();

else

{

qian();

delay

(1);

}

}

}

voidhui3()

{

if(stzuo==1)

{

z++;

qian();

delay(5);

}

else

{

if((s1==1)&&(s2==1)&&(s3==0))

{

qian();

delay

(1);

}

elseif((s1==1)&&(s2==1)&&(s3==1))

{

qian();

delay();

zuo();

qian();

delay(45);

}

 

elseif((s1==1)&&(s2==0))

{

tiaoyou();

}

elseif((s1==0)&&(s2==1))

{

tiaozuo();

}

else

{

tiaoyou();

}

}

}

voidhui4()

{

if(stzuo==1)

{

z++;

qian();

delay(5);

}

else

{

if((s1==1)&&(s2==1)&&(s3==0))

{

qian();

delay

(1);

}

elseif((s1==1)&&(s2==1)&&(s3==1))

{

qian();

delay(7);

zuo();

qian();

delay(40);

}

 

elseif((s1==1)&&(s2==0))

{

tiaoyou();

}

elseif((s1==0)&&(s2==1))

{

tiaozuo();

}

else

{

tiaoyou();

}

}

}

voidstop()

{

in1_1=0;

in1_2=0;

in2_1=0;

in2_2=0;

}

voidtiaozuo()//微调

{

in1_1=0;

in1_2=1;

in2_1=1;

in2_2=0;

dus(50);//更改参数可调节角度

}

voidtiaoyou()

{

in1_1=1;

in1_2=0;

in2_1=0;

in2_2=1;

dus(50);//更改参数可调节角度

}

voidinit()

{

TMOD=0x22;//设定T0和T1的工作模式为2

IP=0x02;

TH0=243;//装入定时器的初值

TL0=243;

TH1=0x9b;

TL1=0x9b;

EA=1;//开中断

ET0=1;//定时器0允许中断

ET1=1;

TR0=1;//启动定时器0

TR1=1;

}

voiddelay(uinti)//大延时

{

uintiii;

for(;i>0;i--)

for(iii=0;iii<100;iii++);

}

voiddus(uchars)

{

for(;10

;

}

voidtimer0()interrupt3/*T0中断服务程序*/

{

if(t

{

en1=1;

}

else

{

en1=0;/*产生电机1的PWM信号*/

}

if(t

{

en2=1;

}

else

{

en2=0;/*产生电机1的PWM信号*/

}

t++;

if(t>=100)

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

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

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2