基于USB通信的印制電路板AOI視覺檢測系統(tǒng)
引言
隨著表面組裝技術(SMT)中所使用的印制電路板(PCB)導體圖形的細線化,SMT元器件的微型化,以及SMT組件的高密度組裝和快速組裝的發(fā)展趨勢,采用目檢或人工光學檢測的形式檢測SMT組裝質量已不能適應。為此,自動光學檢測(AOI)技術作為SMT組裝質量檢測的主要技術手段,在SMT中應用越來越普遍。
AOI,也稱為自動視覺檢測,是基于光學原理,綜合采用圖像分析、計算機和自動控制等多種技術,對生產中遇到的缺陷進行檢測和處理,是較新的確認制造缺陷的方法。AOI系統(tǒng)按技術劃分為精密機械、電氣控制、視覺系統(tǒng)、軟件系統(tǒng)4大部分組成,其核心是一套基于CMOS或CCD的圖像采集系統(tǒng)、交流伺服控制x、y工作臺及圖像處理軟件系統(tǒng)。圖1為所設計的PCB板AOI檢測系統(tǒng)框圖。
視覺檢測系統(tǒng)硬件設計
AOI系統(tǒng)究其本質是一套基于機器視覺技術的表面缺陷檢測系統(tǒng)。如何獲取高質量的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的寫入圖像數據,同時DSP通過DMA將圖像轉移至SDRAM中并進行圖像處理,在處理結束后,將處理的結果通過DSP內置的USB接口傳給微機或其他設備。I/O接口經擴展后,將控制觸發(fā)信號交由工作臺及電氣控制系統(tǒng),完成系統(tǒng)采集控制的目的。

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

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

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

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