張磊, 周建全, 鞠文杰, 路軍, 楊偉進(jìn)
(1.國網(wǎng)山東省電力公司濟(jì)寧供電公司,山東 濟(jì)寧 272000; 2.國網(wǎng)山東省電力公司,山東 濟(jì)南 250001;3.國網(wǎng)山東綜合能源服務(wù)有限公司,山東 濟(jì)南 250001)
隨著我國經(jīng)濟(jì)的發(fā)展和科學(xué)技術(shù)的不斷進(jìn)步,測距定位技術(shù)日新月異,測距精度也愈來愈高。用超聲紅外相結(jié)合的方法進(jìn)行測距還是很普遍的,因此提高超聲紅外測距技術(shù)的性能及精度有很高的研究價值[1]。本文通過發(fā)射紅外線來確定計時器開始計時的時間,利用超聲波在空氣中的已知傳播速度,再乘以超聲波在發(fā)射端發(fā)射到接收端接收的時間差,計算出距離。無論是在室內(nèi)還是在室外測距,溫度都是影響測量精度的一個重要因素,尤其室外的環(huán)境非常復(fù)雜,進(jìn)行作業(yè)時不確定會遇到什么樣的天氣,而不同溫度下超聲速度具有一定的差距,采用超聲波進(jìn)行測距時必須要考慮溫度問題。為提高超聲紅外測距技術(shù)的精確度,本文引入基于BP神經(jīng)網(wǎng)絡(luò)的溫度補償算法來提高超聲速度的準(zhǔn)確度。
超聲紅外測距系統(tǒng)的硬件結(jié)構(gòu)主要包括AVR單片機、紅外線收發(fā)器、超聲波收發(fā)器、主控模塊、通信模塊、溫度檢測模塊以及云服務(wù)器等模塊。主控模塊嵌入在小型平板或計算機中,工作人員通過主控模塊向單片機發(fā)送測距命令,使得系統(tǒng)開始工作,單片機與主控模塊之間的通信通過RS485實現(xiàn)。溫度傳感器DS18B20檢測當(dāng)前溫度,并將其上傳給主控模塊,主控模塊通過BP神經(jīng)訓(xùn)練得到超聲速度值,和單片機測得的時間進(jìn)行計算,得出所測的距離。得到的數(shù)據(jù)可以在主控模塊上顯示出來,也可以上傳到云服務(wù)器通過手機進(jìn)行查看。紅外線和超聲波的發(fā)射接收方式選用直射式,載波頻率為38 kHz,采用超聲紅外復(fù)合測距可以發(fā)揮兩者的優(yōu)勢,避免劣勢。超聲測距,當(dāng)距離較近時會有測量盲區(qū),導(dǎo)致誤差比較大[2-3],而紅外線進(jìn)行近距離測距時則沒有這種缺點,因此采用超聲紅外的方式進(jìn)行復(fù)合測距。系統(tǒng)整體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)整體結(jié)構(gòu)
測距模塊的工作原理是設(shè)單片機測得超聲波傳播時間為t,由于該時間是信號發(fā)送與反射回來的總時間,也就是所測距時間的兩倍[4],設(shè)超聲波在空氣中的傳播速度為c,因此測得距離為S=c×t/2。由于超聲波在空氣中傳播時,傳播速度受到環(huán)境溫度等方面的影響,因此傳播速度誤差會影響測量結(jié)果的精確性。本文提出了基于BP神經(jīng)網(wǎng)絡(luò)的溫度補償算法對溫度進(jìn)行補償,得到更加精確的超聲波速度。
為了對溫度進(jìn)行采集和處理并獲得較精確的溫度值,采用DS18B20溫度傳感器設(shè)計溫度補償電路,進(jìn)行溫度采集,它的測溫范圍是-55 ℃~+125 ℃,并且在-10 ℃~+85 ℃范圍內(nèi)精度為±0.5 ℃[5]。
圖2 多層感知器網(wǎng)絡(luò)結(jié)構(gòu)
(1)
式中:EP為一組輸入和輸出的代價函數(shù);E為P組擬合誤差的代價函數(shù)。
(2)
(3)
式中:α為學(xué)習(xí)率,α>0;η為動量項因子,0≤η<1。
(3) 最后計算全局誤差E是否滿足預(yù)設(shè)精度要求:若滿足則結(jié)束算法的訓(xùn)練;若不滿足,選取另一組訓(xùn)練樣本進(jìn)行下一組的訓(xùn)練學(xué)習(xí),直到誤差達(dá)到訓(xùn)練要求為止。
基于BP神經(jīng)網(wǎng)絡(luò)的溫度補償算法,將溫度環(huán)境(T)作為輸入,并進(jìn)行歸一化處理,超聲波速度作為輸出。進(jìn)行訓(xùn)練時,輸入層到隱藏層的初始學(xué)習(xí)速率為0.05,隱藏層到輸出層的初始學(xué)習(xí)速率為0.3,動量因子為0.8,通過式(3)調(diào)整權(quán)值。學(xué)習(xí)函數(shù)為purelin,訓(xùn)練函數(shù)為traindm,參數(shù)設(shè)置如下:最小目標(biāo)誤差goal=l×10-3;最大訓(xùn)練次數(shù)為100,最大失敗次數(shù)為5;預(yù)設(shè)精度為0.000 1。
本文共采集了29對數(shù)據(jù)進(jìn)行訓(xùn)練,如表1所示。
表1 不同溫度下超聲波速度對應(yīng)表
通過以上數(shù)據(jù)對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,輸出曲線如圖3所示。對網(wǎng)絡(luò)訓(xùn)練完成后,通過數(shù)據(jù)進(jìn)行測試,效果圖如圖4所示,中間橫的虛線是沒有經(jīng)過網(wǎng)絡(luò)訓(xùn)練的不同溫度下的超聲波的速度,而斜著的實線是經(jīng)過神經(jīng)網(wǎng)絡(luò)訓(xùn)練之后的不同溫度下的超聲波速度,并對其進(jìn)行連續(xù)化測試,得到溫度與超聲波速度之間的相互對應(yīng)情況,從圖4可以看出其差距是非常大的。圖5顯示的是誤差曲線,從圖5可以看出隨著迭代次數(shù)的增加,誤差是逐漸降低的,并逐漸趨于平穩(wěn)。
圖3 網(wǎng)絡(luò)訓(xùn)練曲線
圖4 網(wǎng)絡(luò)補償后效果圖
圖5 誤差曲線效果圖
本文采用模塊化形式進(jìn)行C語言編程,將系統(tǒng)主要分成系統(tǒng)主程序,紅外線發(fā)送和超聲波接收子程序,紅外線接收和超聲波發(fā)送子程序,以及溫度檢測與補償子程序等模塊。系統(tǒng)流程如圖6所示。系統(tǒng)主程序完成的工作主要是系統(tǒng)的初始化,包括串口初始化、定時器初始化,調(diào)用各個子程序,完成通信功能[7-8]。根據(jù)紅外超聲的收發(fā)指令,由定時器1和定時器2計算出紅外線和超聲波從發(fā)送到接收所經(jīng)歷的時間[9]。溫度傳感器DS18B20完成溫度檢測功能。計算機通過BP神經(jīng)網(wǎng)絡(luò)算法對各溫度下的超聲波速度進(jìn)行訓(xùn)練補償,得出較為精確的超聲波速度,根據(jù)距離公式得出此時所測得的距離。
圖6 系統(tǒng)流程圖
外部環(huán)境溫度的變化嚴(yán)重影響了測距的精度,將BP神經(jīng)網(wǎng)絡(luò)用于對溫度傳感器所測溫度的補償,很好地提高了超聲波的測速精度。試驗表明,溫度補償后的超聲波速度和未經(jīng)過溫度補償?shù)某暡ㄋ俣认啾?,?xùn)練速度快,而且改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)避免了陷入局部極小值點,具有全局性,達(dá)到了更高的測量精度,使得測距更加精確。