超声波报警器.docx

上传人:b****5 文档编号:6872890 上传时间:2023-01-11 格式:DOCX 页数:17 大小:306.56KB
下载 相关 举报
超声波报警器.docx_第1页
第1页 / 共17页
超声波报警器.docx_第2页
第2页 / 共17页
超声波报警器.docx_第3页
第3页 / 共17页
超声波报警器.docx_第4页
第4页 / 共17页
超声波报警器.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

超声波报警器.docx

《超声波报警器.docx》由会员分享,可在线阅读,更多相关《超声波报警器.docx(17页珍藏版)》请在冰豆网上搜索。

超声波报警器.docx

超声波报警器

 

绍兴文理学院

电子信息工程专业

 

传感器原理与应用课程设计报告

 

设计题目:

超声波报警器

专业:

电子信息工程

班级:

电信111

学号:

XXXXX

姓名:

XXXXX

同组人员:

XXXX

指导老师:

XXXXX

完成日期:

2015-1-6

目录

1设计任务和性能指标1

1.1设计任务1

1.2性能指标1

2设计方案1

2.1需求分析1

2.2方案论证1

3系统硬件设计3

3.1单片机3

3.2超声波模块4

3.3按键模块5

3.4显示模块6

3.5报警模块6

4安装、调试/仿真、调试7

4.1调试步骤7

4.2实验测试结果/仿真结果及性能分析7

5总结8

6、参考文献8

附录1系统硬件电路图/仿真电路图9

附录2元器件清单9

附录3程序清单10

1设计任务和性能指标

1.1设计任务

1.设计并制作一个超声波报警器,当距离小于设定值时,发出警报信号。

2.超声波报警器的报警距离可调。

3.超声波报警器可显示实测距离和设定距离。

1.2性能指标

1.测量最大距离达到2米。

2.测距误差小于5%。

3.反应时间小于0.5秒。

2设计方案

2.1需求分析

随着现代社会工业化程的发展,汽车这一交通工具正为越来越多的人所用,但是随之而来的问题也显而易见,那就是随着车辆的增多,交通事故的频繁发生,由此导致的人员伤亡和财产损失数目惊人。

对于公路交通事故的分析表明,80%以上的车祸事由于驾驶员反应不及所引起的,超过65%的车辆相撞属于追尾相撞,其余则属于侧面相撞。

奔驰汽车公司对各类交通事故的研究表明:

若驾驶员能够提早1s意识到有事故危险并采取相应的正确措施,则绝大多数的交通事故都可以避免。

因此,大力研究开发如汽车防撞装置等主动式汽车辅助安全装置,减少驾驶员的负担和判断错误,对于提高交通安全将起到重要的作用。

显然,此类产品的研究开发具有极大的实现意义和广阔的应用前景。

2.2方案论证

超声波的测距方案有三种,分别是相位的检测法、幅值的检测法和渡越时间法。

1.相位的检测法

相位的检测法可分2种,方法一是用发射不同频率超声波来显现的。

先发射波长为

的超声波,检测出回波相位为

假设所用的波周期数

则能求的目标物体的距离为:

同样道理可以算出第二束波形测距的计算公式为:

其中:

为第二束波的相位角,

是波长,

是周期数。

又由于

都为正数,与此同时再一次进行时间补偿算法,可准确求目标距离值。

但是因为超声波探头是有固定频率,假设改变频率,系统衰减会大,需要两套信号的检测电路,实施难度加大,不适宜采用。

方法二是使用单一超声波的探头来进行相位的检测法检测,这种方法是待测距离在一个周期内使用,若过选用40kHz超声波为传播介质,一个周期对应检测距离为

,因此这种方法的准确度很高。

2.幅值的检测法

发射固定频率的超声波,接着使用反射或对射法的检测接收得到的超声波脉冲的强度,从超声波回波衰减理论,认真对回波脉冲强度的进行分析,从而求得目标距离。

3.渡越时间法

渡越时间意思是开始从传感器发射出超声波开始计时,经气体的介质传播,达到传感器接收到回波时计时的停止。

因为在一定的环境下,温度不会变化,或变化较缓慢,可近似认为常数,这时声速是保持不变的,所以能通过检测渡越的时间,结合现场声速,从而求得传感器和目标之间的距离。

