Skip to content

BGA焊球高度和直徑測量

工程背景

測量背景

BGA 封裝工藝為製造晶圓積體電路 IC 和 PCB 電路板之間的連線提供更多可能。BGA 工藝有一定的技術要求,必須嚴格且精確控制其生產製作,包括確保 BGA 球數量、尺寸和位置的精確性,從而保證封裝質量。

本地圖片

相機選型

Hypersen-LCF3000

測量項

BGA小球的高度與直徑

檢測要求

測量精度 ≤ 0.01mm 測量重複性 ≤ 0.004mm 測量週期 ≤ 1s

解決方案

使用Vision-Studio軟體,首先獲取BGA球的位置,然後通過迴圈測量的方式,測量BGA球的高度與直徑資訊。執行速度快,精度高,同時流程簡單,模組化,方便搭建。

設計思路

本地圖片

執行效果展示

  • 工程結果展示

    • 高度結果:

      本地圖片

    • 直徑結果:

      本地圖片

專案流程

一、初始化

  1. 使用Lua脚本工具
  • 拼接表頭字串,儲存到csv檔案

經驗

.. 用於string型別字串拼接

part1 = "Hello, "
part2 = "world!"
result = part1 .. part2
print(result) # 輸出: Hello, world!

,作為分隔符,分割每個資料項

lua
-- 用于拼接表头的字符串
writeC = ""
writeH = ""

-- 如果文件不存在拼接表头字符串写入文件
if FileExists("./Circle.csv") == false then
    writeC = writeC .. "Time,"
    for i=1,196,1 do
        writeC = writeC .. "R" .. i .. ","
    end
end

PrintToFile("./Circle.csv",writeC)

if FileExists("./Height.csv") == false then
    writeH = writeH .. "Time,"
    for i=1,196,1 do
        writeH = writeH .. "H" .. i .. ","
    end
end

PrintToFile("./Height.csv",writeH)
  1. 使用加载点云工具,載入點雲。

二、預處理

本地圖片

位置調整

  1. 使用3D方形探针工具,得到工件的左側與上側兩條邊。

  2. 使用3D几何交点工具,繫結上一步運算元變數輸出的兩條邊作為輸入幾何,輸出兩直線交點。

本地圖片

  1. 使用3D位置调整工具,繫結上一步運算元輸出輸出的直線交點作為新原點調整點雲位置。

擬合平面

  1. 使用3D区域工具,選擇擬合平面的區域。

  2. 使用3D平面工具,繫結上一步運算元輸出的變數區域作為輸入區域,擬合平面並將其設定為零平面。

    本地圖片

裁切出待測區域

使用3D裁切工具,將BGA球從IM1擷取至IM2中,用於後續高度及直徑測量。

複製IM用於不同子程式呼叫

複製IM2到IM3和IM4,分別用於高度和直徑測量。

提示

使用並行呼叫子程式時,每個子程式需要在不同的IM執行。

三、高度直徑測量

本地圖片

  1. 使用3D斑点工具:找到所有的BGA球的位置資訊

  2. 使用3D高度工具,繫結3D斑点工具輸出變數中區域作為輸入區域,對所有BGA球進行高度測量。

    本地圖片

  3. 使用3D圆工具,繫結3D斑点工具輸出變數中區域作為輸入區域,獲取BGA球擬合圓資訊(圓心,半徑,方向向量)。

四、資料儲存

使用Lua脚本工具

  • 繫結全域性變數中儲存的高度資訊及直徑資訊

  • 編輯lua指令碼拼接高度直徑資訊到字串

  • 將測量的196個球的資訊寫入檔案中。

lua
-- 用于拼接表头的字符串
writeC = ""
writeH = ""

-- 如果文件不存在拼接表头字符串写入文件
if FileExists("./Circle.csv") == false then
    writeC = writeC .. "Time,"
    for i=1,196,1 do
        writeC = writeC .. "R" .. i .. ","
    end
end

PrintToFile("./Circle.csv",writeC)

if FileExists("./Height.csv") == false then
    writeH = writeH .. "Time,"
    for i=1,196,1 do
        writeH = writeH .. "H" .. i .. ","
    end
end

PrintToFile("./Height.csv",writeH)

Vision Studio