初中灭火(辫子法)设计方案_第1页
初中灭火(辫子法)设计方案_第2页
初中灭火(辫子法)设计方案_第3页
初中灭火(辫子法)设计方案_第4页
初中灭火(辫子法)设计方案_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、初中灭火(辫子法)设计方案目 录第一章 项目方案概述31.1 配件清单31.2 参数说明51.3 思路描述5第二章 机器人的搭建和程序设计82.1 机器人测试82.2 机器人的搭建82.2.1 扩展板的组装82.2.2 马达和轮子的组装92.2.3 前后灰度传感器的安装102.2.4 主机的安装112.2.5 红外避障传感器的安装112.2.6 工业红外传感器的安装142.2.7 大功率的安装152.2.8 火焰传感器的安装162.2.9 灭火风扇的安装172.2.10 辫子和架高火焰的安装172.2.11 声控传感器的安装202.2.12 电池包的安装212.3 机器人的程序设计222.3.

2、1 初中组程序(图形化程序,解决方案里带有图形化程序原文件)222.3.2 初中组程序(C语言程序)232.4 机器人的使用39第三章 常见问题分析403.1 机器人倒退,原地打转及走弧线403.2 机器人在场地上不走403.3 机器人在场地上走的很慢或一开始就倒退403.4 机器人在场地上走迷宫总是撞到挡板413.5 机器人在灭火时候不能发现火413.6 机器人在灭火时对不准火413.7 机器人掉程序41第一章 项目方案概述根据第九届全国中小学电脑制作活动指南设计,本套装适合初中组灭火项目使用。1.1 配件清单本方案所需的配件清单:序号所需配件数量配件在本方案中的功能配件图片N-A-0101

3、纳英特积木式机器人平台(V1.0)1机器人的核心控制中心N-B-0101主板扩展1扩展模拟接口和伺服电机接口N-A-0201积木套件1用来装配机器人及固定传感器N-B-04013.0大功率马达驱动模块1用来增大马达驱动能力 N-B-03011.0功率马达驱动模块1用于增强灭火风扇的灭火能力N-B-0202电源稳压模块1提供7V25V之间的稳定直流电压N-C-0801声控传感器1(数字)(能检测环境声音变化)(声控启动)N-C-0901底部灰度传感器2用于检测场地地面标志线(房间门口白线、灭火圈白线、“H”家)N-C-0201红外测障传感器11数字传感器,主要用于迷宫避障碍物N-C-0601火焰

4、传感器6用于检测火焰,前、后各三个(双头)。(具体见安装示意图)N-C-0101工业级红外传感器1数字传感器,主要用于迷宫避障碍物N-D-0601六节动力镍氢电池包1用来给主机单独供电N-D-0401五节动力镍氢电池包2用来接大功率(V3.0)给马达和风扇供电,动力更强N-F-0311“Z”字型减速马达(12V500转)4用于四轮驱动机器人装配N-F-0601灭火风扇2用于吹灭蜡烛N-F-1201高速轮套件4硅胶质地的轮胎加大与接触面的附着力,光面的设计, 使其与接触面增大,在平滑场地上具备更好的抓地力N-F-1601灭火结构件1用于固定主机、传感器、马达等1.2 参数说明实物图相关参数外形尺

5、寸22x28x29cm(长*宽*高)重量2.25KG电源参数采用两路供电,主机使用六节镍氢电池包,外加2个五节镍氢电池包配合大功率驱动模块给马达和风扇供电。马达参数四个12V/500转“Z”字型轴减速齿轮箱马达,使用高速轮套件。功能描述采用辫子和架高火焰的策略,更多房间系数,更好的成绩。马达和主机分离供电,采用两个五节电池包串联和大功率驱动模块动力更强大、速度更快,高速轮结构直线效果更好,更稳定。1.3 思路描述对于初中和小学灭火项目来说,机器人需要解决的主要问题是如何去走迷宫?如何寻找火源并顺利的灭火?对于初中来说还要考虑如何顺利回家?本方案采用辫子(用最短的时间获得最好的系数)和架高火焰(

6、节省时间,避免机器人走重复的路线)的策略,在原有风扇的基础上外加一个V1.0大功率使灭火更有效率,本次方案中还采用了V3.0大功率模块和高速轮套件(硅胶质地的轮胎增大与地面的附着力以及与地面的接触面)等,避障传感器的增加使走迷宫更稳定,各房间采用独立的迷宫和灭火程序及回家(初中)设计。当然此方案仅供大家参考借鉴。本方案采用的搜索策略:当火在4、2、1这三个房间时,采用4-3-1-2-有火房间的策略;当火在3号房间时,采用4-1-2-3的策略。总体策略:启动后机器人直行,启动伺服电机展开辫子和架高火焰(具有辫子和查看3号房间是否有火的功能),前行到正左手迷宫的所有红外传感器都检测不到障碍物后,调

