第3章 超声波测距器的设计资料.docx

上传人:b****5 文档编号:6822416 上传时间:2023-01-10 格式:DOCX 页数:16 大小:472.60KB
下载 相关 举报
第3章 超声波测距器的设计资料.docx_第1页
第1页 / 共16页
第3章 超声波测距器的设计资料.docx_第2页
第2页 / 共16页
第3章 超声波测距器的设计资料.docx_第3页
第3页 / 共16页
第3章 超声波测距器的设计资料.docx_第4页
第4页 / 共16页
第3章 超声波测距器的设计资料.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

第3章 超声波测距器的设计资料.docx

《第3章 超声波测距器的设计资料.docx》由会员分享,可在线阅读,更多相关《第3章 超声波测距器的设计资料.docx(16页珍藏版)》请在冰豆网上搜索。

第3章 超声波测距器的设计资料.docx

第3章超声波测距器的设计资料

第3章超声波测距器的设计

3.1功能要求

由于超声波具有指向性强、能量消耗缓慢,在介质中传播的距离较远等特点,超声波被经常用于距离的测量。

利用超声波测量距离设计较方便,计算处理较简单,而且在测量精度上也能达到日常使用的要求。

本项目设计的超声波测距器可应用于汽车倒车、建筑施工工地及一些工业现场的位置监控,也可用于诸如液位、井深、管道长度、物体厚度等的测量。

测量范围为0.10~4.00m,测量精度为1cm,测量时与被测物体无直接接触,能够清晰、稳定地显示测量结果。

设计的主要功能:

在检测范围内,与障碍物的远近,用五盏LED灯显示说明。

当测得的距离小于设定距离时,主控芯片将测得的数值与设定值进行比较处理,然后控制蜂鸣器和LED报警,用5个发光二极管来显示距离长短的趋势。

(1)当被测距离大于等于100cm时,5个灯全亮,且不发声。

(2)当被测距离小于100cm时,离障碍物的距离是否越来越近或越来越远,来改变蜂鸣器发声越来越快或越来越慢。

当被测距离大于等于75cm小于100cm,亮4个灯;

(3)当被测距离大于等于50cm小于75cm,亮3个灯;

(4)当被测距离大于等于30cm小于50cm,亮2个灯;

(5)当被测距离小于30cm,亮1个灯,蜂鸣器急促报警。

3.2主要器件介绍

超声波传感器

1、超声波的特性

人类能听到的声音频率范围为:

20Hz-20kHz,即为可听声波,超出此频率范围的声音,即20Hz以下频率的声音称为低频声波,20kHz以上频率的声音称为超声波。

当声音的频率高到超过人耳听觉的频率极限时,人们就会觉察不出周围声音的存在,因而称这种高频率的声为“超”声。

超声波是一种在弹性介质中的机械振荡,其频率超过20kHz,分横向振荡和纵向振荡两种,超声波可以在气体、液体及固体中传播,其传播速度不同。

它有折射和反射现象,且在传播过程中有衰减。

超声波的主要基本特性:

(1)波长

波的传播速度是用频率乘以波长来表示。

电磁波的传播速度是3×108m/s,而声波在空气中的传播速度很慢,约为344m/s(20℃时)。

在这种比较低的传播速度下,波长很短,这就意味着可以获得较高的距离和方向分辨率。

正是由于这种较高的分辨率特性,才使我们有可能在进行测量时获得很高的精确度。

(2)反射

要探测某个物体是否存在,超声波就能够在该物体上得到反射。

由于金属、木材、混凝土、玻璃、橡胶和纸等可以反射近乎100%的超声波,因此我们可以很容易地发现这些物体。

由于布、棉花、绒毛等可以吸收超声波,因此很难利用超声波探测到它们。

同时,由于不规则反射,通常可能很难探测到凹凸表面以及斜坡表面的物体,这些因素决定了超声波的理想测试环境是在空旷的场所,并且测试物体必须反射超声波。

(3)温度效应

声波传播的速度“c”可以用下列公式表示。

c=331.5+0.607t(m/s)式中,t=温度(℃)也就是说,声音传播速度随周围温度的变化而有所不同。

因此,要精确的测量与某个物体之间的距离时,始终检查周围温度是十分必要的,尤其冬季室内外温差较大,对超声波测距的精度影响很大,此时可用18B20作温度补偿来减小温度变化所带来的测量误差,考虑到本设计的测试环境是在室内,而且超声波主要是用于测距功能,对测量精度要求不高,所以关于温度效应对系统的影响问题在这里不做深入的探讨。

(4)衰减

传播到空气中的超声波强度随距离的变化成比例地减弱,这是因为衍射现象所导致的在球形表面上的扩散损失,也是因为介质吸收能量产生的吸收损失。

