馬宏光,曾國(guó)輝,黃 勃
(上海工程技術(shù)大學(xué)電子電氣工程學(xué)院,上海 201620)
工業(yè)中,壓力變送器主要用來監(jiān)測(cè)壓力參數(shù),并將數(shù)據(jù)轉(zhuǎn)換為標(biāo)準(zhǔn)工業(yè)電信號(hào)輸出。在實(shí)際使用過程中,壓力變送器的壓力測(cè)量值會(huì)隨著溫度的改變而產(chǎn)生非線性誤差,需要對(duì)其進(jìn)行溫度補(bǔ)償。目前較為常用的補(bǔ)償方式分為硬件補(bǔ)償和軟件補(bǔ)償。硬件補(bǔ)償缺點(diǎn)在于需要耗費(fèi)額外的硬件成本,通用性差,補(bǔ)償效果一般。而軟件補(bǔ)償方式較硬件補(bǔ)償方式來說,補(bǔ)償精度高,成本低,且有很強(qiáng)的可移植性。因此,本文主要研究軟件補(bǔ)償?shù)姆绞?,并提出一種鯨魚算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的軟件補(bǔ)償方式。
現(xiàn)有的壓力變送器主要由以下幾部分組成:?jiǎn)纹瑱C(jī)、溫度傳感器、壓力傳感器、模數(shù)/數(shù)模轉(zhuǎn)換器、數(shù)據(jù)存儲(chǔ)器等[1]。單片機(jī)通過A/D芯片接收溫度傳感器和壓力傳感器采集到的數(shù)據(jù),經(jīng)過程序運(yùn)算處理后,由D/A芯片轉(zhuǎn)換為標(biāo)準(zhǔn)的電信號(hào),并通過通信裝置發(fā)送到其他設(shè)備用于控制、存儲(chǔ)等。圖1為壓力變送器結(jié)構(gòu)框圖。
圖1 壓力變送器結(jié)構(gòu)框圖
壓力變送器常使用硅式半導(dǎo)體材料,利用“壓阻效應(yīng)”進(jìn)行壓力測(cè)量,即硅晶體的某一晶面壓力改變時(shí),晶體固有電阻率發(fā)生變化,從而使得惠斯登電橋平衡被打破,輸出電壓也隨之改變,繼而測(cè)得壓力。圖2為惠斯登電橋原理圖[2]。由于半導(dǎo)體材料對(duì)溫度變化靈敏度高,溫度的變化將帶來較大的非線性誤差,為保證測(cè)量精度,需要對(duì)其進(jìn)行溫度補(bǔ)償。
圖2 惠斯登電橋原理圖
由于BP神經(jīng)網(wǎng)絡(luò)具有較好的非線性映射能力,常用于溫度補(bǔ)償。文獻(xiàn)[3]利用BP神經(jīng)網(wǎng)絡(luò)對(duì)壓力變送器進(jìn)行溫度補(bǔ)償,得到了良好的效果。圖3為BP神經(jīng)網(wǎng)絡(luò)溫度補(bǔ)償?shù)脑韴D。但BP神經(jīng)網(wǎng)絡(luò)存在收斂慢、迭代數(shù)多、易陷入局部最小和全局搜索能力不足等缺點(diǎn)[4]。文獻(xiàn)[5]利用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò),改善了整個(gè)網(wǎng)絡(luò)的全局搜索能力,結(jié)果相比普通神經(jīng)網(wǎng)絡(luò)誤差精度提高了一個(gè)級(jí)別,但收斂速度慢。文獻(xiàn)[6]利用粒子群算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò),解決了局部最小的問題,補(bǔ)償后精度提高顯著,但存在過早收斂的問題。
圖3 BP神經(jīng)網(wǎng)絡(luò)溫度補(bǔ)償原理圖
鯨魚優(yōu)化算法(whale optimization algorithm,WOA)是一種自然啟發(fā)的元啟發(fā)式優(yōu)化算法[7]。通過模擬鯨魚搜索、包圍、捕食獵物的行為建立WOA數(shù)學(xué)模型,具體模型如下:
2.2.1 包圍
D=|C·Xp(t)-X(t)|
(1)
式中:Xp(t)為最優(yōu)個(gè)體的位置;X(t)為當(dāng)前個(gè)體的位置;t為當(dāng)前迭代數(shù);C為對(duì)目標(biāo)(獵物)的擾動(dòng);D為包圍時(shí)的更新步長(zhǎng)。
個(gè)體位置更新如式(2)所示:
X(t+1)=Xp(t)-A·D
(2)
隨機(jī)變量A和C分別如式(3)和式(4)所示。
A=2a·r-a
(3)
C=2r
(4)
式中:r為[0,1]之間的隨機(jī)數(shù);a如式(5)所示,代表a從2線性減少到0;T為總的迭代次數(shù)。
a=2-2t/T
(5)
其中,A用于控制算法中鯨魚群的擴(kuò)充與包圍。在|A|>1時(shí),算法進(jìn)行全局搜索,在|A|<1時(shí),算法進(jìn)行局部搜索。
2.2.2 捕食(泡泡網(wǎng)攻擊)
鯨魚捕食行為分為以下2種情況:
(1)收縮循環(huán):通過迭代過程,將式(5)中a的值由2減為0,從而描述鯨魚收縮包圍食物的捕食行為。
(2)螺旋重新更新位置:在鯨魚和目標(biāo)位置間建立螺旋更新方程用于模擬鯨魚的螺旋捕食運(yùn)動(dòng),具體表示如式(6)和式(7)所示:
D′=|Xp(t)-X(t)|
(6)
X(t+1)=D′·ebl·cos(2πl(wèi))+Xp(t)
(7)
式中:b為螺旋形狀的常數(shù),一般設(shè)為l,l表示[-1,1]之間的隨機(jī)數(shù);D′為捕食時(shí)的更新步長(zhǎng),在捕食過程中,鯨魚同時(shí)在以上2條路徑上繞著獵物游動(dòng)。
為了更新鯨魚的位置,以上2種方法的概率均為50%。具體如式(8)所示:
(8)
2.2.3 搜索(勘查階段)
該階段鯨魚進(jìn)行游走覓食,使用隨機(jī)選擇個(gè)體的方案進(jìn)行位置更新,從而提高了WOA算法的全局優(yōu)化能力,使得鯨魚算法具有了跳出局部最優(yōu)解的能力。具體如式(9)和式(10)所示:
D″=|C·Xrand(t)-X(t)|
(9)
X(t+1)=Xrand(t)-A·D″
(10)
式中:Xrand為從種群中任意選取某一鯨魚的位置;D″為探索時(shí)的更新與步長(zhǎng)。
WOA算法在處理尋找最優(yōu)解的過程中效率高、收斂速度快、精度高,并且調(diào)節(jié)參數(shù)少,具有跳出局部最優(yōu)的能力[8-10]。因此提出WOA算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的溫度補(bǔ)償方法。具體流程如下:
(1)收集訓(xùn)練樣本,歸一化處理;
(2)算法初始化。設(shè)置迭代數(shù)、種群數(shù),并將BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練誤差作為適應(yīng)度函數(shù);
(3)計(jì)算每個(gè)鯨魚個(gè)體的適應(yīng)度值,保存當(dāng)前最優(yōu)個(gè)體和位置;
(4)當(dāng)t (5)當(dāng)p<0.5時(shí),若|A|<1,根據(jù)式(2)更新鯨魚位置;若|A|≥1,根據(jù)式(10)隨機(jī)更新鯨魚位置; (6)當(dāng)p≥0.5時(shí),根據(jù)式(7)更新鯨魚位置; (7)計(jì)算當(dāng)前群體中最優(yōu)個(gè)體,并保存?zhèn)€體位置。判斷是否t>T,是則進(jìn)入下一步;否則令t=t+1,重復(fù)執(zhí)行(4)~(7)步; (8)輸出最優(yōu)鯨魚位置,記錄最優(yōu)權(quán)值和閾值; (9)將優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行溫度補(bǔ)償,得出補(bǔ)償后的結(jié)果。圖4為WOA-BP算法流程圖。 圖4 WOA-BP算法流程圖 實(shí)驗(yàn)中,壓力變送器的傳感器為Honeywell TSC系列硅壓力傳感器,量程為±10 kPa,實(shí)驗(yàn)溫度范圍為[20 ℃,55 ℃];實(shí)驗(yàn)壓力范圍為[0 kPa,10 kPa]。實(shí)驗(yàn)數(shù)據(jù)如表 1 所示。選用靈敏度溫度系數(shù)αs和相對(duì)誤差δ用于評(píng)價(jià)溫度對(duì)傳感器精度的影響程度[11]。其中,αs和δ分別表示為式(11)和式(12)。 (11) (12) 式中:ΔT為實(shí)驗(yàn)溫度變化上下限差值量,即35 ℃;UPmax和UPmin分別為在相同壓力下傳感器輸出的電壓最大值和最小值。 表1 壓力傳感器實(shí)驗(yàn)數(shù)據(jù) 將AD碼轉(zhuǎn)換為電壓值后,對(duì)比溫度補(bǔ)償前不同壓力和溫度狀態(tài)下的傳感器實(shí)際輸出電壓和測(cè)量輸出電壓,不同溫度下電壓與壓力的關(guān)系曲線如圖5所示。 圖5 補(bǔ)償前不同溫度下電壓-壓力關(guān)系曲線 隨溫度改變,輸出電壓值與壓力值會(huì)產(chǎn)生非線性誤差,補(bǔ)償前,靈敏度溫度系數(shù)αs為1.32×10-3/℃,最大相對(duì)誤差δ為4.6%。需要對(duì)其進(jìn)行溫度補(bǔ)償。 利用MATLAB R2016b,對(duì)WOA-BP算法的溫度補(bǔ)償模型進(jìn)行仿真,得到補(bǔ)償后的壓力值。其中迭代次數(shù)設(shè)置為100次,初始種群數(shù)為30。WOA-BP處理后的數(shù)據(jù)如表2所示。 表2 壓力傳感器補(bǔ)償后數(shù)據(jù) 補(bǔ)償后的靈敏度溫度系數(shù)αs為4.01×10-4/℃,相對(duì)誤差δ為0.48%。靈敏度溫度系數(shù)提高了一個(gè)數(shù)量級(jí),最大相對(duì)誤差也從4.6%降到0.48%。補(bǔ)償后不同溫度下的電壓-壓力關(guān)系曲線如圖6所示,可見提出的WOA-BP的溫度補(bǔ)償模型在壓力變送器的溫度補(bǔ)償中是可行的。 圖6 補(bǔ)償后不同溫度下的電壓-壓力關(guān)系曲線 為驗(yàn)證WOA-BP的優(yōu)越性,將WOA-BP算法與現(xiàn)有的GA-BP神經(jīng)網(wǎng)絡(luò)、PSO-BP神經(jīng)網(wǎng)絡(luò)溫度以及傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)補(bǔ)償模型進(jìn)行對(duì)比。不同溫度補(bǔ)償模型誤差對(duì)比結(jié)果如表3所示。無論是靈敏度溫度系數(shù)還是相對(duì)誤差,WOA-BP的溫度補(bǔ)償模型較其他幾種模型都有更好的效果。 表3 不同溫度補(bǔ)償模型誤差對(duì)比結(jié)果 本文選用MSP430單片機(jī)作為核心處理器,將WOA算法訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)固化進(jìn)單片機(jī)中,再通過壓力傳感器的輸出電壓以及溫度傳感器的輸出值經(jīng)過AD7799芯片放大并轉(zhuǎn)換后輸入單片機(jī)內(nèi)部,并進(jìn)行數(shù)據(jù)融合處理后在液晶屏上顯示。硬件電路結(jié)構(gòu)框圖如圖7所示。 圖7 硬件電路結(jié)構(gòu)框圖 本文提出基于WOA-BP神經(jīng)網(wǎng)絡(luò)溫度補(bǔ)償模型,利用WOA算法不易陷入局部最優(yōu)、收斂速度快等特點(diǎn)得到了最優(yōu)的BP神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值,并用于壓力變送器的溫度補(bǔ)償。補(bǔ)償后的壓力變送器測(cè)量系統(tǒng)的靈敏度溫度系數(shù)為4.01×10-4/℃,最大相對(duì)誤差為0.48%,滿足實(shí)際應(yīng)用需求。3 仿真與實(shí)驗(yàn)
3.1 軟件仿真
3.2 硬件實(shí)現(xiàn)
4 結(jié)論