技术中心
 
 

基于USB通信的印制电路板AOI视觉检测系统

   日期:2009-04-22     来源:中国测控网    作者:管理员    
核心提示:AOI,也称为自动视觉检测,是基于光学原理,综合采用图像分析、计算机和自动控制等多种技术,对生产中遇到的缺陷进行检测和处理,是较新的确认制造缺陷的方法。

引 言
    随着表面组装技术(SMT)中所使用的印制电路板(PCB)导体图形的细线化,SMT元器件的微型化,以及SMT组件的高密度组装和快速组装的发展趋势,采用目检或人工光学检测的形式检测SMT组装质量已不能适应。为此,自动光学检测(AOI)技术作为SMT组装质量检测的主要技术手段,在SMT中应用越来越普遍。
    AOI,也称为自动视觉检测,是基于光学原理,综合采用图像分析、计算机和自动控制等多种技术,对生产中遇到的缺陷进行检测和处理,是较新的确认制造缺陷的方法。AOI系统按技术划分为精密机械、电气控制、视觉系统、软件系统4大部分组成,其核心是一套基于CMOS或CCD的图像采集系统、交流伺服控制x、y工作台及图像处理软件系统。图1为所设计的PCB板AOI检测系统框图。
 


 
图1 PCB板AOI检测系统框图

 

视觉检测系统硬件设计
    AOI系统究其本质是一套基于机器视觉技术的表面缺陷检测系统。如何获取高质量的PCB表面图像信息成为PCB光学检测中首要解决的难题和重点,这是PCB表面缺陷检测的关键。由于PCB缺陷的特殊性,AOI系统对视觉采集系统提出了很高的要求:高分辨率、高速率、实时检测等。

视觉采集系统
    针对AOI系统要求,选用基于DSP+CPLD的图像采集处理模式。图2为视觉采集系统框图。系统通过DSP给CPLD发出一个采集命令,由CPLD控制CMOS图像传感器向FIFO的写入图像数据,同时DSP通过DMA将图像转移至SDRAM中并进行图像处理,在处理结束后,将处理的结果通过DSP内置的USB接口传给微机或其他设备。 I/O接口经扩展后,将控制触发信号交由工作台及电气控制系统,完成系统采集控制的目的。
 

 
 

图2 视觉采集系统框图

 

USB通信接口电路
    本设计采用的DSP芯片TMS320VC5509A集成了一个USB控制模块(USB2.0 full speed),可以完成和USB主机系统之间的读写操作,具有无需外加逻辑电路、使用方便等优点。使用TMS320VC5509A的片上USB模块,完成DSP前端图像采集系统与后台PC机之间的通信硬件电路设计,简化了图像采集系统的硬件控制软件和后台PC机的驱动程序。
 


图3 TMS320VC5509A的USB接口电路

    图3为DSP片内USB模块与PC机进行数据通信的硬件接口电路。其中左边3个引脚PU、DP、DN是TMS320VC5509A的片上引脚,右边的6个引脚组成了一个Mini USB接口,利用USB连接线就可以完成与PC机的连接。中间的阻容电路起加强输入输出可靠性的作用。

 

软件程序设计
 


图4 视觉系统中USB通信数据流

    如图4所示,本系统中USB通信的软件程序主要由四部分组成。在设备端:设备端驱动程序,也称之为固件程序;设备端应用程序,主要完成数据搬运,以及与其他硬件设备的交互工作。在主机端:主机端驱动程序;主机端应用程序。由于USB是分层结构,主机端驱动和设备端驱动完成对USB设备的枚举和配置;而在主机端应用程序和设备端应用程序之间实现数据的通信。
    本系统中,DSP作为USB传输的设备端,同时由于USB是严格的主从结构,所有的配置、枚举及数据传输命令都必须由主机下达,所以在设备端的程序设计时,固件程序设计成一个复杂的中断服务程序,用以主机对DSP作为USB设备配置、枚举时的应答。而原本在CCS中运行的DSP采集主程序也必须改写成中断程序,这样才能完成对DSP固件程序和DSP采集程序的整合,使之整合到一个main()运行程序中,程序运行时,启动对DSP的初始化,时钟配置和USB模块初始化;当主机发出采集图像命令时,DSP程序进入采集中断程序,执行实时采集中断程序;当主机发出USB模块配置枚举命令时,USB中断服务程序对主机做出回应;当主机发出传输图像命令时,DSP程序进入数据搬运中断程序。

 

