ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PCB定位孔设计:机械层与Keepout层的正确配合方式

PCB定位孔设计:机械层与Keepout层的正确配合方式 做PCB设计这么多年定位孔这玩意儿看着不起眼翻车率却高得吓人。我刚带新人那会儿十个板子至少有三四个会在定位孔上出问题有的是螺丝头跟铜皮搭上导致短路有的是Keepout层画了一圈结果布线铺铜根本不听指挥更常见的是机械层和Keepout层混着用Gerber导到板厂那边直接看懵。今天就把这套“定位孔处理逻辑”完整捋一遍从两个层的分工讲起到手把手的操作步骤再到几个高频坑的排查方法一次性说清楚。这篇内容适合正在用Altium Designer画板子的硬件工程师也适合那些画过几块板但没系统梳理过定位孔做法的朋友看完可以直接照着做。1. 先把定位孔这件事彻底搞明白1.1 定位孔有哪些类型分别用在什么场景说起定位孔很多朋友以为就是一个螺丝穿过去的过孔其实这里面的门道不少。按用途分常见的至少有这么几类第一类是纯粹的螺丝固定孔。比如电源模块、开发板、工控主板上四角的圆孔这类孔就是让M3、M2.5螺丝穿过把PCB锁在外壳的铜柱上。它们一般不要求过电流只是机械固定所以最常见的设计方式是做成非金属化孔也就是孔壁不镀铜电气上与任何网络都无关。第二类是接地型定位孔。有些产品为了EMI或者静电泄放需要把PCB固定螺丝和大地或者机壳连起来这时候定位孔就得做成金属化孔孔壁镀铜并且和GND网络连通。金属化孔的机械强度也更好螺丝多次拆装不容易磨损孔壁很多车载和工业产品会强制要求这一类。第三类是定位柱/定位销孔。多见于两块板子之间要对位或者PCB需要精确卡在模具里这种孔一般配合塑料柱或定位销使用孔径公差和位置公差都比较严格画的时候不能随便给个大尺寸。从加工角度再分就是PTHPlated Through Hole金属化孔和NPTHNon-Plated Through Hole非金属化孔这两种。金属化孔在孔壁上镀铜可以在多层板内部实现连接也可以用来接地非金属化孔孔壁没有铜纯粹就是物理孔洞。后面讲实操的时候这两种画法有区别所以先在这里把概念摆清楚。1.2 机械层和Keepout层各管什么活很多PCB工程师尤其是自学出来的很容易把机械层和Keepout层当成同一个东西“不就是画个圈、给板厂看嘛画哪层不一样”实际上这两个层管的完全是两码事。机械层Mechanical Layer是给人和加工设备看的“图纸层”。它本身不参与电气避让DRC根本不检查机械层上的图形。但机械层上的圆、文字、尺寸线最终会跟着Gerber输出给板厂用于标注外形、装配尺寸、开孔位置等信息。你在机械层上画一个Φ3.2的圆板厂就知道这里需要一个直径3.2mm的孔。Keepout层是给设计规则看的“禁区层”。它的作用非常直接所有在Keepout区域里的走线、覆铜、过孔都会在DRC阶段被报错铺铜也会自动被这块区域切掉。你在Keepout层画一个圈就相当于在板子上画了一块“任何铜都不要进来”的禁地。两者的核心区别可以用一句话概括机械层管“加工认知”Keepout层管“电气禁布”。前者不限制你的布线后者专门限制你的布线。定位孔要处理好必须让这两个层配合着工作——Keepout保证孔周围没有铜机械层保证板厂知道这里有个孔、孔多大、是不是金属化。1.3 为什么只画一层不行两层是怎么配合的我见过不少新手只画Keepout层理由是“反正Keepout画了圈铺铜过不来就行了”。问题在于Keepout层在Gerber里经常会按照制图习惯被设为“不输出”或“不参与制造”板厂拿到你的加工文件后看到的只是一堆布线数据根本没有孔的钻孔信息。结果就是设计图上有个禁区生产出来的板子上压根没有孔。反过来如果只画机械层不画Keepout呢板子上确实会有个孔但布线的时候信号线可以从孔边0.1mm的地方穿过去铺铜也会一直铺到孔边缘。实际装配时螺丝头压下去很容易跟铜皮短路哪怕没短路绿油也可能被刮伤时间长了氧化漏电。所以标准做法一定是三层结构一个用于表达电气的Pad焊盘分金属化或非金属化一个用于禁布的Keepout圆一个用于加工标注的机械层圆。Keepout让设计阶段不出电气问题机械层让生产阶段不出加工问题Pad让DRC和钻孔文件有据可依。三者缺一不可。2. 动手之前先做这三件事2.1 把机械层配置好别跟板框混在一起在AD里画定位孔之前我强烈建议先把机械层理清楚。很多人的板框画在Mechanical 1层那定位孔标注就别挤在同一层否则导出Gerber的时候图形全部叠在一起板厂还要猜哪个是外形、哪个是孔位。我自己的习惯是Mechanical 1板框、外形、V-cut标记。Mechanical 2定位孔、螺丝孔、安装孔等装配信息。Keepout层单独使用不跟机械层混。设置方法很简单按快捷键L打开View Configuration面板在Mechanical Layers里找到Mechanical 2勾选启用然后双击名称可以直接改名字。比如改成“MOUNT_HOLES”这样后面画图的时候一眼就知道这层是干什么用的。如果是AD20以上的版本还能设置层的颜色和线型我在实际中会把机械层2设成不同的颜色明显区别于板框层导图的时候不容易看岔。2.2 设定一个“定位孔专用”的间距规则这里说的规则是指AD里的Clearance安全间距规则。很多板子全部走默认规则比如“所有铜到所有铜间距0.25mm”但定位孔周围的情况比较特殊螺丝头是可导电的金属装配后离铜皮太近就有风险。所以我会在DRC规则里单独加一条专门针对定位孔。打开 Design - Rules在Electrical - Clearance下新建一条规则。Where the first object matches 可以全选第二项用查询语句来锁定定位孔IsPad (HoleSize 2.5mm)这条查询的意思是“孔径大于2.5mm的焊盘”基本上定位孔都能命中。当然如果你的定位孔小于2.5mm就把数值调小。设置间距为0.5mm甚至0.8mm优先级调到最高。这样做的效果是不管你怎么铺铜只要靠近定位孔DRC就报错强迫你处理间距问题。2.3 先想清楚定位孔要不要接GND动手画之前想清楚这个孔是接地的还是不接地的能避免后面返工。我的建议是这样判断如果产品外壳是金属的螺丝连接外壳那定位孔最好接GND这样可以通过螺丝把板上的噪声泄到外壳EMI表现往往更好。如果螺丝是绝缘的尼龙螺丝、塑料螺柱或者客户明确要求“不与GND连通”那最好做非金属化孔从根上杜绝电气连接。拿不准的情况下优先做非金属化孔因为它最安全不会因为螺丝碰触产生意外短路。等测试发现确实需要接地再改成金属化孔也比较容易。这个决定会影响后面你放Pad时勾不勾Plated选项也影响Keepout圆画多大所以一定放在操作之前想清楚。3. 核心实操机械层Keepout层做定位孔3.1 场景一金属化定位孔M3螺纹孔金属化定位孔是我们最常画的因为它既能固定又可以接地。以常见的M3螺丝为例实际装配用螺丝过孔孔径一般放大到3.1mm~3.2mm不能刚好等于3.0mm不然螺丝穿进去很紧产线装配效率低热胀冷缩后还可能卡死。具体操作步骤第一步放置焊盘。按快捷键P P或者菜单 Place - Pad放置一个焊盘。双击打开属性把Hole Size设为3.2mmDiameter设为4.0mmLayer选择Multi-Layer。如果这个孔要接GND就把Net选为GND如果只是金属化但不想接任何网络Net留空或者设为No Net都可以。第二步确认Plated选项。在Pad属性窗口里找到Plated有的版本叫Electroplated这个选项默认是勾上的。金属化孔必须保持勾选这一步直接影响钻孔文件里孔的属性千万不要漏看。第三步画Keepout圆。按快捷键P K C也就是 Place - Keepout - Circle。以刚才那个Pad的孔中心为圆心画一个直径6.5mm左右的圆。为什么是6.5mm因为M3螺丝头的直径大约是5.5mm螺丝头边缘到铜皮至少需要0.5mm的安全距离所以Keepout圆直径 5.5 2×0.5 6.5mm。你要是觉得空间紧张0.3mm也不是不能用但我建议稳定压倒一切0.5mm以上的余量是值得的。第四步画机械层标注圆。先把当前层切换到Mechanical 2就是前面配置好的“MOUNT_HOLES”层然后同样画一个直径6.5mm的圆圆心和Pad完全重合。这个圆的含义是告诉板厂这一圈范围内不要有任何铜皮且中心有一个直径3.2mm的金属化孔。第五步加文字注释。在机械层2上放一个字符串写“M3 PTH MOUNT HOLE”代表这里是一个M3金属化定位孔。文字最好放在Keepout圆外面避免和螺丝孔区域重叠影响识别。3.2 场景二非金属化定位孔NPTH单板螺丝孔非金属化孔和金属化孔的唯一本质区别是孔壁不镀铜所以Pad画法稍有不同但Keepout和机械层的逻辑是一样的。操作步骤第一步放置焊盘。同样按P P放置焊盘Hole Size设为孔的实际尺寸比如M3的螺丝孔给3.2mm。关键是Diameter焊盘外径的设置因为是非金属化孔不需要外圈铜环通常我会把Diameter设为和Hole Size一样大甚至直接设成0这样在阻焊层上就不会出现一圈裸露的铜环。第二步取消Plated选项。在Pad属性窗口里把Plated复选框去掉这样这个Pad代表的就是一个非金属化孔。如果你用的AD版本比较老找不到这个选项那也可以在机械层上画一个圆并单独标注“NPTH”板厂会自行理解为不镀铜孔。第三步画Keepout圆和机械层圆。跟金属化孔一样画一个直径为孔直径 2倍安全距离的Keepout圆。比如孔本身是3.2mm周围要留0.5mm那Keepout圆直径就是4.2mm如果考虑到螺丝头更大那Keepout直径还是以螺丝头尺寸为准不需要跟孔径挂钩。第四步在机械层2上标注“M3 NPTH”。明确告诉板厂这是非金属化孔避免它默认按PTH工艺去做把孔壁给你镀上铜。3.3 多个定位孔怎么快速对齐和复制实际板子上的定位孔往往不止一个四角螺孔很常见。一个个手动摆过去太费劲我习惯用复制粘贴来保证所有定位孔完全一致。操作上要注意先选中Pad、Keepout圆、机械层圆这三个元素然后按CtrlC以孔中心为参考点复制。粘贴的时候通过坐标输入精确定位比如右下角的孔坐标为(150mm, 100mm)直接按E A打开阵列粘贴设置好X/Y间距一下子就能摆出四个完全一致的定位孔组。这里有个细节Keepout圆、机械层圆和Pad必须作为一个整体复制不然很容易出现“Pad中心在这、Keepout圆偏了0.3mm”的低级错误。AD软件本身没有原生的组合功能选中的时候要仔细看状态栏是否三个对象都选中了。4. 关键参数与加工细节4.1 常用螺丝规格对应的孔径和安全尺寸定位孔的参数不是拍脑袋定的这里有一套比较通用的参考值。以常用的M系列螺丝为例螺丝规格螺纹外径推荐过孔直径螺丝头直径Keepout圆直径建议M22.0mm2.2mm3.8mm5.0mmM2.52.5mm2.7mm4.5mm5.7mmM33.0mm3.2mm5.5mm6.5mmM44.0mm4.2mm7.0mm8.0mm过孔直径为什么要比螺纹外径大0.2mm左右因为PCB钻孔本身有公差孔径做小了螺丝穿不过去孔径做太大又会影响固定强度。0.2mm是平衡装配和生产公差的一个经验值。Keepout圆直径我一般取螺丝头直径1.0mm单边余量0.5mm。如果你板子上铜皮非常密集、实在放不下这么大可以缩小到螺丝头直径0.6mm但再小就不建议了。另外还有一个重要尺寸孔中心到板边的距离。定位孔太靠近板边钻孔的时候容易崩边板子受力后也容易从孔边裂开。一般建议孔中心到板边不少于3mm如果板子很小、结构受限最少也要做到2mm以上。这个值可以根据板厚调整厚板可以稍微小一点1.0mm的薄板必须保守。4.2 铺铜、螺丝头、保距三者的关系关于Keepout圆的直径为什么会跟螺丝头有关很多人一开始不理解孔只是3.2mm为什么Keepout要画6.5mm那么大这里的关键在于“危险对象不是孔而是螺丝头”。PCB板装配完成以后螺丝头是压紧在板面上的而螺丝头本身就是金属。如果板面上在螺丝头覆盖范围内有铜皮哪怕铜皮距离孔壁有2mm螺丝头照样会压到铜皮上面。阻焊层被压伤以后螺丝头就可能和铜皮接触这在非接地设计中就是短路隐患。所以Keepout圆的边界必须画在螺丝头覆盖区域之外并且再额外留一点电气间隙。反过来如果是接地设计定位孔Pad的铜环需要和Keepout圆保持一定距离不能把Keepout画在Pad正上方那样Pad也被禁布了铺铜连不上。通常Keepout圆和Pad外环之间留0.3mm~0.5mm就够保证Pad本身保留焊接/连接空间但周边大片铜皮又不会靠得太近。4.3 Gerber输出机械层和Keepout层怎么勾AD导出Gerber时很多人以为自己画的层都在结果板厂收到的文件里没有机械层标注也没有Keepout层整个定位孔变成了“光一个孔周围没有禁布区”后面就出各种问题。导出Gerber的路径是 File - Fabrication Outputs - Gerber Files打开后注意几个地方在General选项卡里确认单位和格式建议用毫米精度至少2:3也就是小数点后三位。然后是Layers选项卡这里最容易出错。你需要勾选的是所有需要出铜皮的信号层、内电层丝印层Top Overlay / Bottom Overlay阻焊层Top Solder / Bottom Solder助焊层Top Paste / Bottom Paste一般贴片板需要Mechanical 1板框层Mechanical 2定位孔标注层Keepout层如果有的话特别提醒Keepout层在Gerber里的默认Plot名可能叫“Keep-Out Layer”很多人看到这个名字以为不是必须的就不勾结果转出来的文件里没有禁布区板厂就按照没有禁布区来做。我自己在给板厂发文件之前一般会再用CAM350或者AD自带的Gerber预览打开一遍逐层确认机械层和Keepout层都在。钻孔文件NC Drill也要记得输出。在Gerber导出窗口里点Drill选项卡勾选钻孔文件同时确认PTH和NPTH两种属性都被正确区分出来。如果你画的NPTH孔没有正确取消Plated这里就会把非金属化孔也当成PTH处理板厂会给你镀上铜那就偏离设计初衷了。4.4 定位孔要不要开窗有朋友会遇到一个疑问定位孔周围那一圈铜到底要不要被绿油盖住答案是分情况。如果是接地型金属化定位孔想要螺丝直接接触铜壁、实现导通那必须开窗也就是在阻焊层上给焊盘留一个开口否则绿油盖住铜电气接触会被阻隔。在AD里Pad属性中的Solder Mask Expansions一般会跟随规则默认扩展0.1mm左右。如果需要精确控制开窗范围可以在这里手动设置。如果是非接地型定位孔或者你根本不想让螺丝碰到任何铜我建议反过来让绿油尽量覆盖定位孔周边的铜。因为绿油本身是绝缘的多一层保护就多一份安心。具体做法是在Pad属性里把Solder Mask Expansion设为负值比如-0.1mm这样绿油会比焊盘稍微大一点把边缘包住。不过要小心这样设置以后Pad可能看起来不太正常但出Gerber之后是符合预期的。5. 高频问题排查实录5.1 Keepout画了圈铺铜却还在圈里面这个问题我见到的频率最高。很多人画完Keepout圆后发现重新铺铜铜皮还是能铺进圆里面去。排查顺序是这样的第一确认你画的是Keepout层不是机械层。很多新手在机械层上画了一个圆以为它能禁布但机械层本身没有这个功能。切到Keepout层再画一次就可以。第二确认圆的封闭性。Keepout圆必须是完整闭合的AD对Keepout区域的识别是基于封闭边界的。如果你用好几段圆弧拼出一个圆中间有断点那断点附近就会漏铜进来。最简单的方式是用Place - Keepout - Circle直接画整圆不要自己一段一段拼。第三铺铜之后要触发重新铺铜。Keepout图形修改后原有的铺铜不会自动更新必须执行Tools - Polygon Pour - Repour All让所有铺铜重新计算一次Keepout区域才会真正生效。5.2 定位孔与螺丝头短路如果板子打样回来发现螺丝头下面露出铜皮或者装配好以后万用表一量螺丝和GND之间电阻不对十有八九是Keepout圆画小了或者干脆没画。螺丝头边缘已经压到了铺铜或者走线上。解决思路是回到设计里量一下螺丝头直径再量一下Keepout圆直径确保Keepout圆比螺丝头单边大0.5mm以上。另外还要检查一下Pad本身会不会比Keepout圆还大如果Pad外径比Keepout直径大那等于禁布圈套在了Pad中间Pad外圈的铜照样暴露在螺丝头下面。5.3 机械层圆和Pad不同心有时候复制或阵列粘贴的时候选错了参考点导致机械层圆和Pad孔中心差个0.2mm肉眼不仔细看根本发现不了。但板厂加工时会通过钻孔文件找孔的位置机械层标注是人工参考两个信息不一致板厂就会来问“以哪个为准”一来一回耽误好几天。检查方法很直接点击机械层圆在Properties里查看圆心坐标点击Pad再查看它的X/Y坐标两者必须完全一致。不一致就手动改成同一坐标。我自己的习惯是把所有定位孔的机械层圆和Pad都选中然后在Properties里统一设置X/Y值保证绝对同心。5.4 导Gerber少层或漏掉NPTH钻孔这个问题在新手阶段特别容易踩。有一次我把板子的Gerber发给板厂对方电话回来说“钻孔文件里没有非金属化孔啊你们是不是要打盲孔”我一查发现NPTH pad被设置成了Plated而且钻孔文件导出时没有勾选“Include Unplated”。所以不仅仅是层要勾钻孔文件本身的属性也要检查。在AD的Gerber导出窗口中Drill Drawing选项里有一项关于PTH/NPTH的标识建议把两个都勾上。钻孔表格也可以让板厂更清楚每个孔的位置和大小我一般会在钻孔层放一个钻孔图表Drill Table图上直接列出孔径、数量、是否金属化这样板厂收到文件后基本不会产生歧义。5.5 DRC一直报错定位孔周围间距改不过来明明给定位孔设置了单独的Clearance规则但DRC还是疯狂报错这是因为AD规则的优先级问题。新建的规则优先级默认可能是最低的而原有规则优先级高所以定位孔还是在用旧的间距检查。打开Design - Rules在Clearance分类下找到你新增的那条规则看优先级列表。把定位孔规则的优先级拖到最高通常是在规则列表的最上面。同时检查Where the first object matches和Where the second object matches里的查询语句确保两个对象类别里至少有一项能命中Pad而不是写成“All AND (HoleSize 2.5mm)”这种根本无效的写法。注意Clearance规则里的“Different Nets Only”和“Any Net”也要留意。如果定位孔的Pad设置了No Net而它周围的铺铜网络是GND在Different Nets Only模式下它俩会被当成不同网络来检查间距这时你的自定义间距才会生效。我个人在实际操作中的体会是定位孔这件事技术难度一点都不高难的是把每一层的作用想清楚并且在流程上形成肌肉记忆。每次画到定位孔就条件反射地做三件事Pad设好属性、Keepout画圈、机械层标注释。把这个流程走完整后面到板厂那边基本不会因为定位孔出幺蛾子。还有一个可以分享的点板子发出去之前花两分钟在AD的3D视图里看一眼定位孔形状和周围的铺铜关系很多问题在这个阶段就能一眼发现比等板子回来再修要划算得多。
返回列表