
在本文中,我想介绍一下使用线性CCD光电探测器的经验。 这种CCD生产线可用于临时光谱仪,条形码读取器,激光束位置或偏差传感器,照片或胶片扫描仪等的设计中。 就我而言,那是一台激光扫描仪,在网络上我无法描述。
什么是电荷耦合器件?通常,当谈到CCD时,它们指的是各种光电探测器。 不太常见的是存储设备:移位寄存器,延迟线。 从本质上讲,该器件让人想起圆柱磁域上的存储,仅让人想起硅上的存储-在由电极系统产生的电场的行波的帮助下,以某种方式形成于其中的成簇的电荷载流子更早地穿过半导体。 因此,我们得到了一种移位寄存器,该移位寄存器具有非常简单的结构,不仅能够存储数字单元和零的序列,而且还能够存储模拟信号。
在CCD图像接收器中,正是这种结构的这种能力被用来顺序地导出在该结构的每个像素下累积的电荷。 此外,用于在曝光过程中移动电荷的同一栅极系统会形成势阱,在这些势阱中会积累这些电荷(或在结构形成期间产生这些空穴-与MOS晶体管的内置沟道和感应沟道类似)。 更复杂的结构包括电阻门,沿着该电阻门形成平滑的电势斜率(这就是Hamamatsu S11155 CCD线的布置方式),以及电荷积累和转移区的分离-整条线的积累电荷首先转移到缓冲线,然后前进沿着最后一个出口退出。
内部结构的简单性转化为管理它的复杂性。 即使是最简单的CCD线,也需要生成形状复杂的两相或三相信号,这些信号具有不同的电压电平且具有陡峭的边缘(具有1000 pF或更高的高输入电容),并且彼此相对移动。 滨松S11155型标尺需要多达八个不同的信号,在零的两侧具有不同的高低压电平。
幸运的是,一些公司(例如,索尼)发布了一条生产线,其中所有这些复杂性都直接在芯片上形成。 对于他们的工作,您只需要生成两个信号即可:曝光期间打开电子快门和时钟。 在我们的设计中,这正是ILX554系列:(通常,使用但功能齐全)在Aliexpress上很容易从中文购买。
让我们看一下数据表而且我们看到,该盒的22个引脚中只有6个引脚涉及到这些引脚,这些引脚是+ 5V电源,ROG和CLK输入信号,Vout输出信号,SHSW模式选择输入和地。 仅此而已。
ROG是电子快门控制(以及从感光线到直接移位寄存器的电荷转移的开始)。 他的活动水平为零。 要暴露矩阵,必须将其压至零并保持必要的时间-从5μs到几秒钟。 然后放开,等待至少3μs(在此期间,电荷转移电路会工作)。 所有这些时间,在CLK的入口处,我们一直保持高电平。 然后,您可以读取这条线,并向CLK输入施加频率从几十千赫兹到2 MHz的曲折。 在这种情况下,在每个从零到零的差异处,下一个像素将被推送到输出。 阵容中有2088个这样的像素,其中2048个在工作,都是感光的(实际上,还有几个,但最外面的像素被部分遮盖了)。 Datashit建议将至少2090个CLK脉冲施加到矩阵以正确操作。
以及如何推动它取决于SHSW输入的内容。 如果它是一个逻辑单元,那么输出将产生一个相当复杂的信号:
此外,当CLK从零变为1时,将发生复位,并且从CLK变为零时,将发出有用的信号。
在SHSW输入处为零时,内置采样存储电路将打开,这会将信号简化为简单的分步视频信号,其中在每次CLK到零的每次新跃迁时,下一个像素的信号电平都会简单出现并在CLK信号的整个周期内保持不变。
输出信号的有用范围来自某个暗电平,根据数据手册,该暗电平为2.85 V,但实际上它可以有所不同(在我的行中为大约3 V),并且在饱和时,输出信号电平会降至1.5-2 B.
通常,这是我们需要了解的所有信息。
包含电路简单明了。 我们使用MK以编程方式生成CLK和ROG信号,并且输入端的施密特触发器是从3.3 V切换到5 V的最简单方法。事实是,线路中的这些线路中没有缓冲器,并且矩阵电路能够正常工作您需要向他们提交从0伏到5伏的满量程和正面陡峭的曲折。 图中所示的NC7SZ14M5X是非常方便的单施密特反相触发器,具有陡峭的前端和增加的负载能力,我在项目中经常使用它们。
使用DA1,来自阵容的视频信号电平“加速”到ADC工作的范围,同时消除了对应于饱和电平的大约1.5 V的“标准”。 由于信号幅度和“标准”值之间的差异在不同的CCD阵列之间变化很大,因此应通过将输出信号“放置”在所需范围内来选择电阻R1和R3。 应当记住,不仅位移而且增益取决于电阻R1,因此必须首先选择它。
L1和L2是铁氧体磁珠或小扼流圈,适用于1-2μG的尺寸为0805或0603的框架。电阻和电容器的尺寸相同。 通过表面安装将电路组装在双面板上。 我不带电路板布局,因为上面还有很多东西。
在MK上的软件实现MK的任务是生成所需时间的高电平ROG信号(不要忘记逆变器!),然后短暂的(3-10μs)暂停,然后产生一系列2090个高电平脉冲,各脉冲之间的持续时间相等。 在这些脉冲(或暂停)期间,在前面之后的某个时间,使用板载或外部ADC获取像素照明值。 读取帧后,您还必须暂停直到新的ROG脉冲-相同的3-10μs。 接通电源后,事实证明,长时间不使用标尺(超过100毫秒)后,您需要通过向CLK施加一个免费的标准脉冲序列几次来“清洁”它。
在STM32上,明智的做法是在定时器中断时执行所有这些操作。 通过设置定时器以产生与像素频率加倍的频率相对应的中断,我们使每个定时器操作进入一个中断,在该中断中,我们向端口交替输出零或一,而当输出零时,则从ADC读取读数。 在计数2090个周期之后,我们将停止计时器。 要读取下一帧,您需要将循环计数器重置为零,启动计时器并等待直到所有内容都计数完毕。
就像这些代码片段中所示的那样。
bool clkState = false; bool frameOk = true; uint16_t pixCount = 0; uint16_t ccdFrame[2090]; inline uint16_t readADC1(void)
这是结果结果还不错。 尽管内置ADC没有任何特性,但其噪声特性完全对应于CCD线的噪声。 累积时间约为1 ms的暗信号噪声路径的幅度约为3-4量化级别,当使用具有出色特性的外部14位ADC时,结果仅略好。 随着照明的增加,噪声增加的原因很简单:每个像素中的光电子数量不是那么大(根据我的计算,饱和时约为3万个)。 对于最佳设备,此值达到20万。
下图是一个由标尺记录的“图片”的例子,在照亮的墙壁的背景上有一个深色的架子,上面固定有一个直径为1 cm的玻璃空心球,上面装有黑色溶液。 峰值是该球外表面的反射。 明亮区域中的噪声是墙壁本身的结构,并通过激光的斑点增强,从一帧到另一帧,它保持静止。 实际的线路噪声要小得多。
其他类似的线ILX511,ILX551的其他一些2048像素黑白SONY CCD生产线(后者具有不同的引脚排列,并且需要两个电源电压-5和9 V),横向像素尺寸不同(从14到200微米)工作原理完全相同。光谱灵敏度(ILX554A对红色和IR敏感,类似于索引B在IR区域的敏感度降低,并且对眼睛的敏感度接近,而ILX511B对蓝色的敏感度更高)。 它们的动态特性是不同的:由于像素大小小,ILX551B的动态范围达到6000(我们的线以大约10μs的短快门速度达到了该DD)。
* * *
本文讨论也许最容易使用的CCD线的连接。 这种简单性是由于所有复杂性都隐藏在她的内幕之下。 如果不是内置驱动程序,我将不得不生成许多多电平信号。
不幸的是,按照现代标准,这种带有内置驱动器的CCD线并不是最好的特性。 因此,在此行中,动态范围(定义为饱和信号与暗信号的比率)为333:1,并定义为在噪声背景下检测到的饱和信号与最小信号的比率-大约为1000:1。 但是,这样的设备不仅难以使用,而且常常难以访问(由于这些产品的双重用途,同一滨松在购买其CCD阵列和其他光电探测器时也需要繁琐的官僚手续)。 然而,并非总是需要这样的高性能,并且出于许多目的,这些设备的参数是完全可以接受的。