智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 92841|回复: 241
打印 上一主题 下一主题

蓝宙电子线性CCD资料完全开源(官方)

    [复制链接]

141

主题

8906

帖子

6

精华

杰出人士

蓝宙电子科技有限公司

Rank: 12Rank: 12Rank: 12

积分
18725
QQ
威望
5859
贡献
5686
兑换币
3557
注册时间
2008-8-1
在线时间
3590 小时
跳转到指定楼层
1#
发表于 2012-12-7 21:37:53 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 bydes 于 2012-12-7 21:43 编辑

    为了感谢广大智能车学生的支持,蓝宙电子科技有限公司现在将我们之前总结的一些经验和调试程序资料完全公开,供广大学生参考学习!其中包括蓝宙电子官方线性CCD使用说明书、蓝宙电子线性CCD研发应用笔记、XS128驱动程序(线性CCD)、MK60驱动程序(线性CCD)、上位机调试软件等

以下为蓝宙电子线性CCD调试应用笔记内容:


蓝宙TSL1401 线性CCD应用笔记
本文对第八届飞思卡尔智能车竞赛指定用线性 CCD 使用相关经验跟大家分享一下,
本文不再讲述线性CCD基本原理,基本原理大家可阅读芯片手册,本文重点介绍使用线
性CCD时需要考虑的一些问题及注意事项,并给出了参考解决方案。旨在让大家更有效
地使用和深入研究TSL1401线性CCD模块。
环境光影响问题
试验表明TSL1401 线性CCD 的输出信号和环境光线密切相关,在自然光条件比晚上
灯光下AO 引脚输出电压值高出很多,正对着光线比背着光线输出电压高,白炽灯光下
比日光灯下输出电压高。因此,同一参数(曝光时间、镜头光圈)难以适应各种环境,
在光线较弱环境下的参数在强光下会出现输出饱和,在较强光线下调节好的参数在弱光
下输出电压过低,甚至处于截止状态。在智能车应用中,白天自然光环境和晚上灯光环
境、正对光和背光、不同的比赛场地之间都不能采用相同的曝光参数。与输出电压密切
相关的参数是曝光量,曝光量取决于CCD模块所采用的镜头光圈大小和程序所控制的曝
光时间。智能车为适应各种运行环境,必须实时感知环境,并根据环境闭环调节曝光量,
使得在不同环境中曝光量都处于一个合理的范围,这样才能保证在不同环境中CCD输出
电压在合理范围,以利于算法提取黑线信息。镜头相关参数一旦选定在智能车运行难以
改变,曝光时间比较容易通过程序控制,因此比较容易实现的调整曝光量方法是通过软
件调整曝光时间。曝光时间调整方法见“曝光时间自适应策略”一章。
输出信号放大
根据上一章所述,可以通过调整曝光时间来适应各种环境,在弱光环境增大曝光时
间,在强光下减小曝光时间。但是曝光时间不能无限增大的,因为增大曝光时间势必降
低采样率(每秒采样次数)采样率低控制周期就长,智能车反应就慢。根据历届摄像头
车参赛经验,1米的前瞻,3.5m/s 的速度情况下,控制周期不得高于20ms(采样率不得
低于50Hz),否则智能车转向机构反应再快也无法很好跟随赛道而冲出赛道。控制周期
不高于20ms就意味着曝光时间不能超过20ms。试验时,我们将TSL1401线性CCD曝光
时间调整到20ms(采用周期20ms),分别在强光、弱光、灯光不同环境进行采用,采
样数据表明环境光线较弱时CCD输出信号较低,以致赛道黑线信息不够明显,晚上日光
灯环境下输出信号电压值更低,几乎接近0,根本无法辨别赛道信息!由于智能车制作
和调试很大部分时间都是在晚上,因此必须在不降低采样率的情况下,增大晚上弱光环
境下线性CCD的输出电压。要增大输出电压,简单有效的方法就是放大输出信号,我们
可以采用运放来放大AO 输出信号。蓝宙电子实践表明增大运放能非常有效的解决弱光
时输出电压低问题,在晚上环境同样能达到50Hz 的采样率,这是无运放的线性CCD 无
法达到的。
为了能保证输出电压在合理范围(不饱和、不截止、能分辨赛道黑线),需要根据选
定的镜头确定运放放大倍数。以下是蓝宙电子线性CCD模块(镜头为无畸变镜头)中的
运放电路图:

其中运放放大倍数A = 1+R5/R4,此电路中A = 11,也就是对TSL1401 的AO信号进行
11倍放大。
由于增加了运放,白天环境下的采样率可以调节到更高,甚至可以达到100Hz。增加
了运放也会带来一个问题,就是在全黑的环境(例如盖上镜头盖)下线性CCD的输出已
经不再接近0V,这里我们称全黑的环境对应的电压为暗电压,蓝宙电子设计的CCD 模
块暗电压是1V 左右。其实暗电压完全不影响上层软件提取赛道黑线,我们可以把这个
暗电压当做信号中的直流分量,将采集的每个像素点的电压减去暗电压就可以了,该方
法已经验证可行,读者也可以实践。
曝光时间自适应策略
如果竞赛环境各个方向的光线均匀一致,我们可以在赛车出发前根据环境光线调节
一个合理的曝光时间,以得到合理的输出,这样赛车就能采用一个固定的曝光时间跑完
全程。但是这是最理想的情况,实际比赛环境远没有假设的这么理想,实际比赛场馆会
有窗户,赛道顶上也可能有灯,因此赛车的前进方向正对窗户和背对窗户不能采用同一
曝光参数,电灯下和里灯较远处也不能采用相同曝光参数。换句话说要想赛车完整跑完
全程需要适时地、动态的调整曝光参数。
以下就蓝宙电子研究的曝光时间自适应策略跟大家做一个介绍,策略示意图如下:


线性 CCD 模块的曝光时间,反馈是线性CCD 感应到的曝光量。调节的目标是设定曝光
量。控制器的工作原理是将设定的曝光量减去实际曝光量,差值即为曝光量的偏差e,
曝光量调节器用Kp 乘以e 再加上上次的曝光时间作为新的曝光时间进行曝光,曝光时
间调整后直接影响实际反馈的曝光量。如此反复进行调节就能达到适应环境光的目的。
需要大家注意的是实际曝光量并不是某一个像素的曝光量,因为单个像素是无法反应环
境光强度的,实际曝光量应该是一段时间和一定像素点强度的函数。蓝宙电子的做法是
取一次采集到的128个像素电压的平均值作为曝光量当量,设定的曝光量也就是设定的
128像素点平均电压。
采用该策略后线性CCD采集到电压值在正常的智能车运行环境中都能保持在合理范
围内。
4、曝光自适应程序流程
蓝宙提供的曝光自适应程序流程如下图所示:

其中主程序20ms执行一次,主要完成CCD采样、计算实际曝光量、计算曝光时间。
采集到的128 像素数据保存在Pixel[128]数组中,实际曝光量当量(128 像素平均电压)
保存在PixelAverageVoltage全局变量中,曝光时间(单位ms)保存在IntegrationTime全
局变量中。

曝光控制中断程序每1ms 执行一次,每次中断将TimerCnt20ms 计数器自加,根据
曝光时间IntegrationTime计算曝光点integration_piont(取值范围2~20),如果曝光点等
于当前计数器则开始曝光,当TimerCnt20ms 等于20时,重置TimerCnt20ms,同时置位
TimerFlag20ms 标志位,通知主程序20ms程序执行。

曝光控制原理实际就是发送一次启动和移位时序,从TSL1401的时序图可看出每128
时钟序列的前18个周期是内部复位(internal reset),这18个周期不仅不曝光,还会将
每个像素积分器电容放电,将积分电压清零,18个周期后的便开始积分。中断程序就是
根据曝光时间在合适的曝光点输出一个内部复位序列。下一个20ms 到达时会进行数据
采样,采集到数据对应的曝光时间就是输出内部复位到下次采样的时间。而上一次20ms
采样到本次输出内部复位信号之间的曝光将在本次曝光时清除,数据没有读取(不进行
AD转换)。



如何提取赛道黑线
采集到的128像素点电压绘制的曲线如下:


减去暗电压带来的直流分量后绘制的曲线如下:
从上面的图像可看出,黑线特征非常明显,可以采用找凹槽算法准确的提取黑线位
置。单行黑线提取算法如下,该算法之前是用于面阵摄像头的,由于线性CCD相当于面
阵摄像头的一行,因此该算法同样适用于线性CCD。该算法并非蓝宙所创,算法原出处
是第二届智能车冠军上海交大参赛队,本人第三届智能车借鉴了该算法,实践证明该算
法提取黑线准确可靠,适应性强。

