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