微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于51单片机的线阵CCD实时检测系统的开发

基于51单片机的线阵CCD实时检测系统的开发

时间:11-04 来源:互联网 点击:

CCD(Charge Coupled Devices)电荷耦合器件应用系统的关键技术在于CCD驱动时序的产生和输出信号的采集与处理。目前驱动主要有直接数字电路驱动、EPROM驱动、专用IC驱动、复杂的CPLD驱动等常用的驱动方法,但是它们存在着逻辑设计较为复杂、调试困难、柔性较差等缺点。在数据采集和处理方面,大多数都经过差动放大、采样保持、A/D转换,再通过总线或采集卡等接口与PC机相连。这种系统结构庞大,而且在信号处理、通信软件和界面设计等方面要耗费大量的精力。应该说这种应用系统在静态测量处理方面有其优点,但如果要满足实时控制系统的连续检测要求以及系统体积精小而容易装配等特点,则必须简化驱动电路、数据采集过程和处理方式。本文正是出于这种考虑,开发出了一种基于单片机的实时性检测系统:仅用Atmel公司一块小型的AT89C2051单片机便能产生稳定、精确、高速的驱动脉冲。该电路结构简单、调试方便、CPU占用率低,将驱动、采集和处理融为一体,而且与上位机的连接仅用两条导线便可实现检测信息传输。这种方法大大简化了线阵CCD检测系统的结构,在机器人视觉、智能小车、轨迹导引等动态检测方面有独特的应用优势。

1 线阵CCD实时检测系统模型

以机器人路径识别为例具体说明如何利用线阵CCD开发实时动态环境检测系统。

假设在一个深色(如黑色、蓝、绿等)平面上用宽度为30mm的白线作为机器人将要运动的轨迹导引线,利用线阵CCD开发出检测白线轨迹的检测系统。先利用光学系统用摄像头将路面信息成像到CCD的感光面上;然后读取白线的位置检测信息作为机器人的视觉,让机器人在上位机的控制下沿白线轨迹运动。这是一个典型的CCD实时检测系统。整体检测系统如图1所示。

2 硬件设计

利用CCD的光电特性,设计出的电路应能判别视频信号上输出的深色和白色区别,这样才能识别白线,时刻反应机器人当前所在的物理位置,以便对其运动做相应的调整。 线阵CCD选用NEC公司的μPD3575D型号。芯片为20脚DIP封装,像敏单元数目为1024,像敏单元大小为14μm×l41μm×l4μm(相邻像元中心距为14μm),光敏区域采用高灵敏度和低暗电流PN结作为光敏单元,内置采用保持电路、输出放大电路,外观尺寸为25.5mm×10mm,易于装卸。该器件工作在5V驱动(脉冲)、12V电源条件下。

系统简要电路如图2所示。驱动用的单片机是AT89C2051。它是Atmel公司生产的自带2KB可编程Flash存储器的与MSC-51兼容的高性能处理器。它与常规的51芯片有相同的核心和相近的结构功能如RAM、定时/记数器、中断结构、串行口、振荡器和时钟电路等;有最高达24MHz的振荡频率,能高速地驱动CCD;有较少的精简I/O端口,因此体积很小,非常适用做小型应用系统的处理器。对很多嵌入式控制应用提供了一个高度灵活的有效解决方案。本线阵CCD检测系统发挥了其小而灵活的特点,既陡系统资源得到了充分的应用又让系统结陶精简紧奏,电路中二值化部分的电位器R_T用来调整二值化比较电平的阀值(0~5V),通过它调节整个CCD的灰度分辨率。同时整个系统对外接口十分简单,只需接上电源和两条通向上位机的信号线。上位机只需等待同步信号FC和检测脉冲信号BIN_OUT到来的中断信号,与AT89C2051相互独立,彼此之间没有任何时钟信号或复用关系。因此实际运用中器件互换性较强。既可选用普通的AT89C51进行一定的端口扩展接收FC和BIN_OUT,也可选用中断能力较强的SOC芯片C8051FXX系列等。整个检测系统具有良好的柔性,最终电路体积可控制在手掌心大小之内。



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口的输出逻辑,在使用逻辑转移指令时,必须注意精心配置,避免产生驱动时序相位上的不同步。因为转移指令要根据某些条件产生程序分支,而分支程序在不同的条件下

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top