超声波测距仪.docx

上传人:b****9 文档编号:25832134 上传时间:2023-06-15 格式:DOCX 页数:17 大小:159.98KB
下载 相关 举报
超声波测距仪.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

超声波测距仪

智能仪器设计

 

题  目:

超声波测距仪

专  业:

控制理论与控制工程

学  号:

201012182018201012182014

姓  名:

彭皎龙刘驰

摘要

超声波具有指向性强,能量消耗缓慢,传播距离较远等优点,所以,在利用传感器技术和自动控制技术相结合的测距方案中,超声波测距是目前应用最普遍的一种,它广泛应用于防盗、倒车雷达、水位测量、建筑施工工地以及一些工业现场。

本课题详细介绍了超声波传感器的原理和特性,以及Atmel公司的AT89S52单片机的性能和特点,并在分析了超声波测距的原理的基础上,指出了设计测距系统的思路和所需考虑的问题,给出了以AT89S52单片机为核心的低成本、高精度、微型化数字显示超声波测距仪的硬件电路和软件设计方法。

该系统电路设计合理、工作稳定、性能良好、检测速度快、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求。

关键词:

超声波单片机测距AT89S52

第1章超声波测距系统设计

1.1超声波测距的原理

单片机发出超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出距离

(1-1)

式(1-1)中的c为超声波在空气中传播的速度。

限制该系统的最大可测距离存在四个因素:

超声波的幅度、反射物的质地、反射和入射声波之间的夹角以及接收换能器的灵敏度。

接收换能器对声波脉冲的直接接收能力将决定最小可测距离。

为了增加所测量的覆盖范围,减少测量误差,可采用多个超声波换能器分别作为多路超声波发射/接收的设计方法。

由于超声波发球声波范围,其波速c与温度有关,表1-1列出了几种不同温度下的波速。

表1-1声速与温度的关系

温度(℃)

-30

-20

-10

0

10

20

30

100

声速(m/s)

313

319

325

323

338

344

349

386

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

其系统原理框图如图1-1所示。

图1-1超声波测距系统框图

单片机AT89S52发出短暂的40kHz信号,经放大后通过超声波换能器输出;反射后的超声波经超声波换能器作为系统的输入,锁相环对此信号锁定,产生锁定信号启动单片机中断程序,读出时间t,再由系统软件对其进行计算、判别后,相应的计算结果被送至LED数码管进行显示。

在下一节里,我们将详细介绍超声波测距仪的各部分电路的设计思路及方法。

1.2超声波测距系统电路的设计

1.2.1总体设计方案

由单片机AT89C52编程产生40kHz的方波,由P3.3口输出,再经过放大电路,驱动超声波发射探头发射超声波。

发射出去的超声波经障碍物反射回来后,由超声波接收头接收到信号,通过接收电路的检波放大、积分整形及一系列处理,送至单片机。

单片机利用声波的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物的距离,并由单片机控制显示出来。

该测距装置是由超声波传感器、单片机、发射/接收电路和LED显示器组成。

传感器输入端与发射接收电路相连,接收电路输出端与单片机相连接,单片机的输出端与显示电路输入端相连接。

其时序图如图1-2所示。

图1-2时序图

单片机在T0时刻发射方波,同时启动定时器开始计时,当收到回波后,产生一负跳变到单片机中断口,单片机响应中断程序,定时器停止计数。

计算时间差,即可得到超声波在媒介中传播的时间t,由此便可计算出距离。

1.2.2发射电路的设计

由单片机产生的40kHz的方波需要进行放大,才能驱动超声波传感器发射超声波,发射驱动电路其实就是一个信号放大电路,本课题所选用的是HCF4069集成芯片,图1-3为发射电路图。

图1-3发射电路

HCF4069内部集成了六个反向器,同时具有放大的功能。

HCF4069的管脚如图1-4所示。

图1-4HCF4069管脚图

1.2.3接收电路的设计

超声波接收电路用到sony公司生产的CXD20106A芯片,该芯片接收到输入信号时候会在第7个引脚输出一个低电平用来使单片机产生中断。

接收电路如图1-5所示。

图1-5接收电路

1.2.4显示模块的设计

