孫福玉, 曹萬蒼, 王中文
(1.赤峰學(xué)院, 內(nèi)蒙古 赤峰 024000; 2.吉林省公主嶺市范家屯第一中學(xué), 吉林 四平 136100)
傳感器實驗數(shù)據(jù)的處理方法探究
孫福玉1, 曹萬蒼1, 王中文2
(1.赤峰學(xué)院, 內(nèi)蒙古 赤峰 024000; 2.吉林省公主嶺市范家屯第一中學(xué), 吉林 四平 136100)
傳感器實驗中,經(jīng)常需要通過實驗數(shù)據(jù)求出傳感器的特性指標,本文利用 MATLAB 的 GUI功能,通過對 GUI開發(fā)環(huán)境中回調(diào)函數(shù)的編程,設(shè)計了基于 GUI的傳感器實驗數(shù)據(jù)處理界面,展示了方便靈活的參數(shù)輸入和動態(tài)仿真結(jié)果的輸出,開發(fā)設(shè)計出了具有良好交互式界面的傳感器實驗數(shù)據(jù)處理系統(tǒng),可應(yīng)用于所有傳感器實驗的數(shù)據(jù)處理.
傳感器;非線性誤差;靈敏度;GUI
傳感器通常把非電量轉(zhuǎn)化為電量,它就相當(dāng)于我們的五官,可感知溫度、壓力、高度、速度、光強等各種外界因素的變化,并把這種變化轉(zhuǎn)化為較容易處理的電壓信號,電壓信號送入單片機、FPGA、CPLD或 ARM等處理器進行處理后,即可完成自動控制、數(shù)字顯示、報警等工作.從中學(xué)到大學(xué),在物理學(xué)中我們接觸了很多傳感器,如光敏管、壓阻片、差動變壓器等等,在涉及到傳感器的實驗中,經(jīng)常需要通過實驗數(shù)據(jù)求出傳感器的特性指標,而這種特性指標的求解過程非常繁瑣,需要花費學(xué)生大量的時間和精力,本文給出了一種基于 MATLAB的 GUI處理方法,可以非常容易的解決這個問題.
2.1 傳感器的非線性誤差
傳感器的非線性誤差是傳感器的一個重要指標,傳感器的輸出隨輸入的變化而變化,對于使用者而言,自然希望這種變化是線性的,我們稱之為輸入輸出特性曲線為一條直線,但由于種種原因,實際的傳感器總是非線性的,使用者于是就希望傳感器的非線性越小越好,比如對于由壓力傳感器做成的電子秤,放上 1Kg它顯示 1Kg,放上 2Kg它顯示了 2.5Kg,可以說它的非線性誤差太大了,這樣的電子秤是無法使用的.
非線性誤差通常指的是相對誤差,可以用公式(1)進行計算:
上式中 ΔLMAX為最大非線性絕對誤差,YFL為傳感器的滿量程輸出值.
2.2 傳感器的靈敏度
傳感器的靈敏度指傳感器靈敏的程度,其定義為傳感器的輸出量增量Δy與傳感器的輸入量增量 Δx的比值,傳感器的靈敏度可用公式(2)計算,通常情況下,我們希望傳感器的靈敏度越大越好.對于線性傳感器,其靈敏度就是輸入輸出特性曲線的斜率.
為了根據(jù)公式(1)和公式(2)計算傳感器的非線性誤差和靈敏度,需要使用最小二乘法,公式(3)至公式(5)為最小二乘法的計算公式.
公式(3)中 x為傳感器實驗的 n次輸入,y為傳感器實驗的n次輸出.
公式(3)和公式(4)中,ε 為傳感器 n次實驗的誤差.
公式(3)至公式(5)中 a為輸入輸出特性曲線的截距,b為輸入輸出特性曲線的斜率,b值即為傳感器的靈敏度 s,n次實驗中最大的 ε 值就是ΔLMAX也就是最大非線性絕對誤差的值.
GUI是 Graphical User Interfaces Development Environment的一個縮寫,意為圖形用戶界面開發(fā)環(huán)境,簡稱 GUI,GUI是 MATLAB的一個子窗口,它具有非常強大的功能,其優(yōu)點是方便靈活的參數(shù)輸入,以及動態(tài)仿真的結(jié)果輸出.
可采用下列步驟設(shè)計傳感器實驗數(shù)據(jù)處理的GUI界面:
(1)啟動 MATLAB,點擊 file菜單,選中 GUIDE子窗口選項,打開 GUI的布局編輯器窗口.
(2)如圖一傳感器實驗數(shù)據(jù)處理的 GUI圖形窗口所示,拖放所需要的控件,這里拖放四個動態(tài)文本框到工作區(qū),其中兩個用來放置實驗中傳感器的輸入和輸出數(shù)據(jù),另外兩個放置數(shù)據(jù)處理結(jié)果,即程序執(zhí)行后輸出的傳感器的靈敏度和傳感器的非線性誤差,拖放三個靜態(tài)文框到工作區(qū),用來對四個動態(tài)文本框進行說明,拖放一個坐標軸控件用來放置傳感器的輸入輸出特性曲線,拖放一個按鈕控件,當(dāng)按鈕控件 Push Buttor按下后,GUI將開始運行.我們可以使用幾何位置排列工具對這些控件的位置進行重新排列和調(diào)整.
(3)雙擊每一個所選中的控件,編輯它們的屬性,這里把 fontname屬性設(shè)置為隸書,把 fontsize屬性設(shè)置為 16,其它的 fontweight,string,tag等屬性也進行相應(yīng)的設(shè)置.
(4)運行 GUI程序,在自動生成的 M-file中添加Push Buttor按鈕控件的 Callback回調(diào)函數(shù)如下[1-2]所示:
x0=numeric(get(handles.x,'string'))
y0=numeric(get(handles.y,'string'))
p=polyfit(x0,y0,1);
x1=min(x0)
x2=max(x0)
x=x1-1:0.01:x2+1;
y=polyval(p,x);
p
s=p(:,1);
s=abs(s)
y1=polyval(p,x0)
l1=abs(y0-y1)
l2=max(l1)
y2=abs(y0)
yfs=max(y2)
rl=l2./yfs
plot(x0,y0,'ro',x,y,'k-');
legend('x0-y0','x-y')
set(handles.s,'string',s)
set(handles.rl,'string',rl)
(5)運行 M-file,出現(xiàn)傳感器實驗數(shù)據(jù)處理的GUI圖形窗口如圖一所示,在原始數(shù)據(jù)處的兩個動態(tài)文本框中輸入傳感器輸入和輸出實驗數(shù)據(jù),點擊Push Buttor按鈕控件,即可在另外兩個動態(tài)文本框中看到實驗數(shù)據(jù)的處理結(jié)果,即程序執(zhí)行后輸出的傳感器的靈敏度和傳感器的非線性誤差,同時我們在坐標軸控件中可觀察到傳感器的輸入輸出特性曲線.
傳感器實驗中,經(jīng)常需要通過實驗數(shù)據(jù)求出傳感器的特性指標,而這種特性指標的求解非常繁瑣,本文利用 MATLAB的 GUI功能,可以非常容易的解決這個問題.本文設(shè)計了基于 GUI的傳感器實驗數(shù)據(jù)處理界面,展示了方便靈活的參數(shù)輸入和動態(tài)仿真結(jié)果的輸出,開發(fā)設(shè)計出了具有良好交互式界面的傳感器實驗數(shù)據(jù)處理系統(tǒng),可應(yīng)用于所有傳感器實驗的數(shù)據(jù)處理.
〔1〕李顯 龍.MATLAB 界面設(shè) 計與編 譯技巧[M].北京:電子工業(yè)出版社,2006.225-283.
〔2〕孫福玉.MATLAB 程序設(shè)計教程[M].呼和浩特:遠方出版社,2006.130-131.
TP212
A
1673-260X(2014)08-0013-02