利用线阵 CCD 进行物体外形尺寸的测量 - 图文

更新时间:2024-04-10 23:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验十二 利用线阵CCD进行物体外形尺寸的测量

一、实验目的

通过本实验掌握利用线阵CCD进行非接触测量物体尺寸的基本原理和方法,用实例 探讨影响测量范围、测量精度的主要因素,为今后设计提供重要依据。

二、实验准备内容

1. 利用线阵CCD进行非接触测量物体尺寸的基本原理

线阵CCD的输出信号包含了CCD各个像元所接收光强度的分布和像元位置的信息,使它在物体尺寸和位置检测中显示出十分重要的应用价值。

CCD 输出信号的二值化处理常用于物体外形尺寸、物体位置、物体震动(振动)等的测量。如图3-1所示为测量物体外形尺寸(例如棒材的直径D)的原理图。将被测物体A置于成像物镜的物方视场中,将线阵CCD 像敏面恰好安装在成像物镜的最佳像面位置上。 当被均匀照明的被测物体A通过成像物镜成像到CCD的像敏面上时,被测物体像黑 白分明的光强分布使得相应像敏单元上存储载荷了被测物尺寸信息的电荷包,通过CCD及其

。根据驱动器将载有尺寸信息的电荷包转换为如图3-1右侧所示的时序电压信号(输出波形)输出波形,可以测得物体A在像方的尺寸D??,再根据成像物镜的物像关系, 找出光学成像系统的放大倍率β,便可以用下面公式计算出物体A的实际尺寸D

D??D??/??

(3-1)

显然,只要求出D??,就不难测出物体A 的实际尺寸D。

线阵CCD的输出信号UO随光强的变化关系为线形的,因此,可用UO模拟光强分布。 采用二值化处理方法将物体边界信息(图3-1 中的N1与N2)检测出来是简单快捷的方法。 有了物体边界信息便可以进行上述测量工作。

2.二值化处理方法

图3-2所示为典型CCD输出信号与二值化处理的时序图。图中FC信号为行同步脉冲,FC的上升沿对应于CCD 的第一个有效像元输出信号,其下降沿为整个输出周期的结束。UG为绿色组分光的输出信号,它为经过反相放大后 的输出电压信号。为了提取图3-2 所示UG的信号所表征的 边缘信息,采用如图3-3 所示的固定阈值二值化处理电路。

该电路中,电压比较器LM393的正输入端接CCD 的输出信号UG,而反相输入端接到由电位器R2的动端,产生的可调的阈值电平,可以通过调节电位器对阈值电平进行设置,构成固定阈值二值化电路。经固定阈值二值化电路输出的信号波形被定义为TH,它为方波脉冲。

再进行逻辑处理,便可以提取出物体边缘的位置信息N1和N2。N1与N2的差值即为被测物体物体A在CCD像面上所成图像占据的像元数目。在像方的尺寸D??为

D?????N ? N?L

2 1 0

(3-2)

式中,N1与N2为边界位置的像元序号,L0为 CCD 像敏单元的尺寸。因此,物体的外径D应为

图3-3二值化电

D??

(N2??N1)L0 ??

(3-3)

3. 二值化处理电路原理方框图

二值化处理原理图如图3-4所示,若与门的输入脉冲CRt为CCD驱动器输出的采样脉冲SP,则计数器所计的数为(N2-N1),锁存器锁存的数为(N2-N1),将其差值送 入(N2-N1)LED数码显示器,则显示出(N2 -N1)值。

同样,该系统适用于检测物体的位置和它的 运动参数,设图3-1 中物体A在物面沿着光轴做 垂直方向运动,根据光强分布的变化,同样可以 计算出物体A的中心位置和它的运动速度、震动(振动)等。

三、实验所需仪器设备

1、LCCDAD-Ⅱ-A型线阵CCD应用开发实验仪一台;

2、装有VC++软件及相关实验软件的PC计算机或GDS-Ⅲ型光电综合实验平台一台;

四、实验内容及步骤

1.实验内容

(1)建立非接触测量物体外形尺寸的基本结构; (2)观测二值化处理过程中CCD的输出信号;

(3)在进行二值化阈值电平调整的过程中,观察阈值电平的调整对测量值的影响; (4)进行光学系统放大倍率的标定; (5)进行非接触测量被物体外形尺寸的测量;

(6)通过改变有关参数,观察对测量值的影响,分析影响物体尺寸测量的主要因素。

