崔靜雅,呂惠民,程 賽
(西安理工大學(xué)應(yīng)用物理系,西安 710048)
壓力的測(cè)控在現(xiàn)代工業(yè)自控環(huán)境中廣泛應(yīng)用,涉及水利水電、鐵路交通、智能建筑、航空航天、軍工等眾多行業(yè)。隨著通訊技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,智能壓力傳感器技術(shù)的發(fā)展相對(duì)滯后,呈現(xiàn)出“頭腦(計(jì)算機(jī))發(fā)達(dá),感覺(jué)(傳感器)遲鈍”的現(xiàn)象[1]。為了提高測(cè)量精度,如何抑制壓力傳感器對(duì)溫度的交叉敏感性是亟待解決的核心問(wèn)題[2]。
壓力傳感器的工作原理已經(jīng)基本定型,通過(guò)發(fā)現(xiàn)新的特殊敏感材料[3]來(lái)提高性能已經(jīng)很困難。目前,國(guó)內(nèi)外常用的解決方法基本有兩種:一種是硬件法,但硬件電路大都存在電路復(fù)雜、精度低、成本高等缺點(diǎn)[4];另一種是軟件法,此類(lèi)方法是將微處理器與傳感器結(jié)合起來(lái),利用豐富的軟件功能、結(jié)合一定的算法對(duì)參量進(jìn)行數(shù)據(jù)融合,主要有回歸法、最小二階乘法、神經(jīng)網(wǎng)絡(luò)、小波等,其中神經(jīng)網(wǎng)絡(luò)具有層次性、聯(lián)想記憶和并行處理等優(yōu)點(diǎn),應(yīng)用前景良好[5-6]。近幾年,相關(guān)文獻(xiàn)中多選用BP神經(jīng)網(wǎng)絡(luò)來(lái)提高壓力測(cè)量的精度[5,7-8],但是忽略了溫度測(cè)量的準(zhǔn)確,且收斂速度慢。本智能傳感器系統(tǒng)針對(duì)壓力和溫度相互交叉干擾的問(wèn)題,利用BP神經(jīng)網(wǎng)絡(luò)的Levenberg-Marquardt算法提高了網(wǎng)絡(luò)收斂速率以及溫度和壓力兩個(gè)參量的測(cè)量精度,同時(shí)在μC/OS-Ⅱ操作平臺(tái)上,將 BP網(wǎng)絡(luò)融合算法嵌入到STM32F101C8微處理器中,實(shí)現(xiàn)顯示、報(bào)警、與PC機(jī)通信等功能,使功能更加完善。
硬件電路的系統(tǒng)方框圖如圖1所示。

圖1 硬件電路系統(tǒng)方框圖
傳感器選用的是JCY-101型硅壓阻式壓力傳感器,其內(nèi)部電路是由四個(gè)壓敏電阻組成的全橋差動(dòng)電路,如圖2所示。為了提高恒流特性,本設(shè)計(jì)采用反饋改進(jìn)型的恒流源為其供電。測(cè)量過(guò)程使用“一橋二測(cè)”技術(shù),其中,電橋B、D兩端輸出電壓UP為壓力參量的輸出信號(hào);A、C兩端輸出電壓Ut為溫度參量的輸出信號(hào)[9]。

