摘 要:本文介绍利用AT89C51 单片机设计的一种用于倒车雷达的超声波自动测距系统,提醒驾驶员在倒车时有效的避开可能对倒车造成危害的障碍物和行人,从而有效避免由于倒车造成的汽车碰撞或擦伤的经济损失和人身安全问题,具有较强的实用性。本文在分析超声波测距系统原理的基础上,指出了设计测距仪的思路和所需考虑的问题,给出了实现超声波测距方案的软、硬件设计系统框图。该设计系统经校正后,其测量精度可达0.01m。
1 引言
近年来,随着汽车产业的迅速发展和人们生活水平的不断提高,我国的汽车数量正逐年增加。同时汽车驾驶人员中非职业汽车驾驶人员的比例也逐年增加。在公路、街道、停车场、车库等拥挤狭窄的地方倒车时,驾驶员既要前瞻,又要后顾,稍微不小心就会发生追尾事故。据相关调查统 15%的汽车碰撞事故是因倒车时汽车的后视能力不良造成的。因此,增加汽车的后视能力,研制汽车后部探测障碍物的倒车雷达便成为近些年来的研究热点。安全避免障碍物的前提是快速、准确地测量障碍物与汽车之间的距离。为此,本文设计了以单片机为核心,利用超声波实现无接触测距的倒车雷达系统[1],可有效的解决这一难题。随着科学技术的快速发展,超声波技术在日常生活中的应用越来越广。超声波测距主要应用于倒车雷达、建筑施工工地以及一些工业现场,例如:液位、井深、管道长度等场合。但就目前技术水平来说,人们可以具体利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。展望未来,超声波测距仪作为一种新型的非常重要有用的工具在各方面都将有很大的发展空间, 它将朝着更加高定位高精度的方向发展。本文设计的是基于超声波的自动测距仪 [2],主要用于汽车倒车等场合,可检测到汽车在倒车过程中,车后障碍物与汽车的距离,通过数码管显示出距离障碍物距离,并根据障碍物与车尾距离远近实时发出不同等级的警示声音。无庸置疑,未来的超声波测距仪将与自动化智能化接轨,与其他的测距仪集成和融合,形成多测距仪。在新的世纪里,面貌一新的测距仪将发挥更大的作用。
2 系统总体设计
超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到工业实用的要求和农业生产等自动化的使用要求。超声波发射器发出的超声波以速度 v 在空气中传播,在到达被测物体时被反射返回,由超声波接收器接收,其往返时间为 t,由s=vt/2 即可算出被测物体的距离。由于超声波也是一种声波,其声速 v 与温度有关,下表列出了几种不同温度下的声速[3]。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。
超声波测距的原理是利用超声波的发射和接受,根据超声波传播的时间来计算出传播距离[4]。如图1 所示为反射时间法测距原理图,利用检测声波发出到接收到被测物反射回波的时间来测量距离,对于距离较短和要求不高的场合我们可认为空气中的声速为常数,我们通过测量回波时间T 利用公式S=C ×(T/2)其中,S 为被测距离、V 为空气中声速、T 为回波时间=T2-T1),T1为超声波发出的时刻,T2 为超声波返回的时刻,可以计算出路程,这种方法不受声波强度的影响。这样可以求出距离:S=C ×(T2-T1)/2。
测距系统的分辨率取决于对超声波传感器的选择。超声波传感器是一种采用压电效应的传感器,常用的材料是压电陶瓷。由于超声波在空气中传播时会有衰减,衰减的程度与频率的高低成正比, 而频率高分辨率也高,故短距离测量时应选择频率高的传感器,而长距离的测量时应用低频率的传感器。本文设计主要用于倒车雷达等方面的应用,故选择频率高的传感器.
本文设计的超声波自动测距系统原理框图如图 1示,单片机发出 40kHZ 的信号,经放大后通过超声波发射器输出;与此同时单片机控制器内部T0 计数器开始记数,当超声波接收器接收到超声波回波信号,经放大器放大,通过外部中断启动单片机中断程序,这时 T0 计数器停止记数,再由软件进行提取计数器的计数值换算成时间通过计算得出距离数并送LED 显示,系统还会根据障碍物与车尾距离远近实时发出不同等级的警示声音[5]。
3 系统硬件设计
本测距系统硬件电路的设计主要包括单片机最小系统电路、显示电路、超声波信号发射电路、超声波信号接收电路、蜂鸣器电路五部分组成。单片机采用A T 8 9 C 5 1 或其兼容系列[ 6 ]。单片机振荡电路使用12MHz 晶振,5V Vcc 电源电压。51 单片机芯片、单片机振荡电路和单片机复位电路组成了单片机最小系统电路,四位数码管组成显示电路,非门74LS04 芯片与超声波发射探头 T-40-16 组成了超声波信号发射电路;SONY 公司的 CX20106A 芯片及外围电路和超声波接收探头R-40-16 组成了超声波信号接收电路;通过单片机P1.1 口通过三极管 VT5 驱动蜂鸣器鸣声发出超范围报警信号。本设计用 AT89C51 来实现对 CX20106A 红外接收芯片和T-40-16 系列超声波转换模块的控制。单片机通过 P1.0 引脚经反相器来控制输出超声换能器所需的40KHz 的方波信号,然后利用外中断0 口监测超声波接收电路输出的返回信号,本设计将外部中断 0 设置为电平触发。当INT0 引脚的电平由高电平变为低电平时就认为超声波已经返回并且受到回波。
3.1 超声波信号发射电路
由单片机AT89C51 输出超声波换能器所需的40kHz方波信号,然后经非门74LS04 芯片反相后通过超声波信号发射探头[10]“T-40-l6”发出超声波信号。本文设计用单片机的P1.0 口发出40kHz 方波信号,因为40kHz 方波的周期为1/40 ×10-3=25 μs,本设计采用定时器T1 定时12.5 μs,每隔12.5 μs 改变一下P1.0 的电平,这样即可得到40kHz 的方波信号[7]。超声波信号发射电路图如图3 所示,单片机P1.0 端口输出的40kHz 的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推拉形式将方波信号加到超声波换能器的两端,可以提高超声波的发射强度。输出端采两个反向器并联,用以提高驱动能力。上位电阻R1、R2 一方面可以提高反向器74LS04 输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡时间。
3.2 超声波信号接收电路
超声波的接收传感器采用与发射传感器配对的 R-40-16,将由发射传感器发出的经反射后的超声波脉冲转变为微弱的交流信号, 送红外检波接收集成模块CX20106A 的1 脚。CX20106A 是日本索尼公司产品,单列直插封装、内置放大限幅、带通滤波、检波、积分、整形模块,具有选频功能,内部设计载波频率f=38kHz,当其输入信号大于 25mV 时,输出端 7 脚由高电平跳变为低电平,将其与单片机 INT0 引脚相连作为单片机的扫描接收信号。单片机通过P1.0 引脚经反相器来控制超声波的发送, 然后单片机 C P U 在每个机器周期的S5P2 时刻采样INT0 中断源的中断请求信号,当INT0 引脚的电平由高电平变为低电平时就认为超声波已经返回。计数器所计的数据就是超声波往返所用的时间,然后启动距离计算子程序。如图 4 所示,考虑到红外遥控常用的载波频率 38kHz 与测距的超声波频率 40kHz 较为接近,利用CX20106A 制作超声波检测接收电路,实验证明用CX20106A 接收超声波(无信号时输出高电平),具有很好的灵敏度和较强的抗干扰能力。
3.3 蜂鸣报警电路
单片机 P1.1 口通过三极管 VT5 驱动蜂鸣器鸣音,如我们在使用倒车测距应用时,根据汽车距离障碍物的位置,可以控制 P1.1 口产生不同频率的方波,从而通过三极管驱动蜂鸣器发出不同的声音来表示距离障碍物的远近,以提醒汽车驾驶员。此设计中当倒车时汽车距离障碍物小于 5m 时,P1.1 口输出一定频率的方波从而驱动蜂鸣器报警提示驾驶员,当距离障碍物小于 1m 时,P1.1 口输出更高频率的方波驱动蜂鸣器发出急促的报警信号再次提醒驾驶者。
3.4 LED显示电路
为了解决静态显示占用 I/O 口资源较多的问题,本超声波测距系统显示采用动态显示,如图 5 所示。通过单片机的P2.0、P2.1、P2.2、P2.3 四个管脚的与四个三极管的基级(B 极)相连,利用三极管的开关特性,驱动位码,实现数码管的点亮,从而实现动态显示。本文设计距离显示小数点位置固定,精度为 0.01m。采用 LED动态显示,动态扫描的频率有一定的要求。频率太低,LED 将出现闪烁现象;频率太高,由于每个 LED 点亮的时间短,LED 的亮度低,肉眼无法看清,所以一般均取几个毫秒左右为宜,这就要求在编写程序时,选通某一位LED 显示的时间间隔不超过 20ms,并保持延时一段时间,数据经过单片机计算处理后传到 LED 上。
4 系统软件设计
本文设计的超声波测距系统软件设计主要由主程序,超声波发射子程序,超声波接受中断程序,超范围报警,距离计算子程序及显示子程序组成[5] [6]。汇编语言程序具有较高的效率且容易精细计算程序运行的时间,超声波测距的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时),所以本设计系统控制程序采用汇编语言编程。
4.1 超声波测距系统主程序
主程序首先对系统环境初始化,设置定时器 T0 工作模式为 16 位的定时计数器模式[16],置位总中断允许位 EA 并给显示端口 P0 和 P2 清 0。然后调用超声波发生子程序送出一个超声波脉冲, 为避免超声波从发射器直接传送到接收器引起的直接波触发,需延迟 0.1ms(这也就是测距器会有一个最小可测距离的原因)后,才打开外中断 0 接收返回的超声波信号。由于采用12MHz 的晶振,机器周期为 1 μ s,当主程序检测到接收成功的标志位后,将计数器 T0 中的数(即超声波来回所用的时间)按下式计算即可测得被测物体与测距仪之间的距离,设计时取 15℃时的声速为 340m/s 则有: d=(C*T0)/2=170*T0/10000cm(其中 T0 为计数器 T0 的计数值),测出距离后结果将以十进制 BCD 码方式 LED 显示,然后再发超声波脉冲重复测量过程[6] [7]。主流程框图如图 6 所示.
4.2 超声波发生子程序和超声波接收中断程序
超声波发生子程序的作用是通过 P1.0 端口发送 3个左右的超声波信号频率约40kHz 的方波,脉冲宽度为12 μ s 左右,同时把计数器 T0 打开进行计时。超声波测距系统主程序利用外中断 0 检测返回超声波信号,一旦接收到返回超声波信号(INT0 引脚出现低电平),立即进入中断程序。进入该中断后立即关闭计时器 T0 停止计时,并将测距成功标志字赋值 1。如果当计时器溢出时还未检测到超声波返回信号,则定时器 T0 溢出中断将外中断 0 关闭,以表示此次测距不成功,标志字赋值2。其定时中断服务子程序和外部中断服务子程序如图7 和图8 所示。根据实际情况可以修改超声波发生子程序每次发送的脉冲宽度和两次测量的间隔时间,以适应不同距离的测量需要。根据所设计的电路参数和程序,由于为避免超声波从发射器直接传送到接收器引起的直接波触发, 需延迟 0 . 1 m s 这样测距器会产生( 0.110340/20.03m3××=)的最小可测距离;由于T0计数器的最大记数长度为162=65536 个外部脉冲,本设计单片机振荡电路使用 12MHz 晶振,所以最大测量范围为6553610340/211.14m6××=,本设计显示精度为厘米,理论测量范围为:0.03m~11.14m。由于温度的影响在室温为 10℃~20℃条件下能够测试 0.03m~11.00m,实验数据表明,本测距系统最大绝对误差不超过2cm,实现了一种理想的非接触距离检测,在 5m 内测量精度较高,可作为汽车倒车测距系统。
5 结束语
本文设计的超声波测距系统能够产生超声波,实现超声波的发送与接收,从而实现利用超声波方法测量物体间的距离,并以数字的形式显示测量距离。由于此设计主要用于汽车倒车,属于短距离测距,为了使设计的超声波测距系统能在诸多长距离测量方面应用,如:井深测量,管道长度测量和声纳方面,可将测量范围进行扩展,在现有的基础上不增加任何硬件,采用计数器循环计数,将单片机的 P2.4~P2.7 口扩展为动。
态显示位码,测距最大可扩展到99.99m。再者,由于本设计小数点位置固定,精度位0.01m,在精度要求不高的测量场合,我们可以降低精度,这样也可以增大测量范围。本设计系统结构简单,精度较高,由于使用了很多集成电路,外围元件不是很多,系统调试不太困难,对各电子元件也无特别要求。根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容 C1 的大小,以获得合适的接收灵敏度和抗干扰能力,若能将超声波接收电路用金属壳屏蔽起来,则可进一步提高系统抗干扰能力.
参考文献:
[1] 肖质红.超声波测距仪在汽车安全系统中的应用[J].浙江万里学院学报,2007,(5):43-46.
[2] 牛余鹏,成曙.基于单片机的超声测距系统[J].传感器与仪器仪表,2006,22(1):129-131.
[3] 苏伟,巩壁建.超声波测距误差分析.传感器技术,2004,23(6):8-11.
[4] 毛建波.压电陶瓷换能器在超声波测距仪中的应用[J].合肥工业大学学报(自然科学版)2005,28(6):696-698.
[5] 赵珂.时差法超声测距仪的研制[J].测控技术,2005,24(4):77-79.
[6] 徐国华.超声波测距系统的设计与实现[J].电子技术应用, 1994(12):6-7.
[7] 时德刚,刘哗.超声波测距仪的研究.计算机测量与控制,2002.10(7):480-482.
作者简介:张敏:(1974-),女,讲师,硕士,主要研究方向:自动控制, 机电一体化。