7、用0.4秒左右的左手迷宫,目的是调整机器人的状态, 为下面判断是否有火和机器执行正右手迷宫做准备。当前面的红外传感器没有检测到障碍物时(4号房间门口)判断4号房间是否有火,有火则按3-1-2的循序搜索完房间后回到4号房间灭火,接着回家。当判断出4号房间没有火时,机器人调用正右手迷宫继续前行。当机器人前行到3号房间的外板转弯处时,通过架高的火焰探头判断3号房间是否有火,有火则去拿1号和2号房间的系数后再回3号房间灭火,接着回家。没有火时,搜索3号房间拿系数再去查看火在1号房间还是2号房间(机器人在搜索完3号房间后,去1号和2号房间时是反向前进)。如果机器人反向左侧的火焰传感器没有检测到火焰执行倒

8、右手迷宫,直到检测到2号房间的白线,通过倒右手迷宫进入2号房间灭火,如果反向左侧的火焰传感器检测到火源,机器前行到2号和1号的外挡板后通过正右手迷宫进入1号房间灭火. 辫子在机器进入火焰所在房间后开始收缩。4号房间:看火点 黑色和蓝色为搜索路线,红色为灭火路线,绿色为回家路线(黑色和红色为直行,蓝色和绿色为后退)机器人走迷宫到4号房间的门口时,通过主机上的火焰传感器观看4号房间是否有火,有火则按图示路线完成任务。无火则继续执行右手法则。3号房间:4号房间无火,当机器人跑到转角处(黄色位置)时,利用架高的火焰观看3号房间内是否有火,有火则直接去搜索1号和2号房间再回3号房间灭火,无火则去搜索3号

9、房间。在3号房间门口时,调整机器人让最中间的火焰传感器对准火,灭火,在灭完火以后,调用系统函数,用右手迷宫法则继续走迷宫回家,当走出房间以后,若前后灰度有一个检测到白色线,则停止。(具体见路线图)看火点(架高火焰看火)黑色和蓝色为搜索路线,绿色为灭火路线,红色为回家路线(黑色红色为直行,蓝色和绿色为后退)2号房间:当机器人在黄色位置没发现3号房间有火时,机器人先去3号房间搜索获得系数。机器人到达3号房间门口时,通过后右手法则进行搜索1号和2号房间,当机器人发现1号房间没有火时,利用后右手法则进入2号房间,再调整机器人让最中间的火焰传感器对准火焰,灭火。当灭完火以后,再调用系统函数,走左手迷宫,

10、当走出房间以后,前后灰度有一个检测到白色的时候,机器人停止。(具体见路线图)黑色和蓝色为搜索路线,绿色为灭火路线,红色为回家路线(黑色红色为直行,蓝色和绿色为后退) 1号房间:当机器人在黄色位置没发现3号房间有火时,机器人先去3号房间搜索获得系数。机器人到达3号房间门口时,通过后右手法则进行搜索1号和2号房间,当机器人发现1号房间有火时,先去搜索2号房间获得系数再回1号房间灭火。当机器人前面的底部灰度传感器检测到1号房间门口的白色线后,调整机器人让最中间的火焰传感器对准火焰进一号房间灭火。灭完火后, 灭完火后,再调用系统函数,退出二号房间以后,继续走后右手迷宫,当前后灰度检测到白色区域以后,机

11、器人最后停止。(具体见路线图)黑色和蓝色是搜索路线,红色为灭火路线,绿色为回家路线(黑色红色为直行,蓝色和绿色为后退)第二章 机器人的搭建和程序设计2.1 机器人测试在机器人的搭建过程中,首先需要对机器人各部件包括机器人控制主板、减速马达、传感器等进行测试(各配件的测试方法及其技术参数,请参阅各配件用户说明书,可在编程软件中下载测试程序测试),以保证在使用时部件的可靠性。同时每搭好一个主要的部件,也必须进行一个检测的过程,同样是保证机械结构的合理性。机器人的检测方法请参见用户手册(硬件部分)1112页。2.2 机器人的搭建2.2.1 扩展板的组装注:主机与扩展板的详细安装方法请查看扩展板使用说

