超声波测距论文.docx
《超声波测距论文.docx》由会员分享,可在线阅读,更多相关《超声波测距论文.docx(31页珍藏版)》请在冰豆网上搜索。
![超声波测距论文.docx](https://file1.bdocx.com/fileroot1/2022-11/30/dffd127d-71aa-4e35-a189-5401e1045f91/dffd127d-71aa-4e35-a189-5401e1045f911.gif)
超声波测距论文
摘要
本文介绍了一种基于单片机的脉冲反射式超声波测距模块。
该模块以空气中超声波的传播速度为确定条件,利用反射超声波测量待测距离。
论文概述了超声检测的发展及基本原理,介绍超声波传感器的原理及特性。
对于测距系统的一些主要参数进行了讨论。
并且在介绍超声测距系统功能的基础上,提出了系统的总体构成。
针对测距系统发射、接收、检测、显示部分的总体设计方案进行了论证。
进一步介绍了单片机AT89C51在系统中的应用,分析了系统各部分的硬件及软件实现。
最后利用测距系统进行验证。
实验表明,各主要波形及技术指标均达到设计要求。
该系统对室内有限范围的距离测量具有较高的精度和可靠性,最后文中分析了误差产生的原因及如何对系统进行完善。
关键词:
51单片机;超声波;测距
Abstract
Thethesisintroducesakindofsingle-pulse-refectionultrasonicdistancemetersystemmoduleindetailbasedonMicrocontroller.Thesystemcouldmeasurecertaindistancewiththereflectedwaveonconditioninwhichthespeedoftransmittingwaveisfixed.Thispapersummarizesthedevelopmentandfoundationalprincipleofultrasonicdetections.Thenitpresentsthetheoryandcharactersofultrasonicsensor.Atthesametime,itdiscussesanumberofmaintechnicalparameters.Moreover,itproposesthewholestructureofthesystembyintroducingthefunctionofultrasonicdistancemeter.Andthenthetransmissionreceiver,detection,displayschemeofthisdistancemetersystemisdemonstrated.Specially,aftertheapplicationofAT89C51microcontroller,itanalyzesthehardwareandsoftwarerealizationofeachpartinthissystem.Atlasttheresultanderroranalysisoftheexperimentsispresented.Itisprovedbyexperimentsthatthedesignofthesystemisprovidedwithhighaccuracyandreliability.Intheend,thefurthermeasuresofmodificationarepresented.
Keywords:
AT89C51MCU,ultrasonic,distancemeasurer
引言
随着科学技术的快速发展,超声波将在科学技术中的应用越来越广。
本文对超声波传感器测距的可能性进行了理论分析,利用模拟电子、数字电子、微机接口、超声波换能器、以及超声波在介质的传播特性等知识,采用以AT89C51单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。
相关部分附有硬件电路图、程序流程图。
为了保证超声波测距传感器的可靠性和稳定性,采取了相应的抗干扰措施。
就超声波的传播特性,超声波换能器的工作特性、超声波发射、接收、超声微弱信号放大、波形整形、速度变换、语音提示电路及系统功能软件等做了详细说明。
这套系统软硬件设计合理、抗干扰能力强、实时性良好,经过系统扩展和升级,可以用于倒车雷达、建筑施工工地以及一些工业现场,例如:
测量液位、井深、管道长度等场合。
可以广泛应用于工业生产、医学检查、日常生活、无人驾驶汽车、自动作业现场的自动引导小车、机器人、液位计等。
我设计的这个超声波测距的系统,肯定还有很多不足的地方,比如温度补偿的忽略,精度不够等等,但该测距仪已经能够实现测量距离的功能,基本达到了设计的要求。
该超声波距仪用共阴数码管现示,最大测量距离是2.5米,精确度是5cm,小于0.5米蜂鸣器报警。
1超声波测距仪原理及方案选择
1.1超声波传感器应用前景展望
在人类文明的历次产业革命中,传感技术一直扮演着先行官的重要角色,它是贯穿各个技术和应用领域的关键技术,在人们可以想象的所有领域中,它几乎无所不在。
传感器是世界各国发展最快的产业之一,在各国有关研究、生产、应用部门的共同努力下,传感器技术得到了飞速的发展和进步。
但就目前技术水平来说,人们可以具体利用的传感技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。
展望未来,超声波传感器作为一种新型的非常重要有用的工具在各方面都将有很大的发展空间,它将朝着更加高定位高精度的方向发展,以满足日益发展的社会需求,如声纳的发展趋势基本为:
研制具有更高定位精度的被动测距声纳,以满足水中武器实施全隐蔽攻击的需要;继续发展采用低频线谱检测的潜艇拖曳线列阵声纳,实现超远程的被动探测和识别;研制更适合于浅海工作的潜艇声纳,特别是解决浅海水中目标识别问题;大力降低潜艇自噪声,改善潜艇声纳的工作环境。
无庸置疑,未来的超声波传感器将与自动化智能化接轨,与其他的传感器集成和融合,形成多传感器。
随着传感器的技术进步,传感器将从具有单纯判断功能发展到具有学习功能,最终发展到具有创造力。
在新的世纪里,面貌一新的传感器将发挥更大的作用。
1.2课题背景,目的和意义
传感器技术是现代信息技术的主要内容之一。
信息技术包括计算机技术、通信技术和传感器技术,计算机技术相当于人的大脑,通信相当于人的神经,而传感器就相当于人的感官。
比如温度传感器、光电传感器、湿度传感器、超声波传感器、红外传感器、压力传感器等等,其中,超声波传感器在测量方面有着广泛、普遍的应用。
利用单片机控制超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且测量精度较高。
超声波测距系统主要应用于汽车的倒车雷达、机器人自动避障行走、建筑施工工地以及一些工业现场例如:
液位、井深、管道长度等场合。
因此研究超声波测距系统的原理有着很大的现实意义。
对本课题的研究与设计,还能进一步提高自己的电路设计水平,深入对单片机的理解和应用。
1.3超声波测距的原理
超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出距离
式(1-1)
式(1-1)中的c为超声波在空气中传播的速度。
限制该系统的最大可测距离存在四个因素:
超声波的幅度、反射物的质地、反射和入射声波之间的夹角以及接收换能器的灵敏度。
接收换能器对声波脉冲的直接接收能力将决定最小可测距离。
为了增加所测量的覆盖范围,减少测量误差,可采用多个超声波换能器分别作为多路超声波发射/接收的设计方法。
由于超声波发球声波范围,其波速c与温度有关,表1-1列出了几种不同温度下的波速。
温度(℃)
-30
-20
-10
0
10
20
30
100
声速(m/s)
313
319
325
323
338
344
349
386
表1-1声速与温度的关系
波速确定后,只要测得超声波往返的时间t,即可求得距离S。
其系统原理框图如图1-1所示。
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。
超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:
s=340t/2。
1.4本设计所要实现的目标
本设计采用单片机为主控芯片,结合外围电路,组成超声波测距仪,用户想要使用时,通电完后,按下启动按键便可进行测距,如果出现乱码,即可按下复位按键,仪器使用简单方便。
主要要求:
(1)该超声波距仪用共阴数码管现示;
(2)最大测量距离是2.5米;
(3)精确度是5cm;
(4)小于0.5米蜂鸣器报警。
1.5超声波测距方案选择
1.5.1基于CPLD的超声波测距系统
这种测距系统采用CPLD(ComplexProgrammableLogicDevice)器件,运用VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)编写程序,使用MAX+plusII软件进行软硬件设计的仿真和调试,最终实现测距功能。
CPLD器件内部的宏单元是其最基本的模块,能独立地编程为D触发器、T触发器、RS触发器或JK触发器工作方式或组合逻辑工作方式。
它的这种特性非常适用于本系统,可将本系统所需要的分频功能、计数功能、振荡器、七段码显示全部由MAX来实现,而只需在外部配上适当的超声波传感器、接收和发送电路,即可组成一个测量精度高、性能稳定、响应速度快且具有显示功能的超声波测距仪。
本系统利用CPLD器件控制超声波的发射,并对超声波发射至接收的往返时间进行计数,将计算结果在LED上显示出来。
配合使用MAX+plusII开发软件,可集设计输入、设计处理、设计校验和器件编程于一体,集成度高,开发周期短。
其系统框图如图2-2所示。
超声波发射器向某一方向发射40kHz的超声波,在发射超声波的同时,MAX7128S内的计数器开始计数。
超声波在空气中传播,途中碰到障碍物就会立即返回来。
超声波接收器收到反射波后就将回波信号送到CPLD,CPLD立即停止计数。
CPLD所计的时间就是超声波从传感器到被测物的往返时间。
超声波在空气中的传播速度如设定为332m/s,根据计数器记录的时间t,就可以计算出发射点距障碍物的距离s,即:
s=332t/2。
CPLD开始计数后,只
本系统采用先进的CPLD器件,高性能、低成本地实现了距离的测定。
图1-1基于CPLD的超声波测距系统框图
1.5.2基于单片机的超声波测距系统
基于单片机的超声波测距系统,是利用单片机编程产生频率为40kHz的方波,经过发射驱动电路放大,使超声波传感器发射端震荡,发射超声波。
超声波波经反射物反射回来后,由传感器接收端接收,再经接收电路放大、整形,控制单片机中断口。
其系统框图如图1-2所示。
图1-2基于单片机的超声波测距系统框图
这种以单片机为核心的超声波测距系统通过单片机记录超声波发射的时间和收到反射波的时间。
当收到超声波的反射波时,接收电路输出端产生一个负跳变,在单片机的外部中断源输入口产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离,结果输出给LED显示。
单片机AT89C51发出短暂的40kHz信号,经放大后通过超声波换能器输出;反射后的超声波经超声波换能器作为系统的输入,锁相环对此信号锁定,产生锁定信号启动单片机中断程序,读出时间t,再由系统软件对其进行计算、判别后,相应的计算结果被送至LED数码管进行显示。
利用单片机准确计时,测距精度高,而且单片机控制方便,计算简单。
许多超声波测距系统都采用这种设计方法。
2超声波测距仪电路设计
本系统利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时。
接收电路的输出端接单片机的外部中断源输入口。
系统定时发射超声波,在启动发射电路的同时启动单片机内部的定时器,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。
当收到超声波的反射波时,接收电路输出端产生一个负跳变,在单片机的外部中断源输入口产生一个中断请求信号,单片机响应外部中断请求执行外部中断服务子程序,读取时间差,计算距离,结果输出给LED显示。
利用本测距系统测量,范围应在30cm~250cm内,其最大误差控制在5cm内。
2.1总体设计方案
由单片机AT89C51编程产生40kHz的方波,由P3.6口输出,再经过放大电路,驱动超声波发射探头发射超声波。
发射出去的超声波经障碍物反射回来后,由超声波接收头接收到信号,通过接收电路的检波放大、积分整形及一系列处理,送至单片机。
单片机利用声波的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物的距离,并由单片机控制显示出来。
图2-1超声波测距仪时序图
该测距装置是由超声波传感器、单片机、发射/接收电路和LED显示器组成。
传感器输入端与发射接收电路相连,接收电路输出端与单片机相连接,单片机的输出端与显示电路输入端相连接。
其时序图如图2-1所示。
接收头采用与发射头配对的探头,将超声波调制脉冲变为交变电压信号,通过超声波发射器向某一方向发射超声波,单片机在发射时刻同时开始计时,超声波在空气中传播,途中碰到障碍物就立即反射回来,超声波接收器收到反射波就立即停止计时。
超声波在空气中的传播速度为V,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离。
2.2硬件设计
超声波是指频率高于40KHz的机械波。
为了以超声波作为检测手段,必须产生超
生波和接收超声波。
完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。
超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。
超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。
超声波测距的原理一般采用渡越时间法TOF(time of flight)。
首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离
测量距离的方法有很多种,短距离的可以用尺,远距离的有激光测距等,超声波测距适用于高精度的中长距离测量。
因为超声波在标准空气中的传播速度为340米/秒,由单片机负责计时,单片机使用12.0M晶振,所以此系统的测量精度理论上可以达到毫米级。
由于超声波指向性强,能量消耗缓慢,在介质中传播距离远,因而超声波可以用于距离的测量。
利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到要求。
本次实训主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。
采用AT89S52来实现对CX20106A红外接收芯片和TCT40-10系列超声波转换模块的控制。
单片机通过P3.6引脚经反相器来控制超声波的发送,然后单片机不停的检测INT0引脚,当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。
计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。
实训硬件原理框图如下:
根据设计要求并综合各方面因素,可以采用AT89S51单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成,超声波测距器的系统框图如下图所示:
图2-2超声波测距器系统设计框图
(1)中央控制部分采用AT89C51单片机该型单片机有4KB的ROM,128B的RAM,5个中断源,两个16位的定时计数器可完全满足本设计的需要
(2)电源部分本实训电源由外界提供,所要求为+5V。
(3)显示部分采用5461四位数码管,该数码管已足够本实验需求,可以提供良好的人机交互。
(3)键盘输入部分采用四个按键开关键盘可满足测距仪功能键。
(5)声光部分声信号采用蜂鸣器、光信号采用发光二极管。
2.3软件部分
主程序首先对系统环境初始化,设置定时器T0工作模式为16位的定时计数器模式,置位总中断允许位EA并给显示端口P0和P2清0。
然后调用超声波发生子程序送出一个超声波脉冲,为避免超声波从发射器直接传送到接收器引起的直接波触发,需延迟0.1ms(这也就是测距器会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。
由于采用12MHz的晶振,机器周期为1us,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按下式计算即可测得被测物体与测距仪之间的距离,设计时取20℃时的声速为340 m/s则有:
d=(C*T0)/2 =170*T0/10000cm(其中T0为计数器T0的计数值)
主程序其工作流程是:
上电后首先对系统进行初始化,紧接着调用显示子程序,显示完后判断有没有超声波被接收,若有,则停止计时并将计时值送入距离计算子程序,然后将所测距离显示1秒,最后返回进行下一轮测量;若没有信号进来,则继续调用显示子程序。
测出距离后结果将以十进制BCD码方式LED,然后再发超声波脉冲重复测量过程。
主程序框图如下:
图2-3超声波程序流程图
用单片机编程产生40kHz方波,可用延时程序和循环语句实现。
先定义一个延时函数delays(),然后可用for语句循环,并且循环一次同时改变方波输出口的电平高低,从而产生方波。
部分程序如下:
voidmain()//主函数
{
EA=1;//开中断
TMOD=0x11;//设定时器0为计数,设定时器1定时
ET0=1;//定时器0中断允许
ET1=1;//定时器1中断允许
TH0=0x00;
TL0=0x00;
TH1=0x9E;
TL1=0x57;
csbds=0;
csbout=1;
cl=0;
csbs=8;
jpjs=0;
sj1=50;/////////测试报警距离
sj2=150;
sj3=2500;//测试最大距离
k4cl();
TR1=1;
while
(1)
{
keyscan();
if(jpjs<1)
{
csbcj();//调用超声波测距程序
if(s>sj3)//大于时显示“CCC”
{
buffer[2]=0x39;
buffer[1]=0x39;
buffer[0]=0x39;
}
elseif(s{
buffer[2]=0x40;
buffer[1]=0x40;
buffer[0]=0x40;
}
elsetimeToBuffer();
}
elsetimeToBuffer();//将值转换成LED段码
offmsd();//为零时隐去数字
scanLED();//显示函数
if(sbg=0;//小于5cm报警
bg=1;
}
}
单片机每隔一段时间产生一串40kHz方波,同时定时器开始计时,当收到回波,产生中断信号后,单片机执行中断程序。
在中断程序中,先让定时器停止计数,然后读取时间,通过时间计算出所测距离,输出结果。
测距程序如下:
voidcsbcj()//超声波测距函数
{
if(cl==1)
{
TR1=0;
TH0=0x00;
TL0=0x00;
i=csbs;
while(i--)
{
csbout=!
csbout;
}
TR0=1;
i=mqs;//盲区
while(i--)
{
}
i=0;
while(csbint)
{
i++;
if(i>=4000)//上限值
csbint=0;
}
TR0=0;
TH1=0x9E;
TL1=0x57;
t=TH0;
t=t*256+TL0;
t=t-29;
s=t*csbc/2;
TR1=1;
cl=0;
csbint=1;
}
按键处理程序:
voidkeyscan()//健盘处理函数
{
xx=0;
if(k1!
=1)//判断开关是否按下
{
delay(100);//延时去抖动
if(k1!
=1)//判断开关是否按下
{
while(!
k1)
{
delay(25);
xx++;
}
if(xx>1000)
{
jpjs++;
if(jpjs>3)
{
k4cl();
jpjs=0;
}
}
xx=0;
switch(jpjs)
{
case1:
k1cl();break;
case2:
k2cl();break;
case3:
k3cl();break;
}
}
}
}
本系统的LED显示采用了静态显示方式,并用单片机内部软件译码。
这样简单方便,省去了复杂的外部译码电路。
软件译码只需要定义一个数组便可,程序语句如下:
"
voidscanLED()//显示功能模块
{
LED=buffer[0];
LED3=0;
delay(200);
LED3=1;
LED=buffer[1];
LED2=0;
delay(200);
LED2=1;
LED=buffer[2];
LED1=0;
delay(200);
LED1=1;
}
voidtimeToBuffer()//转换段码功能模块
{
xm0=s/100;
xm1=(s-100*xm0)/10;
xm2=s-100*xm0-10*xm1;
buffer[2]=convert[xm2];
buffer[1]=convert[xm1];
buffer[0]=convert[xm0];
}
voiddelay(i)
{
while(--i);
}
voidtimer1int(void)interrupt3using2
{
TH1=0x9E;
TL1=0x57;
csbds++;
if(csbds>=40)
{
csbds=0;
cl=1;
}
}
3主要元器件介绍
3.1主控芯片AT89S51
AT89C51(如图3-1所示)是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
VCC:
供电电压