靳瑩瑞,許京雷
(1.鄭州大學 物理工程學院,鄭州450001;2.中原工學院,鄭州450007)
傳感器校正及融合的實現(xiàn)技術
靳瑩瑞1,2,許京雷2
(1.鄭州大學 物理工程學院,鄭州450001;2.中原工學院,鄭州450007)
討論了在普通傳感器的基礎上,運用靈活的軟件手段,建立一個智能化的神經(jīng)傳感器系統(tǒng).采用VisualC++語言對RS485處理,可以實現(xiàn)對系統(tǒng)的微機監(jiān)控.
神經(jīng)網(wǎng)絡;傳感器校正;融合
現(xiàn)在所采用的傳感器,大部分是普通的傳感器,本身沒有智能的表現(xiàn).它們將外界的物理化學刺激,經(jīng)過本身的變換,輸出有待進一步識別的電信號.傳統(tǒng)電路多采用電橋抑制環(huán)境因素的干擾,或者改良傳感器的工藝,制造出結(jié)構(gòu)復雜的傳感器[1-2].目前則更傾向于后期處理,采用軟件方法識別輸出的電信號,從中直接提取出真實的信息.人工神經(jīng)網(wǎng)絡是其中有效的措施,可以對傳感器的輸出信號進行非線性校正,并可實現(xiàn)多參量的數(shù)據(jù)融合,有廣泛的應用前景[3-6].
神經(jīng)網(wǎng)絡傳感器的標準參考電路為神經(jīng)網(wǎng)絡處理部分提供關于干擾量的信息,干擾量的輸出信號基本上不受待測量的影響.系統(tǒng)正常工作前要先進行學習,在若干采樣點同時記錄下標準參考電路和普通傳感器電路的輸出,神經(jīng)網(wǎng)絡處理部分根據(jù)這2個值,把本身的權值調(diào)整到比較合適的數(shù)值,當客觀環(huán)境發(fā)生顯著改變時,權值還可以再次調(diào)整,這是一個自適應的過程.學習結(jié)束后就能直接感受外界的刺激,并把輸出信號經(jīng)過帶權神經(jīng)網(wǎng)絡的處理,直接顯示準確的數(shù)字量.
壓阻式壓力傳感器在測量壓力P時,受工作溫度T和供電電源波動γ的影響,即當被測壓力P不變時,工作溫度T的變化會導致輸出的變化,對溫度敏感,此時的壓力傳感器可視為溫度傳感器;另外,當被測壓力P不變時,供電電源波動γ的變化也會導致輸出的變化,此時的壓力傳感器可視為電流傳感器.所以,一個壓阻式壓力傳感器可視為3個傳感器在同時工作,3個傳感器的輸出相互影響,即存在著交叉靈敏度.
為了只得到一個目標參量的數(shù)值,需要對3個傳感器的輸出數(shù)據(jù)進行融合,消除2個非目標參量對壓力傳感器壓力輸入—輸出特性的影響.將壓力輸出Up,溫度輸出Ut,電流輸出Ui(壓力輸出都帶有其他2個參量的影響)接入BP神經(jīng)網(wǎng)絡,該網(wǎng)絡經(jīng)過一系列復雜的運算,輸出逼近真實值的壓力P.
神經(jīng)網(wǎng)絡圖如圖1所示.
圖1 BP神經(jīng)網(wǎng)絡
所用的計算公式有:
以上公式中,xj為隱層節(jié)點的輸入;xk為輸出層節(jié)點的輸入;yj為隱層節(jié)點的輸出;yk為輸出層節(jié)點的輸出;δk為輸入層節(jié)點誤差因子;P為壓力標定值;δj為隱層節(jié)點誤差因子.
其中隱層的節(jié)點數(shù)在實驗時確定,編程時以隱層的節(jié)點數(shù)為指針確定當前的計算量.權值調(diào)節(jié)公式(7)和(8)的第三項稱為動量項,計入上次的調(diào)節(jié)量,可以加快收斂速度,關鍵程序?qū)崿F(xiàn)如下:
void CAnn2Dlg::OnStudy()
{ // TODO:Add your control notification
handler code here
flag=0;show=0;n=0;error=0;Invalidate
(TRUE);
UpdateData(TRUE);
UINT i;
for(i=0;i<4*l;i++)w[i]=(double)rand()/0x7fff;//權值初值
for(i=0;i<4*l;i++)wo[i]=w[i];//wo為舊權值數(shù)組
double e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,
e11,e12,e13,e14,e15,e16,e17,e18;
do
{
if(n>100000)break;
BP(0.00,0.00,290.5,0.03);y1=y(tǒng)k;e1=e;
BP(1.00,25.27,268.8,0.03);y2=y(tǒng)k;e2=
e;
BP(2.00,44.00,247.2,0.03);y3=y(tǒng)k;e3=
e;
BP(3.00,62.72,224.5,0.03);y4=y(tǒng)k;e4=
e;
BP(4.00,81.40,206.0,0.03);y5=y(tǒng)k;e5=
e;
BP(5.00,100.12,184.4,0.03);y6=y(tǒng)k;e6=
e;zu=2;
e=(e1*e1+e2*e2+e3*e3+e4*e4+
e5*e5+e6*e6+e7*e7+e8*e8+
e9*e9+e10*e10+e11*e11+
e12*e12+e13*e13+e14*e14+
e15*e15+e16*e16+e17*e17+
e18*e18)/18;//共18個樣本
}
while(e>0.05||e<-0.05);//條件滿足時,
需要再學習
if(n > 100000){error= 1;Invalidate(FALSE);return;}
flag=1;Invalidate(FALSE);
}
void CAnn2Dlg::BP(double p,double u,double ut,double ga)
{
p=0.9*(p-0.00)/(5.00-0.00)+0.05;
if(zu==3){
u=(u-0.00)/(78.57-0.00);
ut=(ut-669.3)/(826.1-669.3);}//數(shù)據(jù)歸
一化
for(i=0;i<3*l;i+=3){
m=w[i];//m用來暫存當前權值,下同
w[i]=w[i]+ng*dej[j]*u+al*(w[i]-wo[i]);
wo[i]=m;
m=w[i+1];
w[i+1]=w[i+1]+ng*dej[j]*ut+al*(w[i+1]-wo[i+1]);
wo[i+1]=m;
m=w[i+2];
w[i+2]=w[i+2]+ng*dej[j]*ga+al*(w[i+2]-wo[i+2]);
wo[i+2]=m;
j++;}//調(diào)節(jié)wji權值
j=0;
for(i=3*l;i<4*l;i++){
m=w[i];
w[i]=w[i]+ng*dek*yj[j]+
al*(w[i]-wo[i]);
wo[i]=m;
j++;}//調(diào)節(jié)wkj權值
yk=(yk-0.05)*(5.00-0.00)/0.9+
0.00;//數(shù)據(jù)反歸一化
}
由于隱層接點數(shù)的選取和權值初值的選取隨機性較大,選取不當時會出現(xiàn)網(wǎng)絡不收斂的情況.如權值取0~1之間的隨機數(shù),隱層節(jié)點數(shù)為18,當網(wǎng)絡訓練步長η為0.7,勢態(tài)因子α為0.9時,學習次數(shù)為522次,學習結(jié)果如表1所示.從表1中可以看出,壓力值較小時計算誤差較大,壓力值較大時計算誤差較小.
表1 壓力學習結(jié)果
以外旋轉(zhuǎn)式濃度傳感器為例,其曲線方程為:
濃度傳感器的輸入—輸出特性存在著嚴重的非線性.其曲線方程可以表示為:當濃度為Cp時,傳感器的輸出為f.Cp和f的關系是非線性的,可以在傳感器的輸出端接上一個神經(jīng)網(wǎng)絡進行校正:對神經(jīng)網(wǎng)絡用標定值進行學習訓練,可以使神經(jīng)網(wǎng)絡學會Cp和f的非線性關系,對于傳感器的輸出f,按照這種關系將Cp還原輸出.
網(wǎng)絡圖如圖2所示.
圖2 濃度傳感器網(wǎng)絡圖
計算公式為:
y=1*W0+u*W1+u2*W2+u3*W3
e=Cp-y(Cp為濃度標定值)
W0=W0+η*e*1
W1=W1+η*e*u
W2=W2+η*e*u2
W3=W3+η*e*u3
根據(jù)外旋轉(zhuǎn)式濃度傳感器的曲線方程,神經(jīng)網(wǎng)絡有4 個輸入項:1,u= f/fmax,u2= (f/fmax)2,u3=(f/fmax)3.曲線方程的4個系數(shù)正好對應于神經(jīng)元的4個權值.用樣本學習的過程就是不斷調(diào)節(jié)權值的過程,這個過程直到每個計算值y與對應樣本值y的誤差足夠小為止.
用VC編程來實現(xiàn)上述的學習過程,構(gòu)造了On-Stud
y函數(shù)和BP函數(shù):
void CAnn1Dlg::OnStudy()
{
// TODO:Add your control notification
handler code here
flag=0;show=0;n=0;error=0;Invalidate
(TRUE);
UpdateData(TRUE);
double e1,e2,e3,e4,e5,e6,e7,e8,e9;
do
{
if(n>1000000)break;
BP(250,5.23);y1=y(tǒng);e1=e;
BP(500,4.39);y2=y(tǒng);e2=e;
BP(750,3.69);y3=y(tǒng);e3=e;
BP(1000,3.12);y4=y(tǒng);e4=e;
n+=9;
e=(e1*e1+e2*e2+e3*e3+e4*e4+
e5*e5+e6*e6+e7*e7+e8*e8+e9*e9)/9;//共9個樣本
}
while(e>0.0001||e<-0.0001);//條件滿足時,需要再學習
if(n>1000000){error=1;Invalidate(FALSE);return;}
flag=1;Invalidate(FALSE);
}
void CAnn1Dlg::BP(double in,double out)
{
double a0=1,a1=in/2500,a2=a1*a1,a3=a2*a1;
y=a0*w0+a1*w1+a2*w2+a3*w3;
e=out-y;//期望值-計算值(標定值-估計
值)
w0=w0+yinzi*e*a0;
w1=w1+yinzi*e*a1;
w2=w2+yinzi*e*a2;
w3=w3+yinzi*e*a3;
}
當權值W 的初值為0.4、0.6、0.2、0.3,學習因子的初值η為0.9時,用上述2個函數(shù)進行學習,學習次數(shù)為55611次,結(jié)果如表2所示.
表2 濃度學習結(jié)果
從該學習結(jié)果可得,均方誤差為0.0001,估計值與標定值是相當接近的.
自行實現(xiàn)的神經(jīng)網(wǎng)絡傳感器,由于采用了BP理論,使得整個系統(tǒng)的輸出精度有了很大提高,PIC器件和微機監(jiān)控使系統(tǒng)可靠性得到加強,而且實現(xiàn)了功能多樣化,減小了傳感器的非線性和交叉靈敏度,基本上符合相關儀器的主要性能指標,性能穩(wěn)定,運行可靠,在石油、化工冶金、電力、輕工等行業(yè)得到廣泛應用.
[1] 劉君華.智能傳感器系統(tǒng)[M].西安:西安電子科技大學出版社,2009.
[2] 謝文和.傳感器技術及應用[M].北京:高等教育出版社,2004.
[3] 袁曾忍.人工神經(jīng)元網(wǎng)絡及其應用[M].北京:清華大學出版社,2006.
[4] 韓立群.人工神經(jīng)網(wǎng)絡理論設計及應用[M].北京:化學工業(yè)出版社,2007.
[5] 旺曉東.RBF神經(jīng)網(wǎng)絡在傳感器校正中的應用[J].儀器儀表學報,2003,24(1):96-98.
[6] 白鵬,張喜斌,張長興,等.基于支持向量機的壓力傳感器校正模型[J].空導工程大學學報(自然科學報),2007,8(5):37-40.
The Correction Tecnology and Data Fusion of Sensor
JIN Ying-rui1,2,XU Jing-lei2
(1.Zhengzhou University,Zhengzhou 450001;2.Zhongyuan University of Technology,Zhengzhou 450007,China)
A sensor system is builded in the paper,and it is intelligent because neural network theory and software method are used in the system based on ordinary sensor.Furthermore,the system can be buided to be a computer monitoring system with Visual c++and RS485.
neural network;sensor correction;fusion
TP212
A
10.3969/j.issn.1671-6906.2010.05.001
1671-6906(2010)05-0001-04
2010-09-26
國家自然科學基金項目(50977093)
靳瑩瑞(1982-),女,河南洛陽人,碩士生.