简介这份AD封装库与元件库合集面向使用Altium Designer进行原理图绘制和PCB布局的电子工程师、学生及项目开发者旨在解决建库耗时、封装规格不统一、3D模型缺失等常见问题。压缩包共117个文件约464.27MB其中64个PcbLib提供电阻、电容、IC、连接器、FPC、QFN、DIP等器件的物理封装45个SchLib对应原理图符号与电气属性另有8个HTM页面便于浏览和索引元件符号覆盖运算放大器、逻辑门、微控制器等3D模型可辅助空间装配检查PCB库则涉及层叠、过孔与焊盘等制造要素。资源分类较齐全能减少重复创建元件的工作量让设计者把精力放在电路功能与布局优化上。目前已有580人学习适合希望快速补齐标准库、提升设计规范性与效率的新手和资深工程师参考使用。1. 一块板子返工三次多半不是布线的问题上个月帮人看一块小板打样回来发现某个连接器的焊盘间距比手册少 0.1mm只能飞线救场第二批又把二极管的方向装反。追到最后问题出在 AD 封装库、元件库、3D 库、PCB 库、原理图库这五样里有两样没对齐跟布线水平没有关系。这套库集合要解决的就是这件事原理图符号负责逻辑连接PCB 封装负责物理落位3D 模型负责装配干涉元件库负责参数与料号封装库负责复用和批量校验五者用同一套命名和同一份引脚编号串起来拖进工程就能用不用每次自己画。它最适合三类人接手别人工程、打开就一片红叉的要给结构出 STEP 做干涉检查、手上 3D 模型却东一个西一个的以及个人库攒了两三年、想升级成团队可维护版本的。2. 先看懂骨架四类文件的职责边界与目录约定库用不起来八成不是缺元件而是没搞清楚哪个文件管哪一段。有人在 PcbLib 里改丝印改了半小时回头发现原理图那边封装链接还指着旧名字也有人把整个 3D 模型嵌进集成库结果文件涨到几百兆打开一次要等两分钟。这一章先把职责边界和目录约定讲清楚后面所有操作都建立在这个骨架上。2.1 SchLib、PcbLib、IntLib 与 STEP 各管一段原理图库文件.SchLib里放的是电气符号引脚编号Designator、引脚名Name、电气类型Input/Output/Passive/Power、多子件Part A/B/C/D以及一条指向封装的模型链接。它只回答“这根线连到哪个脚”不关心这个脚在物理上长什么样。PCB 库文件.PcbLib里放的是焊盘堆栈、丝印、机械层轮廓、3D Body 和 courtyard 参考框它只回答“这块铜长什么样、占多大地方”。集成库.IntLib是把上面两者编译打包后的只读产物好处是分发时只有一个文件、不会出现符号更新了封装没跟上的情况代价是它不能被直接编辑改了源库必须重新编译。STEP 模型.step/.stp是给结构和装配检查用的在 AD 里通过 3D Body 挂到封装上可以选择嵌入Embed或仅链接。常见做法是常用小元件嵌入大连接器和异形件用链接避免库文件无限膨胀。职责分清楚之后很多争执就不用吵了。焊盘该多大是 PcbLib 的事引脚号该怎么排是 SchLib 的事两者唯一的契约就是编号必须一一对应。这条契约一旦破了PCB 上就会出现莫名其妙的“少一根网络”而且 DRC 不报错纯靠眼睛看。2.2 目录与命名把“找得到”变成“查得回”我一般按功能分目录不按厂商分。厂商分目录的问题是同一个 0603 电阻会有七八份改一份漏七份按功能分同类只有一个入口改一次全部生效。命名上坚持“类别_封装名_尺寸_密度”的结构公制和英制双写这样搜“1608”和搜“0603”都能命中。# 库根目录约定编号前缀决定扫描顺序99_ 放废弃但还不能删的 AD_Lib/ ├── 01_Symbol/ # .SchLib按功能拆MCU / Power / Connector / Discrete ├── 02_Footprint/ # .PcbLib与 01 一一对应文件名保持一致 ├── 03_3D/ # .step/.stp文件名 封装名方便脚本按名匹配 ├── 04_IntLib/ # 编译产物只读带日期戳AD_Lib_20240612.IntLib ├── 05_DbLib/ # 数据库库工程与 ODBC 配置说明 └── 99_Deprecated/ # 已停用但历史工程还在引用的禁止删除只允许冻结这段结构不是审美问题。01 和 02 文件名严格对应是为了让后面第 3 章的引脚差集脚本能靠名字直接配对03 里 STEP 文件名等于封装名是为了 3D 批量挂载时不用手工一个个点99 单独隔离是因为老工程还在引用直接删会在打开时报“文件不存在”而这类报错新手很难定位到是库的问题。命名里我强制带尺寸比如IC_SOIC-8_3.9x4.9mm_P1.27mm、RES_0603_1608Metric。原因是同一个 SOIC-8 有窄体和宽体两种光看名字分不出来等到贴片厂反馈“上不了”才发现本体宽度不对那就是整批返工。2.3 挂进工程三种引用方式怎么选AD 里让工程看到库常见三条路。第一条是 Installed Libraries在面板里把 .SchLib/.PcbLib 加进去简单直接缺点是路径存在本地配置里换台机器就断。第二条是工程内建库把库文件直接放进工程目录并 Add to Project路径相对、跟着工程走适合项目专用件。第三条是数据库库或工作区库元件信息存在数据库里符号和封装按字段动态取适合人多、料号多的场景。选型上没有绝对优劣只有规模匹配。单人单机、元件两三百个Installed 就够三五个人的小组建议 IntLib 加统一的库根目录编译一次全组同步超过十个人或者要和 ERP 对接料号就得上 DbLib否则同一个电阻在不同人电脑上有五个不同 CommentBOM 合并时能把你逼疯。要注意的是AD 记录库路径时倾向存绝对路径这就是第 5 章第一个坑的来源。规避办法很土但有效库根目录固定在同一层级比如统一放在某个盘的EE_Lib下团队内约定不许改再配合工程内建的 PcbLib 兜底。3. 从符号到焊盘把库里的件真正落到板上库挂上了不等于能用。真正上板要过三关符号引脚和焊盘编号对齐、3D 模型位置正确、集成库更新能同步到已放置的元件。这三关的失败表现差别很大——第一关表现为“少网络”第二关表现为“元件穿板”第三关表现为“我明明改了啊”。下面逐个拆。3.1 引脚号映射九成的“未连接”都出在这原理图符号的 Pin Designator 和 PCB 封装的 Pad Designator 必须一一对应注意是 Designator编号不是 Name名字。运放这类多子件最容易出问题一个封装里 Part A 用 1/2/3Part B 用 5/6/7第 4 和第 8 是电源脚画符号时如果偷懒把电源脚挂在 Part A 上又设成隐藏封装那边照样有 8 个焊盘网表就会缺两根。还有个高频雷区是散热焊盘。QFN、DFN 底部那个大焊盘符号里必须单独给一个引脚编号一般是 “9” 或 “EP”封装里对应的焊盘编号也必须一模一样。有人符号里写EPAD封装里写9DRC 一句话不报PCB 上那块铜就是孤岛回流焊时它悬空散热和接地全废。二极管、极性电容的 A/K 与 1/2 混用也是老问题。建议全库统一无极性件用数字有极性件的正极固定为 1、负极固定为 2符号的引脚名可以写 A/K 方便阅读但编号必须是 1/2。统一之后下面这段差集脚本才有意义。import csv def load_designators(path, key_col, val_col): 把库报表读成 {元件名: {引脚号/焊盘号}} 的字典 key_col / val_col 需要改成你导出报表里的真实表头名 table {} with open(path, newline, encodingutf-8-sig) as f: # utf-8-sig 吃掉 BOM for row in csv.DictReader(f): name (row.get(key_col) or ).strip() des (row.get(val_col) or ).strip() if not name or not des: continue # 空行、汇总行直接跳过 table.setdefault(name, set()).add(des) return table sym load_designators(sch_pins.csv, Component, PinDesignator) pcb load_designators(pcb_pads.csv, Footprint, PadDesignator) # 1) 两边都有的元件比较编号集合的差集 for name in sorted(sym.keys() pcb.keys()): only_sym sym[name] - pcb[name] only_pcb pcb[name] - sym[name] if only_sym or only_pcb: print(f[MISMATCH] {name} 仅符号有{sorted(only_sym)} 仅封装有{sorted(only_pcb)}) # 2) 只有符号没有封装的单独提示别让它被上面的交集运算漏掉 for name in sorted(sym.keys() - pcb.keys()): print(f[NO_FOOTPRINT] {name})逻辑很直白用集合差集代替肉眼比对双向都查既能抓到“封装多一个焊盘”也能抓到“符号多一个引脚”。参数上唯一需要动手的是两个列名各家导出的报表表头不一样改脚本比改报表省事。跑之前要保证符号报表和封装报表用的是同一套元件名否则交集为空、脚本一声不吭地“通过”这种假阴性比报错更危险。我一般的做法是把这个脚本挂在库提交前的检查里输出为空才允许合并。血泪经验是手工核对超过 50 个元件之后注意力一定崩第 51 个必错。3.2 3D 模型对齐旋转、原点与单位三件事STEP 挂进封装的操作路径是 Place → 3D Body → 选择 Embed/Generic STEP Model然后指定文件。操作本身两分钟坑全在后面模型飞在半空、整个埋进板子里、或者转了 90 度躺倒。第一个变量是原点。有的 STEP 原点在模型底面中心有的在几何中心有的干脆在建模时的世界原点。Z 方向偏移给 0如果模型原点在几何中心那它下半截就会插进 PCB 里。判断方法很简单切到 3D 视图侧看量一下模型底面和板面的距离把这个距离填回 Z 偏移或者直接把模型往上抬半个本体高度。第二个变量是旋转。Rotate X/Y/Z 三个角度里X 一般用来把躺倒的模型立起来±90Z 用来对准引脚方向。连接器尤其要注意Type-C 这种对称件转 180 度看不出来但 1 脚位置反了贴出来整批报废。第三个变量是单位。STEP 通常是毫米AD 内部跟着当前视图单位走如果你在 mil 视图下导入又手工填了偏移很容易出现“差 25.4 倍”的惨剧。建议导入 3D 之前先按 Q 切到毫米。提示嵌入和链接的取舍上我按体积分。0603 电阻、SOT-23 这种嵌入没问题大连接器、带螺纹的异形件用链接避免 IntLib 编译后体积失控。对齐做完务必用 3D 视图加测量工具确认一遍元件高度。结构那边给的限高是硬约束电解电容高 0.5mm 顶到外壳装配时才发现就晚了。常见做法是把整板导出 STEP 给结构让对方在整机模型里做一次干涉比自己在 AD 里逐个看靠谱。3.3 集成库与数据库库什么时候该升级管理方式源库跑通之后分发方式要跟着团队规模走。三种方式的核心差别在于“谁是唯一数据源”方式唯一数据源适合规模主要代价Installed Libraries各人本地库文件12 人路径易断版本不同步集成库 IntLib编译产物310 人改动要重新编译分发不能直接编辑数据库库 DbLib数据库记录10 人以上要维护 ODBC 和字段映射前期投入大编译 IntLib 的流程是新建 Integrated Library 工程把 SchLib 和 PcbLib 加进去然后执行编译输出落在指定目录。这里有个细节编译只做“符号到封装的链接检查”不做焊盘尺寸检查所以编译通过不等于库是对的别把它当验收。升级到 DbLib 的信号有三个同一个物料在不同项目里 Comment 不一致、BOM 合并要手工去重、采购要求按料号追溯。DbLib 的本质是把“元件”变成数据库一行记录符号路径、封装路径、参数都是字段。配置时最容易翻车的是路径字段用了绝对路径换服务器就全断——这也是第 5 章要展开的坑之一。4. 参数怎么定焊盘补偿、丝印与 courtyard 的具体取值库能不能用最终落在数值上。焊盘小 0.1mm 就是立碑丝印压焊盘就是上不了锡courtyard 没留就是贴片机撞件。这一章给的是可直接抄的起点值具体项目还要按板厂工艺能力微调。4.1 焊盘尺寸与阻焊、钢网补偿翼形引脚SOIC、QFP 这类的焊盘经验公式是焊盘长度 引脚长度 趾部补偿 跟部补偿焊盘宽度 引脚宽度 两侧余量。趾部toe远离本体那端给 0.20.3mm跟部heel靠本体那端给 0.150.25mm侧向单边 0.05mm 左右。密度等级高的板子引脚中心距 0.4mm 以下要往下压否则连锡。def gull_wing_pad(lead_len, lead_w, toe0.30, heel0.20, side0.05, mask0.05): 翼形引脚焊盘推算单位 mm lead_len/lead_w: datasheet 上的引脚长度与宽度 toe/heel: 趾部、跟部补偿密间距时下调到 0.15/0.10 side: 侧向单边余量 mask: 阻焊单边外扩板厂能力弱时加到 0.06~0.08 pad_l round(lead_len toe heel, 3) # 焊盘总长 pad_w round(lead_w 2 * side, 3) # 焊盘总宽 mask_open round(pad_w 2 * mask, 3) # 阻焊开窗宽度 paste_ratio 1.0 # 钢网默认 1:1散热盘另算 return {pad_l: pad_l, pad_w: pad_w, mask_w: mask_open, paste_ratio: paste_ratio} print(gull_wing_pad(1.0, 0.4)) # 典型 SOP-8 引脚长约 1.0mm、宽约 0.4mm函数本身没难度关键在参数怎么改。密间距器件0.5mm 及以下把 toe 降到 0.15、heel 降到 0.10能显著减少桥连大功率器件反而要往上加让焊点有足够的爬锡高度。阻焊外扩不是越大越好外扩过头会让相邻焊盘的阻焊桥消失回流时连成一片。散热焊盘单独处理整块开窗会在回流时把元件“浮”起来常见做法是分成若干个 12mm 的小窗口覆盖率控制在 50%70%同时在大焊盘上打过孔接地。这些孔要盖油还是塞孔得提前和板厂确认别等做完才问。注意焊盘尺寸我倾向固化在 PcbLib 里而不是靠 DRC 规则去兜。规则是全局的改一次影响全板库是按器件定制的两者分工不能混。4.2 丝印、装配图与极性标识丝印的作用是给人看的不是给机器看的所以优先级是“看得清”大于“画得满”。线宽我一般用 0.15mm字高不低于 1.0mm元件本体的外框线画到本体尺寸外扩 0.1mm 即可不要贴到焊盘边上。硬性要求只有一条丝印不能压在焊盘开窗上。压了会导致两种情况轻的是字符残缺重的是字符油墨污染焊盘造成虚焊。AD 里有对应的 DRC 规则把 Silk To Solder Mask Clearance 设成 0.1mm跑一遍就能把越界的丝印全揪出来然后手工裁线。裁的时候注意别把 1 脚标记裁掉了。极性标识是最容易被忽略的细节。二极管用一条短线表示阴极在 0603 这种尺寸上几乎看不见贴片厂反馈过好几次。改用三角形实心块或者直径 0.3mm 的圆点辨识度立刻上来。1 脚标记同理实心圆点比一个空心方框可靠得多。装配图不要靠丝印层凑。正确做法是把元件轮廓放到独立的机械层再用 Draftsman 出装配图标注位号和极性。这样丝印层保持干净装配图又能带上尺寸和注释两边都不将就。courtyard 这块 AD 没有原生层行业里普遍用两层空闲机械层比如 Mechanical 15/16画一层给本体、一层给焊接区。间距取值上0603 这种小件留 0.25mm 就够大连接器留 0.5mm 以上因为贴片机吸嘴和周边元件需要避让空间。这一层不参与电气 DRC但它是你后面做器件间距检查的唯一依据别省。4.3 把库和 DRC 规则绑在一起库设计阶段就应该能过全局规则否则每拉一个元件进来就要 waive 一次时间全耗在点“忽略”上。我一般在新库工程里先落一套规则再往里加封装。关键几条Minimum Solder Mask Sliver 设 0.1mm防止阻焊桥细到板厂做不出来Silk To Solder Mask Clearance 设 0.1mmHole To Hole 设 0.5mm通孔件密集时尤其要跑Board Outline Clearance 按板厂要求设 0.30.5mm。这些值不是拍脑袋是从常见加工能力倒推出来的下限具体项目再按板厂工艺文件调整。规则配好之后有个小技巧在 PcbLib 里对单个封装跑 DRC。很多人以为 DRC 只能在 PcbDoc 里跑其实封装编辑状态下也能查间距和阻焊早点发现问题比等到整板跑要省事得多。库里的封装全部单件过一遍规则再拼板返工率会明显下来。5. 避坑库复用里最常翻的五次车库这个领域有个特点错误不报后果滞后。做的时候一切正常打样回来才发现问题一次就是两周工期。下面五条是我自己踩过或者帮人排查过的按“现象 → 原因 → 解决”写遇到对得上的直接照方抓药。5.1 加载与导入阶段的两个坑换台电脑打开工程封装全找不到。现象是打开原理图元件属性里的封装名还在但 PCB 同步时提示封装不存在或者库面板里一片灰。原因是 AD 在符号的封装模型里记录的是库文件路径而 Installed Libraries 列表存在本地用户配置里换机器、改盘符、改目录名都会断。解决分两层短期用 Project → Add Existing to Project 把 PcbLib 拉进工程目录让路径相对化长期统一库根目录层级或者干脆改用 IntLib/DbLib 分发把路径依赖从“每个人的电脑”转移到“一个文件”。导入第三方库后元件名带一堆奇怪后缀。现象是从别处拿来的 IntLib 解开后Symbol 名叫RES0603_1、RES0603_2重名冲突。原因是原库里有同名元件解包工具自动加了序号。解决是解包后先做一次重命名批处理按第 2 章的命名规范统一再重新编译。别偷懒直接用后期搜索时你会发现同一个电阻有三份改了一份另两份还是老的。5.2 上板与出图阶段的三个坑原理图改了封装PCB 上纹丝不动。现象是明明在 PcbLib 里把焊盘加大了重新编译了 IntLib板上那个元件还是老样子。原因是已放置的元件是“快照”不是“引用”库更新只影响新放置的元件。解决是从原理图端执行 Tools → Update From PCB Libraries或者在 PCB 端用 Update From Library 批量刷新勾选需要更新的元件。刷新完必须重跑 DRC因为焊盘变大会引入新的间距违规这一步跳过等于没更新。3D 视图里元件整个埋进板子里。现象是切到 3D元件只露出顶上一小块或者干脆看不见。原因基本是 STEP 模型原点在几何中心而 Z 偏移填了 0。解决办法是量出本体高度把 Z 偏移设成半高让模型底面贴合板面或者在建模软件里把原点改到底面再导出。附带提醒导入前把单位切成毫米在 mil 视图下填偏移量会得到 25.4 倍的惊喜。库文件越做越大打开要等一两分钟。现象是 IntLib 编译出来上百兆双击加载有明显卡顿。原因是所有 STEP 都用了嵌入模式而且模型精度过高一个连接器带螺纹、带圆角动辄几兆。解决办法是分级处理小元件保留嵌入大件改成链接模式STEP 导出时关掉螺纹、圆角这些对装配无意义的细节再按类别把一个大库拆成电源库、连接器库、分立器件库用哪个挂哪个。同一颗料BOM 里出现三行。现象是贴片厂反馈物料重复采购按三份报价。原因是 Comment 字段没统一有人写100nF有人写0.1uF有人写104。解决办法是上数据库库把 Comment 变成由料号驱动的字段从源头禁止手填。做不到就退一步在库编译前跑一次 Comment 规范化检查把常见写法统一成一种。6. 给库做一次批量体检脚本化校验与验收标准人工翻库翻到第五十个元件注意力必然崩所以验收这一步我坚持脚本化。核心思路是把库的信息导出成表格用脚本按规则打分输出一份“不合格清单”人只看清单。import csv, re # 命名规则类别前缀 封装名尺寸段可选 NAME_RE re.compile(r^(IC|RES|CAP|CON|IND|LED|Q)_[A-Za-z0-9._\-](_\d(\.\d)?x\d(\.\d)?mm)?$) def audit(path): path 为库报表 CSV需包含以下列 Footprint / PadCount / Has3DBody / SilkToPad / Courtyard issues [] with open(path, newline, encodingutf-8-sig) as f: for i, row in enumerate(csv.DictReader(f), start2): # start2 对齐表格行号 fp (row.get(Footprint) or ).strip() if not fp: continue if not NAME_RE.match(fp): issues.append((i, fp, 命名不符合规范)) if int(row.get(PadCount) or 0) 0: issues.append((i, fp, 焊盘数为 0)) if (row.get(Has3DBody) or ).strip().lower() not in (y, yes, 1): issues.append((i, fp, 缺少 3D 模型)) if (row.get(SilkToPad) or ).strip().lower() in (y, yes, 1): issues.append((i, fp, 丝印压焊盘)) if (row.get(Courtyard) or ).strip().lower() not in (y, yes, 1): issues.append((i, fp, 缺少 courtyard 参考框)) return issues for row_no, fp, msg in audit(pcb_lib_report.csv): print(f行 {row_no:4} | {fp:40} | {msg})脚本的判断逻辑是逐条独立打分不做短路这样一个封装能同时暴露多个问题改一轮就够。参数上要改的是列名和正则里的类别前缀前缀跟着你们团队的分类走。跑出来的行号直接对应表格行方便回查。我更看重的是那份“通过”的标准因为标准定松了脚本等于白跑检查项通过标准常见不通过原因命名规范全部匹配前缀与尺寸段早期建的库没带尺寸焊盘数与引脚数一致含散热盘QFN 漏建 EPAD3D 模型全部有且高度与规格书一致只挂了大件小件偷懒丝印不压开窗1 脚标记清晰从旧库继承的越界线courtyard全部有间距 ≥0.25mm直接没画这套体检我一般放在两个时间点新库入库前跑一次全量重构后跑一次。中间不动。因为库这个东西越改越容易出问题改完必须有一次结构化回归。最后一次翻车是这样的赶一个急活从旧库拷了十几个封装改巴改巴就用没跑体检结果一个 SOP-8 的丝印压到了焊盘上贴片厂没吭声照贴回来整批虚焊。从那以后我每次动库哪怕只改一个焊盘也强制把体检脚本和引脚差集脚本各跑一遍输出为空才允许提交。慢五分钟省两周。希望帮到你。本文还有配套的精品资源点击获取