焊锡球体积高度测量
工程背景
测量背景
鉴于焊锡球在芯片封装中的关键作用,其高度、圆度等参数直接影响产品质量。为确保稳定性和可靠性,需高精度测量技术应对反光、精度等挑战,实现全检要求,提升产品质量与生产效率。

相机选型
盛相科技 SS081017
测量项
1.焊锡球高度
2.焊锡球体积
检测要求
测量精度 ≤ 0.02mm
测量重复性 ≤ 0.015mm
测量周期 ≤ 600ms
解决方案
AI-Vision使用裁切工具,将焊锡球裁切出来,然后使用Blob工具,找到每个焊锡球的位置,使用高度工具与体积工具一键测量。
设计思路

执行效果展示
工程结果展示
- 体积测量结果

- 高度测量结果

项目流程
一、初始化
- 使用
lua脚本工具,初始化用于保存数据的csv文件。
经验
.. 用于string类型字符串拼接
part1 = "Hello, "
part2 = "world!"
result = part1 .. part2
print(result) # 输出: Hello, world!
,作为分隔符,分割每个数据项
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)- 使用
加载点云工具,加载需要处理的点云图。

- 使用
3D裁切工具,将IM1中的点云复制到IM1中,方便后续处理。
二、预处理

位置调整
使用
3D方形探针工具,输出工件的两条边。
使用
3D几何交点工具,输出两直线交点。使用
3D位置调整工具,根据输出的直线交点调整点云位置。
拟合平面
使用
3D区域工具,选择拟合平面的区域。
使用
3D平面工具,根据上个工具选择的区域,拟合平面并将其设置为零平面。
裁切待测区域
使用
3D裁切工具,裁切出焊点区域使用
3D裁切工具,选择反转裁切,裁切掉不需要测量的区域,留下焊点。使用
3D裁切工具,复制IM2到IM3及IM4,用于体积高度测量。

三、体积高度测量

使用
3D斑点工具,输出每个焊点的位置信息。
使用
3D体积工具,绑定3D斑点工具输出变量blob_center_points(包括所有焊点位置信息)作为输入区域,测量所有焊点体积。使用
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
-- 拼接字符串初始化
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)经验提炼
核心步骤:
3D斑点获取待测位置信息
批量测量体积高度