经过上述的分析可知,相位的检测法和幅值的检测法精度都比较高,但是实现难度都比较大且开销也比较大,渡越时间法手环境因素影响,因而其精度不高,但其实现难度和开销较低。

由于我们设计的超声波报警系统主要用于汽车防撞,因此对精度的要求并不是很高,因此综合考虑了价格、难度等因素后选择了渡越时间法。

3系统硬件设计

超声波报警器由超声波模块、单片机、显示模块及报警模块组成,其系统框图如下所示:

图1系统框图

下面将介绍各模块的功能并且给出各模块的硬件电路。

3.1单片机

该模块是超声波报警系统的核心,需要接收按键模块和超声波模块的信息并对获得的信息进行处理,然后将数据传送到显示模块进行显示并控制报警系统。

在该模块中选用了STC89C52单片机,其最小系统电路如下图所示:

图2STC89C52单片机最小系统电路图

3.2超声波模块

该模块实现将实现超声波的发送和接收,通过发送和接收时间差实现距离的测量。

该模块采用了HC-SR04超声波测距模块,该模块的电路图如下所示:

图3HC-SR04超声波测距模块电路图

3.3按键模块

该模块主要实现报警距离的设定,其电路图如下所示:

图4按键模块电路图

3.4显示模块

该模块主要实现测量距离的显示和测定离的显示,选用NOKIA5110液晶,其电路图如下所示:

图5NOKIA5110液晶电路图

3.5报警模块

该模块主要实现报警功能,当实测距离小于设定距离时警醒报警,该模块电路图如下所示:

图6报警模块电路图

4安装、调试/仿真、调试

4.1调试步骤

1.STC89C52单片机最小系统焊接好之后,写入程序,通过IO口输出到底电平及复位按键测试是否能正常工作。

2.利用单片机让NOKIA5110液晶显示指定内容,测试显示模块是否正常。

3.将设定距离显示在NOKIA5110液晶上,通过按键模块改变设定值,测试按键模块是否正常。

4.利用单片机驱动报警模块,测试报警模块是否正常工作。

5.将障碍物置于超声波发送接收头之前,改变其距离,测试超声波模块是否正常工作。

4.2实验测试结果/仿真结果及性能分析

经过上述调试使各模块都能正常工作之后,NOKIA5110液晶显示了测试距离和设定距离,并且设定距离课通过按键改变,改变之后的设定值也会时时显示在NOKIA5110液晶上。

当障碍物与超声波模块的距离小于设定值时,报警模块蜂鸣器会响起,当障碍物与超声波模块的距离大设定值时,报警模块蜂鸣器不会响起,其测距误差小于5%,反应时间小于0.5秒,最大的测量距可达到2米。

超声波报警系统实际工作图如下所示:

图7超声波报警系统实际工作图

5总结

6、参考文献

[1]郁有文,常健,程继红.传感器原理及工程应用(第三版).西安:

西安电子科技大学出版社.2003-07

[2]陈杰、黄鸿著.传感器与检测技术.北京:

高等教育出版社.2002-08

[3]徐科军编.传感器与检测技术.北京:

电子工业出版社.2008-02

附录1系统硬件电路图/仿真电路图

附录2元器件清单

表1元器件清单

类型

规格/型号

数量

单片机

STC89C52

1

超声波测距模块

HC-SR04

1

电阻

10K

4

电阻

2K

1

电容(无极性)

0.1uF

3

电容(有极性)

10uF

1

晶振

12M

1

按键

4

三极管

2N3906

1

蜂鸣器

5VDC

1

液晶

NOKIA5110

1

附录3程序清单

#include"reg51.h"

#include"nokia5110.h"

#defineu16unsigedint

#defineu8unsigedchar

#defineGPIO_KEYP1

#defineCHECK0

#defineMOD11

#defineMOD22

#defineMOD33

sbittrig=P3^5;

voidDisplay();

voiddeley10ms(u8c);

voiddeley10us();

voidSR40_Init();

voidTIM0_Init();

voidSR40_Start();

voidKeyValue(u8value);

u8Key_Scan();

u32DATA_Handle(u32*ptr);

u32sr_data;

u32set_number;

u8t=0,state=CHECK;

u8flash=1;

voidmain()

