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