Appearance
焊锡球体积高度测量
工程背景
测量背景
鉴于焊锡球在芯片封装中的关键作用,其高度、圆度等参数直接影响产品质量。为确保稳定性和可靠性,需高精度测量技术应对反光、精度等挑战,实现全检要求,提升产品质量与生产效率。
相机选型
盛相科技 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!
,
作为分隔符,分割每个数据项
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)
- 使用
加载点云
工具,加载需要处理的点云图。
- 使用
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
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)
经验提炼
核心步骤:
3D斑点获取待测位置信息
批量测量体积高度