一种超声波测距装置的设计与实现

2016-12-04 02:36怡
中国新技术新产品 2016年20期
关键词:回响测距超声波

王 怡

(电子科技大学成都学院微电子技术系,四川 成都 611731)

一种超声波测距装置的设计与实现

王怡

(电子科技大学成都学院微电子技术系,四川 成都 611731)

摘要:超声波测距技术应用广泛,可应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控等。重点介绍了一种基于单片机的超声波测距装置的设计与实现。包括电路的基本组成及设计原理,超声波测量模块的接口特性及基本功能,软件设计原理以及测量精度的控制等。

超声波;测距;单片机;精度

1.总体架构

测距仪以基于51单片机的最小系统为核心,加上超声波测距模块,显示模块和通信模块构成。显示模块由数码管构成,可以实时显示距离测量的结果。通信模块以单片机自带的通用异步串口为基础,扩展一路RS232电平接口。通过这个接口,可以把测量结果上传给其他设备,也可以接受来自网络中主机的命令,按要求进行距离测量和结果上传。

2.硬件电路设计原理

2.1 超声波模块的选择和基本工作原理

超声波模块是实现距离测量的核心硬件部件。本次选用的超声波测距模块是HC-SR04。

该模块接口简单,只有4个引脚,分别是电源、地、触发信号输入,回响信号输出。HC-SR04模块可提供2cm~400cm的非接触式距离感触功能,测量精度可达3mm。工作原理如下:

(1)启动测量:向触发信号输入引脚输入一个至少持续10us的高电平信号,就能启动模块的测距;

(2)测量过程及输出:模块启动测距后会发出8个40kHz的方波,并自动检测是否有信号返回。一旦测到返回信号,就在回响信号输出端输出一个正脉冲,正脉冲持续时间就是超声波信号发出到收到返回信号的时间间隔。因此,通过测量该正脉冲的宽度并进行正确地换算,就能得到相应的测量距离;

(3)结果换算:测量距离=(高电平持续时间×音速)/2。

2.2 超声波模块与单片机之间的互联设计

超声波模块与单片机之间的互联,最简单的设计就是将单片机的任意两根I/O口线与模块的触发信号输入,回响信号输出相连就可以了。但是,这种方式测量回波的宽度会存在一定的误差。因此,如果想要精确地测量回波宽度,就要用到单片机定时器自带的门控功能。硬件的互联就会不同。此时,模块的触发信号输入端仍然可以与单片机的一根普通用户I/O口线连接。但模块的回响信号则只能连接到单片机的外部中断引脚INT0或INT1上,这样才能使用定时器的门控功能,实现精确测量。

3.软件设计原理

3.1 一般测量

如果测量精度要求不高,就可以使用查询的方式来检测回波信号的变化,并相应地控制定时器的计时,计时完成后,取出计数值,换算成时间,再将高电平的持续时间换算成距离即可。测量控制部分的关键代码如下:

sbit Trig=P1^0;

sbit Echo=P1^1;

main( )

{

Trig=0; //触发信号初态置为0

TMOD=0x01; //设置定时器0为工作方式1,内部计数模式

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

TL0=0; //定时器0清零

Trig=1; //触发信号置1,开始测量

delay_12us(); //延时12us

while(Echo==0); //等待有效的回波信号

TR0=1; //启动定时器0

while(Echo==1); //等待回波信号变低

TR0=0; //停止计数

........

}

上述测量控制过程完成后,就可以读取TH0和TL0中的计数值,进行测量距离的计算了。

3.2 精确测量

在一般的测量方法中,监测回波信号和启动定时器都是通过软件查询来实现的。然而,由于软件查询和回波信号的产生是完全独立的两个操作,所以查询必然滞后于回波信号的产生,从而带来一定的测量误差。而程序读到有效的回波信号后,要先做判断,然后再启动定时器工作,这都需要时间。回波信号变为无效,程序读取状态后再关闭定时器,也是类似的过程。因此,测量是有误差的。

如果想测量更精确,就要使用硬件来控制定时器的启动。即回波信号一变为有效,定时器立刻启动,停止也一样。要做到这一点,就要用到单片机定时器自带的门控功能。单片机的TMOD寄存器中有一个门控位GATE。该位置为1,定时器的运行控制位TRx置为1,定时器的启动和停止就可以由单片机的外部中断引脚INT0或INT1控制了。因此,硬件互联时,回响信号必须连接到单片机的外部中断引脚INT0或INT1上。这样就能做到定时器的计时与回响信号变化之间的同步了。软件的设计也更简化,控制部分的关键代码如下:

sbit Trig=P1^0;

sbit Echo=P1^1;

main( )

{

Trig=0; //触发信号初态置为0

TMOD=0x01; //设置定时器0为工作方式1,内部计数模式

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

TL0=0; //定时器0清零

Trig=1; //触发信号置1,开始测量

delay_12us(); //延时12us

while(Echo==0); //等待有效的回波信号

while(Echo==1); //等待回波信号变低

........

}

上述测量控制过程完成后,就可以读取TH0和TL0中的计数值,进行测量距离的计算。

这样测量的结果就很准确了。

结语

本文介绍了一种基于51单片机超声波测距模块的设计。包括硬件设计原理,程序流程设计,测量精度控制等。该设计在实测中运作良好,稳定,测试距离及精度符合设计要求。

[1]张瑾,张伟,张立宝. Protel99SE入门与提高[M].北京:人民邮电出版社,2010.

TP391.8

A

猜你喜欢
回响测距超声波
光影回响-TW展厅
鸭绿回响
回响
念念不忘,必有回响
类星体的精准测距
基于Niosll高精度超声波流量计的研究
浅谈超声波测距
蝙蝠的超声波
超声波流量计的研究
超声波流量计在兰干渠上的应用