超声波测距仪设计正文文档格式.docx

上传人:b****6 文档编号:21257868 上传时间:2023-01-28 格式:DOCX 页数:31 大小:1.41MB
下载 相关 举报
超声波测距仪设计正文文档格式.docx_第1页
第1页 / 共31页
超声波测距仪设计正文文档格式.docx_第2页
第2页 / 共31页
超声波测距仪设计正文文档格式.docx_第3页
第3页 / 共31页
超声波测距仪设计正文文档格式.docx_第4页
第4页 / 共31页
超声波测距仪设计正文文档格式.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

超声波测距仪设计正文文档格式.docx

《超声波测距仪设计正文文档格式.docx》由会员分享,可在线阅读,更多相关《超声波测距仪设计正文文档格式.docx(31页珍藏版)》请在冰豆网上搜索。

超声波测距仪设计正文文档格式.docx

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

目前在近距离测量方面常用的是压电式超声波换能器。

根据设计要求并综合各方面因素,本文采用STC89C52单片机作为控制器,用动态扫描法实现液晶数字显示,并通过按键设置系统报警的最小值和安全范围。

报警电路主要作用是对距离较近时进行报警。

根据实际情况,当距离大于3.5m时,可认为是安全状态,液晶显示“—”标志;

在3.5m和1m之间时认为是正常的,显示实测距离;

小于1m时,系统发出报警功能。

2.3系统整体方案的论证

超声波测距的原理是利用超声波的发射和接收,根据超声波传播的时间来计算出传播距离。

实用的测距方法有两种,一种是在被测距离的两端,一端发射,另一端接收的直接波方式,适用于身高计;

一种是发射波被物体反射回来后接收的反射波方式,适用于测距仪。

此次设计采用反射波方式。

测距仪的分辨率取决于对超声波传感器的选择。

超声波传感器是一种采用压电效应的传感器,常用的材料是压电陶瓷。

由于超声波在空气中传播时会有相当的衰减,衰减的程度与频率的高低成正比;

而频率高分辨率也高,故短距离测量时应选择频率高的传感器,而长距离的测量时应用低频率的传感器。

2.4超声波测距原理

2.4.1超声波概述

超声波是一种频率超过20

的机械波。

超声波作为一种特殊的声波,同样具有声波传输的基本物理特性—反射、折射、干涉、衍射、散射。

超声波具有方向性集中、振幅小、加速度大等特点,可产生较大力量,并且在不同的媒质介面,超声波的大部分能量会反射。

利用超声检测往往比较迅速,方便,易于做到实时控制,并且在测量精度方面能达到工业使用的要求,主要应用于倒车雷达、建筑施工工地以及一些工业现场,例如:

液位、井深、管道长度等场合。

超声波测量在国防、航空航天、电力、石化、机械、材料等众多领域具有广泛的作用,它不但可以保证产品质量、保障安全,还可起到节约能源、降低成本的作用。

超声波与光波、电磁波、射线等检测相比,其最大特点是穿透力强,几乎可以在任何物体中传播,了解被测物体内部情况。

超声检测设备还具有结构简单,成本低廉的优点,有利于工程实际使用。

2.4.2超声波传感器介绍

超声波传感器是一种将其他形式的能转变为所需频率的超声能或是把超声能转变为同频率的其他形式的能的器件。

目前常用的超声波传感器有两大类,即电声型与流体动力型。

电声型主要包括压电传感器、磁致伸缩传感器、静电传感器。

流体动力型包括有气体和液体两种类型的哨笛。

由于工作频率与应用目的不同,超声波传感器的结构形式是多种多样的,并且名称也有不同,例如在超声检测和诊断中习惯上都把超声波传感器称为探头,而工业中采用的流体动力型传感器称为“哨”或“笛”。

压电传感器属于超声波传感器中电声型的一种。

探头由压电晶片、楔块、接头等组成,是超声检测中最常用的实现电能和声能相互转换的一种传感器件,是超声波检测装置的重要组成部分。

压电材料分为晶体和压电陶瓷两类。

属于晶体的如石英、铌酸锂等,属于压电陶瓷的有锆钛酸铅,钛酸钡等。

其具有下列的特性:

把这种材料置于电场之中,它就产生一定的应变;