圖2 JCY-101型硅壓阻式壓力傳感器原理圖
STM32F101其內(nèi)部使用高性能的ARM Cortex-M3 32位的RISC內(nèi)核,工作頻率為36 Hz,內(nèi)置高速存儲(chǔ)器,具有豐富的增強(qiáng)型外設(shè)。其工作電壓為2.0 V~3.6 V,為了提高轉(zhuǎn)換的精確度,ADC使用一個(gè)獨(dú)立的電源供電,過(guò)濾和屏蔽來(lái)自印刷電路板上的毛刺干擾。本設(shè)計(jì)中,將芯片的PA口的PA.4、PA.5、PA.6作為3路信號(hào)輸入用到其中一路輸入壓力信號(hào),一路輸入溫度信號(hào),一路接地,此接地電路可配合相應(yīng)的軟件來(lái)降低溫漂和系統(tǒng)誤差;實(shí)時(shí)時(shí)鐘采用12 MHz的時(shí)鐘晶振和32.768 kHz的低速外部晶振源;PA.8(USART1_TX)和PA.9(USART1_RX)外接一片MAX488進(jìn)行電平轉(zhuǎn)換,進(jìn)行與PC的串口通信,對(duì)采集到的有效的壓力和溫度信號(hào)實(shí)現(xiàn)遠(yuǎn)程和實(shí)時(shí)監(jiān)測(cè)控制;4個(gè)按鍵開(kāi)關(guān)分別接到STM32F101C8 的 PA.10、PA.11、PB.6、PB.7,作為預(yù)置壓力、調(diào)節(jié)上、下限,開(kāi)始工作的輸入端;將采集到的實(shí)時(shí)數(shù)據(jù)、來(lái)自鍵盤(pán)的設(shè)定壓力值送入液晶顯示器CM12864顯示。
目前,商用的嵌入式操作系統(tǒng)開(kāi)發(fā)成本昂貴且大部分不提供源代碼,并不適合小型系統(tǒng)的開(kāi)發(fā)。而μC/OS-Ⅱ相對(duì)于其它操作系統(tǒng)具有源碼公開(kāi)、移植性強(qiáng)、代碼可裁減等特點(diǎn),比較適合用于儀用儀表的內(nèi)嵌微控制器。考慮這些特點(diǎn),選用μC/OS-Ⅱ作為嵌入式實(shí)時(shí)操作系統(tǒng),克服了過(guò)去單任務(wù)順序機(jī)制,增強(qiáng)系統(tǒng)安全與穩(wěn)定性[10]。
在此智能傳感器系統(tǒng)中,微處理器啟動(dòng)時(shí),A/D轉(zhuǎn)換芯片等功能開(kāi)始自檢。如有故障,顯示哪一原件出錯(cuò),以便操作人員及時(shí)處理;如正常,則對(duì)系統(tǒng)初始化。一切就緒后,采集目標(biāo)參量,進(jìn)行數(shù)據(jù)處理及BP融合,并將輸出結(jié)果顯示出來(lái)。同時(shí)與PC機(jī)通信,將測(cè)試結(jié)果送入 PC機(jī),以得到更詳細(xì)的處理。
JCY-101型壓力傳感器為兩功能傳感器,可以測(cè)量壓力和溫度兩個(gè)目標(biāo)參量,但相互存在交叉敏感度。因此本系統(tǒng)采用BP神經(jīng)網(wǎng)絡(luò)對(duì)輸出信息進(jìn)行數(shù)據(jù)融合處理,進(jìn)而提高目標(biāo)參量的測(cè)量精度。
(1)樣本庫(kù)的建立
在不同的溫度T(20,30,40,50,60,70 ℃)壓力P(0,1,2,3,4,5)×104Pa 下,對(duì) CYJ-101 壓力傳感器的靜態(tài)輸入-輸出特性進(jìn)行標(biāo)定,得到36組二維實(shí)驗(yàn)數(shù)據(jù)標(biāo)定表。取20℃ ~70℃、0~5×104Pa范圍內(nèi)的30組數(shù)據(jù)作為訓(xùn)練樣本,其余6組作為測(cè)試樣本。由于神經(jīng)網(wǎng)絡(luò)輸入輸出數(shù)值應(yīng)為歸一化數(shù)值,分別用式(1)和式(2)對(duì)樣本數(shù)據(jù)和目標(biāo)數(shù)據(jù)進(jìn)行歸一化處理,建立神經(jīng)網(wǎng)絡(luò)輸入輸出標(biāo)準(zhǔn)樣本庫(kù)[11]。

(2)BP網(wǎng)絡(luò)模型的建立
BP神經(jīng)網(wǎng)絡(luò)是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò),針對(duì)通常BP網(wǎng)絡(luò)在使用中存在的收斂速度慢,容易陷于局部極小值等缺點(diǎn),采用Levenberg-Marquardt算法對(duì)樣本數(shù)據(jù)進(jìn)行融合[12]。設(shè)計(jì)一種包括輸入層、隱層、輸出層的3層網(wǎng)絡(luò),輸入層和輸出層的2個(gè)節(jié)點(diǎn)分別對(duì)應(yīng)于壓力信號(hào)和溫度信號(hào)的輸入輸出,隱層節(jié)點(diǎn)數(shù)為6,兩層間的傳遞函數(shù)分別為雙曲正切S型函數(shù)tansig和純線性函數(shù)pureline。
輸入層X(jué)(XP,Xt)與隱層之間的權(quán)值矩陣為W1,閥值矩陣為b1,隱層和輸出層Y(Yp,Yt)之間的權(quán)值矩陣為W2,閥值矩陣為b2,則輸入層與輸出層之間的關(guān)系表達(dá)式為:

