基于USB通信的印制電路板AOI視覺檢測系統(tǒng)
引 言
隨著表面組裝技術(SMT)中所使用的印制電路板(PCB)導體圖形的細線化,SMT元器件的微型化,以及SMT組件的高密度組裝和快速組裝的發(fā)展趨勢,采用目檢或人工光學檢測的形式檢測SMT組裝質(zhì)量已不能適應。為此,自動光學檢測(AOI)技術作為SMT組裝質(zhì)量檢測的主要技術手段,在SMT中應用越來越普遍。
AOI,也稱為自動視覺檢測,是基于光學原理,綜合采用圖像分析、計算機和自動控制等多種技術,對生產(chǎn)中遇到的缺陷進行檢測和處理,是較新的確認制造缺陷的方法。AOI系統(tǒng)按技術劃分為精密機械、電氣控制、視覺系統(tǒng)、軟件系統(tǒng)4大部分組成,其核心是一套基于CMOS或CCD的圖像采集系統(tǒng)、交流伺服控制x、y工作臺及圖像處理軟件系統(tǒng)。圖1為所設計的PCB板AOI檢測系統(tǒng)框圖。
圖1 PCB板AOI檢測系統(tǒng)框圖
視覺檢測系統(tǒng)硬件設計
AOI系統(tǒng)究其本質(zhì)是一套基于機器視覺技術的表面缺陷檢測系統(tǒng)。如何獲取高質(zhì)量的PCB表面圖像信息成為PCB光學檢測中首要解決的難題和重點,這是PCB表面缺陷檢測的關鍵。由于PCB缺陷的特殊性,AOI系統(tǒng)對視覺采集系統(tǒng)提出了很高的要求:高分辨率、高速率、實時檢測等。
視覺采集系統(tǒng)
針對AOI系統(tǒng)要求,選用基于DSP+CPLD的圖像采集處理模式。圖2為視覺采集系統(tǒng)框圖。系統(tǒng)通過DSP給CPLD發(fā)出一個采集命令,由CPLD控制CMOS圖像傳感器向FIFO的寫入圖像數(shù)據(jù),同時DSP通過DMA將圖像轉(zhuǎn)移至SDRAM中并進行圖像處理,在處理結(jié)束后,將處理的結(jié)果通過DSP內(nèi)置的USB接口傳給微機或其他設備。 I/O接口經(jīng)擴展后,將控制觸發(fā)信號交由工作臺及電氣控制系統(tǒng),完成系統(tǒng)采集控制的目的。
圖2 視覺采集系統(tǒng)框圖
USB通信接口電路
本設計采用的DSP芯片TMS320VC5509A集成了一個USB控制模塊(USB2.0 full speed),可以完成和USB主機系統(tǒng)之間的讀寫操作,具有無需外加邏輯電路、使用方便等優(yōu)點。使用TMS320VC5509A的片上USB模塊,完成DSP前端圖像采集系統(tǒng)與后臺PC機之間的通信硬件電路設計,簡化了圖像采集系統(tǒng)的硬件控制軟件和后臺PC機的驅(qū)動程序。
圖3 TMS320VC5509A的USB接口電路
圖3為DSP片內(nèi)USB模塊與PC機進行數(shù)據(jù)通信的硬件接口電路。其中左邊3個引腳PU、DP、DN是TMS320VC5509A的片上引腳,右邊的6個引腳組成了一個Mini USB接口,利用USB連接線就可以完成與PC機的連接。中間的阻容電路起加強輸入輸出可靠性的作用。
軟件程序設計
圖4 視覺系統(tǒng)中USB通信數(shù)據(jù)流
如圖4所示,本系統(tǒng)中USB通信的軟件程序主要由四部分組成。在設備端:設備端驅(qū)動程序,也稱之為固件程序;設備端應用程序,主要完成數(shù)據(jù)搬運,以及與其他硬件設備的交互工作。在主機端:主機端驅(qū)動程序;主機端應用程序。由于USB是分層結(jié)構(gòu),主機端驅(qū)動和設備端驅(qū)動完成對USB設備的枚舉和配置;而在主機端應用程序和設備端應用程序之間實現(xiàn)數(shù)據(jù)的通信。
本系統(tǒng)中,DSP作為USB傳輸?shù)脑O備端,同時由于USB是嚴格的主從結(jié)構(gòu),所有的配置、枚舉及數(shù)據(jù)傳輸命令都必須由主機下達,所以在設備端的程序設計時,固件程序設計成一個復雜的中斷服務程序,用以主機對DSP作為USB設備配置、枚舉時的應答。而原本在CCS中運行的DSP采集主程序也必須改寫成中斷程序,這樣才能完成對DSP固件程序和DSP采集程序的整合,使之整合到一個main()運行程序中,程序運行時,啟動對DSP的初始化,時鐘配置和USB模塊初始化;當主機發(fā)出采集圖像命令時,DSP程序進入采集中斷程序,執(zhí)行實時采集中斷程序;當主機發(fā)出USB模塊配置枚舉命令時,USB中斷服務程序?qū)χ鳈C做出回應;當主機發(fā)出傳輸圖像命令時,DSP程序進入數(shù)據(jù)搬運中斷程序。
DSP端的固件程序
USB固件程序的結(jié)構(gòu)一般是基于中斷處理的。主程序完成必要的初始化之后就等待USB中斷,接收到USB中斷后依據(jù)中斷的類型進入不同中斷服務程序。USB協(xié)議的主從模式?jīng)Q定了USB總線上傳輸?shù)陌l(fā)起和終止都是主機控制的,因此,固件編程中只要滿足了主機的要求,或者說對主機的請求給予了及時的響應,那么固件的編程也就完成了。
USB固件應用程序主函數(shù)例程:
void main()
{
EnableAPLL( );
//使能USB模塊的模擬鎖相環(huán)
CSL_init( );
// DSP的CSL庫初始化函數(shù)
INT_DisableGlobal(); // 關閉全局中斷
INT_SetVec(0x03ff00);
// 設置中斷向量表在RAM中的地址
PLL_Init(48); // 將USB模塊
的時鐘調(diào)整到48MHz
Collect_main(); // CMOS圖像
采集程序
USBTest_Init(); // 初始化USB
模塊,初始化完畢打開全局中斷
while(1); // 循環(huán)等待狀態(tài)
}
端點0的控制傳輸是USB枚舉的默認傳輸端口,其中斷服務程序是USB固件程序設計的難點和關鍵。
PC端的驅(qū)動程序及上位機應用程序
PC端的驅(qū)動程序及上位機應用程序設計相對比較簡單,選用Driver Studio開發(fā)工具開發(fā)USB驅(qū)動程序,Driver Studio對設備驅(qū)動程序開發(fā)工具DDK中操作進行封裝,減少了開發(fā)時間,提高了效率。通過Driver Studio的工具Driver wizard生成的驅(qū)動程序為開發(fā)者提供了一個基本框架,使用者只需修改較少的或者基本不用代碼就可以實現(xiàn)相應的功能了。
Windows XP中的上位機程序不能直接訪問底層的硬件,需要通過驅(qū)動程序進行(讀、寫、中斷等)操作。設備的驅(qū)動程序由I/O管理器管理和調(diào)動。上位機程序在用戶模式下通過Win32子系統(tǒng)對Win32API函數(shù)進行調(diào)用。Win32API函數(shù)通過I/O管理器向內(nèi)核模式下的驅(qū)動程序傳遞IRP。驅(qū)動程序通過處理IRP,來完成應用程序和硬件程序信息的交互。訪問USB設備驅(qū)動的Win32API函數(shù):
(1) CreatFile 函數(shù)創(chuàng)建或打開文件,并返回一個可用于訪問文件的句柄。
(2) DeviceIoControl 函數(shù)直接給指定的設備驅(qū)動程序發(fā)送控制代碼,使得相應的設備執(zhí)行指定操作。函數(shù)若成功,返回一個非0值,否則返回0。
(3) ReadFile 函數(shù)讀由文件指針表示的位置開始處的文件讀數(shù)據(jù),讀操作完成后,文件指針調(diào)整實際讀的字節(jié)數(shù)。函數(shù)若成功,返回一個非0值,否則返回0。
(4) CloseHandle 函數(shù)關閉打開的文件句柄。函數(shù)若成功,返回一個非0值,否則返回0。
實驗與結(jié)論
筆者設計實現(xiàn)了一種印制電路板AOI視覺檢測系統(tǒng),包括硬件電路和軟件程序。硬件結(jié)構(gòu)簡單,可以實現(xiàn)通信傳輸?shù)母叨燃苫瑐鬏斔俾蕽M足AOI檢測系統(tǒng)的實時性要求。圖5為實驗中采集到的PCB板圖像。
圖5 實驗中采集到的PCB板圖像
參考文獻:
1. 賈建祿等,基于以太網(wǎng)的嵌入式視覺傳感器,電子產(chǎn)品世界,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設備驅(qū)動程序開發(fā),電子工業(yè)出版社,2004