电教馆灭火方案.doc_第1页
电教馆灭火方案.doc_第2页
电教馆灭火方案.doc_第3页
电教馆灭火方案.doc_第4页
电教馆灭火方案.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

资 料电教馆灭火机器人方案参考手册总页数正文附录生效日期: 编制:杭州热博科技有限公司审核:批准:目录一 设计思路31 灭火机器人的主要配置32 灭火机器人的搜索策略53 灭火机器人的灭火回家策略5二 机器人装配61 机器人底盘搭建62 机器人顶盘搭建93 机器人整体拼装16三 机器人调试181 马达调试182 运行调试18四 常见问题分析191 机器人运行不正常192机器人找火焰距离不够远怎么办?193机器人找火不准怎么办?19五 附页:样例程序20一 设计思路1 灭火机器人的主要配置名称图片数量(单位)主机主控制器1块声控开关启动控制器1个红外测障迷宫行走判断是否存在障碍物13个360Z字型马达(12V)机器人动力部分4个灭火高速轮摩擦力大,尺寸居中4个红外复眼高效判断火焰方位,更快速的走向火焰,当拨码都在数字端时地址为0x40,将1号拨码拨向字母端时地址为0x42,将2号拨码拨向字母端时地址为0x44,将两个都拨向字母端时地址为0x462个大功率驱动模块用于驱动电机更快行走1块1片2200ma16v锂电池包1片8v1000ma锂电池包电源,提供稳定的驱动电机的电流和电压2个灰度传感器检测地面白线,判断房间号2个装配套件安装套件工具及器材1套灭火装配结构件整体搭建所用的结构件1套灭火风扇高速风扇,快速扑灭火焰,效率更高,带小功率驱动模块2个2 灭火机器人的搜索策略根据电教馆2010年的比赛规则,在搜索过程中搜索越多的房间系数越大,故搜索房间时先搜索完所有房间再进行灭火。具体房间搜索顺序为4-3-1-2,如果前3个房间都没有火焰,直接进入2号房间。在搜索房间过程中为了尽量节省时间,使用双头行走,节约转向时间并且避免转向后的方位判断,使代码更趋简单。3 灭火机器人的灭火回家策略在扫描全部房间后,根据记录在机器人中的着火房间号,机器人进行灭火,进入着火房间后使用火焰复眼,准确寻找火源,并结合高效风扇,在最短时间内扑灭火焰。根据灭火的房间不同及规则中回家不能进入其他房间的原则,选择灭火房间和终点之间距离最短的路径到达终点。二 机器人装配1 机器人底盘搭建1) 马达整体安装如下图:使用5mm螺丝和将马达固定在底板上。并使用8mm螺丝将轮胎固定在轮轴上使用8mm螺丝和法兰螺母安装灰度,前后各安装一个安装50mm平头铜柱在底板上。将灭火电池绑在电池安装条上,使电池不会上下左右晃动。使用8mm螺丝,螺母,将电池安装在底板上。2)大功率的连接见下图:地板与大功率之间使用25mm铜柱连接,大功率使用50mm铜柱保持间隙以保护大功率,在主机上连接50mm铜柱以安装复眼和风扇。安装大功率和主机2 机器人顶盘搭建1) 风扇连接见下图使用8mm螺丝,六角小螺母将风扇固定在风扇板上。2)复眼的安装如下图:使用10mm单头铜柱,8mm螺丝,螺母,绝缘垫片安装复眼安装时调节风扇前后位置,使风扇不会打在复眼上安装风扇和复眼完毕,侧面视图。使用8mm螺丝将风扇复眼安装在主机和大功率上面。使用8mm螺丝将上板安装到底板上面将主机大功率使用8mm螺丝安装在底板相应的孔位上。3 机器人整体拼装1) 机器人整体拼装安装见下图:使用5cm铜柱将上下板连接,灰度,红外和声控的安装根据程序设置合适的位置红外安装及接口和检测距离见下图:sjhwz2 digital(5)搜救红外左2,接数字5号口,检测左面墙壁的距离在35厘米左右。qzhw digital(0)前左红外,接数字0号口,检测左面墙壁的距离在23厘米左右。qzhw45 digital(1) 前左45度红外,接数字1号口,检测左面墙壁的距离在10厘米左右。qzjhw digital(2) 正前面红外,接数字2号口,检测前面墙壁的距离在30厘米左右。sjhwy2 digital(6) 搜救红外右2,接数字6号口,检测右面墙壁的距离在35厘米左右。qyhw digital(4) 前右红外,接数字4号口,检测右面墙壁的距离在23厘米左右。qyhw45 digital(3) 前右45度红外,接数字3号口,检测右面墙壁的距离在10厘米左右。hjhwy2 digital(7) 回家红外右2,接数字7号口,检测右面墙壁的距离在35厘米左右。hyhw analog(15) 后右红外,接模拟15号口,检测右面墙壁的距离在23厘米左右。hyhw45 analog(14) 后右45度红外,接模拟14号口,检测右面墙壁的距离在10厘米左右。hzjhw analog(13) 正后面红外,接模拟13号口,检测后面墙壁的距离在30厘米左右。hzhw45 analog(12) 后左45度红外,接模拟12号口,检测左面墙壁的距离在10厘米左右。hzhw analog(11) 后左红外,接模拟11号口,检测左面墙壁的距离在23厘米左右。另外:声控传感器接模拟10口,前灰度传感器接模拟8口,后灰度接模拟9口注:所有传感器的黑线接在主机的左边(主机显示屏朝外)方法二:机器人的显示屏在右边,向前的方向为正向。方法一:机器人前面和后面各安装了一个复眼,每个复眼的地址通过拨码盘来确定,前面的复眼拨码盘上两个白色拨码都在数字的那一边,也就是机器人的正向。复眼的使用见复眼使用指南。2) 传感器及马达的连接关于马达接线,首先要区分机器人的正向和反向,区分了正向和反向后再区分机器人的左边和右边及马达的前后转向。如何区分机器人的正向和反向见上图。区分机器人的正向和反向后,我们接着看如何将马达、电源、信号及大功率整合在一起的,见下图:此图为机器人的正方向,为了更清楚的看清如何接线,我将此图中的大功率直接拿出来,下图的大功率和上图的方向一致。机器人马达是固定的,轮子在前进的过程中是固定不变的,因此机器人转弯也不同与我们日常生活中的汽车,在机器人人的控制中,如此图,左边的两个马达是一路,主机给它们输送相同的控制信号,同理,右边的两个马达也是一路,也输送相同的控制信号。大功率单独供电,在供电的时候一定要注意电源的正负。如此图,大功率的电源接口,右边是负(两个口中靠近板子中间的那个口),左边是正。在马达的转向上,如果说我们给1号马达送的是+50的速度,那么接在1号口的马达应该向前进,如果是倒退,那么说明马达线接反了,将马达的红线和黑线的位置互换就行了,另外一边同理,具体的接线和测试见下面前面说了如何区分机器人的前后,那么怎么来区分左右马达的编号和为什么要区分马达的编号。不管什么机器,软件和硬件是要对应的,就是说机器人的硬件接线和程序中的设置是要一致才行。习惯上,我们把左边的马达接马达0号口,右边的马达接马达1号口。上面说到了如何将马达接到大功率上面,那么主机的马达驱动信号是如何送给大功率的呢?就是图中的这个端口,图中的这个端口是接右边的马达的,所以主机上的M1(就是MOT1,也是是马达1号口)送出的信号就接到这个口子来 此处为电源接口,一定要注意正负M0,马达0号输出口机器人上右边的马达的接口。机器人上左边的马达的接口(一个马达一个插口),同一端口可并联若干马达。图中左边的黑线是电源的负极,红线是电源的正极,接线的时候一定要注意千万别接错,否则会烧掉大功率。有些大功率在此电源口的左边会有一个小点的黑色的电源插口,那是小功率的取电的位置,同样也注意左边是电源正极右面是电源负极。如果是没有此口的大功率,小功率取电的时候直接和图中的插口并联,负极接左边,正极接右边小功率接线类似大功率,具体见下图:此插头接主机上的M2、M3端口。如果是装在机器人的正向,那么接M2口,如果是反向接M3口。在灭火的时候,如果风扇不转,将此插头反向180度后重新插入(此插头不能改线,相当于将红黑线互换)电源接头,灭火风扇使用时间很短,使用的频率也很小,所以取电是直接从给大功率供电的电源上获取,将红黑线分别并入大功率电源插口的正负级。要注意的是,有些大功率在电源接口旁边还有一个小的电源接口,小功率也可直接在此口取电。三 机器人调试1 马达调试马达的调试,主要是看马达的正反转是否正确。由于本方案是双头进攻,所以首先应该定义好机器人的前后方,这里可以根据个人习惯随便定义。定义好了以后,机器人朝前,左边马达通过大功率转接后接在主机的0号马达接口,右边马达接在主机的1号马达接口。再写一个让马达一直前转或是一直后转的小程序, 程序编写请看。下载运行,看是否与自定义的前后方相符,如果不相符,改变两根马达线的方向即可。马达测试程序如下: 下载此程序后,首先检查左边的马达信号是否是由主机的M0号口送出的信号(先检查大功率,再检查主机),右边同样检查。正确后运行机器,如果是向前进,接线正确;如果是转圈,检查是左边还是右边倒退,将倒退的那边的所有的马达线的红黑线互换。a) 马达与大功率模块的连接:首先将左右两边的马达分别接入大功率驱动模块的六个绿色插槽中,再将大功率与主机的连接线接入大功率的黑色插槽,线的另一端接入主机的0号马达接口和1号马达接口(左边马达接0号,右边马达接1号)。b) 复眼传感器的连接:复眼传感器有两个接口,首先将两个复眼用一根四芯线连接起来,再用一根四芯线从某一复眼传感器上接入扩展板中的I2C接口这样,两个复眼传感器就和主机连接成功。注意:连接主机的四芯线及传感器的黑线应该接在主机的左边.(主机显示屏朝外)复眼传感器的连接如图:所有连接线的黑线都在主机的左边注:复眼传感器的拨码:将前面复眼传感器拨码盘上的两个都拨向朝数字的一端,地址为0x40,后面复眼传感器拨码盘上的1号拨码拨向朝字母的一端,地址为0x42,2号拨码拨向字母一端地址为0x44,两个拨码全部拨向字母一端时地址为0x46。 注:复眼模块使用iic总线方式通讯,由于总线速度较低,频繁使用会产生处理速度的瓶颈,读取复眼有时一要读取端口,二要读取端口数值,以100kb/s 的iic总线速度,每次iic通讯将传送10多个字节,耗费约10毫秒,花费近十万个指令周期,故复眼端口和数值放在一个命令中读取,命令10,11,12返回值的高4位为端口号,低10位为数值,读取方式如下:int iPort;int iData;iData = datai2c(0x40, 10); /读取最小值端口和数据iPort = iData 12; /获取高4位的端口号iData &= 0x3ff;/获得低10位的红外数值c)主机电源和大功率模块电源的连接:8V电池给主机单独供电,16电池给大功率供电。将16V电源正确的接入大功率的电源接口(注意大功率电源接口的正负极,接反会烧坏大功率)。打开大功率电源开关,看指示灯是否会亮。指示灯亮表示电源连接成功。d)主机电源和小功率模块的连接:将大功率使用的电源并联接口接在灭火风扇驱动模块给其供电,灭火电机接口使用M2,M3不可调速电机接口。使用pwm连接线连接后开机试验,发现风扇反转时,将风扇电机的导线正负极互换一下即可(将插头拔出,反向180度后插入)。三 机器人调试1 马达调试马达的调试,主要是看马达的正反转是否正确.由于本方案是双头进攻,所以首先应该定义好机器人的前后方,这里可以根据个人习惯随便定义。定义好了以后,机器人朝前,左边马达通过大功率转接后接在主机的0号马达接口,右边马达接在主机的1号马达接口。再写一个让马达一直前转或是一直后转的小程序, 程序编写请看。下载运行,看是否与自定义的前后方相符,如果不相符,改变两根马达线的方向即可。2 运行调试运行调试,主要是在机器人的硬件部分都正常的情况下看它运行是否正常。机器人的电压不同,它的运行速度就不同,在运行样例程序时就可能出现转弯撞墙的情况。这时就应该对程序进行修改,主要的是改马达的转速。如果转弯时出现转动太快,左右甩动太频繁,就应该把转弯速度适当得改小。相反,出现转不动的情况就应该适当得改大。至此,机器人整体调试基本完成。四 常见问题分析1 机器人运行不正常如果出现机器人运行不正常的情况,首先应该检查马达是否能够正常工作.如果发现有马达不动,检查马达与大功率模块是否连接上还是马达本身坏了,如果马达坏了,换马达.也有可能是大功率驱动模块与主机连接不正常.还有可能是大功率本身的问题,检测大功率是否正常.检测方法是在确认了大功率与主机连接正常的情况下,下载一个小程序,让马达前进一段时间,再后退一段时间,看是否能够正常运行.另外,可能是供大功率模块的电池没电导致机器人不能正常运行.还有可能是供主机的电池没电导致主机不能正常工作.如果发现机器人找火焰不正常,检查复眼连接是否正常,再看复眼的指示灯是否会变动,如果会变动,再看复眼的拨码是否正确.2机器人找火焰距离不够远怎么办?如果说是找火焰的距离不够远,这可能有两方面的问题,一是检测传感器能够检测的距离不够远,还有一个就是程序设计上的问题。这个方案里的火焰传感器一般检测距离都在2米以上,这个距离在比赛中已经足够了,如果达不到这个检测的距离,可能是传感器本身的问题,这样的话就只有换传感器了,也可能是程序的问题;如果是程序设计上的问题,就是说,离火焰越近,数值越小,达到10左右,离火焰越远,数值越大,一般在900左右。所以,在程序数值设计上要根据实际情况来定。3机器人找火不准怎么办?对于找火不准的地方,其实就是在左右调整的过程中,由于转速过快,转过头以后又得回转,这样就出现左右调整而不进攻的情况了;还有可能就是机械结构的问题,由于传感器的安装方位的不对而导致找火不准了。这样的情况只要把传感器的方位调整过来就行了,问题不大。五 附页:样例程序#define qzhw digital(0)#define qzhw45 digital(1)#define qzjhw digital(2)#define qyhw45 digital(3)#define qyhw digital(4)#define hzhw analog(11)#define hzhw45 analog(12)#define hzjhw analog(13)#define hyhw45 analog(14)#define hyhw analog(15)#define sjhwz2 digital(5)#define qhd analog(8)#define hhd analog(9)#define sk analog(10)#define data40 (datai2c(0x40,10)&0x3ff)#define data42 (datai2c(0x42,10)&0x3ff)#define qhdzhi 650#define hhdzhi 650void qzmg(void);void qzmg1(void);void qymg(void);void qymg1(void);void hzmg(void);void hzmg1(void);void hymg(void);void mg1(void);void mg2(void);void mg3(void);void mg4(void);void mh4(void);void mh3(void);void mh2(void);void mh1(void);void main() while(sk500) lcd_gotoxy(0,0); printf(%4d%4d,qhd,hhd); lcd_gotoxy(0,1); printf(%4d%4d,data40,data42); motor(0,50);motor(1,50);msleep(300); mg4();void mg4(void) while(qhdqhdzhi)qzmg(); if(data40500)while(hhdhhdzhi)qzmg();mg3(); elsemh4(); void mg3(void) while(qhdqhdzhi)hzmg(); reset_system_time(); while(mseconds()500)hzmg(); while(hhdhhdzhi)hymg(); if(data42500)while(qhdqhdzhi)hymg();mg1(); elsemh3(); void mg2(void) while(1) if(hhdhhdzhi)break; else if(data40hhdzhi)hzmg1(); while(qhdqhdzhi)hzmg1(); while(hyhw500)hzmg(); while(hhdhhdzhi)hymg(); while(qhdqhdzhi)hymg(); reset_system_time(); while(mseconds()qhdzhi)motor(0,10);motor(1,80); while(hhdhhdzhi)motor(0,10);motor(1,80); while(qzhw=1)qzmg(); reset_system_time(); while(mseconds()200)qzmg(); while(qyhw=0|qzhw=0|hyhw500|sjhwz2=0)qymg1(); reset_system_time(); while(mseconds()600)mg2(); else mh1(); void mh4(void) while(hhdhhdzhi) if(datai2c(0x40,7)3)motor(0,70);motor(1,20); else motor(0,50);motor(1,50); while(1) if(qhdqhdzhi)motor(0,-30);motor(1,-30);motor(2,100);msleep(50);stop();motor(2,100);msleep(150);stop();while(1) else if(datai2c(0x40,7)3)motor(0,50);motor(1,20); else motor(0,50);motor(1,50); void mh3(void) while(qhdqhdzhi) if(datai2c(0x42,7)3)motor(0,-20);motor(1,-75); else motor(0,-50);motor(1,-35); while(1) if(hhdhhdzhi)motor(0,30);motor(1,30);motor(3,100);msleep(50);stop();motor(3,100);msleep(150);stop();while(1) else if(datai2c(0x42,7)3)motor(0,-30);motor(1,-50); else motor(0,-55);motor(1,-50); void mh2(void) while(1) if(hhdhhdzhi)motor(0,30);motor(1,30);motor(3,100);msleep(50);stop();motor(3,100);msleep(150);stop();while(1) else if(datai2c(0x42,7)3)motor(0,-20);motor(1,-70); else motor(0,-55);motor(1,-55); void mh1(void) while(hhdhhdzhi)qymg(); while(qhdqhdzhi)motor(0,-80);motor(1,-10); while(hyhw500)hzmg(); while(hhdhhdzhi)hymg(); while(qhdqhdzhi) if(datai2c(0x42,7)3)motor(0,-20);motor(1,-70); else motor(0,-60);motor(1,-60); while(1) if(hhdhhdzhi)motor(0,30);motor(1,30);motor(3,100);msleep(50);stop();motor(3,100);msleep(150);stop();while(1) else if(datai2c(0x42,7)3)motor(0,-10);motor(1,-50); else motor(0,-65);motor(1,-60); void qzmg(void)

温馨提示

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

评论

0/150

提交评论