基于BP神经网络的超声波温湿度补偿算法研究与应用
2020-06-19熊杰魏勇严丹
熊杰 魏勇 严丹
摘 要: 针对传统超声波测距中受到温度和湿度影响较大,提出一种基于BP神经网络的超声波传感器温湿度补偿算法。通过对不同温度和湿度环境下做标定实验,设计了超声波传感器BP神经网络补偿模型。采用BP神经网络对不同温湿度环境下的声速样本进行训练,得到了网络的权值和阈值。通过STM32单片机编程实现温湿度补偿下的超声波测距。实际测试结果表明,该算法能够有效地补偿超声波传感器的温湿度非线性误差,在温度为-30~30 ℃,湿度在0%~80%范围内,对声速进行补偿,使测量误差降低到1%以内。
关键词: 温湿度补偿; BP神经网络; 超声波测距; 补偿模型; 数据归一化; 声速补偿
中图分类号: TN911.1?34; TP934 文献标识码: A 文章编号: 1004?373X(2020)09?0113?04
Research and application of ultrasonic temperature?humidity compensation algorithm base on BP neural network
XIONG Jie1, WEI Yong2, YAN Dan1
(1. College of Physics and Telecommunications, Huanggang Normal University, Huanggang 438000, China;
2. Yangtze University, Jingzhou 434023, China)
Abstract: In view of the great influence of temperature and humidity on the traditional ultrasonic ranging, an algorithm for the ultrasonic sensor temperature?humidity compensation based on the BP neural network is proposed. The BP neural network compensation model of ultrasonic sensor is designed by experiments performing calibration in different temperature and humidity environments. The BP neural network is used to train the sound velocity sample in different temperature and humidity environments and get the weight and threshold value of the network. The STM32 SCM programming is used to achieve the ultrasonic ranging under the condition of temperature?humidity compensation. The test results show that the algorithm can effectively compensate for the temperature?humidity nonlinear error of the ultrasonic sensor. When the temperature is within -30~30 ℃ and the humidity is within 0%~80%, the velocity of sound is subjected to compensation, so that the measurement error is reduced within 1%.
Keywords: temperature?humidity compensation; BP neural network; ultrasonic ranging; compensation model; data normalization; sound velocity compensation
0 引 言
超声波测量速度快,计算方便,易于实时控制,在测量精度方面能够达到工业要求,因此,超声波经常用于液位、管道长度、物体测距等领域。根据超声测距原理,超声测距一般采用渡越时间法(TOF),即[L=vt2],其中,[L]为距离,[v]为声波在介质中的传播速度,[t]为超声波发射到超声波返回的间隔时间[1?2]。从公式来看,距离与声速在介质中的传播时间有关,根据实验数据表明,不同的温度和湿度直接影响声波在介质中传播的速度,因此,在温湿度不同、精度要求高的工业测量中,应同时考虑温度与湿度对声波传播速度的影响[3]。
随着智能算法的不断发展,各种理论算法在工程实践中得到越来越多的应用[4]。神经网络是在满足各种工程领域需要而发展起来的一门前沿学科,神经网络具有任意精度逼近任意连续非线性函数和对复杂不确定问题具有自适应和自学习能力等优点。在此基础上,提出基于BP神经网络的超声波传感器温度补偿设计方法,并通过实验仿真和实际数据测量进行了验证。
1 超声波波速补偿原理
一个实际的超声波传感器系统可以用式(1)来描述[5?6]:
[y=f(x,t1,t2,t3,…,tn)] (1)
式中:[x]为待测目标参量;[y]为越声波传感器输出值;[k]为影响输出的参量。本文中只采用对声波传播速度影响最大的两个量,即温度与湿度,分别对应为[t1,t2]。
由于声波传播速度(声速)受温度和湿度影响较大,而BP神经网络具有任意精度逼近任意连续非线性的特性,因此,可以利用已知的温度、湿度与声波传播速度的数据通过神经网络自适应和自学习,实现声波速度对任意温度和湿度数据曲线的精确逼近。采用BP神经网络的超声波传感器温度补偿的输出特性原理框图如图1所示。
2 BP神经网络
BP神经网络是一种按误差逆传播算法训练的多层前馈网络,输入样本从输入层传入,经各隐含层依次逐层处理后,传向输出层。若输出层的实际输出与期望的输出不同,则将误差作为调整信号逐层反向回转,对神经元之间的连接权矩阵做出处理,使误差减小。经反复学习,最终使误差减小到可接受设定的范围内。BP神经网络模型[7?9]如图2所示。
第一层为输入层,包含2个神经元[x1],[x2]和1个截距[b0];第二层为隐含层,包含4个神经元[h1],[h2],[h3],[h4]和截距[b1],第三层是输出层[o],[Wih]为输入层到隐含层的权重值,[Who]为隐含层到输出层的权重值。每个节点使用激活函数进行运算。
1) 前向传播
① 输入层→隐含层:
[h1=w11?x1+w12?i2+b0?1h2=w21?x1+w22?i2+b0?1h3=w31?x1+w32?i2+b0?1h4=w41?x1+w42?i2+b0?1] (2)
神经网络[h1]的输出为[outh1],若激活函数使用Sigmoid函数,则:
[outh1=1(1+e-h1)] (3)
同理,可以得出[h2],[h3],[h4]的输出[outhx]。
② 隐含层→输出层
通过网络计算输出层[o],即先计算出[neto],再利用激活函数求出[outo]。
[neto=H11?outh1+H12?outh2+H13?outh3+H14?outh4] (4)
该[neto]即为前向传播所得出的[y]值。
2) 反向传播
① 计算总误差
[Etotal=12(target-output)2] (5)
式中:target为目标值;output为实际输出值。所用误差为均方误差。
② 隐含层→输出层的权值更新:
以输出层[H12]为例,根据链式法则,可用整体误差对[H12]求偏层数,其权值更新变量如图3所示。
[?Etotal?H12=?Etotal?outo??outo?neto??neto1?H12] (6)
把式(2)~式(5)代入式(6)可得:
[?Etotal?H12=-target-output?output1-output?outh1]
则更新后的权值[W12]为:
[W+12=W12-η??Etotal?H12] (7)
同理,可推出输入层至隐含层权值公式,以[W21]为例:
[W+21=W21-η??Etotal?H12] (8)
式(7),式(8)中[η]为神经网络训练的学习率。
[?Etotal?H21=?Etotal?outo??outo?neto??neto1?outh2??outh2?h2??h2?H21]
依据式(7),式(8)可以推出所有更新后的[Wih]和[Hho]值。
3 仿真研究与实验结果
3.1 BP神经网络学习样本库
利用自然环境及组装的简易温湿度控制系统,测到不同温度、湿度下的声速,如表1所示。表1中,[T]表示测试环境温度,[v]表示用温度补偿公式得出的超声波声速,[Vs]表示不同湿度下的实际超声波声速[2]。
已知常温(25 ℃)下声波传播速度为340 m/s,但由表1可知,不同温度条件下,声波传播速度与常温下相差较大,而且,当湿度不同时,同一温度下的声速也有很大变化。若仅仅考虑使用温度补偿的方法对声波速度进行补偿,由于不同湿度下声速相差较大,因此,引起的测量误差值将会较大。为了解决不同温度、不同湿度下声速相差较大,单从表1中的数据不可能包含所有的温度与湿度环境下的声速,而神经网络具有任意精度逼近任意连续非线性函数和对复杂不确定问题具有自适应和自学习能力等优点,因此,可采用BP神经网络通过已知的数据进行训练后,得到一组拟合函数。从而逐渐逼近真实的声速值。
3.2 数据归一化处理
为了使神经网络更好地收敛,将样本数据输入网络之前,首先要进行归一化处理[10]。常用归一化方法有最大?最小标准化、Z?score标准化等。
本文采用最大?最小标准化对原始数据进行线性变换,设min [A]和max[ A]分别是属性[A]的最小值和最大值,将[A]的一个原始值[X]通過最大-最小标准化映射到区间[0,1]的值为[x],那么公式如下[11]:
[x=x-min Amax A-min A]
对表1 中的声速进行归一化处理,如表2所示。
3.3 仿真研究和实验结果
使用Python 3.5软件对BP神经网络算法进行编写,BP神经网络输入层选取2个节点,数据来自温度传感器和湿度传感器,隐含层选4个节点,输出层选取1个节点,输出为BP神经网络训练后声波速度。隐含层激活函数采用Sigmoid函数,输出层采用[f(x)=x]函数进行回归输出。进行BP神经网络训练时的实验参数如下:
maxepochs = 60 000 //最大迭代次数
learnrate = 0.035 //学习速率
indim = 2 //输入层个数
outdim = 1 //输出层个数
hiddenunitnum = 4 //隐含层个数
采用BP神经网络算法对样本数据进行训练。得到训练后的误差值与目标值训练过程如图4所示。
通过图4可知,对表1的35个样本数据进行BP神经网络的训练,经过约450次迭代达到错误率为2.23%。
通过BP神经网络对样本数据进行自主学习,计算出[Wih]和[Who],最后通过下列程序对给定温度与湿度数据后,对声速进行预测:
hiddenout1=logsig((np.dot(w1,sampleinnorm1).transpose()+b1.transpose())).transpose()
networkout1=(np.dot(w2,hiddenout1).transpose()+b2.transpose()).transpose()
diff1=sampleoutminmax[:,1]?sampleoutminmax[:,0]
networkout3 = (networkout1+1)/2
networkout3=networkout3[0]*diff1[0]+sampleoutminmax[0][0]
从图5,图6可以看出,实际曲线与预测曲线一致性较好,可以用于实际应用中。
3.4 BP神经网络在超声波测距中的实现
通过BP神经网络训练后,可得出训练后的权值[Wih]和[Woh],系统硬件采用STM32F103为主控制器,温湿度传感器采用I2C总线的SHT11,超声波传感器直接采用超声波模块。
用C语言编写关键代码,采用BP神经网络训练后的权值参数,实现声波速度随温湿度变化的实时校准。
double Wih[4][2]={}; //输入层?隐含层权值
double Who[1][4]={}; //隐含层?输出层权值
double B1=[4]={}; //输入层?隐含层偏移量
double B2=[]={}; //隐含层?输出层偏移量
//Sigmoid (·) 函数的实现
long double Sigmoid( long double x)
{
long double y;
y=1/(1+exp(x)); //exp( )为库中的求取幂函数
return y;
}
long double velocity _out(long double x1,long double x2)
//[x1]为湿度值,[x2]为温度值
{
int i,j;
long double velocity _out=0;
for(i=0;i<4;i++)
for(j=0;j<2;j++)
{net_out+=Sigmoid(Wih[i][j]*x1+B1[i])+Who[i][j]*x2+B2[i]);
}
return velocity _out;
}
实验数据为温度在25 ℃环境下,湿度从20%~80%的测距数据对比,见表3。从实验结果可见,在未经过BP神经网络温湿度补偿时,湿度在20%时,误差相对较低,但在40%~80%湿度环境下,误差较大,主要原因是由于声波在相同温度但湿度不同时,声波传播的速度逐渐降低,而经过BP神经网络温湿度补偿后测量误差基本不随温湿度的变化而明显变化,通过数据分析可知,最大误差较小,测量精度较高,可达到毫米级,从实验中可进一步验证,采用BP神经网络的超声波传感器温度补偿的正确性及可靠性。
4 结 语
BP网络作为一种处理问题的新方法,已经广泛应用于传感器信息处理、信号处理、自动控制、通信等许多领域。本文采用BP神经网络对超声波传感器的声波速度进行补偿,结果证明,特别是在温湿度不在常温常湿环境情况下的补偿后特性大大改善。实际中许多传感器都有受多种因素交叉影响的情况,该方法在解决此类问题上有明显效果,对传感器的发展无疑会起到巨大推动作用。由于计算权值均采用双精度浮点数,因此,采用BP神经网络补偿方法在静态测量时得到较好的结果,但当障碍物移动速度较快时,STM32处理器不能较快地进行浮点数乘法计算。为了满足动态测量的实时要求,可以先把常用的温度、湿度对应的超声波速度存储在FLASH中,在测量时采用查询方式获得,对程序进行优化。
本文作者创新点是通过分析超声波声速受到温湿度的影响,结合BP神经网络具有任意精度逼近任意连续非线性函数和对复杂不确定问题具有自适应和自学习能力等优点,给出基于BP神经网络的超声波测距温湿度补偿模型算法并通过硬件实现。实践表明,BP神经网络对声波的温湿度补偿具有良好的补偿效果,是一种有效的方法,可以推广在其他传感器中使用。
参考文献
[1] 杨令晨,周武能,汤文兵,等.超声波测距系统的研究及其硬件设计[J].仪表技术与传感器,2018(2):41?47.
[2] 杨秀增,杨仁桓.基于FPGA的高精度超声波测距仪设计[J].现代电子技术,2017,40(1):137?139.
[3] 陈少航,张国宁,梁伟.基于温湿度补偿的超声波测距系统的研究[J].桂林航天工业学院学报,2018(2):175?177.
[4] 孙安黎,向春,伍焓熙.基于BP神经网络的输电线路工程造价预测模型研究[J].现代电子技术,2018,41(2):79?82.
[5] 倪建丽,葛红娟,吴秀萍,等.BP神经网络在加速度计误差补偿中的应用[J].测控技术,2013,32(11):14?17.
[6] 黄世震,林淑龄.基于GSA?BP神经网络的压力传感器温度补偿[J].电子器件,2013,36(5):680?684.
[7] 郭敏,行鴻彦,张冬冬,等.基于AFSA?BP神经网络的湿度传感器温度补偿[J].仪表技术与传感器,2017(8):6?10.
[8] 何怡刚,陈张辉,李兵.改进AFSA?BP神经网络的湿度传感器温度补偿研究[J].电子测量与仪器学报,2018(7):95?100.
[9] 行鸿彦,邹水平,徐伟,等.基于PSO?BP神经网络的湿度传感器温度补偿[J].传感技术学报,2015,28(6):864?869.
[10] 刘子骐,杨留方.基于BP人工神经网络的气体传感器温度补偿[J].仪表技术与传感器,2017(4):10?12.
[11] 崔晓志,王翥.流量计量中BP神经网络温度补偿算法研究[J].自动化仪表,2016(2):95?98.