(3)BP網(wǎng)絡(luò)訓(xùn)練
利用函數(shù)trainlm對(duì)BP網(wǎng)絡(luò)訓(xùn)練[13],得到權(quán)值和閾值的最優(yōu)值。當(dāng)訓(xùn)練誤差取0.000 01時(shí),利用MATLAB神經(jīng)網(wǎng)絡(luò)工具箱構(gòu)建BP網(wǎng)絡(luò),部分程序如下:
net=newff(minmax(p),[6 2],{‘tansig’,‘purelin’},‘trainlm’);%創(chuàng)建BP神經(jīng)網(wǎng)絡(luò)和定義訓(xùn)練函數(shù)以及參數(shù),隱層神經(jīng)元數(shù)量為6,輸出層數(shù)量為2
net.trainParam.goal=0.00001;%目標(biāo)精度設(shè)置
net.trainParam.epochs=2000;%最大迭代次數(shù)
[net,tr]=train(net,p,t);% 訓(xùn)練神經(jīng)網(wǎng)絡(luò)
y=sim(net,p);% 擬合檢驗(yàn)
網(wǎng)絡(luò)的誤差曲線如圖3所示,由此圖可見(jiàn),該網(wǎng)絡(luò)算法收斂速度快,只經(jīng)過(guò)了115次迭代便得到目標(biāo)誤差要求。根據(jù)歐式范數(shù)理論,對(duì)原訓(xùn)練樣本進(jìn)行擬合檢驗(yàn),樣本逼近誤差為0.0203,網(wǎng)絡(luò)性能完全可以滿足控制要求。此外,為了檢驗(yàn)構(gòu)建的神經(jīng)網(wǎng)絡(luò)具有廣泛性,用測(cè)試樣本對(duì)網(wǎng)絡(luò)進(jìn)行評(píng)估,通過(guò)與目標(biāo)值相比較,得到網(wǎng)絡(luò)誤差為0.0379,這表明神經(jīng)網(wǎng)絡(luò)具有廣泛的適應(yīng)能力和學(xué)習(xí)能力,構(gòu)建的BP網(wǎng)絡(luò)能很好的解決傳感器信號(hào)交叉敏感問(wèn)題。

圖3 網(wǎng)絡(luò)的誤差曲線
在STM32F101C8上移植μC/OS-Ⅱ系統(tǒng),移植的主要工作集中在OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C這3個(gè)文件中,主要設(shè)計(jì)堆棧初始化、任務(wù)上下文切換、中斷掛接和數(shù)據(jù)類(lèi)型定義幾個(gè)方面,這些均與STM32F101C8微處理器的ARM內(nèi)核硬件緊密相關(guān)[14]。
將訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)權(quán)值(W1、W2)和閾值(b1、b2)以適當(dāng)?shù)臄?shù)組方式存入STM32F101C8處理器的Flash存儲(chǔ)器中,根據(jù)BP網(wǎng)絡(luò)的融合算法,編寫(xiě)出基于C語(yǔ)言的BP網(wǎng)絡(luò)融合算法程序,程序在μC/OS-Ⅱ中以任務(wù)的方式運(yùn)行,本系統(tǒng)由如圖4中8個(gè)任務(wù)來(lái)實(shí)現(xiàn),優(yōu)先權(quán)(Prio)的設(shè)置由各任務(wù)的執(zhí)行順序以及對(duì)系統(tǒng)安全性影響的大小決定。
每個(gè)任務(wù)函數(shù)都是一個(gè)無(wú)限循環(huán)程序,并處于以下五種狀態(tài)[15]之一:休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、掛起態(tài)和被中斷態(tài)。在無(wú)限循環(huán)中調(diào)用實(shí)現(xiàn)某些功能的應(yīng)用程序函數(shù),然后按設(shè)計(jì)需求設(shè)置掛起方式和掛起時(shí)間。系統(tǒng)整體軟件流程圖如圖4所示,系統(tǒng)初始化后便建立各個(gè)運(yùn)行任務(wù),啟動(dòng)多任務(wù)調(diào)度機(jī)制,在各個(gè)信號(hào)的協(xié)調(diào)下有序運(yùn)行。