{

set_number=50;

buzz=1;

SR40_Init();

TIM0_Init();

LCD5110_Init();

trig=0;

buzz=1;

LCD_write_english_string(1,0,"Thedatais:

");

LCD_write_english_string(3,0,"Thesetis:

");

while

(1)

{

KeyValue(Key_Scan());

if(set_number>500)

set_number=20;

}

}

voiddeley10ms(u8c)//延迟10ms

{

u8a,b;

//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//

for(;c>0;c--)

{

for(b=38;b>0;b--)

{

for(a=130;a>0;a--);

}

}

}

voiddeley10us()//延迟10us

{

u8a;

for(a=20;a>0;a--);

}

u8Key_Scan()

{

unsignedcharkeyValue=0,i;//保存键值

//--检测按键1--//

if((GPIO_KEY&0xf0)!

=0xF0)//检测按键K1是否按下

{

deley10ms

(1);//消除抖动

if((GPIO_KEY&0xf0)!

=0xF0)//再次检测按键是否按下

{

keyValue=GPIO_KEY&0xf0;

i=0;

while((i<50)&&((GPIO_KEY&0xf0)!

=0xF0))//检测按键是否松开

{

deley10ms

(1);

i++;

}

}

}

else

keyValue=0xf0;

returnkeyValue;//将读取到键值的值返回

}

voidKeyValue(u8value)

{

if(value==0xf0)return;

if(state==CHECK)

{

state=MOD1;

}

else

{

switch(state)

{

case(MOD1):

{

switch(value)

{

case(0xe0):

state=CHECK;break;

case(0xD0):

state=MOD2;break;

case(0xb0):

set_number+=100;break;

case(0x70):

set_number-=100;break;

}

}break;

case(MOD2):

{

switch(value)

{

case(0xe0):

state=CHECK;break;

case(0xD0):

state=MOD3;break;

case(0xb0):

set_number+=10;break;

case(0x70):

set_number-=10;break;

}

}break;

case(MOD3):

{

switch(value)

{

case(0xe0):

state=CHECK;break;

case(0xD0):

state=MOD1;break;

case(0xb0):

set_number+=1;break;

case(0x70):

set_number-=1;break;

}

}break;

}

}

}

voidSR40_Init()

{

TMOD|=0X90;

EA=1;

TR1=1;

//ET1=1;

IT1=1;

EX1=1;

}

voidSR40_Start()

{

TH1=0;

TL1=0;

t=0;

trig=1;

deley10us();

trig=0

}

voidTIM0_Init()

{

TMOD|=0X01;

TR0=1;

ET0=1;

}

u32DATA_Handle(u32*ptr)

{

u32val;

u8i;

for(i=0;i<4;i++)

{

if(ptr[i]

{

val=ptr[i];

ptr[i]=ptr[i+1];

ptr[i+1]=val;

}

}

returnptr[2];

}

voidEXTI_ISR()interrupt2

{

staticu8i=0;

u32temp;

u32dat[5];

temp=TH1*256+TL1;

dat[i]=temp;

if(i==4)

{

sr_data=DATA_Handle(dat)*17/1000;

i=0;

}

else

i++;

if(sr_data>set_number)

buzz=1;

else

buzz=0;

TH1=0;

TL1=0;

}

voidTIM0_ISR()interrupt1

{

staticu8t1=0,t2=0;

t1++;t2++;

if(t1==5)

{

t1=0;

if(state!

=CHECK)

{

flash=!

flash;

}

Display();

}

if(t1==2)

{

t2=0;

if(state==CHECK)

SR40_Start();

}

}

voidDisplay()

{

if(state==CHECK)

{

LCD_Write_Num(2,24,sr_data,3);

LCD_Write_Num(4,24,set_number,3);

}

else

{

if(flash)

{

LCD_Write_Num(4,24,set_number,3);

}

else

{

if(state==MOD1)LCD_write_english_string(4,24,"");

elseLCD_Write_Num(4,24,set_number/100,1);

if(state==MOD2)LCD_write_english_string(4,30,"");

elseLCD_Write_Num(4,30,set_number%100/10,1);

if(state==MOD3)LCD_write_english_string(4,36,"");

elseLCD_Write_Num(4,36,set_number%10,1);

}

}

}

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

当前位置:首页 > 人文社科

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

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