简介:这份《华为钢网设计规范标准》doc文档,面向SMT工艺工程师、PCB设计人员及钢网供应商技术人员,系统梳理企业级钢网从设计到制作的全流程技术要求,可用于新品导入、工艺评审与外协加工时的标准依据。资源包仅含1个doc文件,体积115KB,虽为单一文档,但目录结构完整,覆盖网框材料、钢片材料、网用丝网与钢丝网、胶布与胶水选型,以及制作方法与光绘文件格式等基础章节。正文进一步细化钢网外形尺寸与标识要求,包括PCB居中偏差、厂商标识与钢网标签位置、MARK点设置、钢片厚度选择,并针对CHIP类元件、SOT系列、排阻、周边型与面阵型引脚IC等给出焊膏印刷开孔设计规则,还涉及通孔回流焊接、BGA植球及印胶钢网开口计算。已有225人学习下载,适合需要按统一规范落地钢网设计、核对开口尺寸与材料参数的读者查阅参考。
1. 钢网设计规范落到产线上,就是一张能算的开孔表
一份名叫《钢网设计规范》的文档,在多数 SMT 工厂的共享盘里都躺着,评审时打开翻两眼,关掉,然后照旧全板 1:1 开孔、0.12mm 通厚下单。真正的问题往往在量产第三周才冒出来:0.35mm 间距的 QFN 侧面爬锡不足、0201 电阻立碑率突然冲到 800ppm、0.4mm pitch 的 BGA 边缘连锡。回头追原因,十有八九能追到同一个动作——开孔面积比压根没算过。
钢网设计规范的价值不在于它罗列了多少条款,而在于它把「开孔开多大、钢网做多厚、什么时候必须上阶梯」这类原本靠老师傅手感拍板的事,变成了可以代入数字的公式和可以卡死的门槛。吃透这套东西,意味着投板前能用一份 CSV 加一段脚本,把整板几百个开孔全部体检一遍,把锡量不足、锡量过剩、连锡、立碑这几类缺陷拦在图纸阶段,而不是等 SPI 报警之后再去改钢网、等两周。
下面按「公式怎么来 → 怎么写进脚本批量算 → 混装板阶梯钢网怎么定量 → 到货怎么验收」这条线走,每一步都给能直接抄的算例和代码。适合做工艺、DFM 评审、SMT 制程的工程师,也适合被钢网供应商一句「这个开不了」堵回来之后想搞清楚边界在哪的人。
2. 从钢网设计规范里拆出开孔的三个硬指标
规范里的条文很多,但真正决定一块钢网能不能印好的,其实就是面积比、宽厚比、开孔比例这三件事。其余关于倒角、抛光、网框、张力的要求,都是为这三件事服务的。先把公式的物理含义理清楚,后面写脚本才不会写错。
2.1 面积比:焊膏能不能从孔壁里脱出来
焊膏被刮刀压进开孔之后,脱模瞬间受两个力拉扯:一个是焊膏与孔壁之间的附着与摩擦阻力,正比于孔壁的侧面积;另一个是焊膏与 PCB 焊盘之间的附着力,正比于开孔的面积。两者的比值就是面积比:
面积比 AR = 开孔面积 / 孔壁侧面积 矩形开孔:AR = (L × W) / (2 × (L + W) × T) 圆孔: AR = πr² / (π × 2r × T) = r / (2T) = d / (4T)T 是钢网厚度。AR 越大,焊膏越容易被焊盘「拽」出来,转移效率越高。行业通行门槛是 AR ≥ 0.66,低于这个值脱模就不稳定,锡量转移率可能掉到 60% 以下;AR 在 0.75 以上算健康;1.0 以上基本不用操心。很多工厂自己的规范会卡到 0.70,给印刷参数留余量,这个松紧可以自己定,但底线不要低于 0.66。
注意:面积比里的「面积」是开孔面积,不是开孔面积与焊盘面积之比。后者在不少工厂叫「开孔比」,是另一个概念,混用会导致评审结论完全反过来。
2.2 宽厚比:窄边对锡膏的摩擦面
宽厚比只看最窄的那条边:
宽厚比 = W_min / T,要求 ≥ 1.5面积比和宽厚比是一对互补的门槛。对方形小焊盘,两个方向同时在缩,面积比先崩;对长条形开孔,比如连接器针脚、屏蔽框、FPC 金手指,长边很长但短边很窄,这时候宽厚比会先卡住。如果脚本里只算面积比,就会放过一批实际上印不出来的长条开孔。
下面是几组常见开口在不同厚度下的实测计算,可以拿来做速查表:
| 开口 L×W (mm) | 钢网厚度 T (mm) | 面积比 | 宽厚比 | 判定 |
|---|---|---|---|---|
| 0.50 × 0.30 | 0.12 | 0.78 | 2.50 | 通过 |
| 0.40 × 0.25 | 0.12 | 0.64 | 2.08 | 面积比不足 |
| 0.40 × 0.25 | 0.10 | 0.77 | 2.50 | 通过 |
| 0.40 × 0.20 | 0.08 | 0.83 | 2.50 | 通过 |
| 0.25 × 0.25 | 0.10 | 0.63 | 2.50 | 面积比不足 |
| 0.25 × 0.22 | 0.08 | 0.73 | 2.75 | 通过 |
把这段判定逻辑写成三行函数,随手就能验算:
# 面积比 / 宽厚比速算:给定开口尺寸和厚度,直接判定是否可印 def check(l, w, t, min_ar=0.66, min_aspect=1.5): ar = (l * w) / (2 * (l + w) * t) # 矩形开孔面积比 asp = min(l, w) / t # 宽厚比取最窄边 return round(ar, 3), round(asp, 3), ar >= min_ar and asp >= min_aspect # 同一个 0.40×0.25 的开口,换四种厚度看结论怎么变 for t in (0.08, 0.10, 0.12, 0.15): print(t, check(0.40, 0.25, t))运行结果里 0.08 和 0.10 两档通过,0.12 和 0.15 全部判负。这解释了一个很常见的现场现象:同一个封装从 0.12mm 钢网换到 0.10mm,锡量不足的报警会自己消失,而工艺参数一个都没动——变的只是面积比从 0.64 提到了 0.77。参数说明上,min_ar和min_aspect两个默认值建议跟着自家规范走,不要照抄别家。
2.3 开孔比例:按封装给档位,不要全板一刀切
面积比和宽厚比过了之后,才轮到决定「开多大」。业界常见的做法是按封装分级给比例,而不是全板 1:1:
| 封装 / 特征 | 开孔比例(相对焊盘) | 常见钢网厚度 | 备注 |
|---|---|---|---|
| 0603 及以上片式 | 1:1,或长边两端各缩 0.02mm | 0.12 ~ 0.15 | 锡量过大易偏位 |
| 0402 | 长边 1:1,短边缩 0.02mm | 0.10 ~ 0.12 | 立碑主要管控对象 |
| 0201 / 01005 | 面积缩 5% ~ 10% | 0.08 ~ 0.10 | 必须逐孔算面积比 |
| QFN 0.5mm pitch | 1:1 | 0.10 ~ 0.12 | — |
| QFN ≤ 0.4mm pitch | 内缩 10% | 0.08 ~ 0.10 | 阶梯减薄的常客 |
| QFN 散热焊盘 | 面积 50% ~ 80%,3×3 或 4×4 网格 | 同板上厚度 | 架桥宽 0.2 ~ 0.3mm |
| BGA ≥ 0.5mm pitch | 1:1 圆孔 | 0.10 ~ 0.12 | — |
| BGA 0.4mm pitch | 按锡球直径 1:1 | 0.08 ~ 0.10 | — |
| 通孔回流焊连接器 | 按锡量反算,见第 4 章 | 0.15 ~ 0.20 或阶梯 | 常需外扩到阻焊上 |
散热焊盘的网格化有个容易忽略的细节:架桥方向最好与刮刀行进方向垂直,否则焊膏会在桥面上堆积,脱模时把桥压塌造成连锡。另外,QFN 热焊盘的总体开孔率控制在 50% ~ 80% 之间是为了兼顾排气和空洞率,开得太满会把助焊剂挥发物封在焊点里,X-Ray 上一片空洞。
至于工艺路线,常见三种:激光切割加电抛光(主流,精度和成本平衡最好)、电铸(孔壁最光滑、能做 0.05 ~ 0.08mm 的薄网,单价高,适合 01005 和细间距)、化学蚀刻(成本最低但锥度和精度差,一般只做红胶网或粗间距板)。没有特殊需求就选激光切割加电抛光,把预算留给细间距器件所在区域的阶梯处理。
3. 用 Python 把钢网设计规范做成批量校验脚本
一张中等复杂度的板子有 3000 到 8000 个开孔,靠手算不可能。真正把规范用起来的方式是把它固化成一个每次投板都跑的校验脚本,输入开孔清单,输出超标清单和改进建议。
3.1 开孔清单从哪来:从钢网层导出 CSV
标准路径是从 CAM 工具里拿数据。用 CAM350、Genesis 或 Ucamco 打开 Gerber,选中钢网层(命名通常是 GTP、Paste、SolderPaste 或 Stencil),用 Aperture Table 或 D 码报表导出,得到「D 码 — 形状 — 尺寸」的对应表,再补上位号或封装名。这样导出的表里,一个 D 码可能被上百个焊盘复用,脚本按 D 码算一次就够了,速度很快。
如果想省掉手工导出这一步,也可以直接读 RS-274X 文件。Python 里常见的是用 gerbonara(早期叫 pcb-tools 的那个库的继任者)打开钢网层,遍历里面的 Flash 对象,从 aperture 属性里拿开孔形状和尺寸。这条路的好处是能和原理图位号做关联,坏处是要处理单位、镜头定义、自定义光圈这些坑,第一次搭起来比较费时间。起步阶段建议先用导出的 CSV 跑通逻辑,再考虑接解析。
3.2 批量计算与分级告警的核心代码
下面这段直接可跑,输入是apertures.csv,输出控制台告警和一份stencil_report.csv:
import csv from dataclasses import dataclass # 三项门槛,按自家规范调整 MIN_AREA_RATIO = 0.66 # 开孔面积 / 孔壁侧面积 MIN_ASPECT_RATIO = 1.5 # 最窄边 / 钢网厚度 STD_THICKNESS = [0.06, 0.08, 0.10, 0.12, 0.13, 0.15, 0.18, 0.20] @dataclass class Aperture: ref: str # 位号或封装名 length: float # 开孔长边 mm width: float # 开孔短边 mm(圆孔时即直径) thickness: float # 该区域钢网厚度 mm shape: str = "rect" # rect / circle def area_ratio(a: Aperture) -> float: if a.shape == "circle": return (a.width / 2) / (2 * a.thickness) # 圆孔 r/(2T) return (a.length * a.width) / (2 * (a.length + a.width) * a.thickness) def aspect_ratio(a: Aperture) -> float: return min(a.length, a.width) / a.thickness def max_thickness(a: Aperture) -> float: """反解同时满足面积比和宽厚比的最大允许厚度""" if a.shape == "circle": t_ar = a.width / (4 * MIN_AREA_RATIO) else: t_ar = (a.length * a.width) / (2 * (a.length + a.width) * MIN_AREA_RATIO) t_aspect = min(a.length, a.width) / MIN_ASPECT_RATIO return min(t_ar, t_aspect) # 两个约束取更严的那个 def pick_thickness(t_max: float) -> float: ok = [t for t in STD_THICKNESS if t <= t_max] return max(ok) if ok else STD_THICKNESS[0] # 无解时退到最薄档 rows = [] with open("apertures.csv", encoding="utf-8") as f: for d in csv.DictReader(f): a = Aperture(d["ref"], float(d["length"]), float(d["width"]), float(d["thickness"]), d.get("shape", "rect")) ar, asp, tm = area_ratio(a), aspect_ratio(a), max_thickness(a) ok = ar >= MIN_AREA_RATIO and asp >= MIN_ASPECT_RATIO rows.append((a.ref, a.thickness, round(ar, 3), round(asp, 3), round(tm, 3), pick_thickness(tm), "PASS" if ok else "FAIL")) rows.sort(key=lambda r: r[2]) # 面积比最小的排最前,优先处理 print(f"{'ref':<22}{'T':>6}{'AR':>8}{'ASP':>7}{'Tmax':>7}{'建议T':>7} 判定") for r in rows: print(f"{r[0]:<22}{r[1]:>6}{r[2]:>8}{r[3]:>7}{r[4]:>7}{r[5]:>7} {r[6]}") with open("stencil_report.csv", "w", newline="", encoding="utf-8-sig") as f: w = csv.writer(f) w.writerow(["位号", "当前厚度", "面积比", "宽厚比", "最大允许厚度", "建议厚度", "判定"]) w.writerows(rows)配套的输入样例可以这样写,注意圆孔那行length和width都填直径:
ref,length,width,thickness,shape U1_QFN散热焊盘单元,0.60,0.60,0.12,rect R12_0201,0.28,0.32,0.12,rect U5_BGA_0.4mm,0.25,0.25,0.10,circle C33_0402,0.50,0.60,0.12,rect J3_通孔引脚,1.80,1.60,0.20,rect跑完会看到 0201 和 0.4mm BGA 两个 FAIL,其余通过。逻辑说明上,max_thickness是这段代码的核心——它不是在问「现在这块钢网行不行」,而是在回答「为了让这个开孔能印,钢网最厚只能做到多少」。有了这个数,工程师手里就有了具体的谈判依据,而不是一句「印不好」。
3.3 反解厚度之后的三个动作
拿到Tmax一列之后,处理路径按优先级排:
第一种,建议T落在 0.10 ~ 0.13 之间,且和板上其他区域的厚度档位差不超过一档。这时候直接降整板厚度最省事,代价是大焊盘的锡量会偏少,需要通过开孔外扩补回来。
第二种,建议T明显低于板上大部分区域的需求,比如细间距器件要 0.08mm,而通孔连接器要 0.18mm。这就是典型的阶梯钢网场景,走第 4 章。
第三种,建议T已经低于 0.06mm 的工艺下限,比如 0.2mm 直径以下的圆孔。这时候调整钢网已经没用了,得回头改 PCB——放大焊盘、减少焊盘上的过孔、或者干脆换封装。脚本在这里起的作用是把问题提前三周暴露出来。
3.4 跑脚本时最容易踩的四个坑
| 现象 | 常见原因 | 处理方式 |
|---|---|---|
| 面积比整列都在 0.2 ~ 0.3 | CSV 尺寸是 inch 未换算 | 乘 25.4,或在 CAM 导出时选 mm 单位 |
| 圆孔全判 FAIL 但产线正常 | 用了矩形公式算圆孔 | 圆孔改用 d/(4T) |
| 阶梯钢网整板按一个厚度算 | 未按阶梯区域分组 | CSV 增加 zone 列,分区各自带厚度 |
| 测试点、Mark 点被判超标 | 导出了非钢网层 | 只导 Paste 层,过滤非焊接开孔 |
异形开孔(圆角矩形、十字架桥、泪滴形)最麻烦。稳妥做法是按「开孔面积 / 开孔周长」反推等效矩形的短边,用等效值算面积比;架桥部分单独按桥宽算宽厚比,因为桥塌不塌只取决于桥本身多宽、钢网多厚,和整个开孔多大无关。
4. 混装板上的阶梯钢网:通孔回流焊与局部加厚的定量算法
同一块板上一头是 0.4mm pitch 的 QFN 要薄钢网,另一头是通孔连接器要厚钢网,这时候整板厚度无论定哪个都是错的。阶梯钢网就是为这种局面存在的,但它的设计不能靠感觉,得先把锡量算出来。
4.1 通孔回流焊的锡量方程
通孔回流焊(pin-in-paste)要填满的空间是「孔体积减去引脚体积,再加一个焊角」。焊膏里的金属只占体积的一半左右(按重量 88% ~ 90% 的金属含量换算成体积比约 0.5),所以需要的焊膏体积是焊料体积的两倍以上:
V_焊料 = V_孔 - V_引脚 + V_焊角 V_焊膏 = V_焊料 / 金属体积占比 / 转移效率 A_所需开孔面积 = V_焊膏 / 钢网厚度写成函数:
import math def pin_in_paste(d_hole, d_pin, board_t, stencil_t, fillet=0.15, metal_ratio=0.5, eff=0.85): """返回(孔体积, 所需焊料体积, 所需焊膏体积, 单引脚所需总开孔面积)""" v_hole = math.pi * (d_hole / 2) ** 2 * board_t # 孔容积 v_pin = math.pi * (d_pin / 2) ** 2 * board_t # 引脚占走的容积 v_solder = v_hole - v_pin + fillet # 加一个焊角体积 v_paste = v_solder / metal_ratio / eff # 折算到焊膏体积 a_need = v_paste / stencil_t # 折算到开孔面积 return round(v_hole, 3), round(v_solder, 3), round(v_paste, 3), round(a_need, 2) # 板厚、孔径、引脚径、钢网厚度 print(pin_in_paste(1.0, 0.6, 1.6, 0.15)) # 1.6mm 板 print(pin_in_paste(0.8, 0.5, 1.2, 0.15)) # 1.2mm 板 print(pin_in_paste(1.2, 0.8, 2.0, 0.15)) # 2.0mm 厚板参数说明:fillet是焊角体积,一般取 0.1 ~ 0.2mm³,要求焊角饱满就取大值;metal_ratio是焊膏金属体积占比,无铅锡膏按 0.5 估;eff是转移效率,普通开孔 0.8 左右,纳米涂层钢网可以按 0.85 ~ 0.9 估。几个典型组合的结果:
| 板厚 (mm) | 孔径 (mm) | 引脚径 (mm) | 环隙体积 (mm³) | 所需焊料体积 (mm³) | 所需焊膏体积 (mm³) | 0.15mm 下单引脚开孔面积 (mm²) |
|---|---|---|---|---|---|---|
| 1.2 | 0.8 | 0.5 | 0.368 | 0.518 | 1.219 | 8.13 |
| 1.6 | 1.0 | 0.6 | 0.804 | 0.954 | 2.245 | 14.97 |
| 2.0 | 1.2 | 0.8 | 1.257 | 1.457 | 3.428 | 22.85 |
| 2.4 | 0.9 | 0.6 | 0.848 | 0.998 | 2.349 | 15.66 |
这张表最值得看的是最后一列和焊盘面积的对比。1.6mm 板配 1.0mm 孔,单引脚要 15mm² 的开孔面积,而对应焊盘通常只有 2 ~ 2.5mm²。也就是说,即使整块钢网都是 0.15mm,单靠焊盘范围内的开孔也印不出足够的锡。实际做法有三条路:局部阶梯加厚到 0.20 ~ 0.25mm;把开孔外扩到阻焊层上,能外扩 30% ~ 50% 面积(这是通孔回流焊的常规操作,不算违规);或者干脆加一颗预成型焊片补足体积。三条路可以叠加用。
4.2 阶梯钢网的加工约束与公差
阶梯方式分两类。step-down 是在厚钢网上把细间距区域蚀刻或激光减薄,整体性好、没有脱落风险;step-up 是在薄钢网上焊接或粘接一块补片加厚,成本低但补片在长期清洗和刮刀冲击下有脱落风险,量产不建议用。一般一块钢网上台阶不超过两层,台阶深度公差控制在 ±0.01mm,做得好的供应商能到 ±0.005mm。
过渡区宽度取 0.5 ~ 1.0mm。太窄刮刀过台阶时会跳,导致台阶边缘一圈锡量异常;太宽则占用布板空间。台阶边缘到最近开孔的距离,多数规范会写 0.5mm 以上,细间距器件密集的话建议留 0.8mm。
4.3 阶梯区域与刮刀冲突的检查清单
排布阶梯区域时,下面几条每一条都对应过真实的印刷不良:
- 台阶边缘到最近开孔 ≥ 0.5mm,细间距区建议 ≥ 0.8mm。
- 阶梯区域尽量做成连通的大块,不要出现孤岛,否则刮刀在孤岛处压力突变,边缘刮不干净。
- 印刷方向尽量与台阶边缘平行,避免刮刀横跨台阶。排布受限时,宁可把阶梯区域推到板边。
- 同一块钢网台阶不超过两层,多层叠加时公差会累积到印不出来。
- 钢网图纸上必须标出每个台阶的厚度和边界坐标,并且和开孔清单的 zone 列一一对应,否则脚本算出来的厚度和建议对不上。
- 验收时用千分尺量台阶高度差,用二次元影像仪量台阶边界到最近开孔的实际距离,不要只看供应商的图纸。
5. 钢网到货验收与上线验证的量化检查点
规范写得再好,拿到手的钢网不对也是白搭。到货验收这一步,大部分工厂只看一眼外观就签收,实际上四个数三分钟就能测完,能挡掉八成问题。
5.1 到货就能测的四个数
| 检查项 | 测量工具 | 合格范围 | 判退线 |
|---|---|---|---|
| 网框张力 | 张力计,四角加中心五点 | 35 ~ 50 N/cm,常见要求 40±5 | 低于 30 N/cm |
| 钢网厚度 | 千分尺或膜厚仪,九点法 | 标称值 ±0.005mm | 超出 ±0.01mm |
| 开孔尺寸 | 二次元影像仪,抽测最密的 5 个孔 | 与设计偏差 ≤0.01mm | 偏差 ≥0.02mm |
| 孔壁质量 | 200 倍显微镜 | 无毛刺、无熔渣、锥度均匀 | 有明显挂渣 |
厚度这一项要特别注意电抛光的影响。激光切割后做电抛光,孔壁会去掉一层,钢网整体厚度也会减 5 ~ 10μm。如果图纸标 0.12mm 而实测 0.108mm,先问清楚供应商有没有把抛光减薄算进去,再决定退不退。
5.2 上线后的三个验证动作
首件用 SPI 测锡膏体积,把实测体积除以理论开孔体积,得到转移效率。0.8 ~ 1.0 属于正常,低于 0.7 说明面积比偏低或脱模参数不对,这时候要回头看第 2 章那三个指标,而不是一味加大刮刀压力。连印 30 片之后停机看钢网底部残留,如果台阶边缘或细间距区域有明显残留堆积,说明擦拭频率或真空吸附需要调。做了纳米涂层的钢网,可以滴水看接触角,涂层完好的表面接触角明显偏大、水珠成球状滚落,一旦摊开就说明涂层已经磨掉了。
5.3 一个比供应商标称值更可靠的锥度测法
激光切割的开孔是带锥度的,供应商给的锥度通常是标称值。要拿真实数据,用二次元影像仪测同一个开孔的上口尺寸和下口尺寸,两者的差值除以钢网厚度再取反正切,就是实际锥度角:
import math d_top, d_bottom, t = 0.252, 0.236, 0.100 # 单位 mm taper_deg = math.degrees(math.atan((d_top - d_bottom) / 2 / t)) print(round(taper_deg, 2)) # 约 4.57 度锥度在 2° ~ 5° 之间属于正常范围,这个锥度是开口朝下略大还是朝上略大,直接决定脱模时锡膏是被「托」出来还是被「卡」住。同一批钢网抽测三个不同区域的开口,锥度差超过 2° 就说明加工一致性有问题,这时候换供应商比调印刷参数划算。把这三个数连同张力、厚度一起写进点检表,每次换线前测一遍,比反复试刮刀压力有效得多。
本文还有配套的精品资源,点击获取