2.实验步骤

(一)实验准备

(1) 将示波器地线与实验仪上的地线连接良好,并确认示波器的电源和多功能实验仪的电源插头均插入交流220V插座上;

(2) 打开仪器上盖,旋下旋转滚筒轴上的禁锢螺钉,将旋转滚筒拿下来,使实验仪 的测试台像如图3-5所示的尺寸测量系统,然后将被测干件插入如图3-5所示的安装位置上;

图3-5线阵CCD应用开发实验仪

(3) 打开实验仪电源开关,启动计算机,并进入物体尺寸测量软件,将在屏幕上弹 出如图3-6所示的物体外形尺寸测量实验软件界面;

图3-6所示界面中尽管标写“LCCDAD-Ⅱ”字样,照样适用于“LCCDAD-Ⅱ-A型”实验仪。其中“打开”菜单是为打开原来曾保存过的数据文件进行察看而设,“保存”菜 单为将所测量的数据保存到指定文件夹而设定。实验时点击“连续”菜单,仪器便执行连 续采集线阵CCD的输出信号;其中“单次”是只采集线阵CCD输出一行的信号,并将其显示在计算机界面上;“数据”与“曲线”菜单分别用来以数据方式还是以曲线波形方 式显示所采得的数据信号;“0ms”为曲线波形在计算机界面上停留显示的最短时间,以 便实验者能够快速地观测到信号波形的变化,但是它不可能为“零”,它与计算机的性能 有关。它右边的“三角箭头”是显示时间的选择下拉菜单,点击菜单上的下拉箭头可以选择更长的显示时间便于观察;“积分时间”和“驱动频率”等也都可以通过相应的下拉箭 头进行选择,积分时间为16 档,驱动频率为4 档可调。

(二)光学成像系统放大倍率β的标定

(1)将直径为5mm的“试件”插入安装装置,执行“物体尺寸测量实验”软件,弹出如图3-6所示的测量尺寸软件界面;同时远心照明光源被点亮;

(2)在尺寸软件界面上选中“连续扫描”菜单,计算机显示器出现含有被测“试件”外径尺寸信息的波形如图3-7所示;

(3)在测量界面上设置驱动频率或积分时间,使输出信号的幅度在适宜观测的程度,但是,一定不要使CCD 工作到饱和状态;

(4)调整物镜的焦距使如图3-7所示输出信号曲线的斜率尽量陡;

图3-7尺寸测量软件界面

(5)停止采集后,界面进入到如图3-8所示的光学放大倍率的测量与设定软件界面, 并在界面的底部用文字方式提示实验者应该执行的步骤,如图3-8 中提示的“请将标准棒 插入测试槽中,观察数据曲线。,”实验者应该按着提示将φ5的测试棒插入测试槽中。然 后根据曲线波形调节驱动频率与积分时间使信号波形输出幅度适合测量需要(注意绝对不 能使CCD输出信号波形出现“饱和现象”,否则严重影响测量精度)。如图3-8 中设定积 分时间为“6”档,驱动频率为“0”档时输出信号波形较为理想;

(6)选择适当的阈值,二值化阈值电平的选择原则是能够检测出物体的真正外形尺寸 值。例如,在如图3-8所示输出波形图上可以看出,波形幅度的一半处能够反映物体的外形尺寸信息,此处曲线的变化率也最大,为此可以选定阈值为“127”,再执行“下一步”, 界面弹出下一步操作的提示;

(7)调整光学成像系统的焦距与光圈,注意观察输出信号波形,使信号波形中反映尺 寸信息的变化边缘越陡成像光学系统调整得越佳,测量系统的精度越高。调整好光学系统 后执行下 一步;

图3-8 光学放大倍率测量与设置软件界

(8)在软件界面的提示下进行操作,将用卡尺或千分尺测量的标准被测物尺寸值输入 到如图3-9 所示的“已知值”输入框中,再执行“下一步”,软件自动计算出光学系统的 放大倍率β并显示在新弹出如图3-10 所示的界面上;再点击“下一步”,出现点击“完成”, 便将测得的放大倍率存入计算机内存,为本实验的测量工作使用;

实验3-9 尺寸测量实验光学系统放大比率的标定

标定好光学系统放大倍率后测量系统就可以对如何安装在指定位置上的任何物体的外形尺寸进行测量实验,例如对仪器提供的3mm、8mm棒材的外径尺寸进行测量实验。

