張喜紅,王玉香
(1.亳州職業(yè)技術(shù)學(xué)院,安徽 亳州 236800;2.山東大學(xué) 控制科學(xué)與工程學(xué)院,濟(jì)南250061)
?
超聲測(cè)距溫濕度補(bǔ)償算法的研究及STM32實(shí)現(xiàn)
張喜紅1,2,王玉香1
(1.亳州職業(yè)技術(shù)學(xué)院,安徽 亳州 236800;2.山東大學(xué) 控制科學(xué)與工程學(xué)院,濟(jì)南250061)
為了降低超聲測(cè)距系統(tǒng)因溫、濕度差異帶來的誤差,在Matlab2010平臺(tái)下,運(yùn)用BP神經(jīng)網(wǎng)絡(luò)對(duì)標(biāo)定的溫、濕度樣本及對(duì)應(yīng)的超聲波速度進(jìn)行融合訓(xùn)練仿真實(shí)驗(yàn),并將設(shè)計(jì)的補(bǔ)償算法移植到STM32測(cè)距系統(tǒng),測(cè)試其補(bǔ)償能力.經(jīng)多次測(cè)距實(shí)驗(yàn)表明,與現(xiàn)有方法相比,能有效補(bǔ)償溫、濕度變化引起的誤差,精度提高了1個(gè)數(shù)量級(jí).
數(shù)據(jù)融合;神經(jīng)網(wǎng)絡(luò);超聲波
超聲測(cè)距因具有非接觸測(cè)量的優(yōu)點(diǎn),被廣泛用于各個(gè)測(cè)距領(lǐng)域,如汽車倒車?yán)走_(dá),機(jī)器人智能避障,盲人導(dǎo)航,物位測(cè)量等.測(cè)距的基本原理是超聲波反射測(cè)量,距離可表示為L(zhǎng)=tv/2,其中v是超聲波在空氣介質(zhì)中的傳播速度,t是從發(fā)出超聲到收到回波所用時(shí)間.上述情況是假定超聲波速度v不受環(huán)境影響的理想情況,然而在現(xiàn)實(shí)中,超聲波速度會(huì)因工作環(huán)境溫、濕度的變化而發(fā)生不規(guī)則性的改變.如果使用恒定的速度值進(jìn)行距離計(jì)算,必然會(huì)產(chǎn)生較大的測(cè)量誤差.基于這一情況,眾多研究人員對(duì)測(cè)距結(jié)果的補(bǔ)償方法開展了大量的研究,到目前為止大多是基于擬合公式的方法對(duì)速度實(shí)現(xiàn)溫度補(bǔ)償,如文獻(xiàn)[1-2]所述.然而,在一些特殊測(cè)量環(huán)境中,濕度對(duì)測(cè)量結(jié)果的影響較大,不可忽視.基于上述現(xiàn)狀,本文在Matlab2010平臺(tái)下,基于BP神經(jīng)網(wǎng)絡(luò)研究了溫、濕度誤差的補(bǔ)償,并在STM32上實(shí)現(xiàn)了本文方法的移植與測(cè)試.
1.1 超聲測(cè)距實(shí)驗(yàn)系統(tǒng)
圖1 超聲測(cè)距系統(tǒng)框圖
為了開展實(shí)驗(yàn),獲取實(shí)驗(yàn)樣本的溫、濕度數(shù)據(jù),以及后續(xù)算法有效性的移植測(cè)驗(yàn),搭建了如圖1所示的超聲測(cè)距系統(tǒng).其由STM32微處理器(型號(hào)為STM32F103CZET6)、LCD液晶顯示模塊、超聲發(fā)射模塊、超聲接收模塊,及溫、濕度測(cè)量模塊構(gòu)成.超聲發(fā)射、接收模塊電路的具體實(shí)現(xiàn)原理及控制方法,參見文獻(xiàn)[3].溫、濕度測(cè)量模塊選取型號(hào)為SHT11的集成傳感器[4],其集溫、濕度測(cè)量于一體,直接輸出溫、濕度的測(cè)量值,且與外界采用典型的IIC總線進(jìn)行數(shù)據(jù)通信,在一定程度上簡(jiǎn)化了系統(tǒng)硬件電路設(shè)計(jì).SHT11可測(cè)-40℃~120℃間的溫度,分辨能力高達(dá)0.01℃;可測(cè)0%~100%RH間的濕度,分辨能力高達(dá)0.03%RH.能夠很好的滿足超聲測(cè)距溫、濕度補(bǔ)償實(shí)驗(yàn)的測(cè)定要求.
1.2 BP神經(jīng)網(wǎng)絡(luò)
圖2 單層BP神經(jīng)網(wǎng)絡(luò)示意圖
BP神經(jīng)網(wǎng)絡(luò)[5],即反向傳播網(wǎng)絡(luò).它仿照人腦神經(jīng)元對(duì)外部刺激信號(hào)的響應(yīng)過程,構(gòu)造多層感知器,采用信號(hào)正向傳播和誤差反向調(diào)整的學(xué)習(xí)機(jī)理,經(jīng)過數(shù)次迭代計(jì)算,成功地搭建出處理非線性信息的智能化網(wǎng)絡(luò)模型.其被廣泛用于數(shù)據(jù)融合、壓縮等多個(gè)領(lǐng)域[6-7].單層BP神經(jīng)網(wǎng)絡(luò)如圖2所示,其中xj(j=1,2,…,N)為j維輸入信號(hào),Wij為對(duì)應(yīng)的連接權(quán)重;ui為各輸入信號(hào)與相應(yīng)連接權(quán)重乘積的累加組合;θi為調(diào)節(jié)閾值;vi為經(jīng)閾值調(diào)整后的值;f(·)為神經(jīng)元的激勵(lì)函數(shù).其數(shù)學(xué)表達(dá)如式(1)、(2)、(3)所示:
(1)
vj=uj+θj,
(2)
yi=f(vi).
(3)
2.1 樣本標(biāo)定
使用1.1 節(jié)所設(shè)計(jì)的超聲波測(cè)距系統(tǒng),在空間相對(duì)較小的房間中裝有加濕器與空調(diào)設(shè)備對(duì)樣本數(shù)據(jù)進(jìn)行標(biāo)定.環(huán)境溫度的改變主要通過空調(diào)輔助實(shí)現(xiàn),濕度的變化通過加濕器設(shè)備輔助實(shí)現(xiàn).其中10攝氏度以下的樣本點(diǎn)在超市冷凍冰柜倉內(nèi)所得,最終所標(biāo)定的數(shù)據(jù)樣本如表1所示,其中v由文獻(xiàn)[1]中的公式v=331.5 +0.6 07T所求得,代表只含溫度補(bǔ)償?shù)乃俣?vs是特定溫、濕度環(huán)境下對(duì)應(yīng)的速度值,由1.1 節(jié)構(gòu)建的測(cè)距系統(tǒng)在設(shè)定的距離L下,測(cè)出從超聲波發(fā)射到有超聲波返回所用的時(shí)間t,經(jīng)vs=2L/t公式求解所得,最終測(cè)定結(jié)果為多次測(cè)量求均值所得.從表1分析可知,在相同的溫度環(huán)境,不同的濕度狀態(tài)下超聲波的速度值存在相對(duì)較大的差值,所以通過v=331.5 +0.6 07T擬合公式進(jìn)行簡(jiǎn)單的補(bǔ)償,在測(cè)距結(jié)果中將仍存在較大的誤差.
表1 超聲波速度標(biāo)定樣本值
2.2 數(shù)據(jù)融合
由表1的數(shù)據(jù)分析可知,環(huán)境溫度、濕度與超聲波速度間存在非線性相關(guān)性.鑒于神經(jīng)網(wǎng)絡(luò)在非線性映射關(guān)系擬合的優(yōu)點(diǎn),因此,將表1樣本數(shù)據(jù)中溫度與濕度值作為神經(jīng)網(wǎng)絡(luò)的輸入,標(biāo)定的超聲波速度值作為神經(jīng)網(wǎng)絡(luò)的輸出,構(gòu)建神經(jīng)網(wǎng)絡(luò),進(jìn)行訓(xùn)練挖掘速度與溫度、濕度之間的映射關(guān)系,將訓(xùn)練好的映射關(guān)系用于速度偏差補(bǔ)償是可行的.在Matlab2010平臺(tái)下的具體流程如下:
①構(gòu)造輸入輸出樣本數(shù)據(jù)矩陣;將表1中的數(shù)據(jù)按下式(4)格式進(jìn)行存儲(chǔ)為矩陣Ti、Ri、Vsi分別對(duì)應(yīng)溫度、濕度、超聲波速度值,總計(jì)i=40個(gè)樣本.抽取D中第1行與第2行數(shù)據(jù)為樣本點(diǎn)作為神經(jīng)網(wǎng)絡(luò)訓(xùn)練輸入樣本(即抽取T=-30℃~30℃之間的樣本為訓(xùn)練集),將對(duì)應(yīng)的Vs值作為訓(xùn)練目標(biāo)輸出樣本值.將T=40℃對(duì)應(yīng)的樣本點(diǎn)作為測(cè)試樣本數(shù)據(jù).
(4)
(5)
(6)
③創(chuàng)建網(wǎng)絡(luò)并進(jìn)行訓(xùn)練與測(cè)試;在Matlab2010平臺(tái)下分別通過newff()、train()、sim()三個(gè)函依次實(shí)現(xiàn)創(chuàng)建網(wǎng)絡(luò)、訓(xùn)練網(wǎng)絡(luò)、測(cè)試網(wǎng)絡(luò).將訓(xùn)練誤差參數(shù)設(shè)為0.001,不斷調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)及其它訓(xùn)練參數(shù)(如學(xué)習(xí)率、學(xué)習(xí)步長(zhǎng)等),直到收到最好的測(cè)試效果.經(jīng)過多次實(shí)驗(yàn),最終確立神經(jīng)網(wǎng)絡(luò)模型如下圖3所示為2-6-1結(jié)構(gòu),即輸入層包含2個(gè)神經(jīng)元,隱藏層包含6個(gè)神經(jīng)元,輸出層為一個(gè)節(jié)點(diǎn);輸入層→隱藏層→輸出層間的傳遞函數(shù)分別為:logsig、purelin.網(wǎng)絡(luò)訓(xùn)練函數(shù)使用:trainlm.最終輸出的最值權(quán)值和閾值如下:
第一層的權(quán)值轉(zhuǎn)秩矩陣為:
第一層的閾值的轉(zhuǎn)秩矩陣為:
b′=[16.2 036 -1.8644 -10.0350 -0.6 967 -3.4 904 -2.9208];
第二層的閾值為:
b2=0.2 278.
2.3 算法的STM32實(shí)現(xiàn)
圖3 構(gòu)建的網(wǎng)絡(luò)結(jié)構(gòu)
由圖3所示的網(wǎng)絡(luò)結(jié)構(gòu)可知網(wǎng)絡(luò)輸出的最終表達(dá)式如式(7)所示,也就是說對(duì)于某一歸一化后的溫、濕度樣本輸入對(duì)(x1,x2)而言,代入圖3所示網(wǎng)絡(luò)的輸出值為y,即為當(dāng)前環(huán)境下超聲波速的歸一化值.將代入式(8)所示的歸一化的逆運(yùn)算式,便可求解出當(dāng)前環(huán)境下的超聲波速度Vs.其中l(wèi)ogsig(·)函數(shù)的數(shù)學(xué)式如式(9)所示.
(7)
(8)
(9)
根據(jù)上述分析可知,基于STM32平臺(tái)下,用C語言編寫如下關(guān)鍵代碼,實(shí)現(xiàn)了超聲波速度的隨環(huán)境溫、濕度變化的實(shí)時(shí)校準(zhǔn).
#include
#define Vs_max 442.5 ;//速度最大值
#define Vs_min 175.3 ;//速度最小值
long double B1_TH[6]={ 16.2 036,-1.8644,-10.0350,-0.6 967,-3.4 904,-2.9208 };//第一層的閾值
long double B2_TH= 0.2 278;//第二層的閾值
long double w_x1[6]={ -7.0707,-1.7725,6.8314,9.5 295,-10.8993,11.6 864};//溫度權(quán)值
long double w_x2[6]={ -11.8215, 13.5 721,12.2 470, -9.5 793,7.8985, 6.6 588};//濕度權(quán)值
//求神經(jīng)網(wǎng)絡(luò)輸入權(quán)值、閾值加權(quán)累加和
long double net_sum(long double x1; long double x2;)
{ u8 i; long double net_sum; for(i=0;i<6;i++) { net_sum=+(( w_x1[i]*x1+ B1_TH[i])+ ( w_x2[i]*x1+ B1_TH[i])); } return net_sum;
}
//logsig(·)函數(shù)的實(shí)現(xiàn)
long double logsig(long double x)
{
long double y;
y=1/(1+exp(x));//exp()為庫中的求取冪函數(shù)
return y;
}
//求當(dāng)前環(huán)境下的超聲波速度Vs
Vs=((logsig(sum)+ B2_TH)-0.05)*( Vs_max- Vs_min)/0.9+ Vs_min.
在keil4.0環(huán)境下,先后將常用的溫度擬合公式補(bǔ)償測(cè)距程序與本文算法設(shè)計(jì)的測(cè)距程序編譯后,燒錄到1.1 小節(jié)所設(shè)計(jì)的STM32測(cè)距儀中,在不同溫、濕度環(huán)境下進(jìn)行測(cè)試對(duì)比.如表2所示,給出了測(cè)距標(biāo)定值為5 m,溫度T=25℃(偏差小于±1℃),濕度RH分別為0%~80%的測(cè)距對(duì)比結(jié)果(濕度偏差小于±1%).從結(jié)果來看,溫度擬合公式補(bǔ)償方法在相同溫度下,當(dāng)濕度增加時(shí)誤差顯著增大,而BP網(wǎng)絡(luò)融合補(bǔ)償方法誤差幅度變化不是很明顯.溫度擬合公式補(bǔ)償方法,最小誤差為:0.098 m;最大誤差可達(dá):0.2 91 m;誤差數(shù)量級(jí)達(dá)10-2.BP網(wǎng)絡(luò)融合補(bǔ)償?shù)淖钚≌`差為:0.001;最大誤差為:0.005;誤差數(shù)量級(jí)達(dá)10-3.BP網(wǎng)絡(luò)融合補(bǔ)償方法將誤差范圍縮小一個(gè)數(shù)量級(jí).在快速改變測(cè)試障礙物距離時(shí),溫度擬合公式補(bǔ)償方法能實(shí)時(shí)更新顯示當(dāng)前距離,BP網(wǎng)絡(luò)融合補(bǔ)償方法無法實(shí)時(shí)更新顯示當(dāng)前距離,存在滯后的情況.原因是溫度擬合公式補(bǔ)償方法運(yùn)算較為簡(jiǎn)單,STM32硬件平臺(tái)能勝任運(yùn)算需求.BP網(wǎng)絡(luò)融合補(bǔ)償方法的運(yùn)算相對(duì)復(fù)雜且代碼未做優(yōu)化,運(yùn)算復(fù)雜之處主要體現(xiàn)在運(yùn)算過程中存在大量的權(quán)值浮點(diǎn)乘運(yùn)算.為了滿足動(dòng)態(tài)測(cè)量的實(shí)時(shí)要求,在程序優(yōu)化的過程中,按BP網(wǎng)絡(luò)融合補(bǔ)償方法,事先將各個(gè)關(guān)鍵溫濕度點(diǎn)對(duì)應(yīng)的超聲波速度求得,存儲(chǔ)于系統(tǒng)的flash中,在測(cè)量時(shí)采用查表法獲得,并參與運(yùn)算.實(shí)驗(yàn)結(jié)果表明優(yōu)化后的程序誤差與未優(yōu)化前相當(dāng),并可滿足障礙物快速移動(dòng)的測(cè)試情況.
表2 溫度T=25℃時(shí)不同濕度下的結(jié)果對(duì)比
從對(duì)比實(shí)驗(yàn)結(jié)果分析可知,本文方法比簡(jiǎn)易擬合公式補(bǔ)償方法在測(cè)量方面具有較高的精度,減小了系統(tǒng)的測(cè)量誤差.但是從STM32單片機(jī)在測(cè)距中的結(jié)果顯示更新快慢來看,直接采用BP網(wǎng)絡(luò)融合補(bǔ)償方法在靜態(tài)測(cè)量時(shí)可行,但當(dāng)障礙物快速移動(dòng)動(dòng)態(tài)測(cè)量時(shí),因BP網(wǎng)絡(luò)融合補(bǔ)償方法存在大量的權(quán)值浮點(diǎn)乘運(yùn)算,STM32處理器無法勝任適時(shí)求出當(dāng)前距離的要求.為了滿足動(dòng)態(tài)測(cè)量的實(shí)時(shí)要求,按BP網(wǎng)絡(luò)融合補(bǔ)償方法,事先將各個(gè)關(guān)鍵溫濕度點(diǎn)對(duì)應(yīng)的超聲波速度求得,存儲(chǔ)于系統(tǒng)的flash中,在測(cè)量時(shí)采用查表法獲得并參與運(yùn)算,對(duì)程序進(jìn)行優(yōu)化.實(shí)驗(yàn)結(jié)果表明優(yōu)化后的程序誤差與未優(yōu)化前相當(dāng),并可滿足障礙物快速移動(dòng)的測(cè)試情況.
[1]蘭羽.具有溫度補(bǔ)償功能的超聲波測(cè)距系統(tǒng)設(shè)計(jì)[J].電子測(cè)量技術(shù), 2013,36(2):85-87.
[2]張攀峰,王玉萍,張健,等.帶有溫度補(bǔ)償?shù)某暡y(cè)距儀的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2012,20(6):1717-1719,1732.[3]苑潔.基于STM32單片機(jī)的高精度超聲波測(cè)距系統(tǒng)的設(shè)計(jì)[D].北京:華北電力大學(xué), 2012.
[4]王玉香,張喜紅.亳州市儲(chǔ)藥冷庫溫濕度測(cè)控系統(tǒng)研究[J].機(jī)電信息, 2011(18):184-190.
[5]袁曾任.Matlab 神經(jīng)網(wǎng)絡(luò)30例[M].北京:電子工業(yè)出版社, 2014.
[6]陳希,付興武,張興元,等.BP神經(jīng)網(wǎng)絡(luò)在測(cè)距誤差補(bǔ)償中的應(yīng)用[J].工礦自動(dòng)化,2008(3):57-58.
[7]李曉靜.基于改進(jìn)蜂群算法的神經(jīng)網(wǎng)絡(luò)及其應(yīng)用[J].瓊州學(xué)院學(xué)報(bào), 2015,22(5):29-34.
(編校:何軍民)
Temperature and Humidity Compensation Algorithm of Ultrasonic Distance Measurement Based on STM32
ZHANG Xi-hong1,2WANG Yu-xiang1
(1.Bozhou Vocational and Technical College, Bozhou Anhui, 236800,China;2.School of Control Science and Engineering, Shandong University, Jinan 250061, China)
In order to reduce the ultrasonic ranging system error due to temperature and/or humidity difference in Matlab2010 platform, and to calibrate the temperature and humidity samples and hence the corresponding ultrasonic velocity with Fusion training simulation experiment through BP neural network, the design of the compensation algorithm is transplanted into STM32 ranging system to test its compensation ability. The current experiment showed that compared with existing methods, STM32 ranging system effectively compensates the error due to temperature and/or humidity difference, resulting in the improvement of precision to one order of magnitude.
data fusion; neural network; ultrasound
2015-12-02
安徽省教育廳醫(yī)電子儀器與維護(hù)省級(jí)特色專業(yè)質(zhì)量工程項(xiàng)目(20101459);安徽省教育廳醫(yī)用電子儀器省級(jí)示范實(shí)習(xí)實(shí)訓(xùn)中心項(xiàng)目(2011131);安徽省教育廳重點(diǎn)教研項(xiàng)目(2015jyxm535)
張喜紅(1983-),男,山西朔州人,亳州職業(yè)技術(shù)學(xué)院講師,碩士,山東大學(xué)訪問學(xué)者,研究方向?yàn)樯镝t(yī)學(xué)工程.
TP274.5 3
A
1008-6722(2016) 02-0018-05
10.1 3307/j.issn.1 008-6722.2 016.02.04