12、明。2.2.2 马达和轮子的组装 马达组装的时候,使得两侧的马达分别在同一条直线上面,否则,在走迷宫的时候,会不平稳。所需要的零部件如下所名称型号数量“Z”轴马达3604高速轮套件4螺丝M3x88螺丝M3x54锣帽紧固8注:一般情况下,左边马达接大功率V3.0时,马达的电源线是红线左,黑线右。右边马达接大功率V3.0时,马达的电源线是黑线左,红线右。具体的情况还需要下载测试程序进行测试。2.2.3 前后灰度传感器的安装 注:底部灰度传感器在白色区域返回的值为80左右,在黑色区域返回的值为190左右。安装底部灰度传感器时,应该注意使底部灰度传感器距离地面5mm-10mm。名称型号数量灰度传感器2

13、螺丝M3x822.2.4 主机的安装在安装马达的位置的时候,要结合实际,确保主机能够放入所安装的马达的空隙里面。具体做法可以参照下面的图示名称型号数量主机1螺丝M3x542.2.5 红外避障传感器的安装铜柱20mm铜柱15mm螺丝M3x5 注意:红外传感器参数仅做参考注意:红外传感器参数仅做参考名称型号数量九孔片3红外避障传感器反射型11螺丝M3x519锣帽紧固12铜柱20mm8铜柱15mm62.2.6 工业红外传感器的安装 工业红外传感器(接数字9号口,检测距离调解到30cm)注意:工业红外传感器参数仅做参考名称型号数量五孔片1工业红外传感器反射型1螺丝M3x512.2.7 大功率的安装V1

14、.0大功率的安装V1.0大功率 V3.0大功率的安装铜柱20mm x4 1.0和3.0在安装的时候,中间留出适当的空间注:大功率V1.0和V3.0的接线方法请参考大功率马达驱动模块V1.0使用指南和大功率马达驱动模块V3.0使用指南。名称型号数量大功率V1.01大功率V2.01铜柱20mm16铜柱10mm42.2.8 火焰传感器的安装前方右边火焰传感器接到模拟3口紧固锣帽螺丝M3x5 后方左边火焰传感器接到扩展板模拟28口后方右边火焰传感器接到扩展板模拟29口火焰传感器接到扩展板模拟25口火焰传感器接到模拟6口前方左边火焰传感器接到模拟4口 20cm根据实际情况,将12孔片的长度和宽度适当调整

15、,例如图中,就是将2根孔片并起来名称型号数量十二孔片4火焰传感器6螺丝M3x510螺帽紧固62.2.9 灭火风扇的安装前方灭火风扇接在V1.0大功率上风扇(用扎带固定)后方灭火风扇接马达V1.0大功率上名称型号数量风扇2扎带若干2.2.10 辫子和架高火焰的安装铜柱20mm x8 伺服电机(用扎带固定)右伺服电机接伺服电机五号口左伺服电机接伺服电机零号口十二孔绿条螺丝M3x5 用胶枪打胶或者类似的东西固定火焰传感器(接扩展板的22号口)螺丝M3x8紧固螺帽十二孔绿条十二孔绿条 辫子(用扎带或者类似的东西将辫子固定在伺服电机上)名称型号数量铜柱20mm16扎带若干螺丝M3x83螺丝M3x52绿条

16、十二孔3伺服电机22.2.11 声控传感器的安装螺丝M3x5 探头安装好后,注意根据实际情况调节伺服电机和探头支架的夹角名称型号数量声控传感器1螺丝M3x512.2.12 电池包的安装五节电池包(用扎带固定)电池包用扎带固定(为防止脱落,建议打少量热溶胶固定)在安装电池包的时候,首先把两个四节包串联为一个十节包,这样有利于在接大功率线的时候,比较方便一点。具体方法可以参照上图。在串联五节包的时候,可以依据电路知识,千万注意别把线接错了避免短路。名称型号数量电池包五节22.3 机器人的程序设计建议老师一个房间一个房间调试,先迷宫后灭火,因为此方案是对每个房间设计独立的迷宫和灭火程序,比如调试四号

