基于单片机控制的超声波测距报警系统
2011-09-07王懿川上海师范大学天华学院
王懿川/上海师范大学天华学院
0 引言
超声波具有定向性好、能量集中、在传输过程中衰减较小、反射能力较强等优点,超声波传感器可广泛应用于非接触式检测方法,因而采用仿真技术进行超声波测距。
目前国内的超声波测距专用集成电路都是只有厘米级的测量准确度。通过分析超声波测距误差产生的原因,提高测量时间差到微秒级,以及用LM92温度传感器进行声波传播速度的补偿后,设计的高准确度超声波测距仪能达到毫米级的测量准确度。
1 超声波测距报警系统基本原理
如图1所示,使单片机可接收超声波模块输出的距离信号,并对其进行合理的处理后,在显示模块上实时显示超声波模块与障碍物的距离。
图1 系统连接示意
单片机发出40 kHz的方波信号,经放大后通过超声波发射器输出;超声波接收器将接收到的超声波信号经放大器放大,用锁相环电路进行检波处理后,启动单片机中断程序,测得时间为t。再通过软件编程进行判别、计算,得出所测距离值并由LED数码管显示,其原理框图如图2。
发射器发出的超声波以速度v在空气中传播,在到达被测物体时被反射返回,由接收器接收,其往返时间为t。由公式:测出的距离 L (m)=常温下的声速340 (m/s)×感应时间t (s)/ 2,算出被测物体的距离。由于超声波也是一种声波,其声速v与温度有关,如果温度变化不大,则可认为声速是基本不变的。如果测距准确度要求很高,则应通过温度补偿的方法加以修正。
2 系统硬件设计
2.1 超声波测距原理
单片机在 T0时刻发射方波,同时启动定时器开始计时,当收到回波后,产生一个负跳变到单片机中端口,单片机响应中断程序,定时器停止计数。计算时间差,即可得到超声波在介质中传播的时间t ,由此便可计算出距离。其时序图如图3所示。
2.2 硬件电路
硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分。单片机采用STC89C51或其兼容系列。采用12 MHz高准确度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P2.4端口输出超声波换能器所需的40 kHz的方波信号,利用外中断0口监测超声波接收电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用程序驱动,位码用PNP三极管驱动。
图3 超声波时序图
2.3 各主要模块的硬件
STC89C51芯片引脚与封装如图4所示。
图4 STC89C51引脚
引脚功能说明:
(1)VCC:电源电压。
(2)GND:接地。
(3)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
(4)/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
(5)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
(6)XTAL2:来自反向振荡器的输出。
(7)P0口:P0口为一个8位漏级开路双向I/O口,也即地址/数据总线复用口。作为输出口用时,每脚可吸收8TTL门电流。
(8)P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能吸收或输出4TTL门电流。
(9)P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可吸收或输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
(10)P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可吸收或输出4个TTL门电流。
P3口也可作为AT89C52的一些特殊功能口,如表1所示。
表1 P3特殊功能口
P3口同时为闪烁编程和编程校验接收一些控制信号。
(11)ALE//PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
(12)/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
2.4 超声波发射电路
超声波发射电路原理如图5所示。输出端采用两个反向器并联,用以提高驱动能力。上位电阻R10、R11一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡时间。
2.5 超声波检测接收电路
集成电路CX20106A是一款红外线检波接收的专用芯片。考虑到红外遥控常用的载波频率38 kHz与测距的超声波频率40 kHz较为接近,可以利用它制作超声波检测接收电路(如图6)。实验证明用CX20106A接收超声波(无信号时输出高电平),具有很好的灵敏度和较强的抗干扰能力。
图5 超声波发射电路原理图
图6 超声波检测接收电路
2.6 显示电路
显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三级管驱动。接P2.1引脚的为个位显示数码管,其小数点在P2.1有效时显示,此功能由软件来完成。
2.7 复位功能
系统应具备测距启动功能,可以复位系统,使其开始重新测距。
综上所述,本系统的特点是利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时,单片机选用STC89C52,经济易用,且片内有8K的ROM,便于编程。电路原理如图7 所示。
3 软件方案
系统软件设计采用模块化设计,主要包括主程序设计、T0中断服务子程序、外部中断服务子程序、距离计算子程序、LED显示子程序设计等。主程序首先是对系统环境初始化,设置定时器T0工作模式为16位定时计数器模式。置位总中断允许位EA并给显示端口P0和P2清0。
图7 电路原理
然后调用超声波发生子程序送出一个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1 ms,然后才打开外中断0接收返回的超声波信号。
测出距离后结果将以十进制BCD码方式送往LED显示约0.5 s,然后再发超声波脉冲重复测量过程。为了有利于程序结构化和容易计算出距离,主程序采用C语言编写。
3.1 主程序
·系统控制初始化LED、初始化计数控制部分,清除计数值。
·单片机超声波脉冲信号。
·立刻置INT0为1,打开计时器,等待回波信号。
·回波信号到达,关闭计时器,P3.3为0,清 INT0为0。
·单片机读出计数值。
·单片机将计数值进行计算后得出的距离值,显示在LED上。
·当测量距离<10.0 cm或>50.0 cm时,报警系统灯亮。
·当按下复位键时,启动复位功能。
主程序流程图如图8所示。
图8 主程序流程
3.2 定时中断服务子程序
超声波发生子程序的作用是通过P3.3端口发送2个左右频率约40 kHz的方波的超声波脉冲信号,同时把计数器T0打开进行计时。定时中断子程序如图9所示。
图9 定时中断服务子程序
3.3 功能显示
如图10所示,通过数码管显示测出距离为14.3 cm,属于10.0 ~ 50.0 cm正常范围。
图10 超声波测距正常范围
如图11所示,超声波测出的距离为9.4 cm,<10.0 cm,报警系统启动,LED灯亮。
图11 超声波测距<10.0 cm
如图12所示,超声波测出的距离为50.3 cm,> 50.0 cm,报警系统启动,LED灯亮。
图12 超声波测距大于50.0 cm
如图13所示,按下键盘模块中的按键,复位系统,数码管显示距离数归零。
图13 启动复位功能
[1]沙占友.集成化智能传感器原理与应用[M].北京:电子工业出版社,2004.
[2]吴研,刘苏莉,卢日万.超声波倒车雷达系统设计[J].工业控制技术,2005(6):88-90.
[3]肖景和,赵健.红外线热释电与超声波遥控电路[M].北京:人民邮电出版社,2003.
[4]沈红卫. 基于单片机智能系统的设计与实现[M].北京:电子工业出版社,2005.
[5]赖寿宏.微型计算机控制技术[M].北京:机械工业出版社,2002.
[6]尤一鸣. 傅景义,王俊省. 单片机总线扩展技术,1版[M].北京:北京航空航天大学出版社,1993.