張文旭,梁繼然,許延雷
(天津大學微電子學院,天津 300072)
在工業生產過程中,許多大型設備在運行中都需要監測溫度、壓力等參數,而常用的監測溫度的方案大都采取PT100、PT1000熱電阻,測量壓力時通常采用壓敏電阻,測量系統需檢測這些敏感電阻的阻值以達到檢測溫度、壓力等參數的目的[1-3]。目前測量熱電阻與壓敏電阻的外電路設計大致可分為惠斯通電橋電路以及恒流偏置電路兩種。對于惠斯通電橋電路而言,其存在許多電路噪聲,需要設計復雜的濾波電路降低系統噪聲;對于橫流偏置電路,需要設計高精度的橫流偏置源。基于這兩種硬件電路結構設計的系統,在算法上一般采取擬合的方式進行,但是環境溫度或壓力的變化與電阻的變化關系較為復雜,所采取的擬合函數往往普適性較差,同時一些硬件電路的噪聲也會對電阻測量值產生一定的影響,這導致擬合結果偏離實際值。
國內有許多學者研究解決這一問題,其中魏光華等人采用五點標準模型進行最小二乘法的擬合[4],得到了較為精確的測量結果,但其測量結果中有些測量值誤差較大,穩定性欠佳。鄧翔宇等人采用分段線性擬合的方法解決了一些硬件電路的噪聲也會對電阻測量值產生一定的影響[5],但是分段線性擬合的計算復雜度過大,算法需要的參數過多。田偉等人提出采用牛頓插值算法來解決橋式電路因溫度變化所帶來的誤差[6],得到了誤差不超過0.2%的測量結果,但這一做法僅能解決溫度對傳感器產生的影響。張邦成等人采用貝葉斯融合的方法解決傳感器引入的噪聲問題[7],其采用多個傳感器數據進行融合,得到最終較為精確的測量結果,但其運算過程包含了積分與矩陣的運算,不利于應用在嵌入式系統中。
本文提出一種基于遺傳算法(Genetic Algorithm,GA)優化的BP(Back Propagation,BP)神經網絡算法,BP神經網絡是一種按照誤差反向傳播訓練的一種前饋網絡,其主要應用在數據擬合、函數逼近等方面[8-9]。但BP神經網絡存在學習速率慢、易陷入局部最小值等不足[10-11]。遺傳算法是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的一種計算模型,它通過模擬自然進化過程搜索得到最優解[12-13]。在BP網絡訓練參數之前,可以利用GA算法優化BP神經網絡存在的不足。利用本文設計的系統測得GA-BP算法的訓練集數據,先通過GA算法,迭代得到一個較為精確的全局最優解,再通過BP神經網絡訓練得到模型的最優解,再將得到的網絡參數固化到單片機上,通過嵌入式系統可直接測得高精確度的電阻值。

圖1 系統原理圖
本文提出的高精確度電阻測量系統主要由以下4個部分組成:最小系統電路,人機交互電路,電源管理電路,電阻阻值采集電路。其中最小系統電路采用ST公司的STM32F407芯片作為整個系統的主控芯片,該芯片具有高精度的12位ADC可以直接采集電阻采集電路的輸出電壓,得到精度為1 mV的模擬電壓值。同時該芯片內部集成了浮點運算單元,可以加速浮點運算。人機交互電路采用的是0.96寸的OLED顯示屏,其具有128×64的分辨率,可以實現字符與數字的顯示;此外,采取旋轉編碼器與獨立按鍵相結合的方式實現用戶與系統間的信息交互。電源管理電路采用的是LM2596將外部輸入的電壓降至5 V,采用TPS7333線性穩壓芯片將5 V電壓降至3.3 V為整個系統的各個模塊供電。
電阻阻值采集電路采用單臂惠斯通電橋結構,如圖2所示,整個硬件設計上沒有采用額外的濾波電路或復雜的設計。R3為可變電阻,這里參考PT1000的阻值變化范圍選取R3的值為0.6 kΩ~1.8 kΩ,按照標準的電橋電路的輸出電壓表達式計算,電橋的輸出電壓的范圍為30 mV~80 mV之間,為了能夠提升單片機采集信號時的信噪比,需要將這部分輸出的電壓信號進行放大處理,進而有效地增大信噪比。STM32F407單片機自帶的AD轉換功能可以識別最大3.3 V的電壓信號,因此需要將電橋輸出部分的信號放大40倍左右,此處選擇R5=31 kΩ。為此,選用AD623高精度儀器放大器作為放大電路的芯片,AD623芯片在工程設計上應用廣泛,具有較寬的增益調節范圍(1~1 000),可以滿足本設計的要求。