间关系特性在设计线阵CCD驱动器时是选择器件、电路的重要依据。

表FB2-6驱动脉冲相位关系

特性描述 SH 与CR脉冲间隔 SH 脉冲上升时间,下降时间 SH 脉冲宽度 CR脉冲上升时间,下降时间 RS脉冲上升时间,下降时间 RS脉冲宽度 CR与RS脉冲时间 视频数据延迟时间(注释13) RS输出延迟时间 符号 t1,t5 t2,t4 t3 t6,t7 t8,t10 t9 t11 t12,t13 t14 t15 最小值 0 0 500 0 0 40 110 - — — 典型值 (注释12) 100 50 1000 100 20 250 150 90 10 125 最大值 - - - - - - - — - - 单位 ns ns ns ns ns ns ns ns ns ns (注释12)典型值是在fRS=1.0MHz条件下测定。(注释13)负载电阻为100k??。 (7)器件的光谱响应特性

TCD1251UD的光谱响应特性如图Ft2-8所示;如图Ft2-9所示为线阵CCD输出电压与积分时间的关系特性;如图Ft2-10 所示为线 阵CCD在X与Y方向的光学调制函数特性。

(8)外形尺寸图

如图Ft2-10 所示为TCD1251UD的外形尺寸,其中所有尺寸数据均以mm为计量单位。 通过观察它的外形尺寸数据可以发现线阵CCD的中心像元(1350 像元)并非在它的机械 中心位置上,在设计光学成像系统时一定要注意!

(注1)第一像素单元S1到器件封装边沿尺寸。 (注2)芯片顶端到器件底端尺寸。 (注3)玻璃窗厚度(n = 1.5)。重量:5.4克(典型值)

(9)注意事项: 1、玻璃窗口

器件玻璃封装窗口上的灰尘或污点将使CCD 器件的光学性能下降,并且在输出波形曲线上出现若干深浅不等的凹陷。建议使用浸透酒精的棉球轻清擦拭,清洁CCD 器件表面上的污物,然后,在洁净环境下将其吹干。同时请注意器件的机械振动或过热也会导致 玻璃窗口的损坏。 2、静电损坏

请将器件保存在能够避免积累静电电荷的包装盒内或将器件管脚插入导电泡沫中使之“短路”以避免静电损伤。 3、入射光

该线阵CCD传感器对红外光谱有光敏效应。应用时要注意红外辐射的影响,避免因红外辐射导致CCD 分辨率以及PRNU的降低。

附录三 实验仪使用说明

一、仪器各部件介绍

LCCDAD-Ⅱ-A型线阵CCD应用开发实验仪主要由彩色线阵CCD 驱动电路、光学成像系统、被测物安装系统、照明系统、A/D数据采集与计算机接口等主要6个部件组成。 如图Ft3-1所示为实验仪的结构图。

线阵CCD 应用开发实验仪主要结构由测量工作台8、及台体上安装的线阵CCD驱动器(图中1)、成像物镜(图中2)、被测物体夹持机构(图中3 取下扫描机构便清晰可 见)、扫描机构(图中4)、扫描固紧螺钉(图中5)、扫描照明光源(图中6)、条形码安 装板(图中14)、彩色线阵CCD参数调整电位器(图中7)、电机调整电位器(图中9)应用开发扩展板 、11、CPLD的I/O接口(图中12)和线阵CCD驱动波形及输出信号测试端口(图中13)等部分组成。应用开发扩展板11内装有CPLD器件与开发接口,可以对内部CPLD进行编程,CPLD的I/O端口连接到仪器机箱面板上的接线端子12 上,可以利用CPLD逻辑供自行设计的其他功能电路应用;仪器面板上的接线端子13 将彩色线阵CCD 的驱动脉冲与输出彩色信号输出到面板,便于学员测试与学习;二、更改实验过程对仪器的改装方法

从图Ft3-1 可见仪器是在进行图像扫描与条码识别实验状态,图像扫描机构(图中4) 是通过4 个固紧螺钉安装在仪器上的,如果现在要改为尺寸测量(图中5)将可以方便拆卸的半轴套固紧的,对不需要扫瞄机构的实验,如振动与尺寸检测实验可以将4 个固紧螺 钉拧下,再取下扫描机构后,就可以将被测杆件安装到测量位置,进行尺寸测量或振动测 量。通过不同组合的拆装能够构成接近于实际的测量系统,实现利用同一台仪器完成多种 应用的实验系统结构。每种拆装方法分别在各自的实验中进行叙述。