LED(Light-EmittingDiode,发光二极管)有七段和八段之分,也有共阴和共阳两种。

LED数码管结构简单,价格便宜。

图1-7示出了八段LED数码显示管的结构和原理图。

图1-7(a)为八段共阴数码显示管结构图,图1-7(b)是它的原理图,图1-7(c)为八段共阳LED显示管原理图。

八段LED显示管由八只发光二极管组成,编号是a、b、c、d、e、f、g和SP,分别与同名管脚相连。

七段LED显示管比八段LED少一只发光二极管SP,其他与八段相同。

图1-7八段LED数码显示管原理和结构

单片机对LED管的显示可以分为静态和动态两种。

静态显示的特点是各LED管能稳定地同时显示各自字形;动态显示是指各LED轮流地一遍一遍显示各自字符,人们由于视觉器官惰性,从而看到的是各LED似乎在同时显示不同字形。

为了减少硬件开销,提高系统可靠性并降低成本,单片机控制系统通常采用动态扫描显示。

本设计采用动态显示的方式

1.3超声波测距系统的软件设计

单片机编程产生超声波,在系统发射超声波的同时利用定时器的计数功能开始计时,接收到回波后,接收电路输出端产生的负跳变在单片机的外部中断源输入口产生一个中断请求信号,响应外部中断请求,执行外部中断服务子程序,停止计时,读取时间差,计算距离,然后通过软件译码,将数据输出P0口显示。

程序流程图如图1-8,(a)为主程序流程图,(b)为定时中断子程序流程图,(c)为外部中断子程序流程图。

(a)(b)(c)

图1-8程序流程图

第2章电路调试及误差分析

2.1电路的调试

通过多次实验,对电路各部分进行了测量、调试和分析。

首先测试发射电路对信号放大的倍数,先用信号源给发射电路输入端一个40kHz的方波信号,峰-峰值为3.8V。

经过发射电路后,其信号峰-峰值放大到10V左右。

40kHz的方波驱动超声波发射头发射超声波,经反射后由超声波接收头接收到40kHz的正弦波,由于声波在空气中传播时衰减,所以接收到的波形幅值较低,经接收电路放大,整形,最后输出一负跳变,在单片机的外部中断源输入端产生一个中断请求信号。

该测距电路的40kHz方波由单片机编程产生,方波的周期为1/40ms,即25µs,半周期为12.5µs。

每隔半周期时间,让方波输出脚的电平取反,便可产生40kHz方波。

由于12M晶振的单片机的时间分辨率是1µs,所以只能产生半周期为12µs或13µs的方波信号,频率分别为41.67kHz和38.46kHz。

本系统在编程时选用了后者,让单片机产生约38.46kHz的方波。

该系统在测距时会有盲区,为了避免超声波发射端发射的超声波直接到达接收端所以在程序中设计有1ms的延时。

2.2系统的误差分析

2.2.1声速引起的误差

声波是媒质中传播的质点的位置、压强和密度对相应静止值的扰动。

高于20kHz时的机械波称为超声波,媒质包括气体、液体和固体。

流体中的声波常称为压缩波或压强波,对一般流体媒质而言,声波是一种纵波,传播速度为

(2-1)

式(2-1)中E为媒质的弹性模量,单位kg/mm2;ρ为媒质的密度,单位kg/mm3;E为复数,其虚数部分代表损耗;c也是复数,其实数部分代表传播速度,虚数部分则与衰减常数(每单位距离强度或幅度的衰减)有关,测量后者可求得媒质中的损耗。

声波的传播与媒质的弹性模量密度、内耗以及形状大小(产生折射、反射、衍射等)有关。

从式(2-1)可知,声波传输速度与媒介的弹性模量和密度相关,因此,利用声速测量距离,就要考虑这些因素对声速影响。

在气体中,压强、温度、湿度等因素会引起密度变化,气体中声速主要受密度影响,液体的深度、温度等因素会引起密度变化,固体中弹性模量对声速影响较密度影响更大,一般超声波在固体中传播速度最快,液体次之,在气体中的传播速度最慢。

气体中声速受温度的影响最大。

声速受温度的影响为

(2-2)

图2-1根据上式测量的温度-声速图。

图2-1空气中温度-声速图