17、房间时可以在机器人执行三号迷宫程序前添加一个停止,延时100秒(或加一个永远循环while(1);),调试好四号房间后再把此断点去掉,继续按照这个方法调试下一个房间。2.3.1 初中组程序(图形化程序,解决方案里带有图形化程序原文件) 2.3.2 初中组程序(C语言程序)void main() /*声控启动*/while( digital(12)=0) /*开启伺服电机*/ start_process(kai(); stop(); sleep(2.0); motor(0,35); motor(2,30); sleep(0.2); /*左手迷宫至少有一个红外传感器能检测到障碍物*/ while(

18、digital(10)=1 | digital(11)=1 | analog(19)100 ) motor(0,60); motor(2,60); reset_system_time(); /*走0.4秒左右的左手迷宫,目的是方便接下来走右手迷宫*/ while(mseconds()200) zrmg(); zhengshache(); /*判断上面的条件循环是不是因为发现4号房间的火焰跳出来的*/ if( analog(6)200) fire4(); motor(0,-40); motor(2,40); sleep(0.1); while( digital(9)=1 | analog(18)

19、100) motor(0,-30); motor(2,30); motor(0,-30); motor(2,0); motor(0,10); motor(2,10); sleep(0.1); /*在3号房间的外板转弯后,通过架高的火焰探头来判断3号房间是否有火,有火直接去1、2号拿房间系数,没有火,搜索3号房间拿房间系数*/ if( analog(22)220) fire3(); reset_system_time(); while(mseconds()700L) zrmg(); while( digital(9)=0) zlmg(); reset_system_time(); /*如果没有发

20、现1号房间的火,从3号房间的巷道走1.2秒的倒右手迷宫*/ while(mseconds()200) drmg(); /*如果没有发现1号房间的火焰并且机器没有检测到白线,执行倒右手迷宫*/ while( analog(25)200 & analog(2)130) drmg(); /*判断条件循环跳出是不是因为发现了1号房间的火焰*/ if( analog(2)130) fire2(); fire1();void zlmg() /*左手迷宫*/ if( digital(9)=1 | analog(19)100) if( digital(9)=1) motor(0,30); motor(2,-3

21、0); motor(0,0); motor(2,-30); else motor(0,20); motor(2,-20); motor(0,0); motor(2,-20); else if( digital(10)=1 | digital(11)=1) if( digital(10)=1) motor(0,60); motor(2,40); motor(0,40); motor(2,40); else motor(0,60); motor(2,60); else motor(0,-70); motor(2,70); /*5 70*/ motor(0,20); motor(2,70); voi

22、d kai() init_expbd_servos(1); /*开伺服电机*/ servo0=100; servo5=3800; sleep(0.1);void guan() init_expbd_servos(1); /*关伺服电机*/ servo0=4800; servo5=0; sleep(0.1);void zrmg() /*右手迷宫*/ if( digital(9)=1 | analog(18)100) if( digital(9)=1) motor(0,-30); motor(2,30); motor(0,-30); motor(2,0); else motor(0,-20); m

23、otor(2,20); motor(0,-20); motor(2,0); else if( digital(7)=1 | digital(8)=1) if( digital(8)=1) motor(0,40); motor(2,60); motor(0,40); motor(2,40); else motor(0,70); motor(2,70); else motor(0,70); motor(2,-70); motor(0,70); motor(2,30); motor(0,20); motor(2,20); void zm() /*正向刹车灭火*/ motor(0,-10); moto

24、r(1,100); motor(2,-10); motor(3,-100); sleep(0.05); stop(); motor(1,100); motor(3,-100); sleep(0.5); stop();void tingzhi() while(1) stop(); void zhengshache() stop(); motor(0,-10); motor(2,-10); sleep(0.05);void zanting() stop(); sleep(2.0);void drmg() /*倒右手迷宫*/ if( analog(30)100) motor(0,-25); moto

25、r(2,25); motor(0,0); motor(2,25); else if( digital(15)=1) motor(0,-30); motor(2,30); motor(0,-20); motor(2,-20); else if( digital(14)=1) motor(0,-60); motor(2,-60); else motor(0,70); motor(2,-70); motor(0,-25); motor(2,-70); motor(0,-20); motor(2,-20); void ddrmg() /*倒右形迷宫*/ if( analog(30)100) motor

26、(0,-25); motor(2,25); motor(0,0); motor(2,25); else if( digital(15)=1) motor(0,-30); motor(2,30); motor(0,-20); motor(2,-20); else if( digital(14)=1) motor(0,-30); motor(2,-30); else motor(0,-20); motor(2,-50); void fire2() /*2号房间灭火*/ reset_system_time(); while(mseconds()400L) drmg(); motor(0,40); m

27、otor(2,-40); sleep(0.1); while(1) if( analog(31)130 | analog(2)130) zlmg(); while( analog(31)130) zlmg(); while( digital(9)=0 & analog(18)100) motor(0,35); motor(2,35); if( digital(9)=1) while( analog(2)130) zlmg(); else while( analog(2)130) zrmg(); tingzhi(); if(analog(28)-analog(29)10) motor(0,-80

28、); motor(2,80); if(analog(29)-analog(28)10) motor(0,80); motor(2,-80); motor(0,-80); motor(2,-80); void fm() /*反向刹车灭火*/ motor(0,30); motor(1,-100); motor(2,30); motor(3,100); sleep(0.1); stop(); motor(1,-100); motor(3,100); sleep(0.5); stop();void fire3() /*3号房间灭火*/ reset_system_time(); while(msecon

29、ds()700L) zzrmg(); reset_system_time(); while(mseconds()100 & digital(7)=0 & digital(8)=0) motor(0,20); motor(2,-20); motor(0,60); motor(2,20); else if( analog(18)130) dzmg(); while( analog(2)130) dzmg(); while(1) if( analog(31)15) motor(0,80); motor(2,-80); if(analog(28)-analog(29)15) motor(0,-80);

30、 motor(2,80); motor(0,-80); motor(2,-80); void fanshache() /*反向刹车*/ stop(); motor(0,30); motor(2,30); sleep(0.1);void fire1() /*1号房间灭火*/ while( analog(30)100) ddrmg(); while( analog(2)130) zrmg(); motor(0,10); motor(2,100); sleep(0.1); while(1) if( analog(2)130 ) zm(); while( digital(14)=0) motor(0,

31、-80); motor(2,-80); reset_system_time(); while(mseconds()130) drmg(); tingzhi(); if(analog(4)-analog(3)15) motor(0,100); motor(2,-100); if(analog(3)-analog(4)15) motor(0,-100); motor(2,100); motor(0,100); motor(2,100); void zzrmg() /*右形迷宫*/ if( analog(18)100) motor(0,-25); motor(2,25); motor(0,-20);

32、 motor(2,0); else if( digital(8)=1) motor(0,40); motor(2,60); motor(0,40); motor(2,40); else if( digital(7)=1) motor(0,60); motor(2,60); else motor(0,60); motor(2,35); void dzmg() /*倒左手迷宫*/ if( analog(30)100) motor(0,25); motor(2,-25); motor(0,25); motor(2,0); else if( analog(20)100) motor(0,25); mo

33、tor(2,-25); motor(0,-20); motor(2,-20); else if( analog(21)100) motor(0,-60); motor(2,-60); else motor(0,-70); motor(2,70); motor(0,-70); motor(2,-25); motor(0,-20); motor(2,-20); void fire4() /*4号房间灭火*/ while( digital(9)=0 ) zrmg(); motor(0,-40); motor(2,40); sleep(0.1); reset_system_time(); while(

34、mseconds()800L) zrmg(); zanting(); while( digital(9)=0) zlmg(); reset_system_time(); while(mseconds()100) ddrmg(); motor(0,30); motor(2,30); sleep(0.3); reset_system_time(); while(mseconds()130) zrmg(); while( analog(2)130) zrmg(); home4();void home4() /*4号房间灭火回家*/ while(1) if( analog(2)130) zm(); r

35、eset_system_time(); while(mseconds()130) drmg(); tingzhi(); if(analog(4)-analog(3)15) motor(0,100); motor(2,-100); if(analog(3)-analog(4)15) motor(0,-100); motor(2,100); motor(0,100); motor(2,100); void home3() /*3号房间灭火回家*/ while( analog(2)130) zrmg(); while(1) reset_system_time(); while(mseconds()130 & analog(31)130) zlmg(); tingzhi(); 2.4 机器人的使用首先打开机器人的电源开关,根据本方案提供的参考程序(请注意各传感器与机器人的接口一定要与程序接口相符,如果调整接口就必须修改程序中的相应

温馨提示

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

评论

0/150

提交评论