三、线阵CCD工作参数的调整

彩色线阵CCD 需要6 个电位器分别调整3色输出信号的阈值电位与放大倍率,即白

平衡与对比度参数,调整起来比较麻烦,出厂时已经调整得非常理想,使用时应尽量不要 轻易调整,如果需要学习调整过程,可以松开锁紧螺钉后再进行调整。调整时一定要先将 放大倍率调小,再调整阈值电平,之后再返回调整放大倍率。不可能一次调整到位,要反 复仔细调整,才能达到出厂时的状况,而且,调整时应该用稳定的已知亮度分布的光源,因为阈值电平与放大倍率二者互相影响,所以整个调整过程要循循渐进,耐心细致。

振动实验与图像扫描实验过程中所用的两个电机的转动速度都可以通过同一个电位器进行调整,变速方向均为如仪器上所标示的方向,图形宽度越宽转速越高。四、外置

线阵CCD相机

线阵CCD 应用开发实验仪侧面还装有如图Ft3-2所

示的DB9接口13,它可以驱动如图3-3所示的“外 置线阵CCD相机”,并把 它的输出信号引入到实验仪,增强实验仪的功能。

实验者可以将“外置线阵CCD相机”安装在自己想 要进行的各种开发性实验的光电系统或装置上,进行更为丰富多彩的研究课题,进行各种相关方面的试验。

外接“外置线阵CCD相机”的接口DB9如图Ft3-2 所示,其定义附表3-1所示。

“外置线阵CCD相机”内所装的线阵CCD为2700

像元的单阵列器件TCD1251D。一台实验仪器能够同时提供两款(彩色与黑白)线阵CCD 器件的驱动与数据采集系统,使实验仪的实用性更强、更能开拓学生与指导教师的设计思 路与创新思维。因此,它不但适应本科相关课程的实验教学而且还是硕士、博士研究生及 实验指导教师进行科技开发与创新设计试验阶段研究的得力助手。

附表3-1外接相机插座的管脚定义

接口器件型号 管脚号 1 3 5 6 8 9 2、4、7 信号定义 CR1 RS U0 SH +5V +12V GND 说明 驱动脉冲 复位脉冲 模拟输出信号 转移脉冲 DB9 电源 五、配件说明 1、尺寸测量实验棒

实验仪配备3种规格的实验棒用于物体外形尺寸的测量实验。它们分别为3mm、5mm 与8mm。可以被分别安装在同一个杆件安装插座内,由上、中、下3 个紧固螺丝固紧,下面紧固3mm杆件,上面螺丝紧固8mm杆件。当然,在3~8mm之间的其他杆件也可以固定在安装插座内进行测量。将被测杆件固定到安装插座内后成为如图Ft3-3所示的组件, 将该组件安放到实验仪的安装方孔内组成如图Ft3-4所示的测量装置。仪器测量位的方孔

具有定位作用,能够确保被测物体距线阵CCD的距离是确定的常数,即保证物距与像距符合设计要求。确保实验仪器的测量精度,这是线阵CCD非接触测量仪器必须考虑到的问题。

实验棒安装底座与测量位的方孔具有配合关系,实验棒插入 安装底座后,应该将对应的锁紧螺丝拧紧。

图Ft3-4尺寸测量实验装置

图Ft3-3实验棒与座

3、物体倾斜角度测量实验试件

物体倾斜角度测量实验中所用的模拟实验装置如图Ft3-5 所示,该装置被称为“倾斜角度测量实验试件”。模拟 物体“倾斜角度”的杆件安装在实验座上,当松开紧固螺母 (六方螺母)后,杆件可以转动到任何角度(只要仪器测量范围允许),因此,一个试件可以进行更多角度的实际测量 实验。

在进行物体倾斜角度测量实验时,将被测试件安放到实验仪的测量位方孔中确保符合设计参数,执行测量软件便 会测得实验试件的倾角。

4、振动测量实验目标棒

在振动测量实验中用如附图Ft3-6所示的“目标棒(振动件)” 模拟被测物体的振动状况,用“目标棒”下面的M3螺纹将其与实验仪上板测试方孔内的M3螺母相连接 (拧在振动提上),它将在具有正弦规律运动的装置带动下 做往复运动。执行振动测量程序后,直流电机将带动“目标 棒”按正弦规律进行左右方向的反复周期运动,模拟物体做 正弦规律的振动。