由式(2-2)和图2-1可见,当温度θ从0~40℃变化时,将会产生7%的声速变化,因此,为了提高测量准确度,计算时必须根据温度进行声速修正。

工业测量中,一般用公式计算超声波在空气中的传播速度,即

(2-3)

2.2.2单片机时间分辨率的影响

不管是查询发射波与回波,还是由其触发单片机中断再通过软件启停定时器,都需要一定的时候,中断的方式误差相对要小一些。

相对而言,单片机的时间分辨率还是不太高,如晶振频率为12MHz时,时间分辨率为1µs。

随机误差

由于测量过程中的随机误差是按统计规律变化的,为了减少其影响,可

在同一位置处多次重复测量xi,然后取平均值x作为测量的真值。

提高测距精度的方法

上节分析了超声波测距系统误差产生的一些原因,如何提高测量精度是超声测距的关键技术。

其提高测距精度的措施如下:

1.合理选择超声波工作频率、脉宽及脉冲发射周期。

据经验,超声测距的工作频率选择40kHz较为合适;发射脉宽一般应大于填充波周期的10倍以上,考虑换能器通频带及抑制噪声的能力,选择发射脉宽1ms;脉冲发射周期的选择主要考虑微机处理数据的速度,速度快,脉冲发射周期可选短些。

2.在超声波接收回路中串入增益调节(AGC)及自动增益负反馈控制环节。

因超声接收波的幅值随传播距离的增大呈指数规律衰减,所以采用AGC电路使放大倍数随测距距离的增大呈指数规律增加的电路,使接收器波形的幅值不随测量距离的变化而大幅度的变化,采用电流负反馈环节能使接收波形更加稳定。

3.提高计时精度,减少时间量化误差。

如采用芯片计时器,计时器的计数频率越高,则时间量化误差造成的测距误差就越小。

例如:

单片机内置计时器的计数频率只有晶振频率的十二分之一,当晶振频率6MHz时,计数频率为0.5MHz,此时在空气中的测距时间量化误差为0.68mm;当晶振频率为12MHz时,计数频率为1MHz,此时测距时间量化误差为0.34mm。

若采用外部硬件计时电路,则计数频率可直接引用单片机的晶振频率,时间量化误差更小。

结论

本课题介绍了一种基于单片机的超声波测距系统的原理和设计。

给出了硬件和软件的设计方案。

超声波传感器是本系统的核心器件,本论文详细地介绍了超声波传感器的原理、结构、检测方式以及它的一些特性。

只有深入地了解超声波传感器的工作原理,才能更好的设计测距电路。

单片机是本系统的控制部分,采用Atmel公司生产的AT89S52芯片。

驱动超声波传感器的40kHz的方波信号,就是由单片机编程产生的。

本系统的发射电路采用HCF4069六反向器,通过它对单片机产生的方波信号进行放大,以驱动传感器工作。

接收电路采用的是CXD20106A输出负脉冲给单片机响应中断程序。

本系统的LED显示部分采用的是动态扫描方式,并用单片机软件译码。

单片机内部采用C语言编程,方波信号的产生、时间差的读取、距离的计算以及显示输出的译码都由单片机编程完成。

本课题所设计的超声波测距系统具有测量精度较高、速度快、控制简单方便等优点。

测距范围从0cm到50cm,测量精度在±1cm内。

测距系统在许多工业现场和自动控制场合,都有很重要的作用。

但由于经验不足,电路硬件、软件部分都有不够完善的地方,在今后的学习中会进一步改进。

总体来说,最重要的是在本课题的设计过程中我学到了很多知识,从中受益匪浅。

了解了超声波传感器的原理,学会了各种放大电路的分析、设计,也掌握了单片机的开发过程和利用单片机设计电路的方法。

对一块电路板的设计、焊板、调试、改进等整个过程,有了更深入的理解和掌握。

这些对我今后的学习和工作都会有很大帮助的。

参考文献

1.刘凤然.基于单片机的超声波测距系统.传感器世界.2001,5:

29-32

2.葛健强.基于CPLD的超声波测距仪研制.无锡商业职业技术学院学报.2004,4(3):

8-10

3.何希才,薛永毅.传感器及其应用实例.机械工业出版社,2004:

138-152

