万振武,沈宇超,尚闯
(1.湖北工业大学 计算机学院;2.武汉理工大学华夏学院 信息工程系,湖北 武汉 430000)
距离是智能控制中经常需要检测的一个重要参数,常用测距方式有激光、微波、红外线以及超声波测距等。超声波具有较独特的优势,其方向性好、穿透力强、传播距离较远、传播中会在待检物不同的分界面上产生反射波,因此其在测量距离、厚度、液位、井深、管道长度,物体识别,倒车防撞雷达,机械手控制等领域有着广泛而深入的应用[1-2]。另外,超声波测距是一种非接触式的测量方式,使用中对无光、多烟尘、有毒气、电磁波等测量环境有着较强的适用性[1-4]。基于这些特点,超声波测距有着广阔的前景,研究如何提高测距的精度和开辟其新的应用领域具有较强的理论与现实意义。
超声波是指振动频率大于20 kHz以上,频率甚高,超出了人耳听觉上限(20 kHz)而听不见的一种声波[5]。在常见的超声波测距系统中,用一定频率的电脉冲激励超声探头上的压电晶片,由于逆压电效应,晶片会产生对应频率的机械振动,该振动传递到与其接触的媒介中,形成超声波。超声波传感器发出超声波,在空气中传播,遇到障碍物后发生反射,传回超声波传感器,由于压电效应,传感器晶片把声波振动转换为电信号,测距系统根据从发射到接收到超声波所经历的时间t,以及超声波在空气中的传播速度c计算出传感器到被测物的距离D,其计算公式如下[6]:
由式(1)可知,测距的误差主要是由超声波在介质中的传播速度误差以及测定传播时间的误差引起的。
其中ΔD—测距总误差;ΔDt—由测距时间误差引起的测距误差;ΔDc—由声速误差引起的测距误差;Δt—测距时间误差;Δc—声速误差。
设计中,采用电子计数法测时间,即在超声波传感器的回波闸门时间内,单片机的定时器计数器进行计数,根据计数值结合单片机的机器周期就可以计算出待检测的距离。由于回波的闸门开启时刻与单片机计数脉冲之间的时间关系是不相关的,这样,即使在相同的闸门时间内,计数所得到的值却不一定相同,其最大绝对误差为:ΔN=±1,即量化误差[7]。设计中单片机晶振频率为11.059 2 MHz,即定时计数器计一次数时间为1.085 μs,故由量化误差引起的测量时间误差为:Δt=±1.085 μs,根据式(2)可得由量化误差引起的测距误差为:
假如取声速为c0=340 m/s则:
设计中距离的实际值测量工具最小分辨力为1 mm,由量化误差引起的测距误差要高出其一个数量级,故可以忽略不计。
在空气中,声速受温度的影响为[8]:
根据式(4)可得空气中温度—声速关系如表1所示。
表1 空气中温度—声速关系表
假如测距系统选取声速c0=340 m/s(即T=14.5℃时的声速)作为计算距离时的声速,取待测物离传感器的距离D=1 m,则根据表1所示声速和温度的关系,与之对应的声速增量Δc、测距时间t和声速误差引起的测距误差ΔDc如表2所示。
表2 D=1 m、c0=340 m/s时,温度—声速误差引起的测距误差关系表
同理可以分别得到D=2 m、3 m、4 m时T和ΔDc之间的关系,如图1所示。
从表2和图1可知,系统测距计算时选择的声速为c0=340 m/s时,随着测量距离D的增加以及不同温度下c0相对于实际声速c的增量Δc的增加,误差也随之增加。
设计中距离的实际值测量工具最小分辨力为1 mm,由声速引起的测距误差不能忽略,为提高测量准确度,根据环境温度对超声波测距进行温度补偿很重要。进行温度补偿通常有两种方法,即温度校正法和标杆测量法。温度校正法就是在测距系统中加入环境温度检测部分对测距环境的温度指标进行测量,经过系统校正后达到提高超声波测距精度的目的[9]。其不足在于,如果不能准确测得实际温度,那么由温度测量产生的误差就会进一步影响到测距结果。标杆测量法不直接对温度进行测量,而是采用双通道的测量方式:其中一个通道对已知距离进行测量,得到环境声速;另一通道根据测得的声速,按常规方式测距,进而达到提高测距精度的目的,间接做到温度补偿[10]。本系统采用标杆测量法测距。
系统由单片机控制模块,标杆通道,实测通道,LCD显示模块组成,系统框图如图2所示。
图1 不同距离不同温度下由于声速误差造成的测距误差图
图2 系统框图
2.1.1 单片机控制模块
单片机控制模块如图3所示,主要由单片机、复位电路、时钟电路、ISP下载口等部分组成。实现单片机最小系统功能,能够ISP在线编程。选用AT89S52单片机为主控芯片。AT89S52是一种高性能、低功耗的8位单片机,内含8 kB系统可编程Flash存储器,兼容性好。
图3 单片机控制模块
2.1.2 超声波测量通道
系统中,超声波测量通道有两个,即标杆通道和实测通道,标杆通道的作用是对标准距离测量计时进而计算当前环境的声速,实测通道则根据标杆通道的声速测量并计算出待测物体的距离,以消除环境温度因素对测量造成的误差。设计中,两个通道都选用收发一体的HC-SR04超声波传感器作为超声波信号的收发装置,其中标杆通道超声波传感器的TRIG和EHCO口分别和单片机的P1.2、P1.3连接,实测通道则和单片机P1.4、P1.5连接,它们在软件控制上稍有不同,详见2.2.2节。HC-SR04超声波传感器检测时序图如图4所示。
图4 HC-SR04超声波传感器检测时序图
以上时序表明只需提供一个10 μs以上的脉冲触发信号,HC-SR04内部会发出8个40 kHz的脉冲,探头晶片受到激发,发出40 kHz的超声波,与此同时,模块内部检测反射波,一旦探头检测到反射波则输出回响信号,回响信号的脉冲宽度与待测的距离成正比关系。故此可以通过测定从发出声波信号到收到回波信号的时间差计算出待测距离。本设计中,在触发脉冲作用下,超声波发射器发射超声波,然后单片机定时计时器开始计数,超声波接收器收到反射波后定时计时器立即停止计数,从而测出时间差t,然后结合声速c就可以求出待测距离D。本设计中单片机控制系统晶振频率为11.059 2 MHz,即定时计数器计一次数时间为1.085 μs。如果一次测量过程定时计数器计数值为x,则回波电平持续时间t为:
根据式(1)可得距离D为:
2.1.3 LCD显示模块
显示模块选用LCD1602显示屏,其功耗省、体积小、轻巧超薄,在各类仪表和低功耗系统中应用广泛。LCD1602可以分为单行16字,2行16字,2行20字等类型,本次设计选用的是2行16字的LCD1602。其采用标准的16脚接口,其中:第4脚为寄存器选择,当其为低电平时选择指令寄存器,而高电平时选择数据寄存器。设计中和单片机P0.0口连接;第6脚为使能端,脉冲下降沿有效;第7~14脚:D0~D7为8位双向数据线[11]。
软件设计中主要完成标杆通道、实测通道超声波测距控制以及测量距离的LCD显示。
2.2.1 主程序流程图
系统启动后初始化,单片机控制标杆通道超声波传感器发送超声波,并检测回波计算声速,之后控制实测通道超声波传感器发送超声波,并检测回波结合声速计算距离,将数据转换后送LCD显示,如此循环。程序流程如图5所示。
图5 主程序流程图
2.2.2 超声波子程序流程图
超声波子程序程序包括标杆通道的超声波子程序和实测通道的超声波子程序,两者的区别仅在于前者计算声速,后者计算距离。
按照2.1.2节中HC-SR04超声波传感器的响应特点,单片机给传感器发送一个触发脉冲,然后根据传感器EHCO端口确认超声波是否发送完毕,如果发送完毕则开定时计数器,等待回波反馈信号,然后关闭定时计数器,根据定时计数器的计数值来分别计算声速(标杆通道)和待测物距离(实测通道),流程图如图6、图7所示。需要说明的是,如果长时间没有回波,即超声波传感器的测量范围内没有物体时,为避免死循环等待,通过判断定时计数器是否溢出来跳出循环。
设计中,标杆通道参照物离传感器的距离D=1 m,假设定时计数器的计数值为x,根据式(6)可以计算出声速:
假如实测通道测量后定时计数器的值为x1,则根据式(6)、(7)可计算出待测距离:
在实际程序编写中,为避免由1/1.085等无理数的运算造成误差,标杆通道里只是对定时计数器的计数值通过公式TH0*256+TL0将定时计数器高低两个字节的二进制数转换为一个16位的整形数据,然后利用式(8)计算。
2.2.3 LCD显示子程序
显示子程序功能是将有关测试数据显示出来。首先,LCD初始化,如果检测到物体,显示“Distance:”字样,然后将超声波测距程序里计算所得的数据转换为字符型,送LCD显示出来,延时后返回主程序。如果没有检测到物体,即定时计数器溢出(通过溢出标志确定),则显示“Nothing”字样。流程如图8所示。
图6 标杆通道超声波子程序流程图
图7 实测通道超声波子程序流程图
图8 LCD显示子程序流程图
系统设计完成后,针对使用标杆通道和不使用标杆通道两种情况进行了对比测量,截取其中1.1 m~2 m区间的测量数据分别如表3、表4所示。
实测环境的温度是25℃,根据式(4),可得此时声速c=346.2 m/s,则此时的声速增量Δc=c0-c=(340-346.2)m/s=-6.2 m/s,另据式(1)可得t=2D/c,结合选择的不同测量距离D可以算出对应的时间t,再通过式(3)可得由环境温度引起误差的理论值,如表5所示。
表3 无标杆通道校正时的测量数据(环境温度:25℃ 实际值测距工具:卷尺)
表4 有标杆通道时的测量数据(环境温度:25℃ 实际值测距工具:卷尺)
表5 无标杆通道校正时由环境温度引起误差的理论值
从相关数据来看,有标杆通道校正后,测量的准确度有明显的提高,相对误差整体上提高了一到两个百分点。对比三组数据,相对误差γ2≈γ1-γ3,这说明标杆通道很好地起到了校正作用。另外数据整体上测量值比实际值偏小,说明还存在系统误差。这些是由于测环境温度时的测温误差、式(4)中的无理数运算造成的理论误差、传感器固有误差等因素造成的。
针对超声波测距可能出现的最主要误差因素,基于标杆测量法的超声波测距系统,采用双通道超声波测量,其中标杆通道测速、实测通道测距,很好地校正了由于温度因素造成的测量误差,实现了较精确的距离测量,并通过LCD屏显示,具有较强的实用价值。
[1]李世军.基于单片机的超声波测距仪的研究与设计[J].湖南工程学院学报,2011,21(2):13-15.
[2]张健,李刚.超声波测距系统的研究与设计[J].合肥工业大学学报(自然科学版),2004,27(6):640-643.
[3]彭建盛,梁光艳,郭留涛.基于无线单片机CC2510的多点超声波测距系统[J].河池学院学报,2009(2):67-71.
[4]卜英勇,王纪婵,赵海鸣,等.基于单片机的高精度超声波测距系统[J].仪表技术与传感器,2007(3):66-68.
[5]苏炜,龚壁建,潘笑.超声波测距误差分析[J].传感器技术,2004,23(6):8 -11.
[6]韩丽茹.提高超声波测距精度方法综述[J].电讯技术,2010,50(9):132-136.
[7]张永瑞.电子测量技术基础(第二版)[M].西安:西安电子科技大学出版社,2009:46-48.
[8]贾丽娜.超声波物位检测系统中的误差来源及补偿方法[J].仪器仪表用户,2004,10:21-26.
[9]邹轶.近距离高精度超声波测距系统的设计[D].大连:大连理工大学,2009:11-12.
[10]张海鹰.超声波测距技术研究[J].仪表技术,2011(9):58-60.
[11]郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2012:148-150.