灭火小车设计报告DOC.docx

上传人:b****6 文档编号:6975505 上传时间:2023-01-13 格式:DOCX 页数:16 大小:788.67KB
下载 相关 举报
灭火小车设计报告DOC.docx_第1页
第1页 / 共16页
灭火小车设计报告DOC.docx_第2页
第2页 / 共16页
灭火小车设计报告DOC.docx_第3页
第3页 / 共16页
灭火小车设计报告DOC.docx_第4页
第4页 / 共16页
灭火小车设计报告DOC.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

灭火小车设计报告DOC.docx

《灭火小车设计报告DOC.docx》由会员分享,可在线阅读,更多相关《灭火小车设计报告DOC.docx(16页珍藏版)》请在冰豆网上搜索。

灭火小车设计报告DOC.docx

灭火小车设计报告DOC

 

 

《综合课程设计》

报告

 

实践课题:

灭火小车

 

一、实验内容-2-

二、基本原理-2-

1、单片机最小系统:

-2-

2、电源模块:

-2-

(1)可调稳压:

-2-

(2)5V稳压:

-3-

3、电源-3-

4、电机:

-3-

5、电机驱动:

-3-

6、传感器:

-3-

(1)指南针模块:

-3-

(2)火焰传感器:

-3-

三、设计思路-4-

四、硬件电路-6-

1、指南针部分:

-6-

2、L298N电机驱动模块-13-

3、电源电路:

-15-

4、火焰传感器:

-16-

五、实验程序流程框图-18-

六、调试与结果分析-19-

 

一、实验内容

在直径为3米的圆形区域内,放上火源。

将小车放置在圆心,寻找火源并将其扑灭。

二、基本原理

各模块简介

1、单片机最小系统:

采用stc12c5a60s2单片机,它比普通的51单片机多拥有2个ccp模块,在小车的制作中,可以输出pwm波,对小车的速度进行调整和控制。

晶振采用11.0592M晶振,不能使用12M的晶振,这样才能和GY-26指南针模块进行通信。

2、电源模块:

(1)可调稳压:

采用LM2576-adj稳压芯片,输入为16.8V,输出为7-16.8V可调。

主要用于提供电机电压。

(2)5V稳压:

采用7805稳压芯片,输入9V电压(通过可调稳压模块),输出5V。

主要用于最小系统、各传感器供电、

3、电源

使用16.8V航模电池,功率高,波动小,耐久性好。

4、电机:

采用TT减速电机。

便宜实惠。

不过在稳定性、精度和轮胎抓地力上效果不好。

如果没有配合光电编码器形成内反馈会经常出现双杆电机有转数差,轮胎打滑等情况使得调试更加麻烦。

5、电机驱动:

采用L298n驱动芯片。

双H桥驱动电路,同时驱动两个直流电机或一个4相步进电机。

输入电压为7V-24V,驱动电流为2A,可以很有效的驱动两个小型点击。

6、传感器:

(1)指南针模块:

采用简单的GY-26指南针模块。

主要在小车中用于定位。

详细使用方法在后面程序部分会提到。

(2)火焰传感器:

可以检测火焰或者波长在760纳米~1100纳米范围内的光源,打火机测试火焰距离为80cm,对火焰越大,测试距离越远。

采用LM339电压比较器,输出为数字量。

三、设计思路

1、火源寻找定位:

这部分最为重要。

如果没法寻找到火源,就无法对火源进行处理。

寻找思想如下:

先将小车放置在圆心处,原地旋转360度对火源进行寻找。

若没有找到前进80cm寻找前方的火源。

若没有找到则依次进入后、左、右等地方寻找火源,在此期间若找到火源进入灭火部分,若没有找到则继续寻找。

若在中心、前、后、左、右都没有找到火源,则蜂鸣器响9声,提示寻找失败或没有火源。

图中较大圈为所需寻找半径,较小圈为传感器探测范围。

可以发现,此方案还是有存在一些探寻盲区。

有待改进。

2、灭火部分:

若火焰传感器探测到火源,进入灭火部分。

小车由3个火焰传感器组成,分别面向前方、左前方、右前方(前方传感器最不灵敏,为离火焰为20cm左右可以探测到火焰。

左前方和右前方传感器可以探测80cm左右的火焰)。

当左前方和右前方的传感器看到火源时,小车左右摇摆前进,指导中间传感器看到火源时,小车停下,进行灭火。

这是,灭火风扇启动,进行灭火,直到三个火焰传感器都检测不到火源时,灭火结束。

四、硬件电路

1、指南针部分:

采用GY-26指南针模块。

GY-26是一款低成本平面数字罗盘模块。

输入电压低,功耗小,体积小。

其工作原理是通过磁传感器中两个相互垂直轴同时感应地球磁场的磁分量,从而得出方位角度,此罗盘以RS232协议,及IIC协议与其他设备通信。

该产品精度高,稳定性高。

并切具有重新标定的功能,能够在任意位置得到准确的方位角,其输出的波特率是9600bps,数据以询问方式输出,具有硬铁校准功能磁偏角补偿功能,适应不同的工作环境。

模块及引脚定义如下图:

该模块在使用前需要进行矫正。

矫正方法如下:

在模块的第9(CAL)引脚,接一按键至电源负极(GND),当第一次按下按键时,进入校准状态,LED常亮起。

保持模块水平,缓慢旋转1周(旋转1周时间大约1分钟)。

再次按下按键LED灭,校准结束。

模块输出格式,每帧包含8个字节:

①.Byte0:

0x0D(ASCII码回车)

②.Byte1:

0x0A(ASCII码换行)

③.Byte2:

0x30~0x33角度百位(ASCII0~3)

④.Byte3:

0x30~0x39角度十位(ASCII0~9)

⑤.Byte4:

0x30~0x39角度个位(ASCII0~9)

⑥.Byte5:

0x2E(ASCII码小数点)

⑦.Byte6:

0x30~0x39角度小数位(ASCII0~9)

⑧.Byte7:

0x00~0xFF校验和(仅低8bit)

注:

校验和Byte7=(Byte0+Byte1+…….Byte6)结果仅取低8bit

例:

一帧数据<0x0D-0x0A-0x33-0x35-0x39-0x2E-0x36-0x1C>=359.6°

该模块与单片机的连线图如下:

在模块的使用过程中,要与单片机进行串口通信。

其部分程序如下:

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

//串口中断

voidserial_serve(void)interrupt4

{

if(RI==1)

{

RI=0;

BUF[cnt]=SBUF;

cnt++;

}

}

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

//串口初始化

//9600bps@11.059MHz

voidinit_uart()

{

TMOD=0x20;

TH1=0xfd;

TL1=0xfd;

SCON=0x50;

PS=1;//串口中断设为高优先级别

TR1=1;//启动定时器

EA=1;

ES=1;

}

//*********串口数据发送******************

voidSeriPushSend(ucharsend_data)

{

SBUF=send_data;

while(!

TI);

TI=0;

}

 

由于在使用中,指南针模块返回的数值是ASCII码,所以还要对其进行计算。

其部分程序如下:

(0X30-0X39对应数字0-9)

voidturn()//将目标角度调整180°

{

compass();

if(thun==0x31)

{

if(tten>0x37)

{

ehun=0x30;

eten=tten-8;

}

elseif(tten>0x31&&tten<0x38)

{

ehun=0x33;

eten=tten-2;

}

elseif(tten<0x32)

{

ehun=0x32;

eten=tten+8;

}

}

if(thun==0x30)

{

if(tten>0x31)

{

ehun=0x32;

eten=tten-2;

}

elseif(tten<0x32)

{

ehun=0x31;

eten=tten+8;

}

}

if(thun==0x32)

{

if(tten>0x37)

{

ehun=0x31;

eten=tten-8;

}

elseif(tten<0x38)

{

ehun=0x30;

eten=tten+2;

}

}

if(thun==0x33)

{

ehun=0x31;

eten=tten+2;

}

write_com(0X80+0X40);//只为显示参数方便调试

delay(60);

write_data(thun+'0');

write_data(ehun+'0');

write_data(tten+'0');

write_data(eten+'0');

}

