数字式CMOS摄像头在智能车中的应用
片机提供标准的I2C模块,SCLK引脚能产生多种时钟频率,支持主从模式,设有多种标志位以供查询。初始化I2C模块时需要完成以下工作:
①设置IBFD寄存器,使产生的SCLK信号能够对MT9M011进行正常的配置;
②设置IBEN寄存器位,使能I2C模块;
③设置IBCR,确定I2C模块的主、从模式,收、发模式以及是否使能中断功能等。
3.2.2 MT9M011图像数据采集
受限于单片机时钟的约束关系,HCSl2的通用I/O口无法检测摄像头像素时钟信号跳变,本文采取以固定周期采集一行数据的方法。因此,采集像素数据的关键是准确地采集帧有效信号的上升沿和行有效信号的上升沿。选用的方案是:使用HCSl2单片机的ECT模块采集帧有效信号的上升沿,使用ECT模块普通端口模式采集行有效信号的上升沿。
采集对象要求纵、横分辨率都不能过低,而HCSl2内部存储空间有限,无法为高分辨率提供有利支持。针对这一矛盾,利用一个像素
与其周围点的值的关联性,以及摄像头所具有的隔行和隔列输出功能进行跳采集。确定了1 280x 480的分辨率和行列均跳4行采集的模式,
同时软件上再进行一次隔行采集,最终可得80×60=4 800个像素数据。采集数据的流程如图4所示。
3.2.3 采集图像时遇到的问题及解决方法
(1)摄像头晶振的选择
MT9M011晶振的选择是一个很重要的问题,如果一帧图像的时间超过20 ms,就无法体现它的主要优势。同时,也要考虑到HCSl2单片机的限制,HCSl2的总线频率最大可达到32 MHz,而在此条件下如果MT9M011的晶振选取过大,则每一行采集到的点数过少。
通过式(1)可计算出MT9M011输出一帧图像所需的时间:
式中:ColNum+HBlanking和RowNum+VBlanking分别表示包含空白数据的总列数和总行数;fcamera表示摄像头晶振频率,在一帧图像大小已经确定的情况下,该值越大则一帧时间越短。
通过式(2)可计算出单片机一行采集像素点的个数:
式中:RowPixNum表示一行能采集到的数据;ColNum表示每一行中输出的像素数据个数;Tcamera是摄像头晶振,fcamera的倒数;Cycle表示一个采集周期使用的机器周期数,在整个采集过程中固定不变的;fbus表示单片机的总线周期。从式(2)可知,在fbus一定的情况下,camera越小,则一行采集到的数据就越少,这样不利于数据分析。
综合考虑,最终确定使用8 MHz的晶振作为MT9M011的时钟,而采用16 MHz晶振作为HCSl2的时钟,单行采集80个点,可满足路径识别的需要。
(2)摄像头曝光时间和增益的设置问题MT9M011是一款RGB三基色的彩色摄像头,采集到的数据为Bayer彩色格式。由于提取的是赛道上的黑线信息,图像环境相对简单,因此这里直接将每一个分量的值作为该点像素的灰度值处理。
如图5(a)所示,在使用默认曝光时间和增益时采集得到的图像有明显的隔行噪声效应,而且在一行间也有明显的干扰噪声存在。这是因为同一光源对于RGB三种分量所体现出的数值不同,直接将其当作灰度值处理会产生恢复的图像不均匀、噪声大的现象。解决办法是通过多次
实践调整摄像头的曝光时间和RGB每个分量的增益值,使3个分量在同一光源下反应出的数值基本一致。经过调整后得到的图像如图5(b)所示。
4 数字式CMOS摄像头与模拟摄像头比较
数字式CMOS摄像头MT9M011最大的优势在于节约时间。选用合适的晶振及图像大小能将整个小车控制周期限制在20ms左右。笔者曾经做过实验,选用20MHz的晶振作为摄像头时钟,将单片机倍频到32 MHz。在这种条件下,一个控制周期的反应时间甚至能缩短到4ms左右,与模拟摄像头的40 ms一帧图像相比有明显的优势。MT9M011的另一个优势是图像大小可以任意设置,因此笔者可以软件调整图像的大小和视野的高度,且MT9M011与单片机接口简单,很大程度上减轻了硬件负担。
MT9M011在智能车比赛应用中也具有一些缺点。它不能自动适应各种光源,需要人工进行调整;同时,它的动态特性不如CCD摄像头好,这点可以通过提高摄像头晶振时钟来缩短采集周期解决。
结语
本文介绍了数字式CMOS摄像头MT9MOll在基于HCSl2单片机的智能车中的应用,并针对数字摄像头与模拟摄像头的各自特点进行了比较。实践表明,选用数字式CMOS摄像头作为智能车路径识别传感器是可行的。
- 数字式时间继电器抗干扰的方法(04-21)
- 多种测温系统的设计(06-27)
- 物联网在智能车载系统中的应用(10-23)
- 这款智能车灯是如何做到省电70%的?(02-14)
- 三轴加速度传感器在智能车控制与道路识别中的应用(06-02)
- 短路保护电子电路图(08-18)