张磊, 周建全, 鞠文杰, 路军, 杨伟进
(1.国网山东省电力公司济宁供电公司,山东 济宁 272000; 2.国网山东省电力公司,山东 济南 250001;3.国网山东综合能源服务有限公司,山东 济南 250001)
随着我国经济的发展和科学技术的不断进步,测距定位技术日新月异,测距精度也愈来愈高。用超声红外相结合的方法进行测距还是很普遍的,因此提高超声红外测距技术的性能及精度有很高的研究价值[1]。本文通过发射红外线来确定计时器开始计时的时间,利用超声波在空气中的已知传播速度,再乘以超声波在发射端发射到接收端接收的时间差,计算出距离。无论是在室内还是在室外测距,温度都是影响测量精度的一个重要因素,尤其室外的环境非常复杂,进行作业时不确定会遇到什么样的天气,而不同温度下超声速度具有一定的差距,采用超声波进行测距时必须要考虑温度问题。为提高超声红外测距技术的精确度,本文引入基于BP神经网络的温度补偿算法来提高超声速度的准确度。
超声红外测距系统的硬件结构主要包括AVR单片机、红外线收发器、超声波收发器、主控模块、通信模块、温度检测模块以及云服务器等模块。主控模块嵌入在小型平板或计算机中,工作人员通过主控模块向单片机发送测距命令,使得系统开始工作,单片机与主控模块之间的通信通过RS485实现。温度传感器DS18B20检测当前温度,并将其上传给主控模块,主控模块通过BP神经训练得到超声速度值,和单片机测得的时间进行计算,得出所测的距离。得到的数据可以在主控模块上显示出来,也可以上传到云服务器通过手机进行查看。红外线和超声波的发射接收方式选用直射式,载波频率为38 kHz,采用超声红外复合测距可以发挥两者的优势,避免劣势。超声测距,当距离较近时会有测量盲区,导致误差比较大[2-3],而红外线进行近距离测距时则没有这种缺点,因此采用超声红外的方式进行复合测距。系统整体结构如图1所示。
图1 系统整体结构
测距模块的工作原理是设单片机测得超声波传播时间为t,由于该时间是信号发送与反射回来的总时间,也就是所测距时间的两倍[4],设超声波在空气中的传播速度为c,因此测得距离为S=c×t/2。由于超声波在空气中传播时,传播速度受到环境温度等方面的影响,因此传播速度误差会影响测量结果的精确性。本文提出了基于BP神经网络的温度补偿算法对温度进行补偿,得到更加精确的超声波速度。
为了对温度进行采集和处理并获得较精确的温度值,采用DS18B20温度传感器设计温度补偿电路,进行温度采集,它的测温范围是-55 ℃~+125 ℃,并且在-10 ℃~+85 ℃范围内精度为±0.5 ℃[5]。
图2 多层感知器网络结构
(1)
式中:EP为一组输入和输出的代价函数;E为P组拟合误差的代价函数。
(2)
(3)
式中:α为学习率,α>0;η为动量项因子,0≤η<1。
(3) 最后计算全局误差E是否满足预设精度要求:若满足则结束算法的训练;若不满足,选取另一组训练样本进行下一组的训练学习,直到误差达到训练要求为止。
基于BP神经网络的温度补偿算法,将温度环境(T)作为输入,并进行归一化处理,超声波速度作为输出。进行训练时,输入层到隐藏层的初始学习速率为0.05,隐藏层到输出层的初始学习速率为0.3,动量因子为0.8,通过式(3)调整权值。学习函数为purelin,训练函数为traindm,参数设置如下:最小目标误差goal=l×10-3;最大训练次数为100,最大失败次数为5;预设精度为0.000 1。
本文共采集了29对数据进行训练,如表1所示。
表1 不同温度下超声波速度对应表
通过以上数据对网络进行训练,输出曲线如图3所示。对网络训练完成后,通过数据进行测试,效果图如图4所示,中间横的虚线是没有经过网络训练的不同温度下的超声波的速度,而斜着的实线是经过神经网络训练之后的不同温度下的超声波速度,并对其进行连续化测试,得到温度与超声波速度之间的相互对应情况,从图4可以看出其差距是非常大的。图5显示的是误差曲线,从图5可以看出随着迭代次数的增加,误差是逐渐降低的,并逐渐趋于平稳。
图3 网络训练曲线
图4 网络补偿后效果图
图5 误差曲线效果图
本文采用模块化形式进行C语言编程,将系统主要分成系统主程序,红外线发送和超声波接收子程序,红外线接收和超声波发送子程序,以及温度检测与补偿子程序等模块。系统流程如图6所示。系统主程序完成的工作主要是系统的初始化,包括串口初始化、定时器初始化,调用各个子程序,完成通信功能[7-8]。根据红外超声的收发指令,由定时器1和定时器2计算出红外线和超声波从发送到接收所经历的时间[9]。温度传感器DS18B20完成温度检测功能。计算机通过BP神经网络算法对各温度下的超声波速度进行训练补偿,得出较为精确的超声波速度,根据距离公式得出此时所测得的距离。
图6 系统流程图
外部环境温度的变化严重影响了测距的精度,将BP神经网络用于对温度传感器所测温度的补偿,很好地提高了超声波的测速精度。试验表明,温度补偿后的超声波速度和未经过温度补偿的超声波速度相比,训练速度快,而且改进的BP神经网络避免了陷入局部极小值点,具有全局性,达到了更高的测量精度,使得测距更加精确。