Skip to content

BGA焊球高度和直径测量

工程背景

测量背景

BGA 封装工艺为制造晶圆集成电路 IC 和 PCB 电路板之间的连接提供更多可能。BGA 工艺有一定的技术要求,必须严格且精确控制其生产制作,包括确保 BGA 球数量、尺寸和位置的精确性,从而保证封装质量。

本地图片

相机选型

Hypersen-LCF3000

测量项

BGA小球的高度与直径

检测要求

测量精度 ≤ 0.01mm 测量重复性 ≤ 0.004mm 测量周期 ≤ 1s

解决方案

使用AI-Vision软件,首先获取BGA球的位置,然后通过循环测量的方式,测量BGA球的高度与直径信息。运行速度快,精度高,同时流程简单,模块化,方便搭建。

设计思路

本地图片

执行效果展示

  • 工程结果展示

    • 高度结果:

      本地图片

    • 直径结果:

      本地图片

项目流程

一、初始化

  1. 使用Lua脚本工具
  • 拼接表头字符串,保存到csv文件

经验

.. 用于string类型字符串拼接

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

,作为分隔符,分割每个数据项

lua
-- 用于拼接表头的字符串
writeC = ""
writeH = ""

-- 如果文件不存在拼接表头字符串写入文件
if FileExists("./Circle.csv") == false then
    writeC = writeC .. "Time,"
    for i=1,196,1 do
        writeC = writeC .. "R" .. i .. ","
    end
end

PrintToFile("./Circle.csv",writeC)

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

PrintToFile("./Height.csv",writeH)
  1. 使用加载点云工具,加载点云。

二、预处理

本地图片

位置调整

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

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

本地图片

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

拟合平面

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

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

    本地图片

裁切出待测区域

使用3D裁切工具,将BGA球从IM1截取至IM2中,用于后续高度及直径测量。

复制IM用于不同子程序调用

复制IM2到IM3和IM4,分别用于高度和直径测量。

提示

使用并行调用子程序时,每个子程序需要在不同的IM执行。

三、高度直径测量

本地图片

  1. 使用3D斑点工具:找到所有的BGA球的位置信息

  2. 使用3D高度工具,绑定3D斑点工具输出变量中区域作为输入区域,对所有BGA球进行高度测量。

    本地图片

  3. 使用3D圆工具,绑定3D斑点工具输出变量中区域作为输入区域,获取BGA球拟合圆信息(圆心,半径,方向向量)。

四、数据保存

使用Lua脚本工具

  • 绑定全局变量中存储的高度信息及直径信息

  • 编辑lua脚本拼接高度直径信息到字符串

  • 将测量的196个球的信息写入文件中。

lua
-- 用于拼接表头的字符串
writeC = ""
writeH = ""

-- 如果文件不存在拼接表头字符串写入文件
if FileExists("./Circle.csv") == false then
    writeC = writeC .. "Time,"
    for i=1,196,1 do
        writeC = writeC .. "R" .. i .. ","
    end
end

PrintToFile("./Circle.csv",writeC)

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

PrintToFile("./Height.csv",writeH)

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