voidturn90()//将目标角度调整90度

{

compass();

if(thun==0x31)

{

if(tten>0x30)

{

ehun=0x32;

eten=tten-1;

}

elseif(tten<0x31)

{

ehun=0x31;

eten=tten+9;

}

}

if(thun==0x30)

{

if(tten>0x30)

{

ehun=0x31;

eten=tten-1;

}

elseif(tten<0x31)

{

ehun=0x30;

eten=tten+9;

}

}

if(thun==0x32)

{

if(tten>0x36)

{

ehun=0x30;

eten=tten-7;

}

elseif(tten>0x30&&tten<0x37)

{

ehun=0x33;

eten=tten-1;

}

elseif(tten<0x31)

{

ehun=0x32;

eten=tten+9;

}

}

if(thun==0x33)

{

ehun=0x30;

eten=tten+4;

}

write_com(0X80+0X40);//只为显示参数方便调试

delay(60);

write_data(thun+'0');

write_data(ehun+'0');

write_data(tten+'0');

write_data(eten+'0');

}

2、L298N电机驱动模块

L298N是ST公司生产的一种高电压、大电流电机驱动芯片。

该芯片采用15脚封装。

主要特点是:

工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。

内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。

使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。

使用直流/步进两用驱动器可以驱动两台直流电机。

分别为M1和M2。

引脚A,B可用于输入PWM脉宽调制信号对电机进行调速控制。

(如果无须调速可将两引脚接5V,使电机工作在最高速状态,既将短接帽短接)实现电机正反转就更容易了,输入信号端IN1接高电平输入端IN2接低电平,电机M1正转。

(如果信号端IN1接低电平,IN2接高电平,电机M1反转。

)控制另一台电机是同样的方式,输入信号端IN3接高电平,输入端IN4接低电平,电机M2正转。

(反之则反转),PWM信号端A控制M1调速,PWM信号端B控制M2调速。

可参考下图表:

电机

旋转方式

控制端IN1

控制端IN2

控制端IN3

控制端IN4

输入PWM信号改变脉宽可调速

调速端A

调速端B

M1

正转

/

/

/

反转

/

/

/

停止

/

/

/

M2

正转

/

/

/

反转

/

/

/

停止

/

/

/

 

使用L298N驱动小车的电机,电路图如下:

 

3、电源电路:

5V稳压:

采用LM7805稳压芯片,稳压电路如下:

可调稳压:

采用LM2596-ADJ芯片,具体电路如下:

4、火焰传感器:

火焰传感器由火焰探测管(波长探测管)和电压比较器电路组成,输出量为数字量。

电路图如下:

 

五、实验程序流程框图

开始

原地旋转360度寻找火源

找到火源?

逼近火源到一定距离之后启动风扇扑灭

直走距离d后旋转360度寻找火源

找到火源?

旋转180度直走距离2d后旋转360度寻找火源

找到火源?

旋转180度直走距离d后右转90度,直走距离d后旋转360度寻找火源

找到火源?

旋转180度直走距离2d后旋转360度寻找火源

结束

找到火源?

报警

Y

N

Y

N

YY

Y

Y

N

Y

5、

 

六、调试与结果分析

这次的实践,由于用到了新的传感器指南针,以前都没有使用过,只是对其原理有一定的了解。

所以在编写程序的时候遇到了不少的困难。

例如说不知道其输出的是ASCII码、不知道其校准的重要性等等,耽误了很多的时间。

同时,由于硬件比较简陋,TT电机精度不够,也对pwm的设置有了很大的影响。

不过经过两个人几天的调试,在最后的测试中,还是可以挺成功的完成任务,只不过由于一些场地、硬件等方面的原因,使得灭火失败。

不过总的来说这次实践还是很成功的。

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

当前位置:首页 > 总结汇报 > 实习总结

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

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