張磊, 周建全, 鞠文杰, 路軍, 楊偉進(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ù)的性能及精度有很高的研究價(jià)值[1]。本文通過發(fā)射紅外線來確定計(jì)時(shí)器開始計(jì)時(shí)的時(shí)間,利用超聲波在空氣中的已知傳播速度,再乘以超聲波在發(fā)射端發(fā)射到接收端接收的時(shí)間差,計(jì)算出距離。無論是在室內(nèi)還是在室外測距,溫度都是影響測量精度的一個(gè)重要因素,尤其室外的環(huán)境非常復(fù)雜,進(jìn)行作業(yè)時(shí)不確定會遇到什么樣的天氣,而不同溫度下超聲速度具有一定的差距,采用超聲波進(jìn)行測距時(shí)必須要考慮溫度問題。為提高超聲紅外測距技術(shù)的精確度,本文引入基于BP神經(jīng)網(wǎng)絡(luò)的溫度補(bǔ)償算法來提高超聲速度的準(zhǔn)確度。
超聲紅外測距系統(tǒng)的硬件結(jié)構(gòu)主要包括AVR單片機(jī)、紅外線收發(fā)器、超聲波收發(fā)器、主控模塊、通信模塊、溫度檢測模塊以及云服務(wù)器等模塊。主控模塊嵌入在小型平板或計(jì)算機(jī)中,工作人員通過主控模塊向單片機(jī)發(fā)送測距命令,使得系統(tǒng)開始工作,單片機(jī)與主控模塊之間的通信通過RS485實(shí)現(xiàn)。溫度傳感器DS18B20檢測當(dāng)前溫度,并將其上傳給主控模塊,主控模塊通過BP神經(jīng)訓(xùn)練得到超聲速度值,和單片機(jī)測得的時(shí)間進(jìn)行計(jì)算,得出所測的距離。得到的數(shù)據(jù)可以在主控模塊上顯示出來,也可以上傳到云服務(wù)器通過手機(jī)進(jìn)行查看。紅外線和超聲波的發(fā)射接收方式選用直射式,載波頻率為38 kHz,采用超聲紅外復(fù)合測距可以發(fā)揮兩者的優(yōu)勢,避免劣勢。超聲測距,當(dāng)距離較近時(shí)會有測量盲區(qū),導(dǎo)致誤差比較大[2-3],而紅外線進(jìn)行近距離測距時(shí)則沒有這種缺點(diǎn),因此采用超聲紅外的方式進(jìn)行復(fù)合測距。系統(tǒng)整體結(jié)構(gòu)如圖1所示。

圖1 系統(tǒng)整體結(jié)構(gòu)
測距模塊的工作原理是設(shè)單片機(jī)測得超聲波傳播時(shí)間為t,由于該時(shí)間是信號發(fā)送與反射回來的總時(shí)間,也就是所測距時(shí)間的兩倍[4],設(shè)超聲波在空氣中的傳播速度為c,因此測得距離為S=c×t/2。由于超聲波在空氣中傳播時(shí),傳播速度受到環(huán)境溫度等方面的影響,因此傳播速度誤差會影響測量結(jié)果的精確性。本文提出了基于BP神經(jīng)網(wǎng)絡(luò)的溫度補(bǔ)償算法對溫度進(jìn)行補(bǔ)償,得到更加精確的超聲波速度。
為了對溫度進(jìn)行采集和處理并獲得較精確的溫度值,采用DS18B20溫度傳感器設(shè)計(jì)溫度補(bǔ)償電路,進(jìn)行溫度采集,它的測溫范圍是-55 ℃~+125 ℃,并且在-10 ℃~+85 ℃范圍內(nèi)精度為±0.5 ℃[5]。


圖2 多層感知器網(wǎng)絡(luò)結(jié)構(gòu)

(1)
式中:EP為一組輸入和輸出的代價(jià)函數(shù);E為P組擬合誤差的代價(jià)函數(shù)。

(2)

(3)
式中:α為學(xué)習(xí)率,α>0;η為動量項(xiàng)因子,0≤η<1。
(3) 最后計(jì)算全局誤差E是否滿足預(yù)設(shè)精度要求:若滿足則結(jié)束算法的訓(xùn)練;若不滿足,選取另一組訓(xùn)練樣本進(jìn)行下一組的訓(xùn)練學(xué)習(xí),直到誤差達(dá)到訓(xùn)練要求為止。
基于BP神經(jīng)網(wǎng)絡(luò)的溫度補(bǔ)償算法,將溫度環(huán)境(T)作為輸入,并進(jìn)行歸一化處理,超聲波速度作為輸出。進(jìn)行訓(xùn)練時(shí),輸入層到隱藏層的初始學(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)練的不同溫度下的超聲波的速度,而斜著的實(shí)線是經(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ò)補(bǔ)償后效果圖

圖5 誤差曲線效果圖
本文采用模塊化形式進(jìn)行C語言編程,將系統(tǒng)主要分成系統(tǒng)主程序,紅外線發(fā)送和超聲波接收子程序,紅外線接收和超聲波發(fā)送子程序,以及溫度檢測與補(bǔ)償子程序等模塊。系統(tǒng)流程如圖6所示。系統(tǒng)主程序完成的工作主要是系統(tǒng)的初始化,包括串口初始化、定時(shí)器初始化,調(diào)用各個(gè)子程序,完成通信功能[7-8]。根據(jù)紅外超聲的收發(fā)指令,由定時(shí)器1和定時(shí)器2計(jì)算出紅外線和超聲波從發(fā)送到接收所經(jīng)歷的時(shí)間[9]。溫度傳感器DS18B20完成溫度檢測功能。計(jì)算機(jī)通過BP神經(jīng)網(wǎng)絡(luò)算法對各溫度下的超聲波速度進(jìn)行訓(xùn)練補(bǔ)償,得出較為精確的超聲波速度,根據(jù)距離公式得出此時(shí)所測得的距離。

圖6 系統(tǒng)流程圖
外部環(huán)境溫度的變化嚴(yán)重影響了測距的精度,將BP神經(jīng)網(wǎng)絡(luò)用于對溫度傳感器所測溫度的補(bǔ)償,很好地提高了超聲波的測速精度。試驗(yàn)表明,溫度補(bǔ)償后的超聲波速度和未經(jīng)過溫度補(bǔ)償?shù)某暡ㄋ俣认啾龋?xùn)練速度快,而且改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)避免了陷入局部極小值點(diǎn),具有全局性,達(dá)到了更高的測量精度,使得測距更加精確。