孙福玉, 曹万苍, 王中文
(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