上位机通信
调节面阵CCD 或CMOS 时可以采用视频采集卡或电视机观看图像信息,或者用来调
节镜头焦距。目前还没有能显示线性传感器图像的采集卡。为了方便用户像调试面阵
CCD一样调试线性传感器,蓝宙电子特意给用户开发了一款调试软件CCDView,单片机
采集传感器数据,通过串口实时的发送到上位机CCDView软件,CCDView将数据按照灰
度条和曲线两种形式显示出来了,用户可以直接在CCDView中观看线性数据、调节镜头
焦距、对传感器视场进行标定。
以下是CCDView软件界面:


很多用户拿到线性CCD 后不知道如果将图像显示到电脑上观看。以下介绍以下,如
何用XS128系统采集数据,并在电脑上显示数据。
1, 正确地连接线性CCD到XS128系统板(连接关系见下图)
2, 将系统板串口连接到电脑串口
3, 给单片机供电,将程序烧写到单片机,运行程序
4, 打开电脑上的CCDView,配置串口号和波特率(蓝宙程序波特率是115200),点
击开始。(在WIN7中使用该软件需要用右键à以管理员权限运行方法打开)

下面是采用蓝宙例程对应的连接方法。
如果按照上述步骤操作后仍然不能显示,可以先暂时关闭CCDView软件,打开串口大师之类的
串口调试软件,按下图所示配置串口参数,打开串口看看能不能收到下图所示这样的数据流。如不
能收到或收到乱码则说明串口连接或者通信协议有问题,请仔细检查后再试。常见问题如下:
1,USB 转TTL 和USB转RS232用混了,系统板于USB 串口接口类型要一致。
2,串口波特率不一致。
3,串口连接错误。
4,通信协议错误。
资料附件如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

2

查看全部评分

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
55
威望
31
贡献
18
兑换币
18
注册时间
2017-3-11
在线时间
3 小时
毕业学校
长沙理工大学
242#
发表于 2018-8-4 01:00:46 | 只看该作者

请问第三代和第四代有什么特别大的差别吗?如果高度大于1m是不是不适合用CCD寻迹,而且第三代貌似只有60°。
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

高级会员

Rank: 4

积分
506
威望
260
贡献
166
兑换币
168
注册时间
2017-1-15
在线时间
40 小时
毕业学校
山东科技大学
241#
发表于 2018-4-11 21:32:34 | 只看该作者
好东西一定要攒
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
42
威望
24
贡献
14
兑换币
13
注册时间
2016-10-14
在线时间
2 小时
毕业学校
射洪中学
240#
发表于 2017-2-15 22:00:15 | 只看该作者
顶一个:)
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
33
威望
27
贡献
4
兑换币
5
注册时间
2016-8-29
在线时间
1 小时
毕业学校
长安大学
239#
发表于 2016-10-7 16:01:56 | 只看该作者
线性CCD最全详解资料
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

注册会员

Rank: 2

积分
125
威望
69
贡献
44
兑换币
33
注册时间
2016-7-25
在线时间
6 小时
毕业学校
在校
238#
发表于 2016-7-25 18:00:04 | 只看该作者
好东西,赶紧学习
回复 支持 反对

使用道具 举报

1

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
QQ
威望
159
贡献
133
兑换币
104
注册时间
2016-6-25
在线时间
40 小时
毕业学校
浙江大学
237#
发表于 2016-7-21 13:53:02 | 只看该作者
顶一个
回复 支持 反对

使用道具 举报

1

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
QQ
威望
159
贡献
133
兑换币
104
注册时间
2016-6-25
在线时间
40 小时
毕业学校
浙江大学
236#
发表于 2016-7-20 13:45:31 | 只看该作者
不错不错啊
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
39
威望
31
贡献
6
兑换币
8
注册时间
2016-5-5
在线时间
1 小时
毕业学校
西安文理学院
235#
发表于 2016-5-5 21:31:20 | 只看该作者
学习学习
回复 支持 反对

使用道具 举报

0

主题

21

帖子

0

精华

高级会员

Rank: 4

积分
578
威望
209
贡献
85
兑换币
129
注册时间
2015-11-25
在线时间
142 小时
毕业学校
青岛理工大学
234#
发表于 2016-4-3 08:59:56 | 只看该作者
如果放到中断中采集,多长时间比较合适;
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 15:06 , Processed in 0.085477 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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