水平放置的线阵CCD将“目标棒”在每个时间段瞬间 的位置测出来,输出位置随时间变化的周期函数,函数的变 化规律即为电机拖动下的“目标棒”的运动规律,为正弦函 数。当标定了测量光学系统的放大倍率后,就可以测出物体 的振动幅度、频率与周期。

显然,实验中物体振动的频率或周期与电机转速有关,

图Ft3-6振动实验目标棒 图Ft3-5物体倾斜实验试件

改变直流电机的电压,转速将随之变化,目标棒也将随之做变速运动,模拟物体的非周期 振动。线阵CCD将测得的振动频率与周期也随之变化。

附录四 编程手册

线阵CCD 应用开发实验仪(LCCDAD-II)编程手册包含实验软件使用说明、软件安装方法和用户二次开发SDK软件开发包的详细介绍等内容。

一、实验软件使用说明

1.1光盘内容与文件格式说明:

随LCCDAD-II线阵CCD 应用开发实验仪配备的软件光盘包含有如表FB4-1所示的内容。实验前需了解光盘的内容,尤其是实验软件的安装及方法。

FB4-1 光盘内容

目录 软件 驱动 SDK 文档 内容 实验软件 实验仪驱动程序 用户二次开发SDK软件开发包 软件开发及使用手册 1.2使用说明

1.2.1软件的安装

进入光盘目录“软件”,运行“Setup.exe”,或选择光盘自动运行,出现如图Ft4-1 所 示的界面:

图Ft4-1安装实验软件的安装界面

点击浏览按钮可将(LCCDAD-Ⅱ-A)实验仪的实验软件安装到您指定的目录下,如图Ft4-1 所示安装到D盘,确定文件后点击“下一步”,则自动进入如图Ft4-2 所示的界面, 程序文件夹显示出所要安装的程序。然后,点击“下一步”,自动进入如图Ft4-3 所示的 界面。

图Ft4-2显示将被安装的程序

根据界面提示的内容确定您是否进入下一步操作。如果没有改动,则点击“下一步”,

图Ft4-3复制文件的界面

自动进入如图Ft4-4所示的软件复制过程显示界面。复制过程中如果需要中断安装,可以

图Ft4-4软件安装过程显示界面

点击“取消”,自动结束复制过程。否则,将软件复制完毕。

复制完成后,将安装驱动程序,在安装驱动程序的过程中可能出现如图Ft4-5所示的 提示:

图Ft4-5可能提出的提示

选择“仍然继续”,则安装程序过程将继续进行。直到弹出如图Ft4-6 所示的界面, 说明程序安装完毕。确认完成后便可以退出安装程序,进行实验指导书所述的实验。

图Ft4-6程序安装完毕界面

1.2.2检验安装程序

将实验仪和计算机用USB连接线连好,打开实验仪电源,如果计算机提示找到新的 硬件,则说明上述程序安装完成。

二、二次开发SDK软件包使用说明

2.1 SDK简介

线阵CCD应用开发实验仪(LCCDAD-II型)的SDK(以下简称SDK),是为配合线 阵CCD应用开发实验仪(LCCDAD-II型)(以下简称实验仪)推出的软件开发包。SDK 为用户使用实验仪进行二次开发提供了丰富的资源,它使用简单,调用方便。 您可以利用线阵CCD应用开发实验仪中的硬件数据采集系统和SDK软件包能够进行多种开发项目的实验研究。

2.2 SDK组成

SDK主要包括如下文件: LCCDAD_II.dll LCCDAD_II.lib LCCDAD_II.h

接口动态库;

LCCDAD_I.dll的Visual C++(以下简称VC)静态输入库; 库函数的VC头文件,包括宏定义、结构体定义、函数声明,对

LCCDAD_I.dll采用隐示调用的方式,用户使用VC编程时可以直接使用;

SdkApi.bas库函数的VisualBasic(以下简称VB)模块文件,包括宏定义、结构体定义、函数声明,用户使用VB编程时可以直接使用; 2.3 如何使用SDK

用户进行软件开发时所有需要调用的函数都被封装在LCCDAD_II.dll中,用户只需要调用这个动态库即可。

2.3.1 VC调用动态库的方法主要有两种:

①、动态库的隐示调用:

在VC工程中直接链接输入库LCCDAD_II.lib,然后即可像调用其它源文件中的函数 一样调用API函数接口了。

②、动态库的显式调用: 2.3.2 显式调用动态库步骤:

① 创建一个函数指针,其指针数据类型要与调用的DLL引出函数相吻合。 ② 通过Win32API函数LoadLibrary()显式的调用DLL,此函数返回DLL的实例句柄。

③ 通过Win32API函数GetProcAddress()获取要调用的DLL的函数地址,把结果赋给自定义函数的指针类型。

④ 使用函数指针来调用DLL函数。

⑤最后调用完成后,通过Win32API函数FreeLibrary()释放DLL函数。 2.3.3 调用实例

VC调用动态库的方法请参考VC示例(位于SDK\\VCDemo目录下)。 VB调用动态库的方法请参考VB示例(位于SDK\\VBDemo目录下)。 2.4 SDKAPI函数

本节将详细地介绍SDKAPI函数包中各功能函数的定义与功能,为学习与设计时查找方便,将SDKAPI函数包的各种函数的基本功能、函数名称、它在实验仪中执行的操作与所处的位置(页码)列于表FB4-2中,便于快速查找。

表FB4-2SDKAPI函数快速索引列表

序号 1 2 3 4 5 6 7 8 功能 基本功能 参数设置 数据采集 控制函数 版本信息 函数名称 lcOpenDevice lcCloseDevice lcSetCCDParam lcDataAcquisition lcLampSwitch lcMotorSwitch lcSdkVersion lcDriverVersion 函数描述 打开实验仪 关闭实验仪 实验仪参数设置 实验仪数据采集函数 实验仪光源控制函数 实验仪电机控制函数 获得实验仪SDK版本信息 获得实验仪驱动版本信息 页码 65 65 66 67 70 71 71 72 下面对SDKAPI函数进行详细介绍。

2.4.1 lcOpenDevice参数

声明:

HANDLEWINAPI lcOpenDevice ();描述: 打开实验仪;参数:无返回值:

返回实验仪的设备句柄;如返回为NULL则未发现实验仪或出现错误。 说明:

对实验仪进行相关操作前必须使用此函数打开实验仪; 示例代码:

//打开实验仪

m_hExperiment=lcOpenDevice();