圖2 電阻阻值采集電路

圖3 BP神經網絡結構
BP神經網絡算法是一種前向傳播類型的神經網絡,它具有三層或三層以上的網絡結構,每一層都由若干個神經元組成,層與層之間的神經元采取的連接方式是全連接,即每一個神經元都與下一層的所有神經元進行連接。BP神經網絡的主要用途之一是非線性函數擬合,它能夠通過給定的數據進行計算,按照減小期望輸出與實際輸出誤差的原則,逐步來調整網絡參數,使網絡實現對給定數據非線性的函數擬合。本文所應用的BP神經網絡的結構如圖3所示。
在惠斯通電橋模型中,我們可以把輸出的電壓和輸入電阻的變化看作一種函數關系。經過推導雖然可以得到一個精確的函數關系,但是由于電路中存在一定的噪聲,這使得得到的精確的函數關系中一些物理量的實際值與測量值之間發生了偏離,這使得我們依據推導出的函數關系所得到的測量結果存在著一定的誤差。采取BP神經網絡進行函數擬合的方法,可以將電路產生的噪聲擬合在非線性的函數關系之中,從而得到更低誤差的測量結果。
但是,BP神經網絡存在一定的缺陷,利用BP神經網絡進行訓練的過程中,其訓練時間過長,而且容易陷入局部最小值,導致訓練緩慢,加大迭代次數。針對這一問題,本文采用遺傳算法,對于BP神經網絡訓練過程進行優化,以減小訓練時間與迭代次數。
GA是一種通過模擬自然進化過程搜索最優解的方法。本文所采取的算法的思路是,開始隨機產生n個種群,共經歷N次迭代,每次迭代的過程中都會對每個種群的染色體編碼的數值進行解碼操作,得到對應的神經網絡的參數值,根據神經網絡輸出Tout與給定數據O作比較,利用二者的二范數計算每個種群的適應度F,其計算公式為:
F=‖Tout-O‖2
然后按照適應度的計算結果生成每一個種群被選中的概率,接下來按照每個種群概率的大小隨機選擇兩個種群,每個種群的適應度越大被選上的概率越大。被選中的種群會產生新的種群,同時,新種群會產生隨機性的變異。GA算法的優勢是,在迭代過程中不會陷入局部最優解,可以在全局上尋找最優解,但是GA算法迭代得到的解,會在最優解附近震蕩,很難得到一個精確的最優解。
由于GA算法不能夠精確地得到最優解,但是可以通過迭代得到最優解附近的解;BP神經網絡在訓練過程中容易陷入局部最優解,但是可以得到比較精確的解,因此本文將兩種算法結合在一起,首先使用GA算法得到一個較為精確的全局最優解,然后再進行BP神經網絡的訓練,從而得到全局最優解,本文設計的GA-BP神經網絡算法在MATLAB上實現,該部分的具體算法流程如下:①導入預先測量的數據,將數據分為訓練集和測試集,并對數據進行歸一化處理。②隨機產生n個種群,每個種群的染色體編碼采取浮點數編碼,編碼的染色體個數為19個,其中前6個表示輸入層到隱含層的權重,第7~12個表示隱含層到輸出層的權重,第13~18表示輸入層到隱含層的偏置,第19表示隱含層到輸出層的偏置。③計算n個樣本的適應度,得到n個樣本能夠進行繁殖的概率。④按照每個樣本可以繁殖的概率,挑選2個作為親本,隨機交換兩個親本的染色體得到新的子代。⑤重復n次步驟4,得到新的子代。⑥對子代的染色體進行變異,即隨機增加一個(-0.09,0.09)之間的隨機數。⑦重復N次步驟2-步驟6,即進行遺傳算法的N次迭代,得到GA算法運行結束的近似全局最優解。⑧建立一個BP神經網絡,該網絡的輸入層、隱含層、輸出層神經元個數分別為1個,6個,1個,輸入層到隱含層的激活函數為tansig,隱含層到輸出層的激活函數為sigmod,將步驟7中得到的網絡參數作為BP神經網絡的初始化參數。⑨設定學習率lr,目標精度e,開始訓練BP神經網絡。⑩得到最優解的網絡參數。
在程序的設計上,整個系統的軟件架構是以u/COS Ⅲ實時操作系統為核心。采用嵌入式實時操作系統可以更合理、更有效地利用CPU的資源[14-15],簡化應用程序的設計邏輯與各任務之間的外在聯系,同時可以更好地保證系統的實時性和程序運行的可靠性。本文將步驟10中得到的網絡訓練參數直接用于STM32系統的軟件設計部分中,STM32內部擁有浮點運算加速器,可以對指數函數運算進行加速。

