黃 韜
(南京泊納萊電子科技有限公司,江蘇 南京 211102)
董遠川 王野平
(同濟大學 機械與能源工程學院,上海 201804)
飛針測試機用探針代替針床,在X-Y方向上裝有多個由電機驅(qū)動可分別快速移動的探針,利用探針在Z方向的移動同印制電路板(PCB)焊盤接觸來進行電氣測量,四個探針布置如圖1所示。測試人員把設計工程師的CAD數(shù)據(jù)轉(zhuǎn)換成可使用的文件,這些文件包含了需要測試焊盤的點號、網(wǎng)絡號、x、y坐標、正反面點屬性信息,由此決定驅(qū)動各探針的X、Y、Z電機移動。文件信息中點號表示測試焊盤在PCB測試坐標系中的測試點編號;網(wǎng)絡號表示該測試焊盤屬于PCB上哪一網(wǎng)絡;x、y坐標表示點號在坐標系中的橫縱坐標位置;正反面點屬性信息表示該測試焊盤在PCB正面或是背面或是通孔。根據(jù)被測試PCB的大小情況不同,一塊PCB上會有幾千甚至上萬個測試焊盤,如果探針不按一種最優(yōu)或較優(yōu)的路徑移動進行測試,可能會耗費數(shù)倍的測試時間,延誤生產(chǎn)[1][2]。
圖1 探針布置圖
飛針測試路徑規(guī)劃本質(zhì)上是一個旅行推銷員問題(TSP,Traveling Saleman Problem)。TSP描述這樣一種場景,一個推銷員計劃拜訪多個地點,需要找到一條最短路線,使得所有地點都被訪問一次且只有一次,其中每兩個地點之間都可以到達。幾十年前已找到一些指數(shù)級算法,雖然能精確地求解TSP,但隨著問題規(guī)模變大,這些算法會出現(xiàn)組合爆炸而完全失效;近似算法或啟發(fā)式算法如模擬退火算法,盡管不能精確求解,但能夠把誤差控制在可容忍范圍內(nèi)并快速得到答案[3][4]。
公司目前采用的飛針測試機電測方法主要包括電容測試法和電阻測試法。電容測試法測試效率高,但測得的電容值容易受測試導線、電磁場等外部條件的干擾,測試結(jié)果不是十分可靠,而電阻測試法測試準確率高,所以對于一塊PCB的電測試先采用電容法對全部焊盤進行故障排查,對于有問題的焊盤再采用電阻法進行復測確認。電阻測試法包括開路測試和短路測試,根據(jù)測試焊盤之間的導通關(guān)系可以將它們分為很多“子集”,每個“子集”內(nèi)部之間應該互相導通,對應的測試方法為開路測試,也稱導通性測試;任意兩個不同“子集”之間應該互相絕緣,對應的測試方法為短路測試,也稱絕緣性測試,業(yè)界習慣將這樣的“子集”稱為同一個網(wǎng)絡。
電容測試法的基本原理為:電容量C=εS/L,ε為介質(zhì)的介電常數(shù),S為導電面積,L為待測焊盤與基準焊盤之間的距離,開路會導致導電面積S變小,電容值下降,短路會導致導電面積S增加,電容值上升;同一網(wǎng)絡之間應該導通,不同網(wǎng)絡之間應該絕緣;所以進行電容法測試時,同一網(wǎng)絡中各焊盤相對基準點的電容值應近似相等,如果某一焊盤處的電容值變小,則在該焊盤周圍存在開路情況;如果兩相鄰網(wǎng)絡中各焊盤相對基準點的電容值近似相等,同時比標準板的對應電容值大,則兩相鄰網(wǎng)絡間存在短路情況(是否為相鄰網(wǎng)絡由官方提供的PCB資料決定)。基于上述原理電容測試法基本不可能把有問題焊盤誤測為無問題焊盤,但該法對電容太過依賴,易受電容因素的影響,所以有把無問題焊盤誤測為有問題焊盤的可能,不過這可以通過電阻法復測來彌補[7][8]。電容測試法的步驟按先后包括:先測定基準網(wǎng)絡電容值,保證基準網(wǎng)絡各焊盤之間互相導通;再從基準網(wǎng)絡中選取一個基準點,測定標準板電容值并記錄;最后測定待測PCB各焊盤電容值,發(fā)現(xiàn)與標準板對應焊盤電容值不符時用電阻法進行復測確認[5][6]。
飛針測試機電容測試法的路徑規(guī)劃選定基準網(wǎng)絡是一塊PCB上面積最大的網(wǎng)絡,一般來說是接地網(wǎng)絡,在后續(xù)步驟中需要從該網(wǎng)絡中選取基準點?;鶞示W(wǎng)絡電容測試法的編程思想如下,開發(fā)工具為編程語言C++。首先確定基準點和基準針分四種情況:只有正面有測試焊盤且通孔數(shù)不為零,無需考慮更換基準針問題,C探針選為基準針,通孔測試焊盤中選一個盡量靠邊的作為基準點;只有反面有測試焊盤且通孔數(shù)不為零,無需考慮更換基準針問題,A探針選為基準針,通孔測試焊盤中選一個盡量靠邊的作為基準點;只有正面有測試焊盤(通孔為零)或反面測試焊盤數(shù)大于等于正面(有無通孔無所謂),要考慮更換基準針問題,A探針先選為基準針,正面測試焊盤中選一個盡量靠邊的作為基準點;只有反面有測試焊盤(通孔為零)或正面測試焊盤數(shù)大于反面(有無通孔無所謂),要考慮更換基準針問題,C探針先選為基準針,反面測試焊盤中選一個盡量靠邊的作為基準點?;鶞梳樤陔姕y過程中應保持不動,為其余三根探針進行路徑規(guī)劃[9]。
在用C++編寫路徑規(guī)劃算法時,不能僅考慮使探針電測路徑最短,因為四根探針是全部到達指定位置后同時落針的,所以會出現(xiàn)“小步等待大步”的問題,為使電測時間盡可能短,生成測試路徑時應盡可能將相似步距的運動編排在一起。先將所有測試焊盤按照密度分為幾個簇;再在每個簇中以中心線分界將測試焊盤分給同一面的左右兩探針,這是為了防止撞針左探針橫坐標要小于右探針橫坐標;最后要考慮更換基準針的問題。編程中最核心的兩個算法是聚類算法(KMeans)和模擬退火算法(SaAlgorithm),前者用來把測試焊盤按密集程度分為幾個小簇,后者用來把屬于每個探針的測試焊盤按照不重復遍歷路徑之和最短,重新排序[10]。圖2是采用聚類算法后,將同一面的測試焊盤在PCB坐標系中,按照密集程度劃分為4個小簇。為使對比效果明顯,采用Pycharm繪圖,為分類后不同簇的測試焊盤標注不同顏色。圖3是在每一簇中以中心線分界將測試焊盤分給同一面的左右兩探針。
圖2 聚類算法分簇圖
圖3 將每一簇焊盤分給同面左右兩探針
合理的路徑規(guī)劃關(guān)乎飛針測試機的電測效率,這一點在PCB板測試焊盤數(shù)上千上萬時尤其明顯,所以制定一套合理的路徑規(guī)劃算法是一個關(guān)鍵問題。不同的電測方法對應不同的路徑規(guī)劃算法,常用的電測方法主要包括電容測試法和電阻測試法,本文重點論述了基準網(wǎng)絡電容測試法的路徑規(guī)劃算法。本文也可為飛針測試機其他電測方法的路徑規(guī)劃提供參考。