if(m_hExperiment==NULL) {

MessageBox(\打开线阵CCD应用开发实验仪失败!\错误\} else {

MessageBox(\打开线阵CCD应用开发实验仪成功!\提示\}

2.4.2 lcCloseDevice参数

声明:

voidWINAPIlcCloseDevice(

HANDLE hExperiment );

描述:

关闭实验仪;

参数:

hExperiment

实验仪的设备句柄;

返回值:无示例代

码:

//关闭实验仪

lcCloseDevice(m_hExperiment);

声明:

voidWINAPIlcCloseDevice(

HANDLE hExperiment );

描述:

关闭实验仪;

参数:

hExperiment

实验仪的设备句柄; 返回值:无示例代

码:

//关闭实验仪

lcCloseDevice(m_hExperiment);

2.4.3 lcSetCCDParam参数

声明:

BOOLWINAPI lcSetCCDParam(

HANDLE

hExperiment,WORDwParam,

long lParam );

描述:

实验仪参数设置;

参数:

hExperiment

实验仪的设备句柄;

wParam

指定设置的项目,所支持的项目如下(可参见LCCDAD_II.h中的宏定义)CCD_INTEGRAL CCD积分时间(0-15积分时间档)CCD_FREQUENCY CCD驱动频率(0-3驱动频率档)BIN_THRESHOLD 二值化阈值电平设置(0-15档,0档对应电压值为

64/51V,每档步长8/51V)

lParam

对应wParam的参数值;

返回值: 代码 TURE FALSE 描述 函数返回成功 无效的参数项目 说明:

进行数据采集前需要根据不同的CCD型号使用此函数设定CCD像元个数;进行数据采集时可以根据信号的变化使用此函数选取不同积分时间和驱动频率。

示例代码:

//设置积分时间

BOOL rc =lcSetCCDParam(m_hExperiment,

CCD_INTEGRAL, m_nIntegralTime);

if(rc) {

MessageBox(\积分时间设置完成\提示\} else {

MessageBox(\积分时间设置失败\参数设置失败\}

//设置驱动频率

BOOL rc =lcSetCCDParam(m_hExperiment,

CCD_FREQUENCY, m_nDriverFrequency);

if(rc) {

MessageBox(\驱动频率设置完成\提示\} else {

MessageBox(\驱动频率设置失败\参数设置失败\}

//设置二值化阈值 BOOL rc

=lcSetCCDParam(m_hExperiment,BIN_THRESHOLD, m_nThreshold);

if(rc) {

MessageBox(\二值化阈值设置完成\提示\} else {

MessageBox(\二值化阈值设置失败\参数设置失败\}

2.4.4 lcDataAcquisition参数

声明:

DWORDWINAPI

lcDataAcquisition(HANDLE

hExperiment,BYTE*Data, BOOL

bMode,intnChannel );

描述:

数据采集函数。

参数:

hExperiment

实验仪的设备句柄;

Data

存储采集数据的指针变量,数据格式请参考“数据存储格式”章节;

bMode

采集模式:0—单通道数据采集,1—彩色数据(三通道)采集

nChannel

采集通道数设置(1-4通道),只有在bMode设置为0时才可用; 1—G通道数据 2—B通道数据 3—R通道数据

4—外接相机通道数据

返回值: 0 成功

其他 返回错误代码。

说明:

采集前请为存储采集数据的指针变量开辟足够大的内存空间,否则会发生数据溢出错 误。

示例代码:

//////////////////////////////////////////////////////////// //单通道数据采集

////////////////////////////////////////////////////////////D

WORDrc;

BYTE byDataR[2700];//存放R通道数据数组 BYTE byDataG[2700];//存放G通道数据数组BYTE byDataB[2700];//存放B通道数据数组BYTE byDataE[2700];//存放外接相机数据数组

//采集G通道数据到byDataG数据中

rc=lcDataAcquisition(m_hExperiment,byDataG,0,1); if(rc!=0) {

CString str;str.Format(\错误代码:xX\采集数据失败\}

//采集B通道数据到byDataB数据中

rc=lcDataAcquisition(m_hExperiment,byDataB,0,2); if(rc!=0) {

CString str;str.Format(\错误代码:xX\采集数据失败\}

//采集R通道数据到byDataR数据中

rc=lcDataAcquisition(m_hExperiment,byDataR,0,3); if(rc!=0) {

CString str;str.Format(\错误代码:xX\采集数据失败\}

//采集外接相机数据到byDataE数据中

rc=lcDataAcquisition(m_hExperiment,byDataE,0,4); if(rc!=0) {

CString str;str.Format(\错误代码:xX\采集数据失败\}

//将采集到的数据保存到相应的文本文件中FILE *fptxt;

if((fptxt=fopen(\{

MessageBox(\写Data.Txt文件失败!\系统警告\}

fprintf(fptxt,\像元\\tR通道\\tG通道\\tB通道\\t外接通道\\n\{

fprintf(fptxt,\E[i]);

}

fclose(fptxt); MessageBox(\单通道数据采集完成,并将数据保存到Data.txt文件中!\提示 \

//////////////////////////////////////////////////////////// //彩色数据采集

////////////////////////////////////////////////////////////DWOR

Drc;

BYTE byDataColor[2700*3];//存放彩色数据数组

//彩色数据采集,采集彩色数据(三个通道)到byDataColor数据中 //注意三个通道的顺序为:G、B、R

rc=lcDataAcquisition(m_hExperiment,byDataColor, 1,0); if(rc!=0) {

CString str;str.Format(\错误代码:xX\采集数据失败\}

//将采集到的数据保存到一个文本文件FILE *fptxt;

if((fptxt=fopen(\{

MessageBox(\写DataColor.Txt文件失败!\系统警告\return; }

fprintf(fptxt,\像元\\tR通道\\tG通道\\tB通道\\n\{

fprintf(fptxt,\Color[i+2700]);

}

fclose(fptxt); MessageBox(\彩色数据采集完成,并将数据保存到DataColor.txt文件中!\提示\

2.4.5 lcLampSwitch函数

声明:

DWORDWINAPI lcLampSwitch(

HANDLE

hExperiment,BYTEnID,

BOOL bPower );

描述:

光源操作函数。

参数:

hExperiment

实验仪的设备句柄;

nIDbPo

光源序号,1-平行光源,2-反射光源;光

wer

源状态,TURE-打开,FALSE-关闭; 返回值:

0 其他 成功

返回错误代码。

示例代码: //平行光源开

lcLampSwitch(m_hExperiment,1,TRUE); //平行光源关

lcLampSwitch(m_hExperiment,1,FALSE); //反射光源开

lcLampSwitch(m_hExperiment,2,TRUE); //反射光源关

lcLampSwitch(m_hExperiment,2,FALSE);

2.4.6 lcMotorSwitch函数

声明:

DWORDWINAPI lcMotorSwitch(

HANDLE

hExperiment,BYTEnID, BOOL bPower );

描述:

电机操作函数。

参数:

hExperiment

实验仪的设备句柄; nIDbPo

电机序号,1-振动电机,2-旋转电机;电

wer

机状态,TURE-打开,FALSE-关闭;

返回值: 0 成功 其他

返回错误代码。

示例代码: //振动电机开

lcMotorSwitch(m_hExperiment,1,TRUE); //振动电机关

lcMotorSwitch (m_hExperiment,1,FALSE); //旋转电机开

lcMotorSwitch(m_hExperiment,2,TRUE); //旋转电机关

lcMotorSwitch (m_hExperiment,2,FALSE); 2.4.7 lcSdkVersion函数

声明:

voidWINAPI

lcSdkVersion (

BYTE*VersionMajor,BYTE*VersionMinor );

描述:

获得实验仪SDK版本信息;

参数:

VersionMajor

主版本号;

VersionMinor

次版本号; 返回值:无示例代

码:

CString strVer,strVer1,strVer2; BYTEVersionMajor,VersionMinor;

//SDK版本

lcSdkVersion(&VersionMajor,&VersionMinor);strVer1.Format(\版本:%d.%d\

//驱动版本

lcDriverVersion(m_hCcdDevice,&VersionMajor,&VersionMinor);strVer2.Format(\驱动版本:%d.%d\strVer=strVer1+\ssageBox(strVer,\版本信息\2.4.8 lcDriverVersion函数

声明:

voidWINAPIlcDriverVersion (

HANDLE

hExperiment,BYTE*VersionMajor,

BYTE*VersionMinor ); 描述:

获得实验仪驱动程序版本信息;

参数:

hExperiment

实验仪的设备句柄;

VersionMajor

主版本号;

VersionMinor

次版本号;

返回值:无示例代

码:

请参考lcSdkVersion函数示例代码 3. 参数设置项目宏定义

#define CCD_INTEGRAL 1 //CCD积分时间 #define CCD_PIXELS 2 //CCD像素数 #define BIN_THRESHOLD 3 //二值化阈值电平设置 描述:

这些定义代表参数设置的项目,在函数lcSetCCDParam中被使用;

4. 数据存储格式

数据采集函数lcDataAcquisition调用成功后将采集到的数据存放到指定的内存空间中,具体数据存储格式如下:

4.1单通道数据采集数据格式

单通道数据采集数据格式是指利用线阵CCD 应用开发实验仪的任意单色阵列或外接 CCD 相机进行数据采集时的数据格式,格式如表FB4-3所示。

表FB4-3单通道数据采集系统的数据格式

偏移地址 数据区 数据类型

0 像元1 BYTE 1 像元2 BYTE 2 像元3 BYTE 3 像元4 BYTE 4 像元5 BYTE 5 像元6 BYTE 6 像元7 BYTE 4.2彩色数据(RGB三通道)采集数据格式

线阵CCD应用开发实验仪在扫描彩色图像实验中必须采用R、G、B三通道方式的数 据采集系统,其数据格式应为如表FB4-4所示。

表FB4-4三通道数据采集系统的数据格式

偏移地址 0 G通 1 G通 道 像元 2 2701 B通道 像元2 5401 R通道 像元2 BYTE 2 G通 道 像元 3 2702 B通道 像元3 5402 R通道 像元3 BYTE 3 G通 道 像元 4 2703 B通道 像元4 5403 R通道 像元4 BYTE 4 G通 道 像元 5 2704 B通道 像元5 5404 R通道 像元5 BYTE …… 2699 G通 道 数据区 道 像元 1 …… 像元 2700 5399 B通道 像元2700 8099 R通道 像元2700 BYTE 偏移地址 数据区 偏移地址 数据区 数据类型 2700 B通道 像元1 5400 R通道 像元1 BYTE …… …… …… ……

本文来源:https://www.bwwdw.com/article/b3ur.html

Top