靳瑩瑞,許京雷
(1.鄭州大學(xué) 物理工程學(xué)院,鄭州450001;2.中原工學(xué)院,鄭州450007)
傳感器校正及融合的實(shí)現(xiàn)技術(shù)
靳瑩瑞1,2,許京雷2
(1.鄭州大學(xué) 物理工程學(xué)院,鄭州450001;2.中原工學(xué)院,鄭州450007)
討論了在普通傳感器的基礎(chǔ)上,運(yùn)用靈活的軟件手段,建立一個(gè)智能化的神經(jīng)傳感器系統(tǒng).采用VisualC++語(yǔ)言對(duì)RS485處理,可以實(shí)現(xiàn)對(duì)系統(tǒng)的微機(jī)監(jiān)控.
神經(jīng)網(wǎng)絡(luò);傳感器校正;融合
現(xiàn)在所采用的傳感器,大部分是普通的傳感器,本身沒有智能的表現(xiàn).它們將外界的物理化學(xué)刺激,經(jīng)過本身的變換,輸出有待進(jìn)一步識(shí)別的電信號(hào).傳統(tǒng)電路多采用電橋抑制環(huán)境因素的干擾,或者改良傳感器的工藝,制造出結(jié)構(gòu)復(fù)雜的傳感器[1-2].目前則更傾向于后期處理,采用軟件方法識(shí)別輸出的電信號(hào),從中直接提取出真實(shí)的信息.人工神經(jīng)網(wǎng)絡(luò)是其中有效的措施,可以對(duì)傳感器的輸出信號(hào)進(jìn)行非線性校正,并可實(shí)現(xiàn)多參量的數(shù)據(jù)融合,有廣泛的應(yīng)用前景[3-6].
神經(jīng)網(wǎng)絡(luò)傳感器的標(biāo)準(zhǔn)參考電路為神經(jīng)網(wǎng)絡(luò)處理部分提供關(guān)于干擾量的信息,干擾量的輸出信號(hào)基本上不受待測(cè)量的影響.系統(tǒng)正常工作前要先進(jìn)行學(xué)習(xí),在若干采樣點(diǎn)同時(shí)記錄下標(biāo)準(zhǔn)參考電路和普通傳感器電路的輸出,神經(jīng)網(wǎng)絡(luò)處理部分根據(jù)這2個(gè)值,把本身的權(quán)值調(diào)整到比較合適的數(shù)值,當(dāng)客觀環(huán)境發(fā)生顯著改變時(shí),權(quán)值還可以再次調(diào)整,這是一個(gè)自適應(yīng)的過程.學(xué)習(xí)結(jié)束后就能直接感受外界的刺激,并把輸出信號(hào)經(jīng)過帶權(quán)神經(jīng)網(wǎng)絡(luò)的處理,直接顯示準(zhǔn)確的數(shù)字量.
壓阻式壓力傳感器在測(cè)量壓力P時(shí),受工作溫度T和供電電源波動(dòng)γ的影響,即當(dāng)被測(cè)壓力P不變時(shí),工作溫度T的變化會(huì)導(dǎo)致輸出的變化,對(duì)溫度敏感,此時(shí)的壓力傳感器可視為溫度傳感器;另外,當(dāng)被測(cè)壓力P不變時(shí),供電電源波動(dòng)γ的變化也會(huì)導(dǎo)致輸出的變化,此時(shí)的壓力傳感器可視為電流傳感器.所以,一個(gè)壓阻式壓力傳感器可視為3個(gè)傳感器在同時(shí)工作,3個(gè)傳感器的輸出相互影響,即存在著交叉靈敏度.
為了只得到一個(gè)目標(biāo)參量的數(shù)值,需要對(duì)3個(gè)傳感器的輸出數(shù)據(jù)進(jìn)行融合,消除2個(gè)非目標(biāo)參量對(duì)壓力傳感器壓力輸入—輸出特性的影響.將壓力輸出Up,溫度輸出Ut,電流輸出Ui(壓力輸出都帶有其他2個(gè)參量的影響)接入BP神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)經(jīng)過一系列復(fù)雜的運(yùn)算,輸出逼近真實(shí)值的壓力P.
神經(jīng)網(wǎng)絡(luò)圖如圖1所示.
圖1 BP神經(jīng)網(wǎng)絡(luò)
所用的計(jì)算公式有:
以上公式中,xj為隱層節(jié)點(diǎn)的輸入;xk為輸出層節(jié)點(diǎn)的輸入;yj為隱層節(jié)點(diǎn)的輸出;yk為輸出層節(jié)點(diǎn)的輸出;δk為輸入層節(jié)點(diǎn)誤差因子;P為壓力標(biāo)定值;δj為隱層節(jié)點(diǎn)誤差因子.
其中隱層的節(jié)點(diǎn)數(shù)在實(shí)驗(yàn)時(shí)確定,編程時(shí)以隱層的節(jié)點(diǎn)數(shù)為指針確定當(dāng)前的計(jì)算量.權(quán)值調(diào)節(jié)公式(7)和(8)的第三項(xiàng)稱為動(dòng)量項(xiàng),計(jì)入上次的調(diào)節(jié)量,可以加快收斂速度,關(guān)鍵程序?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;//權(quán)值初值
for(i=0;i<4*l;i++)wo[i]=w[i];//wo為舊權(quán)值數(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個(gè)樣本
}
while(e>0.05||e<-0.05);//條件滿足時(shí),
需要再學(xué)習(xí)
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用來暫存當(dāng)前權(quán)值,下同
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權(quán)值
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權(quán)值
yk=(yk-0.05)*(5.00-0.00)/0.9+
0.00;//數(shù)據(jù)反歸一化
}
由于隱層接點(diǎn)數(shù)的選取和權(quán)值初值的選取隨機(jī)性較大,選取不當(dāng)時(shí)會(huì)出現(xiàn)網(wǎng)絡(luò)不收斂的情況.如權(quán)值取0~1之間的隨機(jī)數(shù),隱層節(jié)點(diǎn)數(shù)為18,當(dāng)網(wǎng)絡(luò)訓(xùn)練步長(zhǎng)η為0.7,勢(shì)態(tài)因子α為0.9時(shí),學(xué)習(xí)次數(shù)為522次,學(xué)習(xí)結(jié)果如表1所示.從表1中可以看出,壓力值較小時(shí)計(jì)算誤差較大,壓力值較大時(shí)計(jì)算誤差較小.
表1 壓力學(xué)習(xí)結(jié)果
以外旋轉(zhuǎn)式濃度傳感器為例,其曲線方程為:
濃度傳感器的輸入—輸出特性存在著嚴(yán)重的非線性.其曲線方程可以表示為:當(dāng)濃度為Cp時(shí),傳感器的輸出為f.Cp和f的關(guān)系是非線性的,可以在傳感器的輸出端接上一個(gè)神經(jīng)網(wǎng)絡(luò)進(jìn)行校正:對(duì)神經(jīng)網(wǎng)絡(luò)用標(biāo)定值進(jìn)行學(xué)習(xí)訓(xùn)練,可以使神經(jīng)網(wǎng)絡(luò)學(xué)會(huì)Cp和f的非線性關(guān)系,對(duì)于傳感器的輸出f,按照這種關(guān)系將Cp還原輸出.
網(wǎng)絡(luò)圖如圖2所示.
圖2 濃度傳感器網(wǎng)絡(luò)圖
計(jì)算公式為:
y=1*W0+u*W1+u2*W2+u3*W3
e=Cp-y(Cp為濃度標(biāo)定值)
W0=W0+η*e*1
W1=W1+η*e*u
W2=W2+η*e*u2
W3=W3+η*e*u3
根據(jù)外旋轉(zhuǎn)式濃度傳感器的曲線方程,神經(jīng)網(wǎng)絡(luò)有4 個(gè)輸入項(xiàng):1,u= f/fmax,u2= (f/fmax)2,u3=(f/fmax)3.曲線方程的4個(gè)系數(shù)正好對(duì)應(yīng)于神經(jīng)元的4個(gè)權(quán)值.用樣本學(xué)習(xí)的過程就是不斷調(diào)節(jié)權(quán)值的過程,這個(gè)過程直到每個(gè)計(jì)算值y與對(duì)應(yīng)樣本值y的誤差足夠小為止.
用VC編程來實(shí)現(xiàn)上述的學(xué)習(xí)過程,構(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個(gè)樣本
}
while(e>0.0001||e<-0.0001);//條件滿足時(shí),需要再學(xué)習(xí)
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;//期望值-計(jì)算值(標(biāo)定值-估計(jì)
值)
w0=w0+yinzi*e*a0;
w1=w1+yinzi*e*a1;
w2=w2+yinzi*e*a2;
w3=w3+yinzi*e*a3;
}
當(dāng)權(quán)值W 的初值為0.4、0.6、0.2、0.3,學(xué)習(xí)因子的初值η為0.9時(shí),用上述2個(gè)函數(shù)進(jìn)行學(xué)習(xí),學(xué)習(xí)次數(shù)為55611次,結(jié)果如表2所示.
表2 濃度學(xué)習(xí)結(jié)果
從該學(xué)習(xí)結(jié)果可得,均方誤差為0.0001,估計(jì)值與標(biāo)定值是相當(dāng)接近的.
自行實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)傳感器,由于采用了BP理論,使得整個(gè)系統(tǒng)的輸出精度有了很大提高,PIC器件和微機(jī)監(jiān)控使系統(tǒng)可靠性得到加強(qiáng),而且實(shí)現(xiàn)了功能多樣化,減小了傳感器的非線性和交叉靈敏度,基本上符合相關(guān)儀器的主要性能指標(biāo),性能穩(wěn)定,運(yùn)行可靠,在石油、化工冶金、電力、輕工等行業(yè)得到廣泛應(yīng)用.
[1] 劉君華.智能傳感器系統(tǒng)[M].西安:西安電子科技大學(xué)出版社,2009.
[2] 謝文和.傳感器技術(shù)及應(yīng)用[M].北京:高等教育出版社,2004.
[3] 袁曾忍.人工神經(jīng)元網(wǎng)絡(luò)及其應(yīng)用[M].北京:清華大學(xué)出版社,2006.
[4] 韓立群.人工神經(jīng)網(wǎng)絡(luò)理論設(shè)計(jì)及應(yīng)用[M].北京:化學(xué)工業(yè)出版社,2007.
[5] 旺曉東.RBF神經(jīng)網(wǎng)絡(luò)在傳感器校正中的應(yīng)用[J].儀器儀表學(xué)報(bào),2003,24(1):96-98.
[6] 白鵬,張喜斌,張長(zhǎng)興,等.基于支持向量機(jī)的壓力傳感器校正模型[J].空導(dǎo)工程大學(xué)學(xué)報(bào)(自然科學(xué)報(bào)),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
國(guó)家自然科學(xué)基金項(xiàng)目(50977093)
靳瑩瑞(1982-),女,河南洛陽(yáng)人,碩士生.