基于USB通信的印制電路板AOI視覺(jué)檢測系統
引言
隨著(zhù)表面組裝技術(shù)(SMT)中所使用的印制電路板(PCB)導體圖形的細線(xiàn)化,SMT元器件的微型化,以及SMT組件的高密度組裝和快速組裝的發(fā)展趨勢,采用目檢或人工光學(xué)檢測的形式檢測SMT組裝質(zhì)量已不能適應。為此,自動(dòng)光學(xué)檢測(AOI)技術(shù)作為SMT組裝質(zhì)量檢測的主要技術(shù)手段,在SMT中應用越來(lái)越普遍。
AOI,也稱(chēng)為自動(dòng)視覺(jué)檢測,是基于光學(xué)原理,綜合采用圖像分析、計算機和自動(dòng)控制等多種技術(shù),對生產(chǎn)中遇到的缺陷進(jìn)行檢測和處理,是較新的確認制造缺陷的方法。AOI系統按技術(shù)劃分為精密機械、電氣控制、視覺(jué)系統、軟件系統4大部分組成,其核心是一套基于CMOS或CCD的圖像采集系統、交流伺服控制x、y工作臺及圖像處理軟件系統。圖1為所設計的PCB板AOI檢測系統框圖。
視覺(jué)檢測系統硬件設計
AOI系統究其本質(zhì)是一套基于機器視覺(jué)技術(shù)的表面缺陷檢測系統。如何獲取高質(zhì)量的PCB表面圖像信息成為PCB光學(xué)檢測中首要解決的難題和重點(diǎn),這是PCB表面缺陷檢測的關(guān)鍵。由于PCB缺陷的特殊性,AOI系統對視覺(jué)采集系統提出了很高的要求:高分辨率、高速率、實(shí)時(shí)檢測等。
視覺(jué)采集系統
針對AOI系統要求,選用基于DSP+CPLD的圖像采集處理模式。圖2為視覺(jué)采集系統框圖。系統通過(guò)DSP給CPLD發(fā)出一個(gè)采集命令,由CPLD控制CMOS圖像傳感器向FIFO的寫(xiě)入圖像數據,同時(shí)DSP通過(guò)DMA將圖像轉移至SDRAM中并進(jìn)行圖像處理,在處理結束后,將處理的結果通過(guò)DSP內置的USB接口傳給微機或其他設備。I/O接口經(jīng)擴展后,將控制觸發(fā)信號交由工作臺及電氣控制系統,完成系統采集控制的目的。

圖2視覺(jué)采集系統框圖
USB通信接口電路
本設計采用的DSP芯片TMS320VC5509A集成了一個(gè)USB控制模塊(USB2.0fullspeed),可以完成和USB主機系統之間的讀寫(xiě)操作,具有無(wú)需外加邏輯電路、使用方便等優(yōu)點(diǎn)。使用TMS320VC5509A的片上USB模塊,完成DSP前端圖像采集系統與后臺PC機之間的通信硬件電路設計,簡(jiǎn)化了圖像采集系統的硬件控制軟件和后臺PC機的驅動(dòng)程序。

圖3TMS320VC5509A的USB接口電路
圖3為DSP片內USB模塊與PC機進(jìn)行數據通信的硬件接口電路。其中左邊3個(gè)引腳PU、DP、DN是TMS320VC5509A的片上引腳,右邊的6個(gè)引腳組成了一個(gè)MiniUSB接口,利用USB連接線(xiàn)就可以完成與PC機的連接。中間的阻容電路起加強輸入輸出可靠性的作用。
軟件程序設計