超声波的频率越高,衰减率就越高,超声波的传播距离也就越短,由此可见超声波的衰减特性直接影响了超声波传感器有效距离。

(5)灵敏度特性

灵敏度是表示声音接收级的单位,使用下列公式予以表示。

灵敏度=20logE/P(dB)式中,“E”为所产生的电压(Vrms),“P”为输入声压(μbar),超声波传感器的灵敏度直接影响着系统测距范围。

当频率在40kHz时传感器所对应的灵敏度最高。

2、超声波传感器

完成产生超声波和接收超声波这种功能的装置就是超声波传感器,习惯上称为超声换能器,或者超声波探头。

超声波传感器主要由压电晶片组成,既可以发射超声波,也可以接收超声波。

小功率超声探头多用作探测方面。

它有许多不同的结构,可分直探头(纵波)、斜探头(横波)、表面波探头(表面波)、兰姆波探头(兰姆波)、双探头(一个探头反射、一个探头接收)等。

  超声传感器的核心是其塑料外套或者金属外套中的一块压电晶片。

构成晶片的材料可以有许多种。

由于晶片的大小,如直径和厚度也各不相同,因此每个探头的性能都是不同的,我们使用前必须预先了解清楚该探头的性能参数。

超声波传感器的主要性能指标包括:

(1)工作频率。

工作频率就是压电晶片的共振频率。

当加到它两端的交流电压的频率和晶片的共振频率相等时,输出的能量最大,灵敏度也最高。

  

(2)工作温度。

由于压电材料的居里点一般比较高,特别是诊断用超声波探头使用功率较小,所以工作温度比较低,可以长时间地工作而不失效。

医疗用的超声探头的温度比较高,需要单独的制冷设备。

  (3)灵敏度。

主要取决于制造晶片本身。

机电耦合系数大,灵敏度高。

超声波为直线传播方式,频率越高,绕射能力越弱,但反射能力越强。

为此,利用超声波的这种性能就可制成超声波传感器。

另外,超声波在空气中的传播速度较慢,为340m/s,这就使得超声波传感器使用变得非常简便。

我们选用压电式超声波传感器。

它的探头常用材料是压电晶体和压电陶瓷,是利用压电材料的压电效应来进行工作的。

逆压电效应将高频电振动转换成高频机械振动,从而产生超声波,可作为发射探头;而利用正压电效应,将超声振动波转换成电信号,可作为接收探头。

为了研究和利用超声波,人们已经设计和制成了许多种超声波发生器。

总体上讲,超声波发生器大体可以分为两大类:

一类是用电气方式产生超声波,一类是用机械方式产生超声波。

电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。

它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。

目前较为常用的是压电式超声波发生器。

压电式超声波发生器实际上是利用压电晶体的谐振来工作的。

超声波发生器内部结构如图3.1所示,它有两个压电晶片和一个共振板。

当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。

反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。

图3.1超声波传感器结构

3.3硬件电路设计

硬件电路主要分超声波发射接收器、单片机控制电路、显示电路和报警电路四部分。

超声波测距器用STC89C52单片机作为核心控制单元,当测得的距离小于设定距离时,主控芯片将测得的数值与设定值进行比较处理,然后控制蜂鸣器和LED报警。

设计框图如图3.2所示。

图3.2系统设计方框图

3.3.1超声波模块

超声波模块采用现成的HC-SR04超声波模块,该模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm。

模块包括超声波发射器、接收器与控制电路。

基本工作原理:

采用IO口TRIG触发测距,给至少10μs的高电平信号;模块自动发送8个40kHz的方波,自动检测是否有信号返回;有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。

测试距离=(高电平时间*声速(340m/s))/2。

实物如图3.3所示。

其中VCC供5V电源,GND为地线,TRIG触发控制信号输入,ECHO回响信号输出等四支线。

图3.3超声波模块实物图

超声波探测模块HC-SR04的使用方法如下:

IO口触发,给TRIG口至少10us的高电平,启动测量;模块自动发送8个40kHz的方波,自动检测是否有信号返回;有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间,测试距离=(高电平时间*340)/2,单位为m.程序中测试功能主要由两个函数完成。

3.3.2单片机系统及显示电路

单片机与显示系统电路原理图如图3.4所示。

图中VCC为5V的工作电源,5个发光二极管(D1~D5)显示被测距离长短的趋势。

当大于等于100cm,5个发光二极管全亮,且不发声。

距离小于100cm时开始报警,离障碍物的距离越近报警声越急促。

