Skip to content

焊点缺陷检测

工程背景

测量背景

随着电子产品集成度提高,焊点质量直接影响产品性能与可靠性。为确保产品质量,需精准测量焊点尺寸、形态及电气性能,及时发现缺陷,优化生产工艺,提升产品竞争力。

本地图片

相机选型

盛相ST081043

测量项

焊点的体积、高度、截面积

检测要求

测量精度 ≤ 0.05mm 测量重复性 ≤ 0.05mm 测量周期 ≤ 3s

解决方案

使用AI-Vision软件,使用焊点检测集成工具,一键测量焊点信息。运行速度快,精度高,同时流程简单,模块化,方便搭建。

设计思路

本地图片

执行效果展示

  • 工程结果展示

    本地图片

项目流程

一、初始化

[00] 使用Lua脚本工具,生成保存数据的csv文件“Test”。

lua

-- 生成保存检测数据的csv文件
-- 生成用于拼接字符串的表头
write = ""

-- 字符串写入csv文件中
-- 当无该文件时,系统会自动生成该文件,同时该工具会WARN提示系统内无该文件
if FileSize("./Test.csv") <= 0 then
   write = write .. "Time,"
   for i =1,3,1 do
       write = write .. "Circularity" .. i ..",Circumference" .. i ..",Area" .. i ..",FeretX" .. i ..",FeretY" .. i ..",MaxHeight" .. i ..",SurfaceArea" .. i ..",Volume" .. i  ..","
   end
   write = write .. "\n"
end

write = write .. os.date("%Y_%m_%d %H:%M:%S") .. ","

-- 字符串写入文件中
fprint("./Test.csv", write)

[01] 使用加载点云工具,加载点云。

本地图片

二、初定位

[02-05] 使用3D方形探针工具3D几何交点工具输出焊板左下侧顶点坐标并推送至寄存器中;同时使用3D位置调整工具,以该点作为新原点,调整X轴Y轴的位置。

本地图片

[06-07] 使用3D区域工具3D平面工具选择区域并拟合零平面,同时调整Z轴位置。

本地图片

三、焊点测量

[08-10] 使用焊点检测工具,测量焊点体积、高度、截面积等信息。

本地图片

[11] 使用Lua脚本工具,保存测量的数据。

lua

-- 读取测量数据并转换为表格模式
R1 = GetVariable("Result_1")
r1 = ConvertJsonToTable(R1)
R2 = GetVariable("Result_2")
r2 = ConvertJsonToTable(R2)
R3 = GetVariable("Result_3")
r3 = ConvertJsonToTable(R3)

write = ""
-- 读取数据并拼接如字符串中
write = write .. string.format("%.3f,",r1 .Result[1]["Circularity"]) 
.. string.format("%.3f,",r1.Result[1]["Circumference"]) 
.. string.format("%.3f,",r1.Result[1]["Cross Section Area"])
.. string.format("%.3f,",r1.Result[1]["Feret X"]) 
.. string.format("%.3f,",r1.Result[1]["Feret Y"]) 
.. string.format("%.3f,",r1.Result[1]["Max Height"]) 
.. string.format("%.3f,",r1.Result[1]["Surface Area"]) 
.. string.format("%.3f,",r1.Result[1]["volume"]) 

write = write .. string.format("%.3f,",r2 .Result[1]["Circularity"]) 
.. string.format("%.3f,",r2.Result[1]["Circumference"]) 
.. string.format("%.3f,",r2.Result[1]["Cross Section Area"])
.. string.format("%.3f,",r2.Result[1]["Feret X"]) 
.. string.format("%.3f,",r2.Result[1]["Feret Y"]) 
.. string.format("%.3f,",r2.Result[1]["Max Height"]) 
.. string.format("%.3f,",r2.Result[1]["Surface Area"]) 
.. string.format("%.3f,",r2.Result[1]["volume"]) 

write = write .. string.format("%.3f,",r1 .Result[1]["Circularity"]) 
.. string.format("%.3f,",r3.Result[1]["Circumference"]) 
.. string.format("%.3f,",r3.Result[1]["Cross Section Area"])
.. string.format("%.3f,",r3.Result[1]["Feret X"]) 
.. string.format("%.3f,",r3.Result[1]["Feret Y"]) 
.. string.format("%.3f,",r3.Result[1]["Max Height"]) 
.. string.format("%.3f,",r3.Result[1]["Surface Area"]) 
.. string.format("%.3f,",r3.Result[1]["volume"]) 

write = write .. "\n"

-- 保存数据至csv文件中
fprint("./Test.csv",write)

AI-Vision,让3D测量更简单