圖4 系統實物圖
本文所設計的系統實物圖如圖4所示,利用該系統所測得的模擬電壓值與電阻阻值作為神經網絡的訓練數據。
為了得到使整個網絡性能優良的種群個數n與迭代次數N,本文通過多次預訓練實驗,在訓練實驗中,選取迭代次數N=500,從圖5中可以看出,迭代次數在100之后,雖然適應度有提高,但是提高的數值變化不大,初步選取迭代次數N=100,選取種群個數n=50。從圖6中可以看出GA算法在迭代次數達到60次左右時,均方誤差的值就穩定在0.063附近,每一次迭代中適應度最大的值會有階躍式的變化,在第70次迭代后趨于穩定,適應度的最大值趨于16。

圖5 預訓練時GA算法每次迭代的均方誤差與適應度

圖6 n=50,N=100時GA算法每次迭代的均方誤差與適應度
將GA算法計算得到的近似全局最優權重賦給神經網絡,設定學習率lr=0.01,目標精度e=10-7,得到的訓練結果如圖7所示,從結果中可以看出在725次迭代后,整個網絡的性能達到9.98×10-8,其網絡訓練的相關性系數R=1,從圖8所示的擬合效果中可以看出,預訓練的數據均勻的分布在光滑的擬合曲線上,訓練效果良好。

圖7 網絡性能結果

圖8 非線性擬合結果

圖9 GA-BP網絡與BP網絡迭代次數比較
利用GA-BP算法訓練網絡,記錄10次訓練結果,與未進行GA算法優化的結果進行對比,如圖9所示。從結果中看出,GA-BP神經網絡訓練的迭代次數約為1 000次左右,而未使用GA優化算法的BP神經網絡在訓練過程中的迭代次數為20 000次以上,可以看出GA-BP神經網絡算法在訓練過程中迭代次數有明顯的降低。
將訓練好的GA-BP神經網絡使用測試集驗證網絡的性能,得到的結果如圖10所示,其測量誤差大部分分布在0.1%以下,網絡的性能較好。

圖10 GA-BP網絡測試集相對誤差
訓練得到的網絡參數如表1所示。

表1 網絡參數訓練結果
表2中隨機測量了5組輸入電阻和輸出模擬電壓的數據,分別利用理論公式計算、線性擬合、GA-BP神經網絡得到以下測量結果,從結果中可以看出,相比于線性擬合的方法,GA-BP算法進一步降低了測量誤差,GA-BP算法的測量誤差約在0.1%左右。

表2 理論公式計算、線性擬合、GA-BP神經網絡對比
本文提出了一種高精確度電阻測量系統,該系統根據預先測量的電阻與電壓數據,訓練神經網絡,將網絡輸出作為測量結果。相比于傳統的線性擬合算法,采用神經網絡算法能夠得到更為精確的電阻測量結果,實驗結果表明,神經網絡算法的電阻測量誤差為0.1%左右。利用GA算法對BP神經網絡進行優化,大大降低了BP神經網絡訓練過程中的迭代次數,可以加速網絡的訓練。此外本算法可以將神經網絡算法實現的流程放到MCU上運行,直接在電阻測量系統上得到高精確度的測量結果,能為采用電橋電路的相關設計提供一定的參考。