杨志丹
(海装天津局,北京,100076)
光电检测技术广泛应用在精确角度测量设备中,在对某型测角设备控制软件测试中发现,设备测试状态下电零位应显示0″,误差应该在±2″范围内,但实际使用中有时出现±6″的变化,超出了正常的零位变化范围。本文对该问题进行了分析和解决。
该光电检测设备的测角工作原理见图1。
狭缝在物镜焦面上,光源发出的光汇聚在狭缝上,经立方镜并通过主物镜变成一束平行光。如果平面反光镜法线与物镜主光轴平行,平行光经反光镜原路返回会聚在物镜焦点X0处。此时采集CCD的像素位置,作为设备的电零位。当平面反光镜偏转一个角度A时,平行光返回后会聚在物镜焦面XL上。
根据光学原理,在A角较小时可采用公式(1):
如果我们精确地测量出此时光斑在CCD上的位置XL,就可以计数出偏移量L,从而根据公式(1)计算出反光镜的偏转角A,实现测角功能。
CCD(Charge Coupled Device)又称为电荷耦合器件,是在半导体材料上精确刻度了光敏感像素,两两相邻的像素具有相同的间距,象一把直尺上的刻线。每个像素都是一个光电敏感部件,它能将接收的光能量转换成相应的电荷并存贮。在转移时钟的驱动下,CCD按照像素的排列顺序依次输出每个像素上存贮的电荷。所以CCD具有光电转换、存贮和光电扫描的功能。可以根据每个像素输出的信号,确定光斑在CCD上的像素位置。在使用时,要给它提供严格同步的时钟驱动信号。
通过配置CPU的管脚输出场同步信号、主时钟信号,主时钟信号通过计数器分频后,得到CCD时钟信号。A/D时钟信号是通过分频后得到的,与CCD时钟严格同步。A/D转换器设计成自动转换模式,通过A/D时钟触发,转换后的A/D数据自动输出。A/D时钟和A/D数据与CCD驱动时钟是对应关系。
通过分析和试验验证,确认是在程序初始化过程中,软硬件的不协调性造成测角软件零位不一致。
通过认真分析硬件测角电路,在初始化过程中,主时钟信号在复位后为输入状态,可造成计数器芯片的CLK口状态的不确定性,且只发现设备加电后会偶然出现零位发生变化,而在随后的测试过程中测角数据稳定,没有其它异常现象,可以排除测角电路故障的可能性;
通过笔录仪监测各个时钟信号,发现在软件启动主时钟信号时钟前,若计数器的CLK管脚没有异常变化,CCD测角零位正常;若计数器的CLK管脚有跳变,CCD测角零位变化约6″左右。
涉及CCD测角的软件模块共两个:一个是初始化模块;一个是读CCD信号模块。
初始化模块涉及CCD部分的流程。设备开机或软件复位后,首先置IOPC7管脚低电平,使计数器复位,即计数器所有输出管脚均为低电平状态。其次,配置场同步信号和主时钟信号管脚为输出可编程脉宽调制管脚,并使二者同步输出,设置CPU内部计数器T1、T2,使计数器周期和相位满足要求。最后,同时启动计数器T1、T2开始计数,并对应选通场同步信号和主时钟信号的输出,给外部CCD芯片提供驱动时钟。
读CCD信号模块的流程。软件首先检测场同步信号的下降沿,之后按照A/D时钟的速率,以严格的程序执行时间来读取A/D转换的数据,像素计数器记录对应于A/D转换结果的CCD像素位置。读CCD信号模块实现的时序如图7所示。图中软件读数据时序(D0、D1、……,S1、S2、……S1024)与CCD信号输出是一一对应的。
图7 读CCD信号时序
2.3.1 实现CCD测角的步骤
a.在软件中配置时钟管脚,同步启动两个时钟信号(场同步和主时钟);
b.主时钟信号通过硬件电路分频后得到CCD时钟和A/D时钟;
c.在软件中检测场同步信号,并依次读取A/D转换结果;
d.根据光斑在CCD像素上的成像位置,换算出角度数据。
2.3.2 导致测角零位变化的原因
a.CPU上电或复位后,其所有I/O口均被复位成输入口。
b.当主时钟信号口未被配置成输出口时,对于主时钟信号线上连接的CPU、计数器和反相器三个芯片的相应管脚,均为输入管脚,该信号线上的状态实际上是不确定的;
c.由软件初始化模块流程可知,在主时钟信号口被配置成输出口前,计数器已经被复位,所有输出均为低电平状态;
d.在主时钟信号口被配置成输出口前,如果主时钟信号线上有高低电平的变化,则计数器的分频输出管脚将不再是全零状态,即使之后同时启动场同步信号和计数器,实际上得到的场同步信号和CCD时钟信号将不能严格同步;
e.场同步与CCD时钟的相位变化如图8所示,而软件读CCD信号模块仍按照CCD信号模块的读流程读取A/D结果,导致实际读取的像素数据与软件计数器中记录的结果不一致,即如图8所示,软件中读取的D0数据,实际上已是D1的数据,这样导致软件计算得到的光斑像素位置与实际情况有差别;
图8 场同步与CCD时钟的相位变化
f.从图2中可以看到,每个CCD时钟信号的跳变沿,CCD器件对应输出一个像素信号,而场同步信号的高电平脉宽与CCD时钟沿跳变周期相同(两倍于主时钟周期),故场同步信号与CCD时钟信号相位相差最多1个主时钟周期。故CCD测角零位的变化为一个像素,而一个像素对应的角度值一般在6″左右,所以测角零位变化在6″左右。
如上所述,造成零位变化的原因是场同步信号和CCD时钟信号不能严格同步,为使场同步信号和CCD时钟信号严格同步,可采取两种措施:
a.对软件的初始化部分进行调整,在复位计数器芯片前先将计数器管脚设置成输出口,确保计数器的CLK口处于确定状态;
b.在计数器管脚与电源+5V之间连接一个10KΩ的上拉电阻,使计数器管脚在有信号输出之前,始终为高电平, 确保计数器的CLK管脚处于高电平状态。
经分析和比较,选择了上述的a条的方法,对软件的初始化部分进行了调整,并对更改后的软件进行了多次测试,通过笔录仪对时钟信号进行了监测,未再出现测角零位变化的现象,证明软件更改是有效的。
[1] 徐家骅,工程光学基础,北京: 机械工业出版社,1988
[2] 《TOSHIBA CCD Linear Image Sense CCD TCD132D》1997 TOSHIBA Semiconductor
[3] 王庆有等著《CCD应用技术》天津大学精仪系 1992
[4] 《TMS320F/C240 DSP Controllers Refernce Guide Peripheral Library and Specific Devices》1999 TEXAS INSTRUMENTS
[5] 冯克诚、刘景生。红外光学系统,北京:兵器工业出版社,1994