本帖最后由 玄德 于 2014-5-19 18:23 编辑
看到有网友问,就把两年前的资料发出来,是自己做的,只是后来牵扯到光学和其他问题,就搁置了。
我用STM32F215RGT6做的线阵CCD相机。硬件是: CCD + 一片运放 + CPU,没有用CPLD之类。 也许,运放都不需要,没有验证过。 线阵CCD的驱动全部用定时器TIM1的四个通道实现,用片上AD进行采集,DMA存储到片上RAM中; 以上整个过程全部用硬件实现,只在一帧图像结束后才用CPU软件进行干预,中断方式(对这一帧图像数据进行处理)。
下图是线阵CCD官方的驱动时序图:
如果严格按照官方时序,只靠一个定时器实现是不太可能的。(也许能够实现。) 所以,在研究官方时序以后(这一步很重要),结合定时器,设计了一种即满足驱动要求、又容易实现的新的时序图。 另外,增加了一个控制AD的信号,在片内启动AD工作。 最快时钟频率是1MHz,2000多个像素。所以,每秒可以拍摄400次以上。在一些特殊场合很有用。下面就看数据处理的速度了。 下图是是实际实现的时序,用逻辑分析仪采集的,和官方时序有较大区别:
下图是测试样板,自己用AutoCAD画的,黑杠宽度是5mm,黑杠的中心间距是15mm,一共19条黑杠:
下图是实验装置,相机、镜头、三脚架之类的。当时新房还在装修,现在家里的工作间,有16平。
下图是PC采集到的一帧图像。图像数据在CPU中断期间,通过串口发给PC,用专用的软件还原成图案。 当时还不会用USB,现在可以做更好,以提高每秒扫描帧数。
梳子图案就是19条黑杠的图像:
以后的工作,光圈、焦距、镜头等等,需要根据现场进行选择,有一些其他知识要学习。实验时候用的是一百元的镜头。
实验发现,白天调试好光圈和焦距,可以拍出清晰的图像; 到了晚上,图像就很差了,必须重新调整光圈、焦距。 所以,虽然到了这一步,离实际使用环境还有一段路要走。 主要是动态调节积分时间。
线阵CCD相机,贵在传感器和镜头。
|