孫福玉, 曹萬蒼, 王中文
(1.赤峰學院, 內蒙古 赤峰 024000; 2.吉林省公主嶺市范家屯第一中學, 吉林 四平 136100)
傳感器實驗數據的處理方法探究
孫福玉1, 曹萬蒼1, 王中文2
(1.赤峰學院, 內蒙古 赤峰 024000; 2.吉林省公主嶺市范家屯第一中學, 吉林 四平 136100)
傳感器實驗中,經常需要通過實驗數據求出傳感器的特性指標,本文利用 MATLAB 的 GUI功能,通過對 GUI開發環境中回調函數的編程,設計了基于 GUI的傳感器實驗數據處理界面,展示了方便靈活的參數輸入和動態仿真結果的輸出,開發設計出了具有良好交互式界面的傳感器實驗數據處理系統,可應用于所有傳感器實驗的數據處理.
傳感器;非線性誤差;靈敏度;GUI
傳感器通常把非電量轉化為電量,它就相當于我們的五官,可感知溫度、壓力、高度、速度、光強等各種外界因素的變化,并把這種變化轉化為較容易處理的電壓信號,電壓信號送入單片機、FPGA、CPLD或 ARM等處理器進行處理后,即可完成自動控制、數字顯示、報警等工作.從中學到大學,在物理學中我們接觸了很多傳感器,如光敏管、壓阻片、差動變壓器等等,在涉及到傳感器的實驗中,經常需要通過實驗數據求出傳感器的特性指標,而這種特性指標的求解過程非常繁瑣,需要花費學生大量的時間和精力,本文給出了一種基于 MATLAB的 GUI處理方法,可以非常容易的解決這個問題.
2.1 傳感器的非線性誤差
傳感器的非線性誤差是傳感器的一個重要指標,傳感器的輸出隨輸入的變化而變化,對于使用者而言,自然希望這種變化是線性的,我們稱之為輸入輸出特性曲線為一條直線,但由于種種原因,實際的傳感器總是非線性的,使用者于是就希望傳感器的非線性越小越好,比如對于由壓力傳感器做成的電子秤,放上 1Kg它顯示 1Kg,放上 2Kg它顯示了 2.5Kg,可以說它的非線性誤差太大了,這樣的電子秤是無法使用的.
非線性誤差通常指的是相對誤差,可以用公式(1)進行計算:

上式中 ΔLMAX為最大非線性絕對誤差,YFL為傳感器的滿量程輸出值.
2.2 傳感器的靈敏度
傳感器的靈敏度指傳感器靈敏的程度,其定義為傳感器的輸出量增量Δy與傳感器的輸入量增量 Δx的比值,傳感器的靈敏度可用公式(2)計算,通常情況下,我們希望傳感器的靈敏度越大越好.對于線性傳感器,其靈敏度就是輸入輸出特性曲線的斜率.

為了根據公式(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的一個縮寫,意為圖形用戶界面開發環境,簡稱 GUI,GUI是 MATLAB的一個子窗口,它具有非常強大的功能,其優點是方便靈活的參數輸入,以及動態仿真的結果輸出.
可采用下列步驟設計傳感器實驗數據處理的GUI界面:
(1)啟動 MATLAB,點擊 file菜單,選中 GUIDE子窗口選項,打開 GUI的布局編輯器窗口.
(2)如圖一傳感器實驗數據處理的 GUI圖形窗口所示,拖放所需要的控件,這里拖放四個動態文本框到工作區,其中兩個用來放置實驗中傳感器的輸入和輸出數據,另外兩個放置數據處理結果,即程序執行后輸出的傳感器的靈敏度和傳感器的非線性誤差,拖放三個靜態文框到工作區,用來對四個動態文本框進行說明,拖放一個坐標軸控件用來放置傳感器的輸入輸出特性曲線,拖放一個按鈕控件,當按鈕控件 Push Buttor按下后,GUI將開始運行.我們可以使用幾何位置排列工具對這些控件的位置進行重新排列和調整.
(3)雙擊每一個所選中的控件,編輯它們的屬性,這里把 fontname屬性設置為隸書,把 fontsize屬性設置為 16,其它的 fontweight,string,tag等屬性也進行相應的設置.
(4)運行 GUI程序,在自動生成的 M-file中添加Push Buttor按鈕控件的 Callback回調函數如下[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,出現傳感器實驗數據處理的GUI圖形窗口如圖一所示,在原始數據處的兩個動態文本框中輸入傳感器輸入和輸出實驗數據,點擊Push Buttor按鈕控件,即可在另外兩個動態文本框中看到實驗數據的處理結果,即程序執行后輸出的傳感器的靈敏度和傳感器的非線性誤差,同時我們在坐標軸控件中可觀察到傳感器的輸入輸出特性曲線.
傳感器實驗中,經常需要通過實驗數據求出傳感器的特性指標,而這種特性指標的求解非常繁瑣,本文利用 MATLAB的 GUI功能,可以非常容易的解決這個問題.本文設計了基于 GUI的傳感器實驗數據處理界面,展示了方便靈活的參數輸入和動態仿真結果的輸出,開發設計出了具有良好交互式界面的傳感器實驗數據處理系統,可應用于所有傳感器實驗的數據處理.
〔1〕李顯 龍.MATLAB 界面設 計與編 譯技巧[M].北京:電子工業出版社,2006.225-283.
〔2〕孫福玉.MATLAB 程序設計教程[M].呼和浩特:遠方出版社,2006.130-131.
TP212
A
1673-260X(2014)08-0013-02