相反,对这种材料施以外力,则由于产生了应变就会在其内部产生一定方向的电场。

所以,只要对这种材料加以交变电场,它就会产生交变的应变,从而产生超声振动。

因此,用这种材料可以制成超声传感器。

传感器的主要组成部分是压电晶片。

当压电晶片受发射电脉冲激励后产生振动,即可发射声脉冲,是逆压电效应。

当超声波作用于晶片时,晶片受迫振动引起的形变可转换成相应的电信号,是正压电效应。

前者用于超声波的发射,后者即为超声波的接收。

超声波传感器一般采用双压电陶瓷晶片制成。

这种超声传感器需要的压电材料较少,价格低廉,且非常适用于气体和液体介质中。

在压电陶瓷上加上有大小和方向不断变化的交流电压时,根据压电效应,就会使压电陶瓷晶片产生机械变形,这种机械变形的大小和方向在一定范围内是与外加电压的大小和方向成正比的。

也就是说,在压电陶瓷晶片上加有频率为f0交流电压,它就会产生同频率的机械振动,这种机械振动推动空气等媒介,便会产生超声波。

如果在压电陶瓷晶片上有超声机械波作用,这将会使其产生机械变形,这种机械变形是与超声机械波一致的,机械变形使压电陶瓷晶片产生频率与超声机械波相同的电信号。

压电式超声波发生器实际上是利用压电晶体的逆向压电效应来工作的。

超声波发生器内部结构如图2.1所示,它有两个压电晶片和一个锥形振子,当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动锥形振子振动,便产生超声波。

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

图2.1压电式超声波传感器结构图

压电陶瓷晶片有一个固定的谐振频率,即中心频率f0。

发射超声波时,加在其上面的交变电压的频率要与它的固有谐振频率一致。

这样,超声传感器才有较高的灵敏度。

当所用压电材料不变时,改变压电陶瓷晶片的几何尺寸,就可非常方便的改变其固有谐振频率。

利用这一特性可制作成各种频率的超声波传感器。

一般常用的超声波传感器有两种:

专用型和兼用型。

专用型是发送器用作发送超声波,接收器用作接收超声波;

兼用型就是发送器和接收器是一体的传感器,既可以发送超声波,又可以接收超声波。

2.4.3超声波测距的原理

超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到发射波就立即停止计时。

假设超声波在空气中的传播速度为

,根据计时器记录的时间

,发射点距障碍物的距离

,如图2.2所示

图2.2超声波测距原理

图2.2中被测距离为H,两探头中心距离的一半用M表示,超声波单程所走过的距离用

表示,由图可得:

(1)

(2)

将式

(2)带入式

(1)得:

(3)

在整个传播过程中,超声波所走过的距离为:

(4)

式中:

为超声波的传播速度,

为传播时间,即为超声波从发射到接收的时间。

将式(4)带入式(3)可得:

(5)

当被测距离H远远大于M时,式(5)变为:

(6)

这就是所谓的时间差测距法。

首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离[2]。

由于是利用超声波测距,要测量预期的距离,所以产生的超声波要有一定的功率和合理的频率才能达到预定的传播距离,同时这是得到足够的回波功率的必要条件,只有得到足够的回波频率,接收电路才能检测到回波信号和防止外界干扰信号的干扰。

经分析和大量实验表明,频率为40

左右的超声波在空气中传播效果最佳,同时为了处理方便,发射的超声波被调制成具有一定间隔的调制脉冲波信号。

3单元模块设计

硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波接收电路、声光报警输出电路、供电电路等几部分,如图3.1所示。

单片机采用STC89C52,系统晶振采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。

单片机用P3.6端口产生10us高电平的触发信号,US-100超声波测距模块发射探头循环发出8个40kHz的方波信号,P3.7端口监测超声波接收电路输出的返回信号。

显示电路采用简单实用液晶1602显示超声波测得距离。

图3.1系统整体框图

3.1单片机主芯片电路

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

具有以下标准功能:

8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。

另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

最高运作频率35Mhz,6T/12T可选。

图3.2单片机芯片STC89C52的电路图

3.1.1时钟电路

首先介绍一下单片机的晶振电路,即时钟电路。

单片机的工作流程,就是在系统时钟的作用下,一条一条地执行存储器中的程序。

