消防机器人设计报告.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

消防机器人设计报告

基于ATmega2560单片机的智能避障灭火小车

设计方案:

控制系统:

ArduinoMega2560是采用USB接口的核心电路板,具有54路数字输入输出,适合需要大量IO接口的设计。处理器核心是ATmega2560,同时具有54路数字输入/输出口(其中16路可作为PWM输出),16路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSPheader和一个复位按钮。ArduinoMega2560也能兼容为ArduinoUNO设计的扩展板。

该核心电路板能提供大量IO接口,因此为以后的传感器和功能拓展提供了便捷,同时搭配传感器拓展板,在使用和调试便捷性上优于其它单片机。

Arduino2560原理电路:

传感器:

方案一:光电循迹传感器+火焰传感器+红外线测距传感器

光电开关在一般情况下,由三部分构成,它们分为:发送器、接收器和检测电路。

它的检测头里也装有一个发光器和一个收光器,它的检测头里也装有一个发光器和一个收光器,但前方没有反光板。正常情况下发光器发出的光受光器是接收不到的,当有物体通过时挡住了光,并把光反射回来,受光器就接收到了光信号,输出一个开关信号。

当遇到黑色线格的时候,由于黑色吸收了大部分光线,因此光电开光就会输出电平变化,单片机接收到信号以后做出相应的动作。

火焰传感器的基本构成及原理:

火焰传感器由红外线接收管、电平比较电路、灵敏度调节电位器三部分组成。通过红外线接收管探测周围环境,当接收到较强的红外线的时候,由电平比较器反馈给单片机电平变化信号。可通过电位器调节火焰传感器的灵敏度。

红外测距传感器:

红外测距传感器由四部分构成,红外线二极管,红外线接收管,电平比较器,距离调节电位器。

通过红外线二极管发射出红外线,接收管收到物体反射的红外线,通过电平比较器后输出一个变化电平信号。通过电位器调节,可以控制接收管给电平比较器的信号,而达到控制探测距离的目的。但由于红外线测距模块对火焰比较敏感,因此用在消防机器人上面不是很合适。

方案二:光电循迹传感器+火焰传感器+超声波传感器

该方案使用了超声波测距模块,利用超声波发射和接收模组,通过一定频率的超声波并接收该频率的反射波,通过两者的时差进行计算,准确得出障碍距小车的距离,屏蔽了火焰对测距模块的影响,能有效应用于避障机构。

动力机构:

方案一、四线二相步进电机*2

该方案中,步进电机能够按照特定的步进角进行运转,设定好步数,电机则运行相应的角度以下图为例:

虽然步进电机能很准确的对小车进行控制,但是由于其功耗和控制电路的因素,该方案未采用。

方案二、直流减速电机*2

使用L298N驱动两个直流电机,L298N驱动电路如下图:

stop();

relay_L_H();

}

else

{

straight();

relay_L_K();

}

if(digitalRead(41)==0)

{

stop();

relay_R_H();

}

else

{

straight();

relay_R_K();

}

//***********TrackStart**********//

if(analogRead(A4)500digitalRead(31)==1analogRead(A0)870)

{

left();

straight();

Serial.print(A);

}

else

{

straight();

}

if(digitalRead(31)==1analogRead(A4)500analogRead(A1)870)

{

right();

straight();

Serial.print(B);

}

else

{

straight();

}

}

}//*******************MainEnd***********************//

//*******************************************************//

//********************MotorControl**********************//

//**************************************

文档评论(0)

157****0898 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档