目录
1、面阵CCD与线性CCD
我们常说的摄像头CCD模块通常使用的是面阵CCD芯片,一般以OV系列面阵CCD最为常用。而TSL1401属于线性CCD,也可以叫做线阵CCD。与面阵CCD相比,线性CCD最明显的特点就是其只能采集一行的可视像素。在智能车竞赛中,摄像头组使用的是面阵CCD,而光电组则必须使用线性 CCD。
由上图可以看出:
左边图像为面阵 CCD 采集的二维图像,它的分辨率为 m*n,
右侧的图像为线性CCD 采集的一维图像,分辨率为P*1。P为线性CCD器件的最大像素数,TSL1401的像素数为 128,因此可以将右图红框内的线分为 128 个点。
2、镜头相关知识
SL1401CL 来说,一般市面上卖的镜头有三种,分别是57°、90°、120°,区别如下:
总结:度数越大,看得越宽
3、TSL1401 CCD描述
TSL1401线性CCD传感器包含128个线性排列的光电二极管。每个光电二极管都有各自的积分电路(由相关的电荷放大器电路和一个内部的像素数据保持功能组成),以下我们将此电路统称为像素。总共128个像素,其中每一个具有光敏面积3,524.3平方微米。像素之间的间隔是8微米。每个像素所采集的图像灰度值与它所感知的光强和积分时间成正比。
·灰度值:输出电压 Vout;
·光强:器件对给定光波长在电压上的反应 Ve;(Ve=V/(μJ/cm2)* μW/cm2)
·积分时间:即曝光时间,tint。(指底片的感光时间,曝光时间越长底片上生成的相片越亮,相反越暗)
对128个像素的采集并输出就用到了SI和CLK信号,在128个像素之外,还有一个开关逻辑控制和移位寄存器电路。SI通过该电路,控制每一个像素的积分和复位操作;CLK 通过该电路控制每一个像素电压的依次输出。
4、线性TSL1401 CCD特点
实物图:
5、CCD引脚功能
6、内部电路图
图中可以看到上面提到的像素电路、开关逻辑控制和位移寄存器电路。还可以看到一个 Gain Trim,该模块对传感器输出的电压进行增益调整,因此从AO引脚输出的电压无需再接其他运放,直接接入单片机的AD输入引脚即可。每个像素的值可以在CLK的下降沿时从AO采集。
7、时序图及曝光时间
图中第 19个CLK到下一个SI开始的这段时间,就是CCD的积分时间,即曝光时间。之前的18个CLK的时间为积分器的复位时间。
注意:在每个 SI 信号之后采集到的像素均是这个 SI 信号之前所曝光得到的图像,并且在采集了 128 个像素后,还必须生成第 129 个 CLK 以结束本次采集。
8、曝光分类
8.1、单次曝光法
该方法需要在两个 SI 信号之间添加延时函数来控制曝光时间。缺点是占用 CPU 运行时间来进行曝光,即在曝光期间内CPU只能处于等待状态。
8.2、连续曝光法
该方法的采集原理与单次法相同,只不过该方法利用定时器来控制SI信号的间隔,即曝光时间。主要通过设置定时器中断周期时间来获取不同的曝光时间,并在定时器中断函数内进行AO的数据采集。
相比单次采集法,连续采集法可以节约CPU时间,利用定时器中断实现曝光延时。
9、像素采集方法
像素采集方法是使用者在SI持续高电平20ns后产生第1个CLK信号,并在每个CLK信号的下降沿时采集AO引脚的输出的电压值。在采集了128个像素后,还必须生成第129个CLK以结束本次采集。在第129个CLK之后到下一个SI信号之间的时间就是下次采集的曝光时间(这里说的曝光时间是忽略了第19到129个CLK之间的时间)。
10、代码实现
void RD_TSL(void)
{
u8 i=0,tslp=0;
TSL_CLK=1; //设置为高电平,也就是设置曝光时间
TSL_SI=0;
Dly_us(TIME_us);
TSL_SI=1;
TSL_CLK=0;
Dly_us(TIME_us);
TSL_CLK=1;
TSL_SI=0;
Dly_us(TIME_us);
for(i=0;i<128;i++)
{
TSL_CLK=0;
Dly_us(TIME_us); //调节曝光时间
//将读取到的电压值存入数组
ccd_adc[tslp]=(u8)((float)Get_Adc(ADC_Channel_1)/4096*255);
++tslp;
TSL_CLK=1;
Dly_us(TIME_us);
}
}