当被测距离大于等于75cm小于100cm时,4个发光二极管亮;当被测距离大于等于50cm小于75cm,3个发光二极管亮;当被测距离大于等于30cm小于50cm时,2个发光二极管亮;当被测距离小于30cm,1个发光二极管亮,蜂鸣器急促报警。

图3.4单片机与显示系统电路原理图

3.3.3声音报警电路

用一个蜂鸣器和三极管8550、电阻接到单片机的P2.3引脚上,构成声音报警电路,其中三极管的放大作用就是:

集电极电流受基极电流的控制(假设电源能够提供给集电极足够大的电流的话),并且基极电流很小的变化,会引起集电极电流很大的变化,且变化满足一定的比例关系:

集电极电流的变化量是基极电流变化量的β倍,即电流变化被放大了β倍,所以我们把β叫做三极管的放大倍数(β一般远大于1,例如几十,几百)。

如果我们将一个变化的小信号加到基极跟发射极之间,这就会引起基极电流Ib的变化,Ib的变化被放大后,导致了Ic很大的变化。

如果集电极电流Ic是流过一个电阻R(蜂鸣器相当于电阻R)的,那么根据电压计算公式U=R*I可以算得,这电阻上电压就会发生很大的变化。

我们将这个电阻上的电压取出来,就得到了放大后的电压信号了。

如图3.5示为声音报警电路:

 

图3.5声音报警电路图

3.4系统的程序设计

3.4.1测距分析

最常用的超声测距的方法是回声探测法,超声波发射器向某一方向发射超声波,在发射时刻的同时计数器开始计时,超声波在空气中传播,途中碰到障碍物面阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停止计时。

由于超声波也是一种声波,其声速v与空气温度有关,一般来说,温度每升高1℃,声速增加0.6m/s。

表3.1列出了几种温度下的声速关系:

表3.1超声波波速与温度的关系表

温度(℃)

-30

-20

-10

0

10

20

30

100

声速(m/s)

313

319

325

323

338

344

349

386

 

在使用时,如果传播介质温度变化不大,则可近似认为超声波速度在传播的过程中是基本不变的。

如果对测距精度要求很高,则应通过温度补偿的方法对测量结果加以数值校正。

声速确定后,只要测得超声波往返的时间,即可求得距离。

这就是超声波测距仪的基本原理。

如图3.6所示:

t

超声波发射障碍物

S

H

θ

超声波接收

图3.6超声波的测距原理

[3-1]

[3-2]

式中:

L---两探头之间中心距离的一半.

又知道超声波传播的距离为:

[3-3]

式中:

v—超声波在介质中的传播速度;

t—超声波从发射到接收所需要的时间.

将[3-2]、[3-3]代入[3-1]中得:

[3-4]

其中,超声波的传播速度v在一定的温度下是一个常数(例如在温度T=30度时,V=349m/s);当需要测量的距离H远远大于L时,则[4-4]变为:

[3-5]

所以,只要需要测量出超声波传播的时间t,就可以得出测量的距离H.

超声波在空气中的传播速度一般为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物面的距离H,即:

H=340t/2。

3.4.2主程序

主程序流程图如图3.7所示。

首先设计上电时让蜂鸣器叫一声,目的是提示已开机。

等待1ms后执行任务。

随后是对系统环境初始化:

设置单片机IO口P0、P1、P2、P3为高电平;设置EA=1,开启总中断;设置TMOD=0x11,使定时器0和定时器1工作方式为方式1;设置TR0=1和TR1=1,允许定时器0和定时器1定时计数;设置ET0=0,关闭定时器0的中断;设置ET1=1,开启定时器1的中断。

设置完毕后,发射超声波信号,待检测到超声波信号时,执行测距报警。

图3.7主程序流程图

3.4.3超声波测距程序

单片机发送端c_send(P3.2口)向TRIG(触发信号输入)发送10μs的高电平触发,这时发射超声波,也关闭了定时器0并且把定时器0清零,保证定时器0准确计数,由于采用的是12MHz的晶振,计数器每计一个数就是1μs。

然后单片机发送端c_recive(P3.3口)等待,待检测到EHCO(回响信号输出)为高电平时,开启定时器0定时计数,读取高电平持续时间,并比较是否大于40ms,如果大于40ms,就关闭定时器0,反之,就计算出距离,再关闭定时器0。

超声波发射探测流程如图3.8所示:

 

图3.8超声波发射探测流程图

3.4.4报警程序

报警工作流程如图3.9所示:

图3.9报警程序流程图

定时器1设TH1=(65536-2000)/256,TL1=(65536-2000)%256,即设置为2ms中断一次,中断150次为一个周期,即300ms,就是一个周期执行一次超声波发射探测流程,为了使超声波模块能测的得距离更加准确。

然后来比较超声波探头离障碍物的距离是否大于等于100cm:

