熊杰 魏勇 嚴(yán)丹
摘? 要: 針對傳統(tǒng)超聲波測距中受到溫度和濕度影響較大,提出一種基于BP神經(jīng)網(wǎng)絡(luò)的超聲波傳感器溫濕度補(bǔ)償算法。通過對不同溫度和濕度環(huán)境下做標(biāo)定實(shí)驗(yàn),設(shè)計了超聲波傳感器BP神經(jīng)網(wǎng)絡(luò)補(bǔ)償模型。采用BP神經(jīng)網(wǎng)絡(luò)對不同溫濕度環(huán)境下的聲速樣本進(jìn)行訓(xùn)練,得到了網(wǎng)絡(luò)的權(quán)值和閾值。通過STM32單片機(jī)編程實(shí)現(xiàn)溫濕度補(bǔ)償下的超聲波測距。實(shí)際測試結(jié)果表明,該算法能夠有效地補(bǔ)償超聲波傳感器的溫濕度非線性誤差,在溫度為-30~30 ℃,濕度在0%~80%范圍內(nèi),對聲速進(jìn)行補(bǔ)償,使測量誤差降低到1%以內(nèi)。
關(guān)鍵詞: 溫濕度補(bǔ)償; BP神經(jīng)網(wǎng)絡(luò); 超聲波測距; 補(bǔ)償模型; 數(shù)據(jù)歸一化; 聲速補(bǔ)償
中圖分類號: TN911.1?34; TP934? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼: 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? 引? 言
超聲波測量速度快,計算方便,易于實(shí)時控制,在測量精度方面能夠達(dá)到工業(yè)要求,因此,超聲波經(jīng)常用于液位、管道長度、物體測距等領(lǐng)域。根據(jù)超聲測距原理,超聲測距一般采用渡越時間法(TOF),即[L=vt2],其中,[L]為距離,[v]為聲波在介質(zhì)中的傳播速度,[t]為超聲波發(fā)射到超聲波返回的間隔時間[1?2]。從公式來看,距離與聲速在介質(zhì)中的傳播時間有關(guān),根據(jù)實(shí)驗(yàn)數(shù)據(jù)表明,不同的溫度和濕度直接影響聲波在介質(zhì)中傳播的速度,因此,在溫濕度不同、精度要求高的工業(yè)測量中,應(yīng)同時考慮溫度與濕度對聲波傳播速度的影響[3]。
隨著智能算法的不斷發(fā)展,各種理論算法在工程實(shí)踐中得到越來越多的應(yīng)用[4]。神經(jīng)網(wǎng)絡(luò)是在滿足各種工程領(lǐng)域需要而發(fā)展起來的一門前沿學(xué)科,神經(jīng)網(wǎng)絡(luò)具有任意精度逼近任意連續(xù)非線性函數(shù)和對復(fù)雜不確定問題具有自適應(yīng)和自學(xué)習(xí)能力等優(yōu)點(diǎn)。在此基礎(chǔ)上,提出基于BP神經(jīng)網(wǎng)絡(luò)的超聲波傳感器溫度補(bǔ)償設(shè)計方法,并通過實(shí)驗(yàn)仿真和實(shí)際數(shù)據(jù)測量進(jìn)行了驗(yàn)證。
1? 超聲波波速補(bǔ)償原理
一個實(shí)際的超聲波傳感器系統(tǒng)可以用式(1)來描述[5?6]:
[y=f(x,t1,t2,t3,…,tn)] (1)
式中:[x]為待測目標(biāo)參量;[y]為越聲波傳感器輸出值;[k]為影響輸出的參量。本文中只采用對聲波傳播速度影響最大的兩個量,即溫度與濕度,分別對應(yīng)為[t1,t2]。
由于聲波傳播速度(聲速)受溫度和濕度影響較大,而BP神經(jīng)網(wǎng)絡(luò)具有任意精度逼近任意連續(xù)非線性的特性,因此,可以利用已知的溫度、濕度與聲波傳播速度的數(shù)據(jù)通過神經(jīng)網(wǎng)絡(luò)自適應(yīng)和自學(xué)習(xí),實(shí)現(xiàn)聲波速度對任意溫度和濕度數(shù)據(jù)曲線的精確逼近。采用BP神經(jīng)網(wǎng)絡(luò)的超聲波傳感器溫度補(bǔ)償?shù)妮敵鎏匦栽砜驁D如圖1所示。
2? BP神經(jīng)網(wǎng)絡(luò)
BP神經(jīng)網(wǎng)絡(luò)是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò),輸入樣本從輸入層傳入,經(jīng)各隱含層依次逐層處理后,傳向輸出層。若輸出層的實(shí)際輸出與期望的輸出不同,則將誤差作為調(diào)整信號逐層反向回轉(zhuǎn),對神經(jīng)元之間的連接權(quán)矩陣做出處理,使誤差減小。經(jīng)反復(fù)學(xué)習(xí),最終使誤差減小到可接受設(shè)定的范圍內(nèi)。BP神經(jīng)網(wǎng)絡(luò)模型[7?9]如圖2所示。
第一層為輸入層,包含2個神經(jīng)元[x1],[x2]和1個截距[b0];第二層為隱含層,包含4個神經(jīng)元[h1],[h2],[h3],[h4]和截距[b1],第三層是輸出層[o],[Wih]為輸入層到隱含層的權(quán)重值,[Who]為隱含層到輸出層的權(quán)重值。每個節(jié)點(diǎn)使用激活函數(shù)進(jìn)行運(yùn)算。
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)
神經(jīng)網(wǎng)絡(luò)[h1]的輸出為[outh1],若激活函數(shù)使用Sigmoid函數(shù),則:
[outh1=1(1+e-h1)] (3)
同理,可以得出[h2],[h3],[h4]的輸出[outhx]。
② 隱含層→輸出層
通過網(wǎng)絡(luò)計算輸出層[o],即先計算出[neto],再利用激活函數(shù)求出[outo]。
[neto=H11?outh1+H12?outh2+H13?outh3+H14?outh4] (4)
該[neto]即為前向傳播所得出的[y]值。
2) 反向傳播
① 計算總誤差
[Etotal=12(target-output)2] (5)
式中:target為目標(biāo)值;output為實(shí)際輸出值。所用誤差為均方誤差。
② 隱含層→輸出層的權(quán)值更新:
以輸出層[H12]為例,根據(jù)鏈?zhǔn)椒▌t,可用整體誤差對[H12]求偏層數(shù),其權(quán)值更新變量如圖3所示。
[?Etotal?H12=?Etotal?outo??outo?neto??neto1?H12] (6)
把式(2)~式(5)代入式(6)可得:
[?Etotal?H12=-target-output?output1-output?outh1]
則更新后的權(quán)值[W12]為:
[W+12=W12-η??Etotal?H12] (7)
同理,可推出輸入層至隱含層權(quán)值公式,以[W21]為例:
[W+21=W21-η??Etotal?H12] (8)
式(7),式(8)中[η]為神經(jīng)網(wǎng)絡(luò)訓(xùn)練的學(xué)習(xí)率。
[?Etotal?H21=?Etotal?outo??outo?neto??neto1?outh2??outh2?h2??h2?H21]
依據(jù)式(7),式(8)可以推出所有更新后的[Wih]和[Hho]值。
3? 仿真研究與實(shí)驗(yàn)結(jié)果
3.1? BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)樣本庫
利用自然環(huán)境及組裝的簡易溫濕度控制系統(tǒng),測到不同溫度、濕度下的聲速,如表1所示。表1中,[T]表示測試環(huán)境溫度,[v]表示用溫度補(bǔ)償公式得出的超聲波聲速,[Vs]表示不同濕度下的實(shí)際超聲波聲速[2]。
已知常溫(25 ℃)下聲波傳播速度為340 m/s,但由表1可知,不同溫度條件下,聲波傳播速度與常溫下相差較大,而且,當(dāng)濕度不同時,同一溫度下的聲速也有很大變化。若僅僅考慮使用溫度補(bǔ)償?shù)姆椒▽β暡ㄋ俣冗M(jìn)行補(bǔ)償,由于不同濕度下聲速相差較大,因此,引起的測量誤差值將會較大。為了解決不同溫度、不同濕度下聲速相差較大,單從表1中的數(shù)據(jù)不可能包含所有的溫度與濕度環(huán)境下的聲速,而神經(jīng)網(wǎng)絡(luò)具有任意精度逼近任意連續(xù)非線性函數(shù)和對復(fù)雜不確定問題具有自適應(yīng)和自學(xué)習(xí)能力等優(yōu)點(diǎn),因此,可采用BP神經(jīng)網(wǎng)絡(luò)通過已知的數(shù)據(jù)進(jìn)行訓(xùn)練后,得到一組擬合函數(shù)。從而逐漸逼近真實(shí)的聲速值。
3.2? 數(shù)據(jù)歸一化處理
為了使神經(jīng)網(wǎng)絡(luò)更好地收斂,將樣本數(shù)據(jù)輸入網(wǎng)絡(luò)之前,首先要進(jìn)行歸一化處理[10]。常用歸一化方法有最大?最小標(biāo)準(zhǔn)化、Z?score標(biāo)準(zhǔn)化等。
本文采用最大?最小標(biāo)準(zhǔn)化對原始數(shù)據(jù)進(jìn)行線性變換,設(shè)min [A]和max[ A]分別是屬性[A]的最小值和最大值,將[A]的一個原始值[X]通過最大-最小標(biāo)準(zhǔn)化映射到區(qū)間[0,1]的值為[x],那么公式如下[11]:
[x=x-min Amax A-min A]
對表1 中的聲速進(jìn)行歸一化處理,如表2所示。
3.3? 仿真研究和實(shí)驗(yàn)結(jié)果
使用Python 3.5軟件對BP神經(jīng)網(wǎng)絡(luò)算法進(jìn)行編寫,BP神經(jīng)網(wǎng)絡(luò)輸入層選取2個節(jié)點(diǎn),數(shù)據(jù)來自溫度傳感器和濕度傳感器,隱含層選4個節(jié)點(diǎn),輸出層選取1個節(jié)點(diǎn),輸出為BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練后聲波速度。隱含層激活函數(shù)采用Sigmoid函數(shù),輸出層采用[f(x)=x]函數(shù)進(jìn)行回歸輸出。進(jìn)行BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練時的實(shí)驗(yàn)參數(shù)如下:
maxepochs = 60 000 //最大迭代次數(shù)
learnrate = 0.035 //學(xué)習(xí)速率
indim = 2? ? ? //輸入層個數(shù)
outdim = 1? ? ?//輸出層個數(shù)
hiddenunitnum = 4 //隱含層個數(shù)
采用BP神經(jīng)網(wǎng)絡(luò)算法對樣本數(shù)據(jù)進(jìn)行訓(xùn)練。得到訓(xùn)練后的誤差值與目標(biāo)值訓(xùn)練過程如圖4所示。
通過圖4可知,對表1的35個樣本數(shù)據(jù)進(jìn)行BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,經(jīng)過約450次迭代達(dá)到錯誤率為2.23%。
通過BP神經(jīng)網(wǎng)絡(luò)對樣本數(shù)據(jù)進(jìn)行自主學(xué)習(xí),計算出[Wih]和[Who],最后通過下列程序?qū)o定溫度與濕度數(shù)據(jù)后,對聲速進(jìn)行預(yù)測:
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可以看出,實(shí)際曲線與預(yù)測曲線一致性較好,可以用于實(shí)際應(yīng)用中。
3.4? BP神經(jīng)網(wǎng)絡(luò)在超聲波測距中的實(shí)現(xiàn)
通過BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練后,可得出訓(xùn)練后的權(quán)值[Wih]和[Woh],系統(tǒng)硬件采用STM32F103為主控制器,溫濕度傳感器采用I2C總線的SHT11,超聲波傳感器直接采用超聲波模塊。
用C語言編寫關(guān)鍵代碼,采用BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練后的權(quán)值參數(shù),實(shí)現(xiàn)聲波速度隨溫濕度變化的實(shí)時校準(zhǔn)。
double? Wih[4][2]={};? //輸入層?隱含層權(quán)值
double? Who[1][4]={}; //隱含層?輸出層權(quán)值
double? B1=[4]={};? //輸入層?隱含層偏移量
double? B2=[]={}; //隱含層?輸出層偏移量
//Sigmoid (·) 函數(shù)的實(shí)現(xiàn)
long double Sigmoid( long double x)
{
long double y;
y=1/(1+exp(x));? //exp( )為庫中的求取冪函數(shù)
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;
}
實(shí)驗(yàn)數(shù)據(jù)為溫度在25 ℃環(huán)境下,濕度從20%~80%的測距數(shù)據(jù)對比,見表3。從實(shí)驗(yàn)結(jié)果可見,在未經(jīng)過BP神經(jīng)網(wǎng)絡(luò)溫濕度補(bǔ)償時,濕度在20%時,誤差相對較低,但在40%~80%濕度環(huán)境下,誤差較大,主要原因是由于聲波在相同溫度但濕度不同時,聲波傳播的速度逐漸降低,而經(jīng)過BP神經(jīng)網(wǎng)絡(luò)溫濕度補(bǔ)償后測量誤差基本不隨溫濕度的變化而明顯變化,通過數(shù)據(jù)分析可知,最大誤差較小,測量精度較高,可達(dá)到毫米級,從實(shí)驗(yàn)中可進(jìn)一步驗(yàn)證,采用BP神經(jīng)網(wǎng)絡(luò)的超聲波傳感器溫度補(bǔ)償?shù)恼_性及可靠性。
4? 結(jié)? 語
BP網(wǎng)絡(luò)作為一種處理問題的新方法,已經(jīng)廣泛應(yīng)用于傳感器信息處理、信號處理、自動控制、通信等許多領(lǐng)域。本文采用BP神經(jīng)網(wǎng)絡(luò)對超聲波傳感器的聲波速度進(jìn)行補(bǔ)償,結(jié)果證明,特別是在溫濕度不在常溫常濕環(huán)境情況下的補(bǔ)償后特性大大改善。實(shí)際中許多傳感器都有受多種因素交叉影響的情況,該方法在解決此類問題上有明顯效果,對傳感器的發(fā)展無疑會起到巨大推動作用。由于計算權(quán)值均采用雙精度浮點(diǎn)數(shù),因此,采用BP神經(jīng)網(wǎng)絡(luò)補(bǔ)償方法在靜態(tài)測量時得到較好的結(jié)果,但當(dāng)障礙物移動速度較快時,STM32處理器不能較快地進(jìn)行浮點(diǎn)數(shù)乘法計算。為了滿足動態(tài)測量的實(shí)時要求,可以先把常用的溫度、濕度對應(yīng)的超聲波速度存儲在FLASH中,在測量時采用查詢方式獲得,對程序進(jìn)行優(yōu)化。
本文作者創(chuàng)新點(diǎn)是通過分析超聲波聲速受到溫濕度的影響,結(jié)合BP神經(jīng)網(wǎng)絡(luò)具有任意精度逼近任意連續(xù)非線性函數(shù)和對復(fù)雜不確定問題具有自適應(yīng)和自學(xué)習(xí)能力等優(yōu)點(diǎn),給出基于BP神經(jīng)網(wǎng)絡(luò)的超聲波測距溫濕度補(bǔ)償模型算法并通過硬件實(shí)現(xiàn)。實(shí)踐表明,BP神經(jīng)網(wǎng)絡(luò)對聲波的溫濕度補(bǔ)償具有良好的補(bǔ)償效果,是一種有效的方法,可以推廣在其他傳感器中使用。
參考文獻(xiàn)
[1] 楊令晨,周武能,湯文兵,等.超聲波測距系統(tǒng)的研究及其硬件設(shè)計[J].儀表技術(shù)與傳感器,2018(2):41?47.
[2] 楊秀增,楊仁桓.基于FPGA的高精度超聲波測距儀設(shè)計[J].現(xiàn)代電子技術(shù),2017,40(1):137?139.
[3] 陳少航,張國寧,梁偉.基于溫濕度補(bǔ)償?shù)某暡y距系統(tǒng)的研究[J].桂林航天工業(yè)學(xué)院學(xué)報,2018(2):175?177.
[4] 孫安黎,向春,伍焓熙.基于BP神經(jīng)網(wǎng)絡(luò)的輸電線路工程造價預(yù)測模型研究[J].現(xiàn)代電子技術(shù),2018,41(2):79?82.
[5] 倪建麗,葛紅娟,吳秀萍,等.BP神經(jīng)網(wǎng)絡(luò)在加速度計誤差補(bǔ)償中的應(yīng)用[J].測控技術(shù),2013,32(11):14?17.
[6] 黃世震,林淑齡.基于GSA?BP神經(jīng)網(wǎng)絡(luò)的壓力傳感器溫度補(bǔ)償[J].電子器件,2013,36(5):680?684.
[7] 郭敏,行鴻彥,張冬冬,等.基于AFSA?BP神經(jīng)網(wǎng)絡(luò)的濕度傳感器溫度補(bǔ)償[J].儀表技術(shù)與傳感器,2017(8):6?10.
[8] 何怡剛,陳張輝,李兵.改進(jìn)AFSA?BP神經(jīng)網(wǎng)絡(luò)的濕度傳感器溫度補(bǔ)償研究[J].電子測量與儀器學(xué)報,2018(7):95?100.
[9] 行鴻彥,鄒水平,徐偉,等.基于PSO?BP神經(jīng)網(wǎng)絡(luò)的濕度傳感器溫度補(bǔ)償[J].傳感技術(shù)學(xué)報,2015,28(6):864?869.
[10] 劉子騏,楊留方.基于BP人工神經(jīng)網(wǎng)絡(luò)的氣體傳感器溫度補(bǔ)償[J].儀表技術(shù)與傳感器,2017(4):10?12.
[11] 崔曉志,王翥.流量計量中BP神經(jīng)網(wǎng)絡(luò)溫度補(bǔ)償算法研究[J].自動化儀表,2016(2):95?98.