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