消防机器人设计报告.docx

上传人:b****3 文档编号:12719046 上传时间:2023-04-21 格式:DOCX 页数:13 大小:66.40KB
下载 相关 举报
消防机器人设计报告.docx_第1页
第1页 / 共13页
消防机器人设计报告.docx_第2页
第2页 / 共13页
消防机器人设计报告.docx_第3页
第3页 / 共13页
消防机器人设计报告.docx_第4页
第4页 / 共13页
消防机器人设计报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

消防机器人设计报告.docx

《消防机器人设计报告.docx》由会员分享,可在线阅读,更多相关《消防机器人设计报告.docx(13页珍藏版)》请在冰豆网上搜索。

消防机器人设计报告.docx

消防机器人设计报告

消防机器人设计报告

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

一、设计方案:

1、控制系统:

ArduinoMega2560是采用USB接口的核心电路板,具有54路数字输入输出,适合需要大量IO接口的设计。

处理器核心是ATmega2560,同时具有54路数字输入/输出口(其中16路可作为PWM输出),16路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSPheader和一个复位按钮。

ArduinoMega2560也能兼容为ArduinoUNO设计的扩展板。

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

Arduino2560原理电路:

2、传感器:

方案一:

光电循迹传感器+火焰传感器+红外线测距传感器

光电开关在一般情况下,由三部分构成,它们分为:

发送器、接收器和

检测电路。

它的检测头里也装有一个发光器和一个收光器,它的检测头里也装有一个发光器和一个收光器,但前方没有反光板。

正常情况下发光器发出的光受光器是接收不到的,当有物体通过时挡住了光,并把光反射回来,受光器就接收到了光信号,输出一个开关信号。

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

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

火焰传感器由红外线接收管、电平比较电路、灵敏度调节电位器三部分组成。

通过红外线接收管探测周围环境,当接收到较强的红外线的时候,由电平比较器反馈给单片机电平变化信号。

可通过电位器调节火焰传感器的灵敏度。

红外测距传感器:

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

通过红外线二极管发射出红外线,接收管收到物体反射的红外线,通过电平比较器后输出一个变化电平信号。

通过电位器调节,可以控制接收管给电平比较器的信号,而达到控制探测距离的目的。

但由于红外线测距模块对火焰比较敏感,因此用在消防机器人上面不是很合适。

方案二:

光电循迹传感器+火焰传感器+超声波传感器

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

3、动力机构:

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

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

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

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

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

该驱动电路可两路直流电机或一路步进电机,控制直流电机时,IN1、IN2、IN3、IN4分别接单片机数字IO口,通过IO口控制电机的转动方向,ENA、ENB接单片机PWM输出口,控制电机的转速。

该方案电路简单,控制方便,故采用该方案。

4、灭火风扇:

方案一:

采用模块化设计,在调试和安装上方便快捷。

用两个直流小电机作为灭火装置,由单片机IO口控制,并通过三极管扩流,由L7805将12V锂电池电压稳压为5V,供全部系统使用,在测试过程中发现,当火焰传感器探测到火焰,电机转动时使得系统板电压骤降,导致单片机不断复位,达不到灭火的效果。

方案二:

通过给单片机系统单独供电,用IO口控制两个继电器来间接控制灭火小电机,电机电源采用电机驱动板上的5V电源接口。

该方案解决了单片机因电压不足而无限重启的现象,使得单片机系统能够稳定运作。

因此我采用该方案。

5、电源模块:

现有2200mah航模锂电池一块,输出电压11.1V,最大放电能力30C,完全满足小车需要。

采用两路L7805单独给单片机系统和电机驱动系统供电,传感器由单片机系统电源供电,灭火风扇由电机驱动系统供电。

电源模块电路原理图如下:

6、数据交互模块:

传感器的数据除了传递给小车系统之外,还需要通过显示屏呈现出来,同样的,有两套方案,

方案一:

系统接收到数据之后直接处理,然后显示到LCD1602。

该方案使用到1602液晶,在arduino上使用液晶来显示数据参数不是很困难,但是由于小车所使用到的单片机系统为8位单片机,虽然已经有很丰富的IO接口,但数据处理能力着实一般,在使用液晶和单总线的DIS18B20温度传感器时,会使得系统的操作显得很慢,导致程序不能够正常运行。

而且1602液晶只能显示两行、16个字符,对于该小车来说着实有点紧张。

方案二:

单片机在处理传感器数据的同时,将数据通过串口转发给另一单片机,在另一单片机进行处理后,将参数显示到2004液晶上面,将控制信号反馈给主控单片机,最大限度的使主控单片机的速度不受影响。

由于本系统采用集成串口的mega2560单片机与mega328p单片机,只需要通过TXD和RXD两根线进行通信。

而且能将部分控制指令直接分配给mega328p,因此,提高了系统的稳定性和工作效率。

因此我采用方案二。

二、小车结构:

电源模块电机驱动模块灭

车四路循迹模块火焰传感器模块

灭火模块数据交互模块三、程序设计:

