OEMS光电测量及技术实验系统Word格式文档下载.docx
《OEMS光电测量及技术实验系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《OEMS光电测量及技术实验系统Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
8.通信指示灯
9.电源指示灯
10.“驱动频率”选择按纽
11.“积分时间”选择按纽
12.LED数码显示
13.测量用接线柱
1.2.2操作说明
1.电路板:
采用开放式设计,完成了信号的处理,主要芯片对用户可见,对主要流程还作了说明,使用者可以根据此电路板及流程说明对本系统的基本原理有大概的了解。
2.“信号增益”调节旋纽:
调节信号放大倍数的旋纽,共分七档,放大倍数在实验箱上已标示清楚。
实验时可根据输出信号大小调节放大倍数。
3.“输入选择”调节旋纽:
(1)“断路”档:
CCD信号与电路断开,即没有外部信号输入,得到的是无用信号;
(2)“CCD信号”档:
AD的输入信号为CCD的输出视频信号VO;
(3)“二值化信号”档:
AD的输入信号为CCD的输出视频信号VO经硬件二值化以后的信号。
(4)“阈值电压”档:
AD的输入信号为阈值电压。
(5)“振动测量”档:
只有“OEMS-IV”具备此功能,可以在OEMS应用软件上显示物体的振动曲线,测量振动频率、周期、振幅。
4.“阈值调节”旋纽:
调节阈值电压大小,此时“输入选择”档和“数码显示”档都应选择“阈值电压”,则调节阈值时可以在数码管上显示阈值的变化。
5.“数码显示”选择开关:
(1)“积分时间工作频率”档:
显示积分时间和工作频率的大小(档);
(2)“二值化计数”档:
用于二值化实验中,显示采集的“0”的个数;
(3)“阈值电压”档:
在“输入选择”旋纽的介绍中已经讨论了“阈值电压”显示选项,在此不再赘述。
6.电源开关:
实验前要将电源线(插口位于实验箱后面)连接到220V交流电,按下此开关,则电源指示灯应点亮。
7.光源开关:
根据实验需要选择光源的开关。
8.通信指示灯:
单片机通过RS232接口与PC机通信时,该指示灯亮。
9.电源指示灯:
实验箱接通电源后,该指示灯亮。
10.“驱动频率”选择按纽:
调节驱动频率,显示数字在0-3循环,数字越大,则表示频率越低。
11.“积分时间”选择按纽:
控制积分时间,显示数字在00-15循环,数字越大,则表示积分时间越长。
12.LED数码显示:
可以显示驱动频率、积分时间、阈值电压、二值化计数。
13.测量用接线柱:
为了测量方便而引出的测量头,共引出24个信号,其中。
(1)F1、F2、FR、SH:
CCD的驱动信号,
F1、F2为转移脉冲,FR为复位脉冲,SH为积分时间。
(2)VOS、DOS、VO:
VOS为CCD输出信号,DOS为暗信号,VO为VOS、DOS相减后的CCD输出信号。
(3)FC:
只有在振动实验时要用到,为CCD信号的二值化输出。
(4)AD_INT、AD_RD、AD_CS:
AD器件的驱动信号,其中AD_INT为保留引脚,可根据需要编写时序。
(5)M_CEL、M_RWL、M_OEL:
存储器左侧的读写控制信号,由CPLD提供。
其中M_OEL为保留引脚,可根据需要编写时序。
(6)M_CER、M_RWR、M_OER:
存储器右侧的读写控制信号,由单片机提供。
(7)TX、RX、TXD、RXD:
TX、RX为单片机端的发送数据、接收数据,TXD、RXD为传输线上的发送数据、接收数据。
以上由CPLD提供的部分信号的具体时序关系见图1-2。
二、软件的使用
连接好硬件后,就可以使用该软件采集分析数据了。
启动“OEMS光电测量及技术实验系统”程序。
选择『采集』菜单中的『串口设置』,在出现的对话框中设置串口的端口。
按下工具栏上的
按钮或选择『采集』菜单中的『连续采集』,串口打开成功后,光信号就会实时地显示在屏幕上,软件将以示波器的方式工作。
当希望保留现有屏幕上看到的数据,只需点击工具栏上的
按钮。
也可以不使用“连续采集”功能,在任何时候只要按下
按钮都可以采集一帧数据,或者按下
按钮可以连续采集N帧数据并自动对它们求平均作为最后的采集数据(其中N可以通过『采集』菜单中的『采集选项』设置)。
在连续采集的同时也可以按下工具栏中的
按钮打开放大功能,通过单击鼠标左键或拖选一个区域对某个局部进行放大,就可以观看该部分的动态变化情况。
如果需要的数据都采集到了,就可以按起
按钮,结束采集。
接下来就可以对采集到的数据进行各种处理分析,并且随时可以保存现有的数据到oems文件中。
工具栏中有两个下拉列表,左边一个是选择当前任务,右边一个是选择当前任务中的当前信号。
通过这两个下拉列表的便可以方便地定位当前操作的信号。
这里有一个概念需要解释,一个任务代表一组相关的分析,比如从CCD采集一次信号,需要对它进行分析,那么就可以说是采集了一个任务。
而且一个任务中不一定只有一个信号,它可以包含若干个信号,因为有时需要多个信号才能完整地分析出结果,比如测量物体的位移就需要知道物体移动前和移动后的光强信号才能分析出位移。
所以该软件支持在同一窗口中显示和分析多个信号。
程序客户窗口又分为“信号图象”、“数据列表”和“编译器”三页。
当选中“信号图象”页时,视图中显示的是原始数据或经过处理的数据的曲线图,它也是程序启动后的默认页;
当选中“数据列表”页时,视图中显示的是原始数据的所有数值;
当选中“编译器”页时,可以在编辑窗口和命令窗口中编写程序指令(一种简单的自定义语言)。
本程序并非一定要在硬件准备好的情况下才能工作,只要有以前保存的工作文件或相关的数据,程序就可以对他们进行处理。
假如某次测量时,刚把数据采集完,但还没进行测量就有急事离开了,那么只要在临走时将这些数据保存到文件中,任何时候都可以使用本程序打开该文件对采集的数据进行测量。
并且选择『采集』菜单中的『手工采集』可以输入一组数据,如下图:
输入的数据可以是整数也可以是小数。
输入的数据个数只要大于3个都是允许的,所以本软件同时可以作为数字信号处理软件使用。
2.1程序界面介绍
●程序启动界面
●分析数据时的界面
●编译器界面
●“坐标调整”对话框界面
●“串口设置”对话框界面
●“信号处理”对话框界面
●“系统校正”对话框界面
2.2菜单介绍
本程序的菜单分为以下几部分(如下图):
文件菜单,编辑菜单,视图菜单,采集菜单,信号菜单,工具菜单,编译器菜单,帮助菜单。
2.2.1“文件”菜单
包括子菜单:
“新建”、“打开”、“保存”、“另存为”、“打印”、“打印预览”、“打印设置”、“退出”。
这些都是标准Windows菜单,完成的功能也与其他Windows程序基本一样。
其中打开和保存的文件是该软件自定义的信号数据文件。
所有采集的信号可以保存起来供以后分析。
2.2.2“编辑”菜单
“剪切信号”、“复制信号”、“粘贴信号”、“删除信号”、“空白任务”、“保留任务”、“删除任务”、“清空任务”。
前四个菜单功能针对的是当前任务中的当前信号,可以对当前信号进行剪切、复制、粘贴和删除。
粘贴信号时可以将信号粘贴到其他或新的任务中。
后四个菜单功能针对的是当前任务。
选择“空白任务”则会新建一个没有任何信号数据的空任务,这时可以从其它任务中复制信号并粘贴到该任务中。
这样便可以任意组合多个任务中的多个信号到该空白任务中,进行特殊的分析。
选择“保留任务”,则会新建一个任务,并把临时任务中的信号全部拷贝到新任务中,这样这个任务才不会被下一次的任务覆盖掉。
选择“删除任务”将删除当前任务以及其中的所有信号,临时任务不能被删除。
选择“清空任务”将删除所有的任务和信号,除了临时任务。
2.2.3“视图”菜单
主要子菜单包括:
“显示网格”、“开启放大”、“初始大小”、“撤消放大”、“存为图片”、“坐标调整”。
选中“显示网格”后,绘制信号的窗口中将显示背景网格,这样便于看出信号的大概坐标;
关闭后将不显示背景网格。
选中“开启放大”后,鼠标将变成放大镜的图形,此时可以通过鼠标拖选某个区域进行放大或单击一下鼠标以该点为中心放大信号图形;
关闭后,鼠标将恢复原状,并且信号图形也回到未放大状态。
在开启放大后,“初始大小”和“撤消放大”选项才能使用。
此时选择“初始大小”,信号图形将回到未放大状态;
选择“撤消放大”,信号图形将回到前一次放大的状态,但是只能撤消一次。
“存为图片”可以将信号图象保存为BMP格式的位图文件。
选择“坐标调整”将出现一个对话框,可以在其中设置或修改坐标信息。
2.2.4“采集”菜单
“串口设置”、“采集选项”、“连续采集”、“单次采集”、“多次平均采集”、“手工采集”。
选择“串口设置”将出现一个串口设置对话框,可以在其中设置与串口相关的参数,比如“端口”、“波特率”、“数据位”等。
选择“采集选项”将出现一个采集选项对话框,可以在其中设置连续采集的周期和多次平均采集的次数。
选择“连续采集”后,软件将周期性地(周期由“采集选项”中设置的参数决定)从串口采集数据,并立即绘制在窗口中,这样就可以像示波器那样看到信号的变化。
选择“单次采集”后,软件将从串口采集一组信号,并保存在临时任务中。
选择“多次平均采集”后,软件将从串口连续采集N组数据(N由“采集选项”中设置的参数决定),并计算出这N组数据的平均值,然后才保存在临时任务中,并绘制出来。
选择“手工采集”后将出现一个对话框,可以在编辑空件中输入数据,这些数据将保存到临时任务中,并绘制出来。
2.2.5“信号”菜单
“更改颜色”、“移动信号”、“还原位置”、“显示指针”、“极值跟随”、“最大斜率跟随”、“切线跟随”、“二值化”、“信号属性”。
该菜单中所操作的对象都是由那两个下拉列表所确定的当前信号。
要更换操作的信号可以通过改变下拉列表的选项来实现。
“更改颜色”选项又有两个子菜单选项,分别为“激活信号颜色”和“非激活时颜色”。
当任务中的信号被选为当前信号时,它就被称为“激活信号”。
在窗口中,该信号的曲线将以某种特定的颜色表示,以和其它非激活信号区别。
此处选择“激活信号颜色”便可以改变信号被激活后的显示颜色。
“非激活时的颜色”是信号不处于当前信号时显示的颜色。
当选择“非激活时的颜色”并改变其颜色后,窗口中的信号颜色不会有任何改变,因为此时信号处于激活状态,它的颜色为“激活时的颜色”,只有当更换了当前信号后,此时修改的颜色才能体现出来。
当选中“移动信号”后,鼠标的图形将变为手的形状,此时按下鼠标左键不放,并拖动鼠标便可以移动信号的坐标。
此功能在对比两组或多组相关信号时非常有用。
比如测量物体位移时,物体移动前后的光强分布曲线是非常相似的,只要将移动前的曲线向X方向平移,直到两曲线中表示物体轮廓的部位很好地重合为止,此时平移的距离便是物体的位移,而移动的距离可以在“信号属性”中看出。
这样简单地拖动信号便可以测量出物体的位移了。
选择“还原位置”后,当前信号将回到未被平移时的状态。
选中“显示指针”后,信号图象窗口中将出现一红一蓝两根指针,以及一个小窗口,其中显示了当前信号在指针处的相关信息。
此时的窗口界面如右图。
此时,可以在信号显示区域内自由拖动任意一个指针,小窗口中的信息将及时改变。
当选中“显示指针”后,“极值跟随”、“最大斜率跟随”和“切线跟随”这三个选项将变为可用状态。
此时,选中“极值跟随”后,将在窗口中标出当前信号曲线在指针附近的极值点的坐标,并且该极值的信息也将精确地显示在小窗口中,这样在找信号的峰和谷时非常方便和准确;
选中“最大斜率跟随”后,将在窗口中标出当前信号曲线在指针附近的最大斜率点的坐标,同样,其精确的信息也将出现在小窗口中;
选中“切线跟随”后,将在窗口中画出当前信号曲线在指针处的切线。
选择“二值化”将出现一个对话框,在其中可以设置对信号进行二值化的阈值等信息,点击“确定”后信号将被二值化。
选择“信号属性”后,将出现一个对话框,其中显示了当前信号的基本信息,包括:
采样点数、最大值、最小值、平均值、向X和Y方向平移的距离。
2.2.6“工具”菜单
“信号处理”、“系统校正”。
“信号处理”可以完成对当前信号的滤波和三次样条插值。
选择该选项后将出现如下对话框:
选中“对数据进行滤波”后,可以通过滑动条修改低通上限频率。
选择“确定”后,所有的信号都将按设定的频率被滤波处理。
取消“对数据进行滤波”后,所有信号都将恢复为未滤波状态。
选中“三次样条插值”后,所有信号在显示和分析时都将按三次样条插值算法对离散数据中间的数值进行插值。
非选中时相当于是采用的直线插值。
“系统校正”主要是对CCD硬件系统引起的非均匀性进行校正。
系统校正是通过对两组不同光强的平行光信号求出校正因子,并将校正因子作用到所有采集的其它信号上来实现的。
所以,在启动系统校正前需要求出校正因子。
当计算出校正因子并保存后,选中“启动系统校正”,任务中的所有信号都将被校正。
2.2.7“编译器”菜单
该软件提供了一个语言解释执行器,其支持的语言是我自定义的语言,主要是针对数字信号的处理,语言简单,但是功能强大。
编译器的窗口如下图:
在左边窗口中可以编制原代码,通过“导入代码”子菜单可以将代码导入到左边的编辑窗口中,“导出代码”可以将代码保存到文件中。
当代码编辑好后,选择“执行代码”选项便会执行左边窗口中的代码。
执行结果和状态可以在右边窗口中看到。
同时,在右边窗口中可以输入一行代码执行一行代码。
下面介绍一下该编译器支持的自定义语言以及内部提供的函数。
●数据类型
基本数据类型包括:
int、float、bool、string、vector。
int表示整型变量;
float表示浮点数变量;
bool表示布尔变量;
string表示字符串变量;
vector表示浮点数组。
一个vector变量可以存储一组数字信号。
●运算符
该语言的运算符有以下几类:
1.算术运算符(+-*/^%)(加、减、乘、除、指数、求模)
2.关系运算符(>
<
#)(大于、小于、恒等于)
3.逻辑运算符(!
&
|)(非、与、或)
4.赋值运算符(=)
5.下标运算符([])
6.函数调用运算符(())
●变量声明
该语言中合法的变量名是以字母开头,后面可以跟字母、下划线和数字。
对变量的声明其实是对变量的分配,循环和条件语句中不应该包括变量的声明。
变量不再使用后应该使用free关键字将变量释放。
声明变量的语法为:
“类型变量名”,如:
“inti”。
vector变量在声名的时候可以指定大小,如vectorv[100];
变量在声明的时候不能对其进行赋值,如“inti=0”就是错误的。
释放变量很简单,语法为:
“free变量名”,如:
“freei”。
●选择结构程序设计
大多数程序中都会包含选择结构。
它的作用是,根据所指定的条件是否满足,决定从给定的两组操作中选择其一。
该语言中的选择结构是用if语句实现的。
它有两种形式:
1.if关系表达式或逻辑表达式
;
语句
Endif
2.if关系表达式或逻辑表达式
语句1
else
语句2
●循环控制
该语言的循环控制用while语句实现,它的形式如下:
while关系表达式或逻辑表达式
endw
●vector的使用
一个vector变量相当于C语言中的浮点数组变量。
对vector变量赋值时可以写成:
v=[1,2,3,4….]。
在表达式中也可以直接使用“[1,2,3….]”的写法,如:
3*[1,2,3]。
要获取数组中的第n个值可以使用下标运算符,如:
“v[n]”。
当n超出了数组大小时,将出现运行时错误提示。
使用vector时可以直接改变第n个值,如:
“v[n]=0”。
●函数的使用
该语言目前不支持在程序中自定义函数,但是可以在程序中使用内部定义好的函数,函数使用方法和C语言中很相似。
内部定义的函数如下:
inttoint(floatf);
将float转型为int
floattofloat(inti);
将int转型为float
voidalloc(string变量名,stringtype);
分配变量,所有声明的变量其实都是通过该函数动态分配的
voidfree(string变量名);
释放分配的变量,free关键字将自动调用该函数
intGetVectorSize(vectorv);
获取数组的大小
voidprint(变量);
显示变量的值,它将自动判断变量的类型
voidGetSignal(inttaskIndex,intsignalIndex,vector&
v);
把第taskIndex个任务(从临时任务开始索引)中的第signalIndex个信号的数据赋给v
intGetTaskCount(void);
返回任务的数目,含临时任务
intGetSignalCount(inttaskIndex);
返回第taskIndex个任务中的信号数目
voidplot(vector&
将v绘制在窗口中将v绘制出来
voidClearScreen(void);
清除命令窗口中已有的信息
boolGetVectorSize(Vectorv);
返回v的大小
变量abs(变量);
对变量取整
变量acos(变量);
对变量求反余玄
变量asin(变量);
对变量求反正玄
变量atan(变量);
对变量求反正切
变量cos(变量);
对变量求余玄
变量sin(变量);
对变量求正玄
变量tan(变量);
对变量求正切
变量exp(变量x);
求e的x次方
变量log(变量x);
求ln(x)
变量log10(变量x);
求lg(x)
变量sqrt(变量);
对变量开平方
2.3工具栏介绍
工具栏界面如下:
新建:
对应『文件』菜单中的『新建』。
打开:
对应『文件』菜单中的『打开』。
保存:
对应『文件』菜单中的『保存』。
打印:
对应『文件』菜单中的『打印』。
帮助:
打开帮助文件,对应『帮助』菜单中的『帮助』。
显示网格:
对应『视图』菜单中的『显示网格』。
开启放大:
对应『视图』菜单中的『开启放大』。
初始大小:
对应『视图』菜单中的『初始大小』。
撤消放大:
对应『视图』菜单中的『撤消放大』。
连续采集:
对应『采集』菜单中的『连续采集』。
单次采集:
对应『采集』菜单中的『单次采集』。
多次平均采集:
对应『采集』菜单中的『多次平均采集』。
手工采集:
对应『采集』菜单中的『手工采集』。
保留任务:
对应『编辑』菜单中的『保留任务』。
删除任务:
对应『编辑』菜单中的『删除任务』。
清空任务:
对应『编辑』菜单中的『清空任务』。
信号属性:
对应『信号』菜单中的『信号属性』。
移动信号:
对应『信号』菜单中的『移动信号』。
还原位置:
对应『信号』菜单中的『还原位置』。
显示指针:
对应『信号』菜单中的『显示指针』。
极值跟随:
对应『信号』菜单中的『极值跟随』。
最大斜率跟随:
对应『信号』菜单中的『最大斜率跟随』。
切线跟随:
对应『信号』菜单中的『切线跟随』。
信号处理:
对应『工具』菜单中的『信号处理』。
二值化:
对应『信号』菜单中的『二值化』。
系统校正:
对应『工具』菜单中的『系统校正』。
执行代码:
对应『编译器』菜单中的『执行代码』。
选择当前任务。
选择当前信号。