(1)小于100cm时,通过定时器1的中断计的次数来比较离障碍物的距离,是否越来越近或越来越远,来改变蜂鸣器发声越来越快或越来越近;

大于等于75cm小于100cm,亮4个灯,P1=0xf0;

大于等于50cm小于75cm,亮3个灯,P1=0xf8;

大于等于30cm小于50cm,亮2个灯,P1=0xfc;

小于30cm,亮1个灯,P1=0xfe,并且急促报警。

(2)大于等于100cm时,beep=1,P1=0xe0,蜂鸣器不发声,亮5个灯。

3.4.5系统的参考程序

#include//调用单片机头文件

#defineucharunsignedchar//无符号字符型宏定义变量范围0~255

#defineuintunsignedint//无符号整型宏定义变量范围0~65535

#include

sbitc_send=P3^2;//超声波发射

sbitc_recive=P3^3;//超声波接收

sbitbeep=P2^3;//蜂鸣器IO口定义

bitflag_300ms;

longdistance;//距离

uintset_d;//距离

ucharflag_csb_juli;//超声波超出量程

uintflag_time0;//用来保存定时器0的时间

/***************5个LED指示灯****************/

sbitled1=P1^0;

sbitled2=P1^1;

sbitled3=P1^2;

sbitled4=P1^3;

sbitled5=P1^4;

/***********************1ms延时函数*****************************/

voiddelay_1ms(uintq)

{

uinti,j;

for(i=0;i

for(j=0;j<120;j++);

}

/******************小延时函数*****************/

voiddelay()

{

_nop_();//执行一条_nop_()指令就是1us

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

}

/*********************超声波测距程序*****************************/

voidsend_wave()

{

c_send=1;//10us的高电平触发

delay();

c_send=0;

TH0=0;//给定时器0清零

TL0=0;

TR0=0;//关定时器0定时

while(!

c_recive);//当c_recive为零时等待

TR0=1;

while(c_recive)//当c_recive为1计数并等待

{

flag_time0=TH0*256+TL0;

if((flag_time0>40000))//当超声波超过测量范围时,

{

TR0=0;

flag_csb_juli=2;

break;

}

else

{

flag_csb_juli=1;

}

}

if(flag_csb_juli==1)

{

TR0=0;//关定时器0定时

distance=flag_time0;//读出定时器0的时间

distance*=0.017;//距离=速度*时间;0.017cm/uS=(34000cm/1000000uS)/2

}

}

/*********************定时器0、定时器1初始化******************/

voidtime_init()

{

EA=1;//开总中断

TMOD=0X11;//定时器0、定时器1工作方式1

ET0=0;//关定时器0中断

TR0=1;//允许定时器0定时

ET1=1;//开定时器1中断

TR1=1;//允许定时器1定时

}

/****************报警函数***************/

voidclock_l()//下限报警函数距离超近声音超快

{

staticucharvalue,value1;

if(distance<=100)

{

value++;//消除实际距离在设定距离左右变化时的干扰

if(value>=2)

{

value1++;

if(value1>=distance*2)//这里是控制报警声越来越快

{

value1=0;

beep=~beep;//蜂鸣器报警

}

}

}

else

{

value=0;

beep=1;

}

}

/***************主函数*****************/

voidmain()//主函数

{

beep=0;//beep代表P3.2口,接蜂鸣器。

beep=0目的是开机叫一声

delay_1ms(150);//延时

P0=P1=P2=P3=0xff;//初始化单片机IO口为高电平

send_wave();//测距离函数

time_init();//定时器初始化程序

send_wave();//测距离函数

send_wave();//测距离函数

while

(1)

{

if(flag_300ms==1)

{

flag_300ms=0;

send_wave();//测距离函数

if(beep==1)

send_wave();//测距离函数

if(distance<30)

P1=0xfe;//1个灯亮

elseif(distance<50)

P1=0xfc;//2个灯亮

elseif(distance<75)

P1=0xf8;//3个灯亮

elseif(distance<100)

P1=0xf0;//4个灯亮

else

P1=0xe0;//5个灯亮全亮

}

}

}

/*********************定时器1中断服务程序************************/

voidtime1_int()interrupt3

{

staticucharvalue;//定时2ms中断一次

TH1=0xf8;

TL1=0x30;//2ms

value++;

clock_l();//下限报警函数距离超近声音超快

if(value>=150)

{

value=0;

flag_300ms=1;

}

}

3.5功能扩展

本设计给出了一个简单的超声波测距系统。

设计者可以对该设计进行功能扩展。

设计一个带显示距离的汽车倒车雷达系统,通过LCD液晶显示距离或影像。

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

当前位置:首页 > 成人教育 > 专升本

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

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