|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
随着表面组装技术(SMT)中所使用的印制电路板(PCB)导体图形的细线化,SMT元器件的微型化,以及SMT组件的高密度组装和快速组装的发展趋势,采用目检或人工光学检测的形式检测SMT组装质量已不能适应。为此,自动光学检测(AOI)技术作为SMT组装质量检测的主要技术手段,在SMT中应用越来越普遍。5 V! b' B3 `' P; v
AOI,也称为自动视觉检测,是基于光学原理,综合采用图像分析、计算机和自动控制等多种技术,对生产中遇到的缺陷进行检测和处理,是较新的确认制造缺陷的方法。AOI系统按技术划分为精密机械、电气控制、视觉系统、软件系统4大部分组成,其核心是一套基于CMOS或CCD的图像采集系统、交流伺服控制x、y工作台及图像处理软件系统。图1为所设计的PCB板AOI检测系统框图。- a( r/ {; i7 |( }" r
1 O; C: O' x% c 图1 PCB板AOI检测系统框图) ~ Q+ S! b7 R3 \" D
视觉检测系统硬件设计0 N: z) A7 g" ^
AOI系统究其本质是一套基于机器视觉技术的表面缺陷检测系统。如何获取高质量的PCB表面图像信息成为PCB光学检测中首要解决的难题和重点,这是PCB表面缺陷检测的关键。由于PCB缺陷的特殊性,AOI系统对视觉采集系统提出了很高的要求:高分辨率、高速率、实时检测等。$ ^8 E1 u- j$ G1 P; k+ E. m: j
视觉采集系统
% {* S# M- l# y( L5 L' E
" q$ N4 _2 z7 m: w* C& F$ k5 I f2 u' w) j- l
图2 视觉采集系统框图- S% B: Q8 K- o0 c8 o; e& k
USB通信接口电路$ w+ e3 y1 S6 V% q7 |5 _$ a
本设计采用的DSP芯片TMS320VC5509A集成了一个USB控制模块(USB2.0 full speed),可以完成和USB主机系统之间的读写操作,具有无需外加逻辑电路、使用方便等优点。使用TMS320VC5509A的片上USB模块,完成DSP前端图像采集系统与后台PC机之间的通信硬件电路设计,简化了图像采集系统的硬件控制软件和后台PC机的驱动程序。# a) F1 K+ Z- Q) `6 a
8 w: O2 p/ E; ]7 N8 p9 t# k 图3 TMS320VC5509A的USB接口电路$ ~" {' i. F2 X( G/ T$ ?
图3为DSP片内USB模块与PC机进行数据通信的硬件接口电路。其中左边3个引脚PU、DP、DN是TMS320VC5509A的片上引脚,右边的6个引脚组成了一个Mini USB接口,利用USB连接线就可以完成与PC机的连接。中间的阻容电路起加强输入输出可靠性的作用。! {; G0 G) ]; f+ q6 G
软件程序设计: {; V, v% a1 [; k" Q) I( y
; z+ o0 x* z& L 图4 视觉系统中USB通信数据流$ c5 g# k! I- w+ l* B
如图4所示,本系统中USB通信的软件程序主要由四部分组成。在设备端:设备端驱动程序,也称之为固件程序;设备端应用程序,主要完成数据搬运,以及与其他硬件设备的交互工作。在主机端:主机端驱动程序;主机端应用程序。由于USB是分层结构,主机端驱动和设备端驱动完成对USB设备的枚举和配置;而在主机端应用程序和设备端应用程序之间实现数据的通信。5 @) _; I- E& `
本系统中,DSP作为USB传输的设备端,同时由于USB是严格的主从结构,所有的配置、枚举及数据传输命令都必须由主机下达,所以在设备端的程序设计时,固件程序设计成一个复杂的中断服务程序,用以主机对DSP作为USB设备配置、枚举时的应答。而原本在CCS中运行的DSP采集主程序也必须改写成中断程序,这样才能完成对DSP固件程序和DSP采集程序的整合,使之整合到一个main()运行程序中,程序运行时,启动对DSP的初始化,时钟配置和USB模块初始化;当主机发出采集图像命令时,DSP程序进入采集中断程序,执行实时采集中断程序;当主机发出USB模块配置枚举命令时,USB中断服务程序对主机做出回应;当主机发出传输图像命令时,DSP程序进入数据搬运中断程序。
4 w7 U2 M- K" c# O DSP端的固件程序
1 P$ `$ c6 ?& [6 v1 n USB固件程序的结构一般是基于中断处理的。主程序完成必要的初始化之后就等待USB中断,接收到USB中断后依据中断的类型进入不同中断服务程序。USB协议的主从模式决定了USB总线上传输的发起和终止都是主机控制的,因此,固件编程中只要满足了主机的要求,或者说对主机的请求给予了及时的响应,那么固件的编程也就完成了。7 p+ [+ h- C: F, S& z& e) [0 C1 g
USB固件应用程序主函数例程:- \0 l3 @8 G1 l% h, h
void main()) \5 E+ W1 x& y& J3 C
{
1 C# e+ i& `/ Y EnableAPLL( );
; d" V; B7 q: {1 m //使能USB模块的模拟锁相环
. k4 U/ c" g) n CSL_init( );" I5 z! Z$ O( a' {& ?( W
// DSP的CSL库初始化函数
U) q" o2 a: @9 P- [0 n/ H# v3 ^ INT_DisableGlobal(); // 关闭全局中断- S. @9 w1 [* Z
INT_SetVec(0x03ff00);6 U+ h) N2 _; @# K' [
// 设置中断向量表在RAM中的地址- N! e: z$ s0 Q6 D* \( \
PLL_Init(48); // 将USB模块( _2 q) [2 ^' A6 [7 I& n6 ^3 p7 i
的时钟调整到48MHz
9 p, T- w) F3 X" e5 V Collect_main(); // CMOS图像
. L+ }# Y; I P0 u6 s2 Y8 y 采集程序
# L2 o+ \7 D b& S8 Q USBTest_Init(); // 初始化USB6 i) E" f* ^2 E0 C. L! T7 z/ Y) I7 P
模块,初始化完毕打开全局中断2 Z& a( U6 J8 y+ c
while(1); // 循环等待状态
( {5 b9 o# R! [7 r# _" H( v }
$ Y" v& o" e; |1 \' T 端点0的控制传输是USB枚举的默认传输端口,其中断服务程序是USB固件程序设计的难点和关键。( z0 J" Z+ V" F* M# p0 k
PC端的驱动程序及上位机应用程序; B3 w5 p! Y5 ~ _
PC端的驱动程序及上位机应用程序设计相对比较简单,选用Driver Studio开发工具开发USB驱动程序,Driver Studio对设备驱动程序开发工具DDK中操作进行封装,减少了开发时间,提高了效率。通过Driver Studio的工具Driver wizard生成的驱动程序为开发者提供了一个基本框架,使用者只需修改较少的或者基本不用代码就可以实现相应的功能了。
) y7 h2 C P3 O3 ?: x1 z4 X# m) Y Windows XP中的上位机程序不能直接访问底层的硬件,需要通过驱动程序进行(读、写、中断等)操作。设备的驱动程序由I/O管理器管理和调动。上位机程序在用户模式下通过Win32子系统对Win32API函数进行调用。Win32API函数通过I/O管理器向内核模式下的驱动程序传递IRP。驱动程序通过处理IRP,来完成应用程序和硬件程序信息的交互。访问USB设备驱动的Win32API函数:0 N1 N8 j9 P' x. ]( v8 @5 m
(1) CreatFile 函数创建或打开文件,并返回一个可用于访问文件的句柄。
+ I E1 H6 D9 q c5 b (2) DeviceIoControl 函数直接给指定的设备驱动程序发送控制代码,使得相应的设备执行指定操作。函数若成功,返回一个非0值,否则返回0。6 D& {+ Q: T8 b/ a% W
(3) ReadFile 函数读由文件指针表示的位置开始处的文件读数据,读操作完成后,文件指针调整实际读的字节数。函数若成功,返回一个非0值,否则返回0。
. f5 l2 f! E" D" z5 v* S/ N( w (4) CloseHandle 函数关闭打开的文件句柄。函数若成功,返回一个非0值,否则返回0。2 X9 A$ X1 u0 p3 k8 L z
实验与结论2 Z$ W! l# e( T
设计实现了一种印制电路板AOI视觉检测系统,包括硬件电路和软件程序。硬件结构简单,可以实现通信传输的高度集成化,传输速率满足AOI检测系统的实时性要求。图5为实验中采集到的PCB板图像。
+ h+ a+ h1 R- u9 T t- V
5 i/ u4 @ L+ {! H7 [6 I k 图5 实验中采集到的PCB板图像& ~3 f d# [% ^: ~5 j8 e
+ k6 b' @; T. [3 B
; }% q: E/ N1 G
|
|