小车从安全位置出发,无固定路线,在火焰传感器的引导下自行选择靠近火源的路线行走,距离火源一定距离时停下,进行灭火操作。

灭火完成后继续前往下一个火源。

途中遇到障碍物时能够自行避开障碍物,寻找离火源最近的路线前进。

小车能够自行判断自己在场地中的位置,防止走出场地,其位置判断与火源计数以及报警部分由mega328p进行。

部分程序:

//mega2560部分//

intMotor_L=4;

intMotor_R=5;

intTrack_L=30;

intTrack_0=31;

intTrack_1=A4;

intTrack_R=32;

intFlame_L_D=40;

intFlame_R_D=41;

intFlame_L_A=A0;

intFlame_R_A=A1;

intRelay_L=A10;

intRelay_R=A11;

intF_L_A=0;

intF_R_A=0;

charD;

voidsetup()

{

pinMode(4,OUTPUT);

pinMode(5,OUTPUT);

pinMode(22,OUTPUT);

pinMode(23,OUTPUT);

pinMode(24,OUTPUT);

pinMode(25,OUTPUT);//Motor_L&&Motor_R.

pinMode(30,INPUT);

pinMode(31,INPUT);

pinMode(A4,INPUT);

pinMode(32,INPUT);//Track_L&&Track_0&&Track_R

pinMode(40,INPUT);

pinMode(41,INPUT);

pinMode(A0,INPUT);

pinMode(A1,INPUT);//FlameDigital&&AnalogInput

pinMode(A10,OUTPUT);

pinMode(A11,OUTPUT);//RelayL&R

Serial.begin(9600);

}

voidloop()

{

F_L_A=analogRead(A0);

F_R_A=analogRead(A1);

while

(1)

{//**********Flame******//

if(digitalRead(40)==0)

{

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)>500&&digitalRead(31)==1&&analogRead(A0)<870)

{

left();

straight();

Serial.print("A");

}

else

{

straight();

}

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

{

right();

straight();

Serial.print("B");

}

else

{

straight();

}

}

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

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

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

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

//***********Straight**********//

voidstraight(void)

{

if(digitalRead(30)==1&&digitalRead(32)==1)

{

digitalWrite(22,HIGH);

digitalWrite(23,LOW);

digitalWrite(24,HIGH);

digitalWrite(25,LOW);

analogWrite(4,255);

analogWrite(5,240);

}

elseif(digitalRead(30)==0)

{

digitalWrite(22,HIGH);

digitalWrite(23,LOW);

digitalWrite(24,HIGH);

digitalWrite(25,LOW);

analogWrite(4,255);

analogWrite(5,0);

}

elseif(digitalRead(32)==0)

{

digitalWrite(22,HIGH);

digitalWrite(23,LOW);

digitalWrite(24,HIGH);

digitalWrite(25,LOW);

analogWrite(4,0);

analogWrite(5,240);

}

}

//************Stop*************//voidstop(void)

{

digitalWrite(22,HIGH);

digitalWrite(23,LOW);

digitalWrite(24,HIGH);

digitalWrite(25,LOW);

analogWrite(4,0);

analogWrite(5,0);

}

//************Back***************//

voidback(void)

{

digitalWrite(22,LOW);

digitalWrite(23,HIGH);

digitalWrite(24,LOW);

digitalWrite(25,HIGH);

analogWrite(4,250);

analogWrite(5,230);}

//***********Left**************//voidleft(void)

{

digitalWrite(22,LOW);

digitalWrite(23,HIGH);

digitalWrite(24,HIGH);

digitalWrite(25,LOW);

analogWrite(4,240);

analogWrite(5,255);

delay(700);

}

//**********Right*************//voidright(void)

{

digitalWrite(22,HIGH);

digitalWrite(23,LOW);

digitalWrite(24,LOW);

digitalWrite(25,HIGH);

analogWrite(4,255);

analogWrite(5,255);

delay(600);

}

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

//********************Relay**************************//

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

//*****************Relay_L***********************//

voidrelay_L_H(void)

{

digitalWrite(A10,HIGH);

delay(600);

}

voidrelay_L_K(void){

digitalWrite(A10,LOW);}

//*******************Realay_R***********************//

voidrelay_R_H(void){

digitalWrite(A11,HIGH);delay(600);

}

voidrelay_R_K(void){

digitalWrite(A11,LOW);}

//mega328p串口通讯及LCD测试程序//#include

#include

charD;

LiquidCrystal_I2Clcd(0x27,20,4);//settheLCDaddressto0x27fora16charsand

2linedisplay

voidsetup()

{

lcd.init();//initializethelcd

lcd.backlight();

lcd.print("X=");

lcd.setCursor(0,1);

lcd.print("Y=");

Serial.begin(9600);}

voidloop()

{

D=Serial.read();

lcd.setCursor(3,0);

if(Serial.read()=='A')

{

lcd.print("X");

}

lcd.setCursor(3,1);

if(Serial.read()=='B')

{

lcd.print("Y");

}

}

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1