找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17767|回复: 6
收起左侧

快速上手tsl1401线性ccd(编程方法及设计原理与思路)

  [复制链接]
ID:442483 发表于 2018-12-9 01:43 | 显示全部楼层 |阅读模式
讲的比较明了,内容很短但言简意赅

通过阅读本文,可以使你快速地了解线性CCD的工作原理、图像的采集方法以及一些常见问题。本文还将给出线性 CCD的编程方法以及基于亮度反馈的编程思路。
1.  与摄像头CCD 的区别
我们常说的摄像头CCD 模块通常使用的是面阵CCD芯片,一般以OV 系列面阵 CCD 最为常用。而TSL1401属于线性 CCD,也可以叫做线阵CCD。与面阵CCD相比,线性CCD 最明显的特点就是其只能采集一行的可视像素。在智能车竞赛中,摄像头组使用的是面阵 CCD,而光电组则必须使用线性CCD。同样是看一段赛道的图像,两种 CCD模块看到的图像如图 1所示。

0.png

  由图 1 可见,左边图像为面阵 CCD 采集的二维图像,它的分辨率为 m*n,而右侧的图像为线性CCD采集的一维图像,分辨率为p*1。其中 p为线性 CCD器件的最大像素数,TSL1401的像素数为128,因此可以将右图红框内的线分为128 个点。
2.  线性CCD 工作原理
在 TSL1401的官方技术文档中已经详细描述了线性CCD 的工作原理。但是该文档是全英文的,而且讲的大部分内容与实际使用无关。这里笔者将为你简明扼要的解释它的工作原理与要点。
0.png

2.2.  功能描述
TSL1401线性CCD传感器包含 128个线性排列的光电二极管。每个光电二极管都有各自的积分电路,以下我们将此电路统称为像素。每个像素所采集的图像灰度值与它所感知的光强和积分时间成正比。以上名词所对应的物理量纲为:
  灰度值:输出电压 Vout;
  光强:器件对给定光波长在电压上的反应Ve;(Ve=V/(μJ/cm2)* μW/cm2)
  积分时间:即曝光时间,tint。

那么这 128 个像素是怎么进行采集并输出的呢,这就用到了 SI 和 CLK 信号。根据表 1可以简单的了解它们的功能。在 128个像素之外,还有一个开关逻辑控制和移位寄存器电路。SI通过该电路,控制每一个像素的积分和复位操作;CLK 通过该电路控制每一个像素电压的依次输出。TSL1401内部的模块图如图 2所示。

0.png

图中可以看到上面提到的像素电路、开关逻辑控制和位移寄存器电路。从图中我们还可以看到一个Gain  Trim,该模块对传感器输出的电压进行增益调整,因此从AO引脚输出的电压无需再接其他运放,直接接入单片机的 AD 输入引脚即可。每个像素的值可以在 CLK 的下降沿时从AO采集。
3.  积分时间or 曝光时间
如果你阅读了 TSL1401 的英文技术文档,经常会看到积分(integration)这个词,而上一节我们也说了,像素的输出值与积分时间成正比,其实这里所说的积分时间就是我们熟知的曝光时间。这个曝光时间的概念和相机中胶片的曝光时间是一样的。曝光时间是指底片的感光时间,曝光时间越长底片上生成的相片越亮,相反越暗。线性CCD的曝光时间也是这个原理。
0.png
  TSL1401技术文档中关于积分时间做了大量说明,其实归根结底可以由图 3表示。图中第19个CLK到下一个SI开始的这段时间,就是CCD 的积分时间,即曝光时间。之前的18个CLK的时间为积分器的复位时间。
小提示:在每个SI信号之后采集到的像素均是这个SI 信号之前所曝光得到的图像。 如果用户提供的CLK频率足够快(最大8MHz),那么前 18个CLK的时间可以忽略不计,TSL1401 的曝光时间可以近似为两个 SI 信号的间隔时间。而一般情况下,即使 CLK 频率为8MHz,单片机的AD转换时间也达不到那么快。

