线性CCD: TL1401模块测试
使用一个六芯扁平电路连接CCD, 产生对应的控制信号,同时对CCD 输出的模拟信号进行采集。设置 单片机 ADC 的采集时间为 28.5 周期,此时可以看到线性CCD输出信号中包括有前面的黑色塑料管。读取 内部采集到的ADC 数据, 可以看到除了第一个 数据之外, 其他的128 可数据反应了前面光线的强度。设置 TIM1 输出 100kHz 的PWM 信号, 作为 CCD 的时钟信号。利用A
01 TL1401模块
一、前言
这是一个 TL1401线性CCD, 具有 128个单线像素。 下面初步测试一下这个传感器的特性。
二、测试电路
设计一个基于STM32F103单片机的测试电路板。 使用一个六芯扁平电路连接CCD, 产生对应的控制信号, 同时对CCD 输出的模拟信号进行采集。 制作单面PCB, 一分钟之后得到电路板, 焊接电路板, 准备后面的测试。
AD\Test\2024\September\DMAPingPong.SchDoc
▲ 图1.2.1 测试电路原理图
▲ 图1.2.2 测试PCB
三、软件调试
使用 CubeMX 产生程序框架。 设置 TIM1 输出 100kHz 的PWM 信号, 作为 CCD 的时钟信号。 测试这个CLK信号。 可以看到它为100kHz,占空比为 50% 的 方波时钟信号。
下面每隔25ms 发送一个 SI 信号, 也就是 CCD 的启动信号。 同时测量 CCD 的模拟输出信号以及 SI 信号。 上面是 SI 信号, 下面是 CCD 输出信号。 时钟频率为 100kHz, 所以 128个数据信号输出对应 1.28ms。 用手遮挡 CCD镜头, 可以看到输出信号的幅度随之改变。 这说明输出信号的确是对外部光线的反应。
将 CCD 的 模拟输出接入 单片机的 ADC。 在CCD前面放置一个白色背景 , CCD输出为均匀的高电平。 在前面放置一个黑色的塑料管, 可以看到CCD输出低电平位置反应了 塑料管的位置。
四、采集数据
设置 单片机 ADC 的采集时间为 28.5个时钟 周期, 此时可以看到线性CCD输出信号中包括有前面的黑色塑料管。 读取 内部采集到的ADC 数据, 可以看到除了第一个 数据之外, 其他的128 个数据反应了前面光线的强度。
▲ 图1.4.1 ADC 采集后的数据
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2024-09-06
#
# Note:
#============================================================
from headm import *
from tsmodule.tsstm32 import *
stm32cmd("CLEAR")
stm32cmd("ccd")
time.sleep(.5)
stm32cmd("COPY")
strall = clipboard.paste().split('\r\n')
printf(strall)
data = [int(s) for s in strall[1].split(' ') if len(s) > 0]
plt.plot(data, lw=3)
plt.xlabel("N")
plt.ylabel("Value")
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
TL1401线性CCD
※ 总 结 ※
本文对于 TL1401模块进行了初步测试, 通过单片机的PWM信号提供单片机时钟信号。 利用ADC采集 CCD的输出信号, 可以获得 128个采集数据, 反应了镜头前的图像光线强度变化。
● 相关图表链接:
更多推荐
所有评论(0)