灭火小车设计报告.(DOC)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模块及引脚定义如下图:
该模块在使用前需要进行矫正。矫正方法如下:
在模块的第9(CAL)引脚,接一按键至电源负极(GND),当第一次按下按键时,进入校准状态,LED常亮起。保持模块水平,缓慢旋转1周(旋转1周时间大约1分钟)。再次按下按键LED灭,校准结束。
模块输出格式,每帧包含8个字节:
①.Byte0: 0x0D(ASCII码回车)
//*********************************************
//串口中断
void serial_serve(void) interrupt 4
{
if(RI==1)
{
RI=0;
BUF[cnt]=SBUF;
cnt++;
}
}
//*********************************************
2

采用LM2576-adj稳压芯片,输入为16.8V,输出为7-16.8V可调。主要用于提供电机电压。

采用7805稳压芯片,输入9V电压(通过可调稳压模块),输出5V。主要用于最小系统、各传感器供电、
3
使用16.8V航模电池,功率高,波动小,耐久性好。
4
采用TT减速电机。便宜实惠。不过在稳定性、精度和轮胎抓地力上效果不好。如果没有配合光电编码器形成内反馈会经常出现双杆电机有转数差,轮胎打滑等情况使得调试更加麻烦。
图中较大圈为所需寻找半径,较小圈为传感器探测范围。可以发现,此方案还是有存在一些探寻盲区。有待改进。
2、灭火部分:
若火焰传感器探测到火源,进入灭火部分。小车由3个火焰传感器组成,分别面向前方、左前方、右前方(前方传感器最不灵敏,为离火焰为20cm左右可以探测到火焰。左前方和右前方传感器可以探测80cm左右的火焰)。
②.Byte1: 0x0A(ASCII码换行)
Hale Waihona Puke Baidu③.Byte2: 0x30~0x33角度百位(ASCII 0~3)
④.Byte3: 0x30~0x39角度十位(ASCII 0~9)
⑤.Byte4: 0x30~0x39角度个位(ASCII 0~9)
⑥.Byte5: 0x2E(ASCII码小数点)
⑦.Byte6: 0x30~0x39角度小数位(ASCII 0~9)
《综合课程设计》
报告
实践课题:灭火小车
一、实验内容
在直径为3米的圆形区域内,放上火源。将小车放置在圆心,寻找火源并将其扑灭。
二、基本原理
各模块简介
1
采用stc12c5a60s2单片机,它比普通的51单片机多拥有2个ccp模块,在小车的制作中,可以输出pwm波,对小车的速度进行调整和控制。晶振采用11.0592 M晶振,不能使用12M的晶振,这样才能和GY-26指南针模块进行通信。
5
采用L298n驱动芯片。双H桥驱动电路,同时驱动两个直流电机或一个4相步进电机。输入电压为7V-24V,驱动电流为2A,可以很有效的驱动两个小型点击。
6

采用简单的GY-26指南针模块。主要在小车中用于定位。详细使用方法在后面程序部分会提到。

可以检测火焰或者波长在760纳米~1100纳米范围内的光源,打火机测试火焰距离为80cm,对火焰越大,测试距离越远。采用LM339电压比较器,输出为数字量。
//串口初始化
//9600 bps @ 11.059 MHz
void init_uart()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
PS=1; //串口中断设为高优先级别
TR1=1;//启动定时器
EA=1;
ES=1;
}
//*********串口数据发送******************
当左前方和右前方的传感器看到火源时,小车左右摇摆前进,指导中间传感器看到火源时,小车停下,进行灭火。
这是,灭火风扇启动,进行灭火,直到三个火焰传感器都检测不到火源时,灭火结束。
四、硬件电路
1
采用GY-26指南针模块。GY-26是一款低成本平面数字罗盘模块。输入电压低,功耗小,体积小。其工作原理是通过磁传感器中两个相互垂直轴同时感应地球磁场的磁分量,从而得出方位角度,此罗盘以RS232协议,及IIC协议与其他设备通信。该产品精度高,稳定性高。并切具有重新标定的功能,能够在任意位置得到准确的方位角,其输出的波特率是9600bps,数据以询问方式输出,具有硬铁校准功能磁偏角补偿功能,适应不同的工作环境。
三、设计思路
1、火源寻找定位:
这部分最为重要。如果没法寻找到火源,就无法对火源进行处理。
寻找思想如下:
先将小车放置在圆心处,原地旋转360度对火源进行寻找。若没有找到前进80cm寻找前方的火源。若没有找到则依次进入后、左、右等地方寻找火源,在此期间若找到火源进入灭火部分,若没有找到则继续寻找。
若在中心、前、后、左、右都没有找到火源,则蜂鸣器响9声,提示寻找失败或没有火源。
}
}
if(thun==0x30)
{
if(tten>0x31)
{
ehun=0x32;
eten=tten-2;
}
else if(tten<0x32)
{
ehun=0x31;
eten=tten+8;
⑧.Byte7: 0x00~0xFF校验和(仅低8bit)
注:校验和Byte7 =(Byte0+ Byte1+…….Byte6)结果仅取低8bit
例:一帧数据<0x0D-0x0A-0x33-0x35-0x39-0x2E-0x36-0x1C> = 359.6°
该模块与单片机的连线图如下:
在模块的使用过程中,要与单片机进行串口通信。其部分程序如下:
void SeriPushSend(uchar send_data)
{
SBUF=send_data;
while(!TI);
TI=0;
}
由于在使用中,指南针模块返回的数值是ASCII码,所以还要对其进行计算。其部分程序如下:(0X30-0X39对应数字0-9)
void turn()//将目标角度调整180°
{
compass();
if(thun==0x31)
{
if(tten>0x37)
{
ehun=0x30;
eten=tten-8;
}
else if(tten>0x31&&tten<0x38)
{
ehun=0x33;
eten=tten-2;
}
else if(tten<0x32)
{
ehun=0x32;
eten=tten+8;
相关文档
最新文档