DSP端的固件程序
    USB固件程序的结构一般是基于中断处理的。主程序完成必要的初始化之后就等待USB中断,接收到USB中断后依据中断的类型进入不同中断服务程序。USB协议的主从模式决定了USB总线上传输的发起和终止都是主机控制的,因此,固件编程中只要满足了主机的要求,或者说对主机的请求给予了及时的响应,那么固件的编程也就完成了。
USB固件应用程序主函数例程:
void main()

    EnableAPLL( );
     //使能USB模块的模拟锁相环
    CSL_init( ); 
    //  DSP的CSL库初始化函数
    INT_DisableGlobal();       //  关闭全局中断
    INT_SetVec(0x03ff00);  
 //  设置中断向量表在RAM中的地址
  PLL_Init(48);  //  将USB模块
  的时钟调整到48MHz
  Collect_main(); //  CMOS图像
   采集程序
  USBTest_Init(); //  初始化USB
  模块,初始化完毕打开全局中断
    while(1); //  循环等待状态

    端点0的控制传输是USB枚举的默认传输端口,其中断服务程序是USB固件程序设计的难点和关键。

PC端的驱动程序及上位机应用程序
    PC端的驱动程序及上位机应用程序设计相对比较简单,选用Driver Studio开发工具开发USB驱动程序,Driver Studio对设备驱动程序开发工具DDK中操作进行封装,减少了开发时间,提高了效率。通过Driver Studio的工具Driver wizard生成的驱动程序为开发者提供了一个基本框架,使用者只需修改较少的或者基本不用代码就可以实现相应的功能了。
    Windows XP中的上位机程序不能直接访问底层的硬件,需要通过驱动程序进行(读、写、中断等)操作。设备的驱动程序由I/O管理器管理和调动。上位机程序在用户模式下通过Win32子系统对Win32API函数进行调用。Win32API函数通过I/O管理器向内核模式下的驱动程序传递IRP。驱动程序通过处理IRP,来完成应用程序和硬件程序信息的交互。访问USB设备驱动的Win32API函数:
(1) CreatFile 函数创建或打开文件,并返回一个可用于访问文件的句柄。
(2) DeviceIoControl 函数直接给指定的设备驱动程序发送控制代码,使得相应的设备执行指定操作。函数若成功,返回一个非0值,否则返回0。
(3) ReadFile 函数读由文件指针表示的位置开始处的文件读数据,读操作完成后,文件指针调整实际读的字节数。函数若成功,返回一个非0值,否则返回0。
(4) CloseHandle 函数关闭打开的文件句柄。函数若成功,返回一个非0值,否则返回0。

实验与结论
    笔者设计实现了一种印制电路板AOI视觉检测系统,包括硬件电路和软件程序。硬件结构简单,可以实现通信传输的高度集成化,传输速率满足AOI检测系统的实时性要求。图5为实验中采集到的PCB板图像。
 


图5 实验中采集到的PCB板图像

 

参考文献:
1.  贾建禄等,基于以太网的嵌入式视觉传感器,电子产品世界,2008.3
2.  Moti Yanuka, Yossi Pinhassi, AOI vs. AFI in PCB Defect Detection, Circuitree, July 2001
3.  TMS320VC5509 DSP Universal Serial Bus (USB) Module Reference Guide, Texas Instruments Incorporated
4.   TMS320C55x CSL USB Programmer‘s Reference Guide, Texas Instruments Incorporated
5.  武安河、邰铭、于洪涛,Windows 2000/XP WDM设备驱动程序开发,电子工业出版社,2004

 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