单片机的时钟电路由外接的一只晶振和两只起振电容,以及单片机内部的时钟电路组成,晶振的频率越高,单片机处理数据的速度越快,系统功耗也会相应增加,稳定性也会下降。

单片机系统常用的晶振频率有6MHz、11.0592MHz、12MHz、本系统采用11.0592MHz晶振,电容选30pF,电路如图3.3。

图3.3晶振电路图

3.1.2复位电路

系统刚上电时,单片机内部的程序还没有开始执行,需要一段准备时间,也就是复位时间。

一个稳定的单片机系统必须设计复位电路。

当程序跑飞或死机时,也需要进行系统复位。

复位电路有很多种,有上电复位,手动复位等,电路如图3.4。

图3.3复位电路图

3.2US-100超声波测距模块

3.2.1概述

US-100超声波测距模块可实现2cm~4.5m的非接触测距功能,拥有2.4~5.5V的宽电压输入范围,静态功耗低于2mA,自带温度传感器对测距结果进行校正,同时具有GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠。

本模块如图3.4和图3.5所示:

图3.4US-100正面图图3.5US-100背面图

3.2.2主要技术参数

表3.1

电气参数

US-100超声波测距模块

工作电压

DC2.4V~5.5V

静态电流

2mA

工作温度

-20~+70度

输出方式

电平或UART(跳线帽选择)

感应角度

小于15度

探测距离

2cm-450cm

探测精度

0.3cm+1%

UART模式下串口配置

波特率9600,起始位1位,停止位1位,数据位8位,无奇偶校验,无流控制。

3.2.3接口说明

本模块共有两个接口,即模式选择跳线和5Pin接口。

模式选择跳线的间距为2.54mm,当插上跳线帽时为UART(串口)模式,拔掉时为电平触发模式。

5Pin接口从左到右依次编号1,2,3,4,5。

它们的定义如下:

1号Pin:

接VCC电源(供电范围2.4V~5.5V);

2号Pin:

当为UART模式时,接外部电路UART的TX端;

当为电平触发模式时,接外部电路的Trig端;

3号Pin:

当为UART模式时,接外部电路UART的RX端;

当为电平触发模式时,接外部电路的Echo端;

4号和5号Pin:

接外部电路的地。

3.2.4电平触发测距工作原理

在模块上电前,首先去掉模式选择跳线上的跳线帽,使模块处于电平触发模式。

电平触发测距的时序如图3.6所示:

3.6US-100测距时序图

图3.6表明:

只需要在Trig/TX管脚输入一个10US以上的高电平,系统便可发出8个40KHZ的超声波脉冲,然后检测回波信号。

当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过Echo/RX管脚输出。

在此模式下,模块将距离值转化为340m/s时的时间值的2倍,通过Echo端输出一高电平,可根据此高电平的持续时间来计算距离值。

即距离值为:

(高电平时间*340m/s)/2。

注:

因为距离值已经经过温度校正,此时无需再根据环境温度对超声波声速进行校正,即不管温度多少,声速选择340m/s即可。

3.2.5超声波测距的系统及其组成

单片机STC89C52通过P3.6端口产生10us高电平的触发信号,使US-100超声波测距模块发射探头循环发出8个40kHz的方波信号,然后检测回波信号。

当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过Echo/RX管脚输出,同时单片机P3.7端口监测超声波接收电路输出的返回信号。

电路如图3.7所示:

图3.7

3.3显示电路模块

1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。

每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以它不能显示图形。

1602采用标准的16脚接口,其中:

第1脚:

VSS为电源地;

第2脚:

VDD接5V电源正极;

第3脚:

V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度);

第4脚:

RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器;

第5脚:

RW为读写信号线,高电平

(1)时进行读操作,低电平(0)时进行写操作;

第6脚:

E(或EN)端为使能(enable)端;

第7~14脚:

D0~D7为8位双向数据端;

第15~16脚:

空脚或背灯电源,15脚背光正极,16脚背光负极。

液晶1602接口电路如图3.8所示:

图3.8液晶1602接口电路

3.4声光报警

当所测得的距离小于设置的报警距离时,P1.3口为低电平,红色发光二极管D6亮,提醒司机注意;

当所测得的距离在安全距离范围内时,P1.4口为低电平,黄色发光二极管D8亮,从而可以起到光报警的作用。

