Skip to content

焊錫球體積高度測量 ​

工程背景 ​

測量背景 ​

鑑於焊錫球在晶片封裝中的關鍵作用,其高度、圓度等引數直接影響產品質量。為確保穩定性和可靠性,需高精度測量技術應對反光、精度等挑戰,實現全檢要求,提升產品質量與生產效率。

本地圖片

相機選型 ​

盛相科技 SS081017

測量項 ​

1.焊錫球高度

2.焊錫球體積

檢測要求 ​

測量精度 ≤ 0.02mm

測量重複性 ≤ 0.015mm

測量週期 ≤ 600ms

解決方案 ​

Vision-Studio使用裁切工具,將焊錫球裁切出來,然後使用Blob工具,找到每個焊錫球的位置,使用高度工具與體積工具一鍵測量。

設計思路 ​

本地圖片

執行效果展示 ​

  • 工程結果展示

    • 體積測量結果

    本地圖片

    • 高度測量結果

    本地圖片

專案流程 ​

一、初始化 ​

  1. 使用lua脚本工具,初始化用於儲存資料的csv檔案。

經驗

.. 用於string型別字串拼接

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

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

lua
writeV = ""
writeH = ""

if FileExists("./Volumn.csv") == false then
    writeV = writeV .. "Time,"
    for i=1,78,1 do
        writeV = writeV .. "Volume" .. i .. ","
    end
end

PrintToFile("./Volumn.csv",writeV)

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

PrintToFile("./Height.csv",writeV)
  1. 使用加载点云工具,載入需要處理的點雲圖。

本地圖片

  1. 使用3D裁切工具,將IM1中的點雲複製到IM1中,方便後續處理。

二、預處理 ​

本地圖片

位置調整 ​

  1. 使用3D方形探针工具,輸出工件的兩條邊。

    本地圖片

  2. 使用3D几何交点工具,輸出兩直線交點。

  3. 使用3D位置调整工具,根據輸出的直線交點調整點雲位置。

擬合平面 ​

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

    本地圖片

  2. 使用3D平面工具,根據上個工具選擇的區域,擬合平面並將其設定為零平面。

    本地圖片

裁切待測區域 ​

  1. 使用3D裁切工具,裁切出焊點區域

  2. 使用3D裁切工具,選擇反轉裁切,裁切掉不需要測量的區域,留下焊點。

  3. 使用3D裁切工具,複製IM2到IM3及IM4,用於體積高度測量。

本地圖片

三、體積高度測量 ​

本地圖片

  1. 使用3D斑点工具,輸出每個焊點的位置資訊。

    本地圖片

  2. 使用3D体积工具,繫結3D斑點工具輸出變數blob_center_points(包括所有焊點位置資訊)作為輸入區域,測量所有焊點體積。

  3. 使用3D高度工具,繫結3D斑點工具輸出變數blob_center_points(包括所有焊點位置資訊),測量所有焊點高度。

四、資料儲存 ​

使用lua脚本工具,儲存資料到csv檔案

經驗

string.format 用於格式化字串 %.nf表示將浮點數格式化為保留 n 位小數。

pi = 3.14159 str = string.format("Pi is approximately %.3f", pi) print(str) -- 輸出: Pi is approximately 3.141

lua
-- 拼接字符串初始化
writeV = ""
writeH = ""

-- 拼接时间(第一列)
writeV = writeV .. os.date("%Y_%m_%d %H:%M:%S") .. ","
writeH = writeH .. os.date("%Y_%m_%d %H:%M:%S") .. ","

-- 拼接体积及高度值(2-79列)
for i= 1,78,1 do
    writeV = writeV .. string.format("%.3f,",Volume[i])
    writeH = writeH .. string.format("%.3f,",Height[i])
end

-- 写入文件
WriteLineToFile("./Volumn.csv",writeV)
WriteLineToFile("./Height.csv",writeH)

經驗提煉 ​

核心步驟:

  1. 3D斑點獲取待測位置資訊

  2. 批次測量體積高度

Vision Studio