Skip to content

焊点缺陷检测

工程背景

测量背景

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

本地图片

相机选型

盛相ST081043

测量项

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

检测要求

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

解决方案

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

设计思路

本地图片

执行效果展示

  • 工程结果展示

    本地图片

项目流程

一、初始化

  1. 使用Lua脚本工具,生成保存数据的csv文件“Test.csv”。
lua
-- 生成保存检测数据的csv文件
-- 生成用于拼接字符串的表头
write = ""

-- 无该文件时,系统自动生成
if FileExists("./Test.csv") == false 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") .. ","

-- 字符串写入文件
WriteToFile("./Test.csv", write)
  1. 使用加载点云工具,加载点云。

二、预处理

本地图片

位置调整

  1. 使用3D方形探针工具,得到工件的左侧与下侧两条边。

本地图片

  1. 使用3D几何交点工具,绑定上一步算子变量输出的两条边作为输入几何,输出两直线交点。

  2. 使用3D位置调整工具,绑定上一步算子输出输出的直线交点作为新原点调整点云XY位置。

平面拟合

  1. 使用3D区域工具,选择拟合平面的区域。

  2. 使用3D平面工具,绑定上一步算子输出的变量区域作为输入区域,拟合平面并将其设置为零平面。

    本地图片

三、焊点测量

使用三个焊点检测工具,分别测量三个焊点焊点体积、高度、截面积等信息。

本地图片

四、数据保存

使用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
write = ""
-- 读取数据并拼接到字符串中
write = write .. string.format("%.3f,%.3f,%.3f,%.3f,%.3f,%.3f", 
    spot1.cross_section_circularity[1], 
    spot1.cross_section_circumference[1],
    spot1.cross_section_area[1],
    spot1.height,
    spot1.surface_area,
    spot1.volume)

write = write .. string.format("%.3f,%.3f,%.3f,%.3f,%.3f,%.3f", 
    spot2.cross_section_circularity[1], 
    spot2.cross_section_circumference[1],
    spot2.cross_section_area[1],
    spot2.height,
    spot2.surface_area,
    spot2.volume)

write = write .. string.format("%.3f,%.3f,%.3f,%.3f,%.3f,%.3f", 
    spot3.cross_section_circularity[1], 
    spot3.cross_section_circumference[1],
    spot3.cross_section_area[1],
    spot3.height,
    spot3.surface_area,
    spot3.volume)

write = write .. "\n"

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

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