当P1.2口输入低电平时三极管Q1导通蜂鸣器响,当P1.2口输入高电平时三极管Q1截止蜂鸣器不响,从而起到声音报警的作用。

电路如图3.9和3.10。

图3.9声音报警图3.10光报警

3.5电源电路

电源电路主要是为系统提供电源,在本设计中,为了使电路简单,我们直接用USB接口提供5V直流电源为电路供电。

图3.11中的第2个图是电源指示灯电路,指示是否给系统加电,

图3.11电源电路

3.6按键设置

通过按键设置系统报警的最小值和安全范围。

报警电路主要作用是在距离较近时进行报警。

根据实际情况,当距离大于3.5m时,可认为是安全状态,液晶显示“--”标志;

小于1m时,应提醒注意,系统发出报警功能。

通过按键S2选择最小值L或最大值H的设定;

S5和S4设定其大小。

按键电路如3.12所示:

图3.12按键电路

4软件设计

4.1主程序设计

超声波测距的软件设计主要由超声波发生与接收程序及显示子程序组成。

超声波测距的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时),所以控制程序可采用C语言编程。

主程序首先是对系统环境初始化,设定时器/计数器T0工作方式为方式1且为定时模式,开总中断允许位EA和T0中断允许位ET0。

所有的流程框图如下所示:

图4.1主程序设计框图

4.2超声波测距主程序的程序

#include<

reg52.h>

//器件配置文件

intrins.h>

sbitRX=P3^7;

sbitTX=P3^6;

sbitLCM_RW=P1^6;

//定义LCD引脚

sbitLCM_RS=P1^5;

sbitLCM_E=P1^7;

sbitSET=P3^2;

sbitUP=P2^6;

sbitDOWN=P2^7;

sbitBUZ=P1^2;

sbitD1=P1^3;

sbitD2=P1^4;

#defineLCM_DataP0

#defineBusy0x80//用于检测LCM状态字中的Busy标识

#defineucharunsignedchar

#defineuintunsignedint

unsignedlongSET_H=35,SET_L=10;

voidLCMInit(void);

voidDisplayOneChar(ucharX,ucharY,ucharDData);

voidDisplayListChar(ucharX,ucharY,ucharcode*DData);

voidDelay5Ms(void);

voidDelay400Ms(void);

voidDecode(ucharScanCode);

voidWriteDataLCM(ucharWDLCM);

voidWriteCommandLCM(ucharWCLCM,BuysC);

ucharReadDataLCM(void);

ucharReadStatusLCM(void);

ucharcodemcustudio[]={"

Set:

L1.0MH3.5M"

};

ucharcodeemail[]={"

153607297@"

ucharcodeDistance[]={"

Distance:

"

ucharcodeCls[]={"

ucharcodeASCII[15]={'

0'

'

1'

2'

3'

4'

5'

6'

7'

8'

9'

.'

-'

M'

staticucharDisNum=0;

//显示用指针

uinttime=0;

unsignedlongS=0;

bitflag=0;

uchardisbuff[4]={0,0,0,0,};

//写数据

voidWriteDataLCM(ucharWDLCM)

{

ReadStatusLCM();

//检测忙

LCM_Data=WDLCM;

LCM_RS=1;

LCM_RW=0;

LCM_E=0;

//若晶振速度太高可以在这后加小的延时

//延时

LCM_E=1;

}

//写指令

voidWriteCommandLCM(ucharWCLCM,BuysC)//BuysC为0时忽略忙检测

if(BuysC)ReadStatusLCM();

//根据需要检测忙

LCM_Data=WCLCM;

LCM_RS=0;

//读数据

ucharReadDataLCM(void)

LCM_RW=1;

return(LCM_Data);

//读状态

ucharReadStatusLCM(void)

LCM_Data=0xFF;

while(LCM_Data&

Busy);

//检测忙信号

voidLCMInit(void)//LCM初始化

LCM_Data=0;

WriteCommandLCM(0x38,0);

//三次显示模式设置,不检测忙信号

Delay5Ms();

WriteCommandLCM(0x38,1);

//显示模式设置,开始要求每次检测忙信号

WriteCommandLCM(0x08,1);

//关闭显示

WriteCommandLCM

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

当前位置:首页 > 自然科学 > 天文地理

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

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