第3章 超声波测距器的设计资料.docx
《第3章 超声波测距器的设计资料.docx》由会员分享,可在线阅读,更多相关《第3章 超声波测距器的设计资料.docx(16页珍藏版)》请在冰豆网上搜索。
第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;ifor(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液晶显示距离或影像。