圖4 系統(tǒng)整體流程圖
為了研究BP神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)融合前后,壓力和溫度兩個(gè)目標(biāo)參量的交叉干擾敏感度,分別用壓力信號(hào)溫度靈敏度系數(shù)、零點(diǎn)溫漂系數(shù)和溫度信號(hào)壓力靈敏度系數(shù)對(duì)系統(tǒng)進(jìn)行評(píng)估。
(1)傳感器壓力信號(hào)的溫度靈敏度系數(shù)

式中:ΔT為工作溫度變化范圍;Y(FS)為傳感器壓力信號(hào)的滿量程輸出值;Δym為當(dāng)溫度變化ΔT時(shí),輸出值隨溫度漂移的最大值。當(dāng)溫度在21.5℃ ~70℃范圍變化時(shí),未經(jīng)過(guò)BP網(wǎng)絡(luò)融合的傳感器輸出Y(FS)=83.36 mV,Δym=83.36-73.28=10.8 mV,計(jì)算出 αs=2.49×10-3/℃。
(2)傳感器壓力信號(hào)的零點(diǎn)溫漂系數(shù)

式中:ΔT為工作溫度變化范圍;Ufs為傳感器壓力信號(hào)滿量程輸出值;ΔU0m為在工作溫度變化ΔT時(shí),傳感器壓力信號(hào)的零點(diǎn)漂移最大值。同理,溫度在21.5℃~70℃范圍變化時(shí),未經(jīng)過(guò)BP網(wǎng)絡(luò)融合的傳感器輸出Ufs=83.36 mV,ΔU0m=(-7.72)-(-13.84)=6.12 mV,則 α0=1.51×10-3/℃。
(3)傳感器溫度信號(hào)的壓力靈敏度系數(shù)

式中:ΔP為工作壓力變化范圍,取5×104Pa;Y(FS)為傳感器溫度信號(hào)滿量程輸出值;Δym為當(dāng)壓力變化ΔP時(shí),輸出值隨壓力漂移的最大值。未經(jīng)過(guò)BP網(wǎng)絡(luò)融合處理時(shí),Y(FS)=86.12 mV,Δym=86.12-80.45=5.67 mV,則 αP=1.32×10-2/104Pa。
經(jīng)BP神經(jīng)網(wǎng)絡(luò)融合、逆歸一化處理后,傳感器輸出值無(wú)需查表,節(jié)省了大量?jī)?nèi)存,壓力信號(hào)和溫度信號(hào)輸出分別見(jiàn)表1、表2。根據(jù)式(4),Y(FS)=5×104Pa,Δym=5.018-4.945=0.073×104Pa,則融合后傳感器壓力信號(hào)的溫度靈敏度系數(shù)αs=3.01×10-4/℃。根據(jù)式(5),Ufs=5×104Pa,ΔU0m=0.006-0.003=0.003×104Pa,經(jīng)過(guò)BP網(wǎng)絡(luò)融合后的壓力信號(hào)零點(diǎn)溫漂系數(shù)α0=1.24×10-5/℃。由式(6),Y(FS)=70 ℃,Δym=70.427-69.322=1.105℃,經(jīng)過(guò)BP網(wǎng)絡(luò)融合后溫度信號(hào)的壓力靈敏度系數(shù) αP=1.32×10-4/104Pa。

表1 壓力信號(hào)測(cè)試結(jié)果