圖4視覺(jué)系統中USB通信數據流
如圖4所示,本系統中USB通信的軟件程序主要由四部分組成。在設備端:設備端驅動(dòng)程序,也稱(chēng)之為固件程序;設備端應用程序,主要完成數據搬運,以及與其他硬件設備的交互工作。在主機端:主機端驅動(dòng)程序;主機端應用程序。由于USB是分層結構,主機端驅動(dòng)和設備端驅動(dòng)完成對USB設備的枚舉和配置;而在主機端應用程序和設備端應用程序之間實(shí)現數據的通信。
本系統中,DSP作為USB傳輸的設備端,同時(shí)由于USB是嚴格的主從結構,所有的配置、枚舉及數據傳輸命令都必須由主機下達,所以在設備端的程序設計時(shí),固件程序設計成一個(gè)復雜的中斷服務(wù)程序,用以主機對DSP作為USB設備配置、枚舉時(shí)的應答。而原本在CCS中運行的DSP采集主程序也必須改寫(xiě)成中斷程序,這樣才能完成對DSP固件程序和DSP采集程序的整合,使之整合到一個(gè)main()運行程序中,程序運行時(shí),啟動(dòng)對DSP的初始化,時(shí)鐘配置和USB模塊初始化;當主機發(fā)出采集圖像命令時(shí),DSP程序進(jìn)入采集中斷程序,執行實(shí)時(shí)采集中斷程序;當主機發(fā)出USB模塊配置枚舉命令時(shí),USB中斷服務(wù)程序對主機做出回應;當主機發(fā)出傳輸圖像命令時(shí),DSP程序進(jìn)入數據搬運中斷程序。
DSP端的固件程序
USB固件程序的結構一般是基于中斷處理的。主程序完成必要的初始化之后就等待USB中斷,接收到USB中斷后依據中斷的類(lèi)型進(jìn)入不同中斷服務(wù)程序。USB協(xié)議的主從模式?jīng)Q定了USB總線(xiàn)上傳輸的發(fā)起和終止都是主機控制的,因此,固件編程中只要滿(mǎn)足了主機的要求,或者說(shuō)對主機的請求給予了及時(shí)的響應,那么固件的編程也就完成了。
USB固件應用程序主函數例程:
voidmain()
{
EnableAPLL();
//使能USB模塊的模擬鎖相環(huán)
CSL_init();
//DSP的CSL庫初始化函數
INT_DisableGlobal();//關(guān)閉全局中斷
INT_SetVec(0x03ff00);
//設置中斷向量表在RAM中的地址
PLL_Init(48);//將USB模塊
的時(shí)鐘調整到48MHz
Collect_main();//CMOS圖像
采集程序
USBTest_Init();//初始化USB
模塊,初始化完畢打開(kāi)全局中斷
while(1);//循環(huán)等待狀態(tài)
}
端點(diǎn)0的控制傳輸是USB枚舉的默認傳輸端口,其中斷服務(wù)程序是USB固件程序設計的難點(diǎn)和關(guān)鍵。
PC端的驅動(dòng)程序及上位機應用程序
PC端的驅動(dòng)程序及上位機應用程序設計相對比較簡(jiǎn)單,選用DriverStudio開(kāi)發(fā)工具開(kāi)發(fā)USB驅動(dòng)程序,DriverStudio對設備驅動(dòng)程序開(kāi)發(fā)工具DDK中操作進(jìn)行封裝,減少了開(kāi)發(fā)時(shí)間,提高了效率。通過(guò)DriverStudio的工具Driverwizard生成的驅動(dòng)程序為開(kāi)發(fā)者提供了一個(gè)基本框架,使用者只需修改較少的或者基本不用代碼就可以實(shí)現相應的功能了。
WindowsXP中的上位機程序不能直接訪(fǎng)問(wèn)底層的硬件,需要通過(guò)驅動(dòng)程序進(jìn)行(讀、寫(xiě)、中斷等)操作。設備的驅動(dòng)程序由I/O管理器管理和調動(dòng)。上位機程序在用戶(hù)模式下通過(guò)Win32子系統對Win32API函數進(jìn)行調用。Win32API函數通過(guò)I/O管理器向內核模式下的驅動(dòng)程序傳遞IRP。驅動(dòng)程序通過(guò)處理IRP,來(lái)完成應用程序和硬件程序信息的交互。訪(fǎng)問(wèn)USB設備驅動(dòng)的Win32API函數:
(1)CreatFile函數創(chuàng )建或打開(kāi)文件,并返回一個(gè)可用于訪(fǎng)問(wèn)文件的句柄。
(2)DeviceIoControl函數直接給指定的設備驅動(dòng)程序發(fā)送控制代碼,使得相應的設備執行指定操作。函數若成功,返回一個(gè)非0值,否則返回0。
(3)ReadFile函數讀由文件指針表示的位置開(kāi)始處的文件讀數據,讀操作完成后,文件指針調整實(shí)際讀的字節數。函數若成功,返回一個(gè)非0值,否則返回0。
(4)CloseHandle函數關(guān)閉打開(kāi)的文件句柄。函數若成功,返回一個(gè)非0值,否則返回0。
實(shí)驗與結論
筆者設計實(shí)現了一種印制電路板AOI視覺(jué)檢測系統,包括硬件電路和軟件程序。硬件結構簡(jiǎn)單,可以實(shí)現通信傳輸的高度集成化,傳輸速率滿(mǎn)足AOI檢測系統的實(shí)時(shí)性要求。圖5為實(shí)驗中采集到的PCB板圖像。

圖5實(shí)驗中采集到的PCB板圖像
參考文獻:
1.賈建祿等,基于以太網(wǎng)的嵌入式視覺(jué)傳感器,電子產(chǎn)品世界,2008.3
2.MotiYanuka,YossiPinhassi,AOIvs.AFIinPCBDefectDetection,Circuitree,July2001
3.TMS320VC5509DSPUniversalSerialBus(USB)ModuleReferenceGuide,TexasInstrumentsIncorporated
4.TMS320C55xCSLUSBProgrammer‘sReferenceGuide,TexasInstrumentsIncorporated
5.武安河、邰銘、于洪濤,Windows2000/XPWDM設備驅動(dòng)程序開(kāi)發(fā),電子工業(yè)出版社,2004
評論