北京信息科技大学控制工程系,北京 100192
目前,常用的便携式手持测距方法主要有毫米波测距、激光测距和超声波测距三种。超声波测距较前两种测距方法而言,具有指向性强、能耗缓慢、受环境因素影响较小等特点,广泛应用于如井深、液位、管道长度、倒车等短距离测量。
本文设计一种家居装修时测量房间的测距仪,主要要求测距仪响应速度快、测量精度高和体积小携带方便,最终达到测量误差小于5%,最大测距范围12m。在超声波测距方法上,本设计选用频率为40kHz左右的超声波,它在空气中的传播效果最佳[1]。由于考虑了环境温度对声速的影响,在算法上通过环境的温度对声速做补偿,达到提高测量精度的目的。本设计具有电路简单、操作简便、工作稳定可靠、测距精确和能耗小、成本低等特点,可实现无接触式测量,应用广泛。
超声波测距有多种方法,根据超声波发射后返回的回波幅值、相位和超声波发出到返回的时间差不同,有声波幅值检测法、相位检测法和渡越时间法。本文超声波测距仪采用的是渡越时间法。因渡越时间法简单,成本低,可应用的距离范围大,可测量的范围为0.39 ~ 10.3m[2]。
渡越时间检测法的基本思想是,发射器发射超声波,经过障碍物反射后被接收器接收,测量发射器和接收器接收超声波的时间差,利用式(1)即可测得障碍物与测试点之间的距离L:
式中:c—超声波在空气中的传播速度;
t—超声波在空气中的传播时间。
同时,超声波在空气中的传播速度受环境温度的影响较大,考虑了环境温度对传播速度的影响周后,障碍物与测试点之间的距离修正为:
式中:T—环境温度。
焊接检验目的在于防止与发现焊接缺陷,以确保结构(件)的安全使用。各类产品都规定了对焊接接头质量等级的技术要求。试制新产品或制订焊接新工艺时,通过焊接检验可发现并解决其质量问题,使新产品与新工艺获得发展和应用。有的产品在使用中还需定期检验,以发现和及时消除在使用中产生而尚未导致破坏的缺陷,从而防止事故的发生,延长产品的使用寿命。
超声波测距仪的工作原理为:在单片机的控制下,单片机给超声波模块一个触发信号,然后超声波发射电路产生40kHz脉冲,经过放大后驱动发射端发射。同时单片机内部计数器开始记数,超声波被反射后在接收端转换为电信号,经过滤波放大后送给检波器,一旦检波器收到了回波,计数器就停止工作,得到计数值。然后单片机根据记数频率和温度检测电路测得声速,计算并得到待测距离[5]。
超声波测距一个重要的参数就是对超声波回波时间t的检测,时间t测量的准确性影响着超声波测距仪测量距离的准确度[3]。另一个比较重要的参数就是温度,因为超声波的速度受环境温度的影响。本设计硬件方案就包括单片机电路、显示电路、超声波传感器、温度检测电路和电源模块。硬件设计框图如图1所示。
单片机选用瑞萨公司R8C/2L。R8C/2L采用R8C CPU内核,最高工作频率为20MHz。主要使用单片机的定时器功能、输入捕捉功能。此款单片机采用8位预定标器(定时器RA和RB)的8位多功能定时器,输入捕捉/输出比较定时器(定时器RC、RD)。单片机及其外围电路如图2所示。
本设计直接购买超声波模块US-100。US-100超声波测距模块可实现2cm~12m的非接触测距功能,拥有2.4~5.5V的宽电压输入范围,静态功耗低于2mA,同时具有GPIO、串口等多种通信方式,内带看门狗,工作稳定可靠。此模块的感应角度小于15°,最大探测距离为450cm,盲区是2cm,探测精度0.3±1%。此模块共有两个接口,即模式选择跳线和5 Pin接口。模式选择跳线的间距为2.54mm,当插上跳线帽时为UART(串口)模式,拔掉时为电平触发模式。在模块上电前,首先去掉模式选择跳线上的跳线帽,使模块处于电平触发模式。此模块的性能完全能满足本次设计的要求。
温度检测使用的是温度传感器DS18B20。DS18B20的核心功能是它的直接读数字的温度传感器。温度传感器的精度为用户可编程的9,10,11或12位,分别以0.5℃,0.25℃,0.125℃和0.0625℃增量递增。在上电状态下默认的精度为12位。DS18B20启动后保持低功耗等待状态;当需要执行温度测量和A/D转换时,总线控制器必须发出[44h]命令。在那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器中,DS18B20继续保持等待状态。当DS18B20由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”,单片机发出[EHh]命令。如DS18B20正在温度转换中返回0,否则转换结束返回1。DS18B20测温电路如图3所示。
采用八段共阴极数码管,只需通过单片机输出高电平就能点亮数码管的一段,通过输出不同的高低电平就可以显示数字0-9。选用4位数码管可以将超声波测距显示到毫米级。单片机输出电压为5V而点亮数码管工作电流只需要5~10mA,这就需要一个限流电阻,本次设计选用限流电阻为1k的,为防止数码管闪烁,在数码管之前加一个锁存器能够很好的解决数码管闪烁的问题。4位数码管显示电路完全一样,其中一位数码管显示电路如图4所示。
主程序一开始对单片机进行初始化,具体是对时钟、I/O口、定时器RB初始化。再对开始按键进行判断若按键按下则继续往下执行,否则等待按键按下。接着打开定时器给超声波模块一个触发信号大约20μs,关闭定时器计数清零。再打开定时器等待超声波模块的回波信号,一旦等待到就关闭定时器读取定时器的计数,再对定时器计数清零[4]。接着执行测温子程序测得当时环境温度,再执行距离计算公式算出超声波测距仪测出的距离,最后将测得的距离数据通过单片机送给数码管显示。程序框图如图5所示。
测温时,单片机与DS18B20进行通信需经过三个步骤:对18B20复位、复位之后发送ROM指令、发送RAM指令。本设计就只使用了一只温度传感器所以可以直接跳过ROM指令(0CCH)[6]。测温子程序框图如图6所示。
本次实现测量实验室房顶的高度,使用LDM--40激光测距仪来进行距离的校准。实现采用多次测量对比并且测量不同距离来验证超声波测距仪的性能。实验测量图如图7所示。测量数据如表1所示。实验表明,本次超声波测距在其有效测量范围内,测量精度基本<5%,达到预期目标。
表1 超声波测距仪实验结果
本文设计了一种基于单片机R8C/2L的数字式超声波测距仪。设计中采用数字温度传感器DS18B20为温度补偿电路,提高了测量精度和智能化程度,并在一定程度上降低了系统成本。本超声波测距仪经试验运行良好,性能优良、成本低、能有效改善测量技术,适合于机器人检测、家具安防、汽车倒车等小距离测量。