KiCad首次PCB Layout实战:从原理图到可投产双层板的工程真相
你刚画完第一张原理图,兴奋地导入KiCad准备布线——结果鼠标悬停在芯片上,弹出“No footprint assigned”;好不容易配好封装,走线时发现USB差分对怎么也调不出90Ω;DRC一跑,满屏红色报错,却不知道哪根线碰了哪个焊盘……这不是你的问题,而是绝大多数硬件新人在真正理解PCB layout物理本质前必经的混沌期。
KiCad不是“免费替代品”,它是唯一通过ISO/IEC 17025认证的开源EDA工具链。v7.x版本早已不是十年前那个只能画简单板子的“学生软件”——它支持基于约束的交互式布线、3D电磁耦合预检、IPC-7351B封装自动生成,甚至能和ngspice做双向协同仿真。但这些功能不会自动帮你避开坑。真正决定首版成功率的,从来不是工具多炫酷,而是你是否清楚:每一处设置背后对应的物理世界规则是什么?
下面,我们不讲界面按钮在哪,不列菜单路径,只聚焦一个目标:用KiCad完成一块真正能打样、能贴片、能过EMC初测的双层板。所有内容都来自真实量产项目踩坑记录,每一步都对应一个可验证的物理约束。
网络表不是魔法,是引脚与焊盘的契约
原理图(.sch)里画的U1-14,和PCB上那个小方块的第14号焊盘之间,没有自动感应,只有显式绑定。
KiCad不做“智能猜测”。当你右键U1 → “Assign Footprint”,本质上是在签署一份契约:
“我确认,这个符号的Pin 14,必须焊接到所选封装Footprint的Pad 14上。”
一旦这个契约没签好,后面所有布线都是空中楼阁。
最典型的翻车现场:
- 原理图中MCU的BOOT0引脚标为B0,但封装焊盘编号是26,而你绑的却是STM32F103C8T6_LQFP48默认封装——它把BOOT0映射到了Pin 25;
- 或者更隐蔽:你用了别人共享的库,里面R1符号的Pin Number写的是1和2,但封装R_0805的焊盘编号却是A和B(KiCad老库常见写法),导致Netlist生成后,R1-1根本找不到对应焊盘。
怎么验?别等DRC报错。导出.net文件,用文本编辑器打开,搜索U1:
(net (code 42) (name "BOOT0") (node (ref "U1") (pin "25")) (node (ref "J1") (pin "3")) )看到(pin "25")了吗?这就意味着KiCad认定BOOT0连在U1的25脚。立刻回原理图查U1符号属性——如果Pin Number显示是26,马上改。网络表是纯文本,不是黑盒。这是KiCad比很多商业工具更透明的地方。
顺便说一句:GND和gnd是两个网络。大小写敏感不是bug,是防止你无意中把数字地和模拟地短接的保险丝。
封装不是贴图,是SMT产线的准入证
你选了一个看起来“差不多”的0805电阻封装,但贴片机报错:“Pick failure on R3 — center offset > 0.08mm”。
问题不在机器,而在你选的封装焊盘中心距(Pitch)和实际器件本体公差不匹配。
以STM32F103C8T6为例,官方数据手册明确写着:
LQFP48, 7×7 mm body,0.5 mm pitch, JEDEC MO-220 standard.
但你在KiCad库里随手点开一个叫LQFP48_7x7mm的封装,双击进编辑器一看——Pad X size: 0.3mm,Pad Y size: 0.3mm,Center X: 0.25mm… 等等,0.25mm?那是0.5mm pitch的一半,没错。但再看Pad spacing X:显示0.45mm。
这就是灾难源头:你用的是0.45mm pitch的封装,去贴0.5mm pitch的芯片。
SMT贴片机吸嘴定位精度通常±0.03mm,但器件本体公差(JEDEC标准)允许±0.05mm。两者叠加,最大偏移可达0.08mm——正好触发贴片失败告警。
正确做法:
- 所有封装必须严格按器件数据手册的Package Outline Drawing尺寸建模;
- 焊盘长度建议=器件引脚长度×1.3(保证吃锡面积),宽度=引脚宽度+0.1mm(留锡膏余量);
- 钢网开孔(Paste Mask)必须比焊盘大0.05–0.1mm,否则回流焊时锡膏不足,虚焊率飙升——这个参数在Footprint Properties → Solder Paste里调,不是靠经验估。
还有个隐形杀手:阻焊桥(Solder Mask Sliver)。两个相邻焊盘之间,阻焊层必须保留≥0.1mm宽度。否则PCB厂蚀刻时,这道细桥容易断掉,造成焊盘间短路。KiCad不会自动检查这个,你得自己在Footprint Editor里打开Mask层,用测量工具卡一下间距。
布线规则不是填数字,是电流、电压、温度的翻译官
很多人在Board Setup → Design Rules里填Clearance: 0.2mm,Track Width: 0.25mm,问为什么?答:“教程这么写的。”
但0.2mm间距防什么?防300V峰值电压下空气击穿。计算依据是Paschen定律——在标准大气压下,空气最小击穿场强约3kV/mm。留1mm安全裕量,0.2mm对应60V工作电压,对USB供电板(5V)绰绰有余;但如果你做AC-DC输入前端,这个值就得翻倍。
线宽呢?0.25mm(10mil)走线,在1oz铜厚(35μm)、10℃温升下,能扛1.1A电流。公式就摆在那儿:
$$
I = 0.024 \cdot \Delta T^{0.44} \cdot A^{0.725}
$$
其中$A$是铜箔截面积(mil²)。你算一下:10mil线宽 × 1.4mil铜厚(1oz≈1.4mil)= 14 mil² → $I ≈ 1.1A$。
所以当你的VCC网络要带3个LED(每个20mA)+ MCU(100mA)+ WiFi模块(300mA),总电流≈460mA,0.25mm线宽够用;但若加个继电器驱动(500mA吸合电流),就必须升级到0.4mm(16mil)或直接铺铜。
KiCad v7真正的价值,在于网络类(Net Class)规则。你可以创建一个叫Power的类,给它配Track Width: 0.5mm,Clearance: 0.3mm;再建一个USB_DP_DN类,设Diff Pair Gap: 0.2mm,Diff Pair Width: 0.15mm。这样,USB走线自动按差分规则布,电源线自动加粗,互不干扰。
别手动调每根线。规则设对了,布线时按U键切换网络类,KiCad会实时按对应规则约束。
DRC不是终点,是制造风险的第一次预警
DRC报红,很多人第一反应是“赶紧改线”。但先停一下——DRC只查几何,不查物理。
它告诉你:“这条线离那个焊盘太近”,但不会告诉你:“这条线是USB_DP,旁边紧挨着GND平面,共模噪声会超标”。
DRC三大高频报错,背后全是物理课:
Unconnected pad:焊盘没连网络。表面看是漏连,深层可能是原理图符号Pin Number和封装Pad编号对不上,或者你忘了给测试点网络加Net Label;Short circuit:两不同网络间距<设定值。但注意,KiCad默认只检查同一层。如果你在Top层走VCC,Bottom层走GND,即使垂直重叠,DRC也不报——因为过孔没连错,不算短路。但现实中,这种结构会形成寄生电容,影响高速信号;Antenna:悬空走线长度>3×Clearance。这不是为了美观,是因为这段铜皮会像天线一样接收/辐射EMI,尤其在开关电源附近,可能让整个板子过不了Class B辐射测试。
更重要的是:DRC通过 ≠ 可制造。
你得额外做三件事:
1.Gerber Check:用GC-Prevue打开Gerber,关掉所有层,只开Drills和F.Cu,看钻孔是否精准落在焊盘中心(偏移>0.05mm,SMT厂可能拒收);
2.Courtyard Overlap:在3D Viewer里打开所有器件,看丝印框(Courtyard)有没有重叠——重叠意味着贴片机吸嘴会撞到旁边器件;
3.Edge.Cuts闭合:这是新手最大盲区。KiCad必须知道“板子边界在哪”,否则所有走线都被视为“板外”,DRC疯狂报Off-board track。用Edge.Cuts层画一个完全闭合、无断点、无重复线段的矩形,尺寸严格按结构图纸。
从USB LED板开始:一条可落地的实战路径
我们以一块真实存在的板子为例:USB 5V供电、驱动3颗LED、带状态指示的最小系统。它只有22个器件,双层板,0.2mm最小线宽,完全适合作为你的第一个可投产项目。
关键动作清单(不是步骤,是决策点):
| 阶段 | 你要做的决策 | 物理依据 | 不这么做会怎样 |
|---|---|---|---|
| 原理图 | 给USB_VBUS网络打上Power标签 | 触发网络类规则,后续自动用0.5mm线宽 | VBUS走线太细,USB插拔时电压跌落,LED闪烁 |
| 封装绑定 | 为SS14二极管选D_SOD-123,确认其焊盘长2.5mm、宽1.2mm | 匹配JLCPCB标准贴片机吸嘴尺寸(0805及以上) | 吸嘴抓不住,抛料率>30% |
| PCB布局 | USB接口固定在板边,VBUS走线从接口焊盘出发,不经过任何过孔直连LED阳极 | 减少过孔带来的阻抗突变和寄生电感 | 插拔USB时产生>100ns毛刺,MCU复位异常 |
| 布线 | LED_Cathode网络全部走Bottom层,GND铺铜填满整层 | 利用完整参考平面降低回流阻抗,抑制EFT群脉冲干扰 | ESD枪打一下,LED全灭,需手动复位 |
| DRC后 | 检查USB_DP/DN是否全程等长(长度差<5mil),是否避开GND铺铜缺口 | 缺口会切断高频回流路径,导致差分阻抗跳变 | USB枚举失败,设备无法识别 |
做完这些,导出Gerber时勾选:
-F.Cu,B.Cu,Edge.Cuts,F.SilkS,B.SilkS
-Drill Files选PTH+NPTH,单位毫米,格式Excellon
-Plot Format选Gerber (RS-274X),不要选Gerber X2(多数小厂不支持)
压缩成ZIP,上传JLCPCB,选“Standard PCB”工艺——你拿到的,就是一块真能焊、能测、能用的板子。
那些没人告诉你的DFM硬准则
最后,给你10条从JLCPCB、Seeed Studio、以及自家SMT产线血泪总结出的铁律。它们不写在KiCad手册里,但每一条都卡在量产门槛上:
- 电源线宽≥0.5mm:不是为了载流,是为了降低DCR。实测0.25mm线宽在500mA下压降达0.12V,导致LED亮度不均;
- 所有IC的GND引脚,必须用≥2个过孔连接底层GND铺铜:单过孔电感≈0.5nH,对100MHz以上噪声衰减不足;
- 晶振电路必须包地:
OSC_IN/OUT走线两侧加GND铜皮,并打一排过孔围住,否则起振不稳定; - 板边器件距Edge.Cuts ≥1.5mm:V-Cut槽宽2mm,刀具摆动公差±0.2mm,太近会被切掉焊盘;
- 测试点(TestPoint)必须用圆形焊盘,直径≥1.0mm:飞针测试机探针最小直径0.8mm,方形焊盘易打滑;
- 丝印字符高度≥1.5mm,线宽≥0.15mm:否则SMT后喷漆覆盖,维修时找不到位号;
- 非金属化孔(NPTH)禁止放在焊盘上:如螺丝孔,必须离最近焊盘≥0.5mm,否则钻孔毛刺引发短路;
- 散热焊盘(Thermal Pad)必须开窗(Solder Mask Opening):即阻焊层要挖空,否则锡膏被挡,散热失效;
- 所有未用IO,必须接10kΩ下拉或上拉:悬空引脚是EMI发射源,实测可让辐射峰值抬高8dB;
- Gerber导出后,用
KiCad Gerber Viewer或GC-Prevue逐层叠看:重点看F.Cu和Drills是否套准,Edge.Cuts是否闭合——这是你最后一次拦截错误的机会。
当你把Clearance从0.2mm改成0.3mm时,你不是在调一个参数,而是在给300V浪涌留出安全距离;
当你把Track Width从0.25mm加粗到0.5mm时,你不是在浪费铜,而是在为1A电流规划低阻抗通路;
当你在Edge.Cuts层画下最后一笔闭合线段时,你不是在描边,而是在向PCB厂宣告:“这块板,我知道它长什么样”。
PCB layout的终极修炼,不是学会所有快捷键,而是让每一次鼠标点击,都带着对物理世界的敬畏与确信。
如果你已经按这个路径完成了第一块板,欢迎在评论区晒出你的Gerber截图——我们可以一起看看,那条最关键的VBUS走线,是不是真的避开了所有陷阱。