表2 溫度信號(hào)測(cè)試結(jié)果
與未融合前相比,融合處理后的傳感器壓力信號(hào)溫度靈敏系數(shù)、零點(diǎn)溫漂系數(shù)和溫度信號(hào)壓力靈敏度系數(shù)降低明顯,均在一個(gè)數(shù)量級(jí)以上。這說(shuō)明采用BP神經(jīng)網(wǎng)絡(luò)信息融合技術(shù)消除傳感器交叉敏感現(xiàn)象是十分有效的,達(dá)到了信息融合的要求。
本智能傳感器系統(tǒng)針對(duì)壓力和溫度相互交叉干擾的問(wèn)題,利用BP神經(jīng)網(wǎng)絡(luò)技術(shù)提高了溫度和壓力兩個(gè)參量的測(cè)量精度,并給出了相應(yīng)的硬件結(jié)構(gòu)和軟件設(shè)計(jì)。實(shí)測(cè)結(jié)果顯示該傳感器能滿足多任務(wù)下的實(shí)時(shí)性要求,并具有更加精確、穩(wěn)定、可靠的性能。
(1)采用Levenberg-Marquardt算法構(gòu)建了BP神經(jīng)網(wǎng)絡(luò)模型,經(jīng)檢驗(yàn)該網(wǎng)絡(luò)收斂速度快、精度高、具有較強(qiáng)的適應(yīng)能力和聯(lián)想能力。BP網(wǎng)絡(luò)融合后的輸出值無(wú)需查表,節(jié)省內(nèi)存空間。
(2)基于μC/OS-Ⅱ操作平臺(tái)上,將BP網(wǎng)絡(luò)融合算法嵌入到STM32F101C8微處理器中,并實(shí)現(xiàn)了顯示、報(bào)警、與PC機(jī)通信等功能。通過(guò)對(duì)融合前后壓力信號(hào)溫度靈敏度系數(shù)、零點(diǎn)溫漂系數(shù)和溫度信號(hào)壓力靈敏度系數(shù)相對(duì)比,該系統(tǒng)能完善地、精確地反映檢測(cè)對(duì)象,提高信息融合的質(zhì)量,滿足現(xiàn)代自動(dòng)化設(shè)備需求。
[1]趙大慶,范錦鵬,吳敏生,等.模仿人體的智能傳感器設(shè)想[J].傳感器技術(shù),2002,21(8):17-22.
[2]張耀鋒,孫以材,刑曉輝.基于人工神經(jīng)網(wǎng)絡(luò)的壓力傳感器的溫度補(bǔ)償[J].電子學(xué)報(bào),2008,36(2):358-361.
[3]Futane N P,Roy Chowdhury S,RoyChaudhuri C,et al.Analog ASIC for Improved Temperature Drift Compensation of A High Sensitive Porous Silicon Pressure Sensor[J].Analog Integrated Circuits and Signal Processing,2011,67(3):383-393.
[4]劉新月,呂增良,孫以材.壓力傳感器溫度漂移補(bǔ)償?shù)目刂齐娐吩O(shè)計(jì)[J].傳感技術(shù)學(xué)報(bào),2007,20(3):567-569.
[5]高峰,董海鷹,胡彥奎.基于BP神經(jīng)網(wǎng)絡(luò)的傳感器交叉敏感性抑制[J].傳感器技術(shù),2005,24(2):22-26.
[6]Du Z M,Jin X Q,Yang Y Y.Fault Diagnosis for Temperature,F(xiàn)low Rate and Pressure Sensors in VAV Systems Using Wavelet Neural Network[J].Applied Energy,2009,86(9):1624-1631.
[7]Xiao Z,Ye S J,Zhong B,et al.BP Neural Network with Rough Set for Short Term Load Forecasting[J].Expert Systems with Applications,2009,36(1):273-279.
[8]邵軍,劉君華,喬學(xué)光,等.利用BP神經(jīng)網(wǎng)絡(luò)提高光纖光柵壓力傳感器的選擇性[J].傳感技術(shù)學(xué)報(bào),2007,20(7):1531-1534.
[9]劉君華.智能傳感器系統(tǒng)[M].西安:西安電子科技大學(xué)出版社,2010,221-224.
[10]邱寶梅,王建文.嵌入式機(jī)載攝影穩(wěn)定平臺(tái)的設(shè)計(jì)[J].儀器儀表學(xué)報(bào),2009,30(9):1981-1984.
[11]何平,潘國(guó)峰,孫以材,等.壓力傳感器溫度漂移補(bǔ)償?shù)腞BF網(wǎng)絡(luò)模型[J].儀器儀表學(xué)報(bào),2008,29(3):572-576.
[12]楊英,唐平,王越超,等.基于LMBP改進(jìn)算法的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化[J].計(jì)算機(jī)工程,2008,34(1):215-217.
[13]嚴(yán)潔,趙研,張俊利.基于BP神經(jīng)網(wǎng)絡(luò)的稱(chēng)重傳感器靜態(tài)非線性誤差補(bǔ)償研究[J].傳感技術(shù)學(xué)報(bào),2008,6(21):1025-1028.
[14]王駿,葉瑞源.μC/OS-Ⅱ的優(yōu)化及在智能變送器中的應(yīng)用[J].自動(dòng)化儀表,2010,31(2):5-7.
[15]吳永明,羅海據(jù).μC/OS-Ⅱ系統(tǒng)中任務(wù)調(diào)度與監(jiān)控機(jī)制改進(jìn)[J].計(jì)算機(jī)工程,2009,35(12):266-268.