灭火机器人报告.docx
《灭火机器人报告.docx》由会员分享,可在线阅读,更多相关《灭火机器人报告.docx(34页珍藏版)》请在冰豆网上搜索。
灭火机器人报告
灭火机器人设计
学院:
自动化学院
班级:
姓名:
指导老师:
2021年9月——2021年11月
第一章引言
随着社会的进步,机器人技术的不断开展使得机器人的应用领域不断扩展,从以往多应用于工业领域而渐渐融入人们的生活。
灭火机器人作为消防部队中的新兴力量,参加了抢险救灾的行列。
灭火机器人是一个集信号检测、传输、处理和控制于一体的控制系统,代表了智能机器人系统的开展方向。
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.1稳压芯片LM7805CV、LM7812CV
LM7805CV的技术指标如下表:
表3-1稳压芯片7805参数
LM7812CV的技术指标如下表:
表3-2稳压芯片7812参数
由于单片机及所有的传感器系统供电采用的是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、检测距离可调整范围大,4--13mm可用。
3、采用非接触方式。
3.4.2检测原理:
ST188是红外收发一体的器件,发射管发射出红外光线,接收管就可以根据接收的红外光线的强弱,感知地面的灰度。
由于此模拟房间的地面被处理成为黑白两种颜色,通过比拟器设置灰度的门限值,可以很方便的感知地面的颜色,从而做出相应的决策。
3.4.3应用范围:
1、IC卡电度表脉冲数据采样。
2、集中抄表系统数据采集。
3、机纸张检测。
4、地面灰度检测,正反转速测量、行程测量等。
3.4.4外形尺寸〔单位mm〕:
图3.5ST188实物图
3.4.5ST188原理图:
图3-6ST188电路图
图3-7L324图
LM324是四运放集成电路,它采用14脚双列直插塑料封装,外形如下图。
它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。
此传感器本品可广泛应用于灭火机器人比赛中测量火焰值、足球比赛时,用于确定足球的方向。
下列图为火焰传感器实物图。
图3.8火焰传感器实物图
此传感器具有优良的火焰探测性能,可根据可见光、红外光强弱变化输出电平的大小。
其输出端口是一个四针的插头,其中黑色线为地线、红色线为电源线〔+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
⏹。
⏹5.2实验心得
伊超:
本次的灭火机器人小车设计主要涉及驱动模块壁障模块,灰度模块,灭火模块,单片机开发,程序设计等等。
在这次试验中硬件局部和软件局部根本是我一个人完成的。
在硬件焊接时,我遇到了很多问题,比方两个电机不能同时驱动,H0038不能检测,没有A/D转换,单片机引脚不够用等等,通过我解决这些问题,我也学会了实验室的许多仪器的使用,我也体会到一个人的力量是有限的,在软件设计当中,我也遇到了许多问题,比方不能产生38KHZ方波,还有在调车时,不知怎么就是车跑的不稳定,原来是在整个系统当中没有反应的设计,所以我又令设计了一下传感器位置,加了一个反应调节,这样系统才能运行的稳定,这时我才知道系统反应是多么的重要,在程序编程方面,我体会到硬件设计如果比拟好的话,软件编程是比拟容易的,所以这才启发我如果想搞好硬件,软件必须要懂,要想编出一个比拟漂亮的程序,硬件设计也要必须懂,只有软硬兼顾,这才能开发出一个比拟好的系统。
在智能车的设计中,电源局部可以说是核心的核心,电源设计显得尤为重要,特别是使用电池供电的系统。
电池在充电后,电压会变的很高,额定7.2V电压冲完电电压会到达8.5V,但在使用初,电压降的会很快,对系统的稳定性造成很大威胁,所以必须使用稳压芯片,而稳压芯片的压差在2V左右;另外,电源局部的滤波电容也是非常重要的,一般采用10uF的电解电容和104瓷片电容构成滤波电路。
稳压芯片的采用虽然能减小电压的波动,但是并不能消除。
所以,电压的变化还是对机器人的运动有一定的影响。
此外,由于地面的摩擦、机器人惯性、机器人电机的转数差、齿轮箱与轮子的摩擦等因素,控制机器人直行和转90度有一定的难度,要经过反复的调试、降低机器人的速度、通过传感器矫正等才能到达比拟精确的控制。
所以在做的过程中,选择一个好的、稳定的车模是必须的。
通过这次比赛,我不仅学到的好多知识,而且锻炼了我分析问题和处理问题的能力及组织筹划能力,我编程能力大大的提到了,并且焊接电路我也进一步提高了很多。
同时,一个人的能力及思想是有限的,团结就是力量,通过这次合作,进一步加强了我们的团队合
刘少龙:
这次弄灭火机器人,收获真的不小,学到了不少东西,学会了如何去思考问题,如何设计一个比拟简洁的方法,去实现机器人的动作,同时兼顾可能出现的一些特殊情况,还有程序执行的复杂度,与小车动作的流畅。
写一个比拟完整的程序真的很锻炼思维。
关于硬件电路的设计,我没有从一开始接触,但根本上就是数字电路,51单片机的一个小系统,运行很稳定,倒是红外传感器让人还学了点东西,三极管与滑动变阻器的接法红外接收管与单片机的连接。
这次用的是HS38B20,直接输出数字量。
调试过程中发现灵敏度不好调,可能是提前没有计算好滑动变阻器的阻值吧。
最终采用了特殊方法调试好了。
接继电器时也遇到了一些实际问题,单片机的I/O口电流太小不能驱动NPN三极管。
最终加到了带上拉电阻的P0口上问题解决,其实在其他口上接上适当的上拉电阻问题也应该解决。
关于火焰传感器也是同灰度一样加在了四路集成运放上,做的电压比拟器,所以数模转化问题简化了。
调试过程中发现太阳光对火焰传感器的影响很大,所以白天要在传感器上加一个罩子或者通过调节滑动变阻器调节LM324输入引脚的比拟电压。
第一次写出一个真正实用程序
梁瑞华:
通过灭火机器人的制作,我对机器人的组成和原理,传感器有了全新的认识。
本次的灭火机器人小车设计主要涉及到单片机开发、机器人组成和原理、电机与驱动、传感器知识及程序算法设计等。
使用最多的是传感器,传感器是机器人的眼睛,只有传感器正确的识别道路,机器人才能正确搜寻房间。
因此传感器的设置很重要,须屡次调试得出最正确参数值,如电压值、测试距离、探测角度等。
在整个实验过程中是最关键、最麻烦的就是系统的整体调试,我们要调节各个参数,保证车子能正常完成各个功能。
同时还要考虑出现的各种不良因素,这要求制作的机器人的适应能力好,到达现场时需要调整的参数越少越好。
在控制机器人小车精确转弯时一定要使用相关硬件器件进行控制,比方指南针或者采用好的算法不需要进行精确转弯。
还要考虑机器人的行走路径的选择,因为我们制作的小车为履带结构,结合我们小车的特点和前面分析,我们选择过台阶直接过台阶,然后开始搜索。
显然直接过台阶可以节省很多的时间,路径更短。
需要注意的是在平时调试时尽量在自己的比赛场地调试,虽然在现场比赛时,所有的比赛场地采用的都是相同的材料,各个局部看起来都是一样的,实际中却会有很大差异。
通过本次设计,将我把所学的理论知识真正应用到实际当中,不仅加深了对理论知识的理解,同时还进行了拓展、发散。
在整个过程中,我还体会到团队合作的无穷力量。
参考文献
[1]?
国际赛制机器人灭火比赛规那么?
.PDF
[2]李全利、
[3
[4]童诗白、华成英.模拟电子技术根底(第三版).北京:
高等教育出版社,2003.12
[5
[6
[7]黄智伟.全国大学生电子设计竞赛系统设计.北京:
北京航空航天大学出版社,2006.12
[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)t=0;/*1个PWM信号由100次中断产生*/
}
voidtimer1()interrupt1//产生38KHz方波
{
led1=~led1;
led2=~led2;
led3=~led3;
}
voidpao()
{
if(k==7)
{
k=10;
you();
qian();
delay(60);
}
el