3.2.  关于曝光时间长短讨论
根据 TSL1401 技术文档的提供的数据,该器件的最大曝光时间为 100ms,即无论你实际曝光多长时间,只要超过 100ms,其图像效果和100ms是一样的。那么如何选择合适的曝光时间,就成了需要面对的问题。

即使是相同的物体,在不同的光线环境下得到的图像是不一样的。从理论上讲,在光线较暗的环境中,应该增加曝光时间,以换取亮度合适的图像;在光线较强的环境中,应该减少曝光时间,以防止图像出现饱和现象。
但是对于采集变化较快的图像,例如在智能车的应用中,应该避免增加曝光时间。原因有两个:
一、增加曝光时间意味着图像采集周期变长,不利于系统的控制。说白了就是采集周期变长,系统控制的反应能力就变弱;
二、增加曝光时间会使图像变模糊,不利于图像处理。这个道理也和相机一样,相机的快门越快,越适合捕捉高速运动的图像,反之则捕捉的图像很模糊! 当然如果你用来采集变化较慢的图像,或者是静止的图像,则没有曝光时间长短的问题。  
4.  常用的编程方法
由于线性CCD只需采集 1行像素即可,因此它的编程方法相比面阵CCD更为简单,唯一需要处理好的就是曝光时间的长短以及阈值的选择。

常用的曝光方法有两种,分别是单次曝光法和连续曝光法。

4.1.  曝光方法分类
单次曝光法:这种方法适用于采集周期不固定的情况,即首先利用一个 SI 周期来曝光CCD,紧接着在下一个 SI 周期对 128 个像素进行依次采集。在前一个SI 周期内,必须输出129 个 CLK 以丢弃没用的 AO 输出,曝光结束后的第二个 SI 周期内采集的 AO 输出才是正确的。
该方法需要在两个 SI 信号之间添加延时函数来控制曝光时间。缺点是占用 CPU 运行时间来进行曝光,即在曝光期间内 CPU只能处于等待状态。 连续曝光法:该方法的采集原理与单次法相同,只不过该方法利用单片机的周期定时器来控制SI 信号的间隔,即曝光时间。该法通过设置单片机 PIT 的中断周期时间来获取不同的曝光时间,并在PIT中断函数内进行 AO 的数据采集。 相比单次采集法,连续采集法可以节约 CPU时间,利用 PIT周期中断定时器实现曝光延时。

4.2.  像素采集方法
不管采用哪种曝光方法,其针对像素输出值 AO 的采集方法是一样的,如图 4 所示。使用者需要在SI持续高电平 20ns后产生第1个 CLK信号,并在每个 CLK信号的下降沿时采集AO 引脚的输出的电压值。在采集了 128 个像素后,还必须生成第 129 个 CLK 以结束本次采集。在第129个 CLK之后到下一个 SI信号之间的时间就是下次采集的曝光时间(这里说的曝光时间是忽略了第19到129个CLK之间的时间) 。

完整的pdf格式文档51黑下载地址(共8页):
快速上手tsl1401线性ccd.pdf (485.42 KB, 下载次数: 288)
回复

使用道具 举报

ID:397649 发表于 2019-6-4 23:56 | 显示全部楼层
谢谢。。
回复

使用道具 举报

ID:93667 发表于 2019-9-11 15:07 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:619842 发表于 2019-10-6 20:43 | 显示全部楼层
有双线性ccd
的代码吗,想搞一个
回复

使用道具 举报

ID:744623 发表于 2020-5-5 16:29 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:376882 发表于 2020-6-26 14:29 | 显示全部楼层
致谢!
回复

使用道具 举报

ID:1113265 发表于 2024-3-17 20:45 | 显示全部楼层
有点不理解为啥每次得出其中一个像素的电压值要读取128个像素点的电压值,有人能解答一下么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表