基于单片机的线阵CCD实时检测系统的开发
系统对外接口十分简单,只需接上电源和两条通向上位机的信号线。上位机只需等待同步信号FC和检测脉冲信号BIN_OUT到来的中断信号,与AT89C2051相互独立,彼此之间没有任何时钟信号或复用关系。因此实际运用中器件互换性较强。既可选用普通的AT89C51进行一定的端口扩展接收FC和BIN_OUT,也可选用中断能力较强的SOC芯片C8051FXX系列等。整个检测系统具有良好的柔性,最终电路体积可控制在手掌心大小之内。
图2
3信号时序及软件设计
由于硬件设计时考虑用软件产生CCD驱动信号,这样软件设计的最大难点为既要满足CCD芯片的驱动信号要求又要完成检测信息的完整表述。综合比较各种方法后得出了整个软件设计思路如下:
驱动描述:NEC公司的线阵μPD3575D所需驱动信号与TOSHIBA公司传统的TCD系列略有差异,具体驱动信号为:时钟φ10、转移脉冲φTG、复位时钟φRO和采样保持时钟φSHO,时序关系如图3所示。
μPD3575D为双沟道线阵CCD,它有两列525位的CCD移位寄存器,分列在像敏阵列的两边,在一个积分的φTG周期中至少有525个φ10脉冲:另外考虑到一些暗信号和空驱动.本系统开发中取φ10脉冲宽度约为10μs、φTG积分时间为12ms。
单片机驱动主要是通过程序编程控制输出驱动的时序信号,可以通过修改程序方便地修改输出时序,单片机是靠指令产生I/O口的输出逻辑,在使用逻辑转移指令时,必须注意精心配置,避免产生驱动时序相位上的不同步。因为转移指令要根据某些条件产生程序分支,而分支程序在不同的条件下执行周期通常不同,会造成CCD驱动时序不同步。
检测过程描述:参见图2的系统电路图,当CCD被驱动后因其光电特性会有视频模拟信号Vout输出,信号如图4所示。可以看出:模拟信号Vout在CCD扫描到深色区和白色区有明显的幅值大小区别,要提取的信息就是这个变化的电压信号,但单片机不能直接处理模拟信号Vout,因此必须先将Vout通过二值化处理得到数字信号BIN(见图2二值化电路部分)。这样便得到了反映白线左右两个边缘的脉冲信号BIN。为了方便上位机的处理,不直接输出信号BIN,而是将BIN反馈给AT89C2051,让其通过程序编制来捕捉其上升沿和下降沿的跳变,再从另外的引脚输出与BIN上升沿和下降沿同步的负脉冲信号BIN_OUT。这样上位机可方便地通过中断检测到白线的左右侧。这里AT89C205l还要输出一个同步信号FC(即驱动转移脉冲φTG)。因为系统是在连续扫描地面信息,故FC脉冲可标志CCD上一次扫描的结束和新一行扫描的开始。新一行开始扫描时,上位机收到FC负脉冲后可进入中断对定时器TO、Tl清零并立即开始计数。当收到BIN_OUT的第一个负脉冲后进入中断并停止,定时器TO;当收到BIN_OUT的第二个负脉冲后进人中断并停止定时器T1,读出定时器TO、T1里的数t0、t1。t0、t1便反映了路面白线的坐标位置,很明显t1与t0之差便是白线宽度。
综合以上驱动和检测信号要求得出:在主程序中用一个死循环产生连续的四路驱动脉冲,并通过嵌入相应的其他功能的指令来保证四个驱动脉冲的相位关系,对BIN信号的上升沿和下降沿的判断也在此循环中完成。对BIN信号的当前状态还必须有一个状态标志BIN_STATE。一旦遇到BIN信号有电 《基于单片机的线阵CCD实时检测系统的开发(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/171402.html
图2
3信号时序及软件设计
由于硬件设计时考虑用软件产生CCD驱动信号,这样软件设计的最大难点为既要满足CCD芯片的驱动信号要求又要完成检测信息的完整表述。综合比较各种方法后得出了整个软件设计思路如下:
驱动描述:NEC公司的线阵μPD3575D所需驱动信号与TOSHIBA公司传统的TCD系列略有差异,具体驱动信号为:时钟φ10、转移脉冲φTG、复位时钟φRO和采样保持时钟φSHO,时序关系如图3所示。
μPD3575D为双沟道线阵CCD,它有两列525位的CCD移位寄存器,分列在像敏阵列的两边,在一个积分的φTG周期中至少有525个φ10脉冲:另外考虑到一些暗信号和空驱动.本系统开发中取φ10脉冲宽度约为10μs、φTG积分时间为12ms。
单片机驱动主要是通过程序编程控制输出驱动的时序信号,可以通过修改程序方便地修改输出时序,单片机是靠指令产生I/O口的输出逻辑,在使用逻辑转移指令时,必须注意精心配置,避免产生驱动时序相位上的不同步。因为转移指令要根据某些条件产生程序分支,而分支程序在不同的条件下执行周期通常不同,会造成CCD驱动时序不同步。
检测过程描述:参见图2的系统电路图,当CCD被驱动后因其光电特性会有视频模拟信号Vout输出,信号如图4所示。可以看出:模拟信号Vout在CCD扫描到深色区和白色区有明显的幅值大小区别,要提取的信息就是这个变化的电压信号,但单片机不能直接处理模拟信号Vout,因此必须先将Vout通过二值化处理得到数字信号BIN(见图2二值化电路部分)。这样便得到了反映白线左右两个边缘的脉冲信号BIN。为了方便上位机的处理,不直接输出信号BIN,而是将BIN反馈给AT89C2051,让其通过程序编制来捕捉其上升沿和下降沿的跳变,再从另外的引脚输出与BIN上升沿和下降沿同步的负脉冲信号BIN_OUT。这样上位机可方便地通过中断检测到白线的左右侧。这里AT89C205l还要输出一个同步信号FC(即驱动转移脉冲φTG)。因为系统是在连续扫描地面信息,故FC脉冲可标志CCD上一次扫描的结束和新一行扫描的开始。新一行开始扫描时,上位机收到FC负脉冲后可进入中断对定时器TO、Tl清零并立即开始计数。当收到BIN_OUT的第一个负脉冲后进入中断并停止,定时器TO;当收到BIN_OUT的第二个负脉冲后进人中断并停止定时器T1,读出定时器TO、T1里的数t0、t1。t0、t1便反映了路面白线的坐标位置,很明显t1与t0之差便是白线宽度。
综合以上驱动和检测信号要求得出:在主程序中用一个死循环产生连续的四路驱动脉冲,并通过嵌入相应的其他功能的指令来保证四个驱动脉冲的相位关系,对BIN信号的上升沿和下降沿的判断也在此循环中完成。对BIN信号的当前状态还必须有一个状态标志BIN_STATE。一旦遇到BIN信号有电 《基于单片机的线阵CCD实时检测系统的开发(第2页)》