4.胡汉才.单片机原理及其接口技术.清华大学出版社,2004:

27-46

5.吴斌方,刘民,熊海斌.超声波测距传感器的研制.湖北工学院学报.2004,19(6):

26-28

6.谭洪涛,张学平.单片机设计测距仪原理及其简单应用.现代电子技术.2004,18:

94-96

7.PeterHauptmann,RalfLucklum,BerndHenning.UltrasonicSensorsforProcessControl.SensorsUpdate.1998,3:

163-207

8.赵占林,刘洪梅.超声波测距系统误差分析及修正.科技情报开发与经济.2002,12(6):

144-145

9.J.Otto.SensorsforDistanceMeasurementandTheirApplicationsinAutomobiles.SensorsUpdate.2002,10:

231-255

10.苏炜,龚壁建,潘笑.超声波测距误差分析.传感器技术.2004,23(6):

8-11

11.罗忠辉,黄世庆.提高超声测距精度的方法.机械设计与制造.2005,1:

109

12.YusukeMoritake,HiroomiHikawa.CategoryRecognitionSystemUsingTwoUltrasonicSensorsandCombinationalLogicCircuit.ElectronicsandCommunicationsinJapan.2005,88(7):

33-42

附录1

 

附录2

程序:

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

sbitTx=P3^3;

sbitRx=P3^2;

ucharcodeSEG7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

uintdistance[4];

ucharge,shi,bai,temp,flag,outcomeH,outcomeL,i;

bitsucceed_flag;

voidconversion(uinttemp_data);

voiddelay_20us();

voidpai_xu();

voidmain(void)

{uintdistance_data,a,b;

ucharCONT_1;

i=0;

flag=0;

Tx=0;

TMOD=0x11;

TR0=1;

IT0=0;

ET0=1;

EX0=0;

EA=1;

while

(1)

{

EA=0;

Tx=1;

delay_20us();

Tx=0;

while(Rx==0);

succeed_flag=0;

EX0=1;

TH1=0;

TL1=0;

TF1=0;

TR1=1;

EA=1;

while(TH1<30);

TR1=0;

EX0=0;

if(succeed_flag==1)

{

distance_data=outcomeH;

distance_data<<=8;

distance_data=distance_data|outcomeL;

distance_data*=12;

distance_data/=58;

}

if(succeed_flag==0)

{

distance_data=0;

}

distance[i]=distance_data;

i++;

if(i==3)

{

distance_data=(distance[0]+distance[1]+distance[2]+distance[3])/4;

pai_xu();

distance_data=distance[1];

a=distance_data;

if(b==a)CONT_1=0;

if(b!

=a)CONT_1++;

if(CONT_1>=3)

{CONT_1=0;

b=a;

conversion(b);

}

i=0;

}

}

}

INTO_()interrupt0

{

outcomeH=TH1;

outcomeL=TL1;

succeed_flag=1;

EX0=0;

}

timer0()interrupt1

{

TH0=0xfd;

TL0=0x77;

switch(flag)

{case0x00:

P0=ge;P2=0x7f;flag++;break;

case0x01:

P0=shi;P2=0xbf;flag++;break;

case0x02:

P0=bai;P2=0xdf;flag=0;break;

}

}

 

voidconversion(uinttemp_data)

{

ucharge_data,shi_data,bai_data;

bai_data=temp_data/100;

temp_data=temp_data%100;

temp_data=temp_data%10;

ge_data=temp_data;

bai_data=SEG7[bai_data];

shi_data=SEG7[shi_data]&0x7f;

ge_data=SEG7[ge_data];

EA=0;

bai=bai_data;

shi=shi_data;

ge=ge_data;

EA=1;

}

voiddelay_20us()

{ucharbt;

for(bt=0;bt<60;bt++);

}

voidpai_xu()

{uintt;

if(distance[0]>distance[1])

{t=distance[0];distance[0]=distance[1];distance[1]=t;}

if(distance[0]>distance[2])

{t=distance[2];distance[2]=distance[0];distance[0]=t;}

if(distance[1]>distance[2])

{t=distance[1];distance[1]=distance[2];distance[2]=t;}

}

 

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

当前位置:首页 > 表格模板 > 表格类模板

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

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