
TCD1304线性相机图像传感器模块
简介
TCD1304是包含3648有效像素的线性图像传感器。本模块实现TCD1304的CCD驱动和图像显示,预留传感器端口,三个反相器和六个单片机端口,方便后续调试开发拓展,此外作者还开发了配套上位机。
简介:TCD1304是包含3648有效像素的线性图像传感器。本模块实现TCD1304的CCD驱动和图像显示,预留传感器端口,三个反相器和六个单片机端口,方便后续调试开发拓展,此外作者还开发了配套上位机。开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
项目简介
线性图像传感器可以将光学信号转为模拟电信号,通常用于光学测量分析仪器仪表中。本项目实现了对TCD1304线性图像CCD传感器的驱动以及线性图像数据的循环读取并通过TTL连续发送,串口读取的数据进行处理和显示在LabVIEW上位机上。
项目功能
本设计是基于AI8H2K12U单片机设计的TCD1304线性相机图像传感器模块,实现了以下功能:
- 单片机产生三种不同频率的方波信号驱动传感器的M,SH和ICG端口;
- 单片机配置12位ADC转换器读取传感器OS模拟输出信号;
- 单片机读取模拟信号数据通过TTL传输至上位机;
- 预留传感器端口,富余的反相器和单片机端口;
- 上位机对实时传输的数据进行处理,分析和显示。
项目参数
- 本设计采用AI8H2K12U作为主控芯片;
- 本设计可驱动TCD1304(DG或AP均可)CCD传感器输出信号;
- 本设计采用74HC04D芯片作为反相器(六路);
- 本设计采用A1015三极管对传感器输出信号OS进行放大限压;
- 本设计电路原理图参照传感器手册。
原理解析(硬件说明)
TCD1304参考设计电路如下图所示,根据参考电路原理图,依次讲解各个部分。

传感器的引脚(ICG,M,SH,OS)引出接线至6PIN排针,方便用示波器探针监测输入输出波形或将传感器直接接入其他嵌入式板子中,A1015将OS输出电压进行放大和限制,以便单片机ADC端口进行读取模拟信号值。

反相器用于将单片机的输出信号反相和稳定,富余的三组反相接口通过6PIN排针引出,方便后续调试使用电平反相。

单片机使用SOP-16引脚的STC单片机,模块中实际使用12个引脚,剩余的6个引脚可当做6个GPIO使用,此外将三组+5V和GND引脚再用6PIN排针引出方便后续调试开发新功能,甚至可以当做开发板使用。

下图是传感器的三个PWM信号(SH,ICG,M)输入要求和模拟信号输出(OS)的数据结构,因此,我们通过单片机输出三种PWM信号至传感器,即可得到传感器输出的线性图像数据。
- SH信号是用来调整积分时间,通俗点说就是曝光时间,SH信号周期越长,图像越容易饱和;
- ICG信号是电子快门开启信号,当输入至传感器的ICG信号由低电平转变为高电平时,则触发线性图像数据通过OS端口以模拟信号形式输出,这时候通过ADC端口即可读取对应的模拟信号即为线相机图像传感器输出的数据。
- M信号是主时钟信号,用于驱动传感器控制模拟信号输出的快慢,四个周期为一个元素的输出时间,根据传感器手册说明,M信号需要是ADC采样信号的四倍关系;
- OS信号从ICG信号上升沿开始输出对应模拟电压信号,当检测到光照强度越强,对应模拟电压信号越低。图像数据输出完毕后恢复高电平,等待下一次ICG信号上升沿开始,继续输出下一次的图像数据。

再次放大这三个PWM信号,可进一步明确这三个信号之间的时长关系。后续在示波器上监测输入传感器的三个PWM信号波形时,我们再根据要求调整对应PWM波形输出。

本项目模块用的是+5V直流电源供电,因此主时钟M信号在0.8 ~ 4MHz均可,对应OS信号数据输出频率在200KPS ~ 1000KPS。

软件代码
Keil下位机编程:
下位机使用KEIL编程,主要内容包含看门狗和UART的配置,M、SH和ICG信号的配置和ADC采样配置,配置完之后进入到while循环执行喂狗,ADC采样和采样数据的发送。

其中看门狗用于单片机在长时间采集或信号输入异常导致的可能程序跑飞时自动复位,配置看门狗信息就一句话:

之后在while循环中喂狗也同样是一句话:
根据单片机手册对应的WDT_CONTR寄存器配置对应值即可完成设置和使能。
接下来要对CCD传感器进行编程驱动并输出图像数据,把这件事分成多件小事依次解决。经过分析,由易到难依次解决五个问题:
-
M主时钟信号的配置输出:
在原理图中,单片机M输出信号端口为P54,P54具有主频信号分频输出MCLKO功能,因此,我们只要简单的配置主频的分频,即可输出指定频率的M信号,这里单片机的IRC频率为24MHz,因此经过24分频得到了传感器M信号的输入频率为1MHz,如下所示:

-
SH积分时间信号的配置输出:
在原理图中,单片机SH输出信号端口为P13,对应的是T2CLKO功能,也就是定时器2的PWM输出,可配置周期来配置不同的PWM波形SH信号,进而可调整传感器的积分时间。下面初始化配置根据单片机例程修改而来,可根据需要再修改对应寄存器配置值:

之后进入main程序初始化对应值。

-
ICG电子快门信号的配置输出:(这里交换了P1.0和P1.1管脚)
ICG信号就需要输入指定周期和占空比的信号,因此用到高级PWM信号输出,因为原ICG管脚物理连接在P1.1,但是可以通过烧录时软件重新映射交换P1.0和P1.1管脚,这里ICG管脚配置为PWMA_1P,这里注意的是,由于单片机输出的信号要经过反相器,因此占空比输出设定高电平的时间对应传感器实际ICG信号输入的低电平时间:

之后进入main程序初始化周期和占空比的值。

-
OS图像数据模拟信号的配置ADC采集:
配置ADC对应管脚为高阻输入,此时交换管脚后应配置P1.1端口为高阻输入,配置采样速率250KPS,这里可通过STC-ISP烧录软件生成对应的配置代码:


之后进入main程序初始化执行ADC配置。

-
图像数据的处理与发送:
首先进行串口通信配置,通信参数115200,N,8,1:

之后进入main程序初始化执行UART配置。

进入到主循环后依次进行喂狗,ADC采集转换,采集缓存数据发送:
(由于单片机xdata只有2.2KB左右[完整图像数据要求xdata至少8kb,本项目单片机不满足,复刻时注意这个问题],不能一次性将所有像素点采集保存输出,所以这里每采集一次ADC模拟信号,就将ADC缓存对应的高位和低位数据通过串口发送,但串口发送需要几十us的时间,导致实际采集的数据会抽样采集像素数据,实际效果可查看上位机的原始采集波形图,如果你有什么好的解决办法欢迎留言讨论)

编程烧录时,按照以下设置进行,尤其注意箭头对应的设置项:

烧录完成后,用逻辑分析仪或示波器观察M,SH,ICG,OS对应的波形:
(由于作者用的是逻辑分析仪,只能监测高低电平,因此OS模拟信号监测不正常,但也可以发现OS信号有输出)
观察模块有对应信号输入输出,此时通过TTL转USB连接电脑USB串口监测数据,如下图:
(STC烧录器本身就可充当TTL转USB模块使用)
LabVIEW上位机编程:
本模块输出的TTL经过TTL转USB连接至电脑,通过串口采集原始采集波形,并进行LabVIEW处理显示,如下图所示:

将原始采集数据进行切分成多个单波形,并进行插值合成为合成波形,可大致反映出线相机图像传感器的完整数据。
注意事项
- 在烧录时候选择IRC频率为24MHz,交换P1.0和P1.1管脚;
- 可调整KEIL中不同信号的参数,重新烧录,再重新在上位机观察原始波形,以实现最佳的信号输出显示效果;
- LabVIEW需安装2016版本及以上且安装了NI-VISA模块才能正常运行上位机程序。
- 单片机芯片也可支持USB信号直接输出,本模块对应的TXD和RXD分别为D+和D-,需要参照单片机手册另外编程USB-CDC逻辑。
组装流程
模块PCB正面未焊接图如下,首先进行正面的单片机,反相器,三极管,电阻电容的贴片焊接,可用热风枪加锡膏完成:

模块PCB背面未焊接图如下将排针,电容,传感器插好后,用电烙铁加焊锡丝依次焊接即可,注意传感器焊接先焊四个角固定,再焊其他管脚;电容放平后再焊接:

焊接完成后别着急通电烧录,先用万用表检查是否有短路,焊接是否牢靠等问题。
实物图
焊接好的实物图如下图所示:

涉及的下位机和上位机程序均已附在附件,注意下载解压后使用。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










