knowledge:kicad:reference:pcbnew
差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| knowledge:kicad:reference:pcbnew [2021/11/21 02:29] – [使用库管理器添加表条目] 弘毅 | knowledge:kicad:reference:pcbnew [2025/10/11 02:55] (当前版本) – 外部编辑 127.0.0.1 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | < | ||
| + | ## Pcbnew 简介 | ||
| + | ### 描述 | ||
| + | |||
| + | Pcbnew 是一款功能强大的印刷电路板软件工具,适用于 Linux,Microsoft Windows 和 Apple OS X 操作系统。 Pcbnew 与原理图捕获程序 Eeschema 结合使用,以创建印刷电路板。 | ||
| + | |||
| + | Pcbnew 管理封装库。 每个覆盖区都是物理元件的图形,包括其焊盘图案(电路板上焊盘的布局)。 在读取网表期间会自动加载所需的封装。 封装选择或注释的任何更改都可以在原理图中更改,并通过重新生成网表并再次在 pcbnew 中读取,在 pcbnew 中更新。 | ||
| + | |||
| + | Pcbnew 提供了一种设计规则检查(DRC)工具,可防止布线和焊盘间隙问题,并防止网络/ | ||
| + | |||
| + | Pcbnew 提供了一个飞线显示器,一条连接封装焊盘的飞线连接在原理图上。 这些连接在布线和封装移动时动态移动。 | ||
| + | |||
| + | Pcbnew 有一个简单但有效的自动布线器,可以帮助生产电路板。 SPECCTRA dsn 格式的导出/ | ||
| + | |||
| + | Pcbnew 提供专门用于生产超高频微波电路的选项(例如梯形和复杂形式的焊盘,印刷电路上线圈的自动布局等)。 | ||
| + | |||
| + | ### 主要设计特色 | ||
| + | |||
| + | Pcbnew 中最小的单位是 1 纳米。所有尺寸都存储为整数纳米。 | ||
| + | |||
| + | Pcbnew 可生成多达 32层铜,14层技术层(丝印层,阻焊层,元件粘合剂层,焊膏层和边缘切割层)以及4个辅助层(图纸和注释),并实时管理飞线指示(飞线) 丢失的布线。 | ||
| + | |||
| + | PCB元素(布线,焊盘,文本,图纸……)的显示可自定义: | ||
| + | |||
| + | - 完整或边框。 | ||
| + | - 有无布线间隙。 | ||
| + | |||
| + | 对于复杂电路,可以选择性地隐藏层,区域和元件的显示以便在屏幕上清晰显示。 可以高亮显示网的布线以提供高对比度。 | ||
| + | |||
| + | 封装可以旋转到任何角度,分辨率为0.1度。 | ||
| + | |||
| + | Pcbnew 包含一个封装编辑器,可以编辑 PCB 上的单个封装或编辑库中的封装。 | ||
| + | |||
| + | 封装编辑器提供了许多省时工具,例如: | ||
| + | |||
| + | - 只需按照您希望编号的顺序将鼠标拖到焊盘上即可快速填充焊盘编号。 | ||
| + | - 轻松生成用于 LGA/BGA 或圆形封装的矩形和圆形焊盘阵列。 | ||
| + | - 半自动对齐行或列的焊盘。 | ||
| + | |||
| + | 封装焊盘具有可调节的各种属性。 焊盘可以是圆形,矩形,椭圆形或梯形。 对于通孔部件,钻头可以在焊盘内部偏移并且是圆形或槽。 单个焊盘也可以旋转并具有独特的阻焊,网或焊膏间隙。 焊盘还可以具有牢固的连接或热释放连接,以便于制造。 可以在封装内放置任何独特焊盘的组合。 | ||
| + | |||
| + | Pcbnew 可轻松生成生产所需的所有文件: | ||
| + | |||
| + | - 制造输出: | ||
| + | - 用于 GERBER RS274X 格式的 Photoplotters 的文件。 | ||
| + | - 用于以 EXCELLON 格式钻孔的文件。 | ||
| + | - 以 HPGL,SVG 和 DXF 格式绘制文件。 | ||
| + | - 以 POSTSCRIPT 格式绘制和钻取地图。 | ||
| + | - 本地打印输出。 | ||
| + | |||
| + | ### 一般建议 | ||
| + | |||
| + | 由于必要的控制程度,强烈建议使用带有 pcbnew 的3键鼠标。 平移和缩放等许多功能都需要3键鼠标。 | ||
| + | |||
| + | 在 KiCad 的新版本中,pcbnew 已经从 CERN 的开发人员那里看到了广泛的变化。 这包括诸如新渲染器(OpenGL 和 Cairo 视图模式),交互式推送布线器,差分和曲折布线和调整,重新设计的封装编辑器以及许多其他功能等功能。 请注意,大多数这些新功能 **仅** 存在于新的 OpenGL 和 Cairo 视图模式中。 | ||
| + | |||
| + | ## 安装 | ||
| + | |||
| + | ### 安装软件 | ||
| + | |||
| + | KiCad 文档中描述了安装过程。 | ||
| + | |||
| + | ### 修改默认配置 | ||
| + | |||
| + | 在“kicad/ | ||
| + | |||
| + | 可以修改此配置文件以更改要加载的库。 | ||
| + | |||
| + | 去做这个: | ||
| + | |||
| + | - 使用 KiCad 或直接启动 Pcbnew。 在 Windows 上它位于`C: | ||
| + | - 选择首选项 - 库(Libs)和目录(Dir)。 | ||
| + | - 根据需要编辑。 | ||
| + | - 将修改后的配置(Save Cfg)保存到“kicad/ | ||
| + | |||
| + | ### 管理封装库 | ||
| + | |||
| + | 从 4.0 版本开始,Pcbnew 使用名为“封装库表”的文件组织封装库。 封装库表包含一些单独的封装库的描述,以及每个库的“昵称”,用于在引用封装时引用该库。 | ||
| + | |||
| + | Pcbnew 支持几种库,每种都由“插件”支持: | ||
| + | |||
| + | - KiCad - 以 *.pretty* 格式存储在本地文件系统上的本机 KiCad 封装库(包含 *.kicad_mod* 文件的文件夹) | ||
| + | - Github - *.pretty* 格式的原生 KiCad 封装库,作为 Github 存储库在线存储 | ||
| + | - 旧版 - 旧式 KiCad 封装库(*.mod* 文件) | ||
| + | - Eagle - Eagle封装库(包含 *.fp* 文件的文件夹) | ||
| + | - Geda-PCB - Geda PCB 库 | ||
| + | |||
| + | | | 您只能在本地磁盘上写入 KiCad *.pretty* 封装库文件夹(以及这些文件夹中的 .kicad_mod 文件)。所有其他格式都是只读的。 | | ||
| + | | ---- | ------------------------------------------------------------ | | ||
| + | | | | | ||
| + | |||
| + | 允许在不同的库中具有相同名称的封装。 封装将存储为库 *和* 封装名称的组合,以确保从相应的库加载正确的封装。 | ||
| + | |||
| + | 有两个封装库表:全局表和项目表。 | ||
| + | |||
| + | #### 全局封装库表 | ||
| + | |||
| + | 全局封装库表包含始终可用的库列表,与当前加载的项目文件无关。 该表保存在用户主文件夹中的文件“fp-lib-table”中。 此文件夹的位置取决于操作系统。 | ||
| + | |||
| + | #### 项目特定封装库表 | ||
| + | |||
| + | 项目特定的封装库表包含专门用于当前加载的项目文件的库列表。 项目特定的封装库表只能在与项目板文件一起加载时进行编辑。 如果没有加载项目文件或项目路径中没有封装库表文件,则会创建一个空表,可以对其进行编辑,然后将其与板文件一起保存。 | ||
| + | |||
| + | 当在项目特定表中定义条目时,包含条目的“fp-lib-table 文件”将被写入当前打开的 PCB 的文件夹中。 | ||
| + | |||
| + | #### 初始配置 | ||
| + | |||
| + | 第一次运行 CvPcb 或 Pcbnew 并且在用户的主文件夹中找不到全局封装表文件“fp-lib-table”,Pcbnew 将尝试复制存储在系统的 KiCad 模板文件夹中的默认封装表文件“fp_global_table” 到用户主文件夹中的“fp-lib-table”文件。 如果找不到“fp_global_table”,将在用户的主文件夹中创建一个空的封装库表。 如果发生这种情况,用户可以手动复制“fp_global_table”或手动配置表。 | ||
| + | |||
| + | 默认的封装库表包括作为 KiCad 的一部分安装的所有标准封装库。 | ||
| + | |||
| + | | | 在官方 [KiCad库存储库](https:// | ||
| + | | ---- | ------------------------------------------------------------ | | ||
| + | | | | | ||
| + | |||
| + | 配置 KiCad 时要做的第一件事就是根据您的工作和项目所需的库来修改此表(添加/ | ||
| + | |||
| + | | | 拥有许多库可能非常耗时,特别是如果它们只在网上找到(例如 Github 库)。 如果您发现库加载缓慢,请尝试删除不需要的库。 | | ||
| + | | ---- | ------------------------------------------------------------ | | ||
| + | | | | | ||
| + | |||
| + | #### 使用库管理器添加表条目 | ||
| + | |||
| + | 可以通过以下方式访问库表管理器: | ||
| + | * 在该表中是唯一的。 昵称不必以任何方式与实际库文件名或路径相关。 | ||
| + | |||
| + | 有效的库表条目有一些规则: | ||
| + | |||
| + | - 冒号“: | ||
| + | - 每个库条目必须具有有效的路径和/ | ||
| + | - 必须选择适当的插件类型才能使库成为必需的。必须选择适当的插件类型才能正确读取库。阅读。 | ||
| + | |||
| + | 还有一个描述字段用于添加库条目的描述。 选项字段包含特定于插件的特殊选项,通常为空白。 | ||
| + | |||
| + | 虽然在同一个表中不能有重复的库昵称,但是在全局和项目特定的封装库表中都可以有重复的库昵称。 当出现重复的名称时,项目特定的表条目将优先于全局表条目。 | ||
| + | |||
| + | #### 环境变量替代 | ||
| + | |||
| + | 封装库表最强大的功能之一是环境变量替换。 这允许您定义库存储在环境变量中的自定义路径。 | ||
| + | |||
| + | 在封装库路径中使用语法“${ENV_VAR_NAME}”支持环境变量替换。 | ||
| + | |||
| + | KiCad 定义了一些默认变量: | ||
| + | |||
| + | - “$KISYSMOD”:这指向与 KiCad 一起安装的默认封装库所在的位置。 您可以通过自己定义来覆盖“$KISYSMOD”,它允许您替换自己的库来代替默认的 KiCad 封装库。 | ||
| + | - 加载板文件时,使用该板的路径定义“$KPRJMOD”。 这允许您引用项目路径中的库,而无需在项目特定的封装库表中重复库的绝对路径。 | ||
| + | |||
| + | #### 使用库向导添加表条目 | ||
| + | |||
| + | 有一个交互式向导,可以帮助您将库添加到库表。 可从菜单访问: | ||
| + | |||
| + | ,它们将被标记为“无效”。 | ||
| + | |||
| + | 最后一个选择是要填充的封装库EN | ||
| + | |||
| + | - 全局表,或 | ||
| + | - 项目特定表 | ||
| + | |||
| + | 库,并且将来不会自动更新。 | ||
| + | |||
| + | 下一页将加载在该 Github 帐户上找到的 *.pretty* 存储库列表。 您可以选择要添加到库中的任何数字。 | ||
| + | |||
| + | ,则在需要时会从 Github 加载封装。 | ||
| + | |||
| + | #### 使用 KiCad 插件 | ||
| + | |||
| + | KiCad 插件处理您计算机上存在的本机 KiCad 库(或某些可访问的文件系统)。 | ||
| + | |||
| + | 它用于与 KiCad 一起安装的预安装库,以及其他 KiCad 库,可以是官方的 KiCad 库集,第三方库或您自己的策划库。 | ||
| + | |||
| + | ##### 安装 KiCad 插件库 | ||
| + | |||
| + | Footprint Library Wizard可以帮助您安装磁盘或Github 上的库。 但是,对于磁盘上的库,您需要首先将它们放在那里。 | ||
| + | |||
| + | KiCad 库是包含一些 *.kicad_mod* 文件的目录。 | ||
| + | |||
| + | 这通常通过解压缩归档文件,从其他位置复制目录或克隆版本控制的存储库来完成。 | ||
| + | |||
| + | KiCad 插件没有指定任何类型的版本控制,但 Git 非常常用于跟踪库的更改,这对于确保库数据的安全记录和备份至关重要。 | ||
| + | |||
| + | 跟踪变化很容易,并为官方的 KiCad Github 库做出贡献。 这是使用 Git 版本控制软件完成的。 如果你想回馈,你必须在 Github 上分配回购,这样你就可以发送拉请求。 如果您只是想在需要时更新库,则不需要这样做,您可以直接克隆官方 KiCad 库并根据需要进行拉取。 | ||
| + | |||
| + | | | 通过 Github 发送拉取请求将允许自动库标准检查器验证您提议的更改。 有关库约定的详细信息,请参阅 [KiCad Library Conventions](https:// | ||
| + | | ---- | ------------------------------------------------------------ | | ||
| + | | | | | ||
| + | |||
| + | #### 使用 GitHub 插件 | ||
| + | |||
| + | GitHub 插件是一个特殊的插件,它提供了一个接口,用于对包含 *.pretty* 封装的远程 GitHub 存储库进行只读访问,并可选择提供“写时复制”(COW)支持,用于编辑从 GitHub 存储库读取的封装和在本地保存它们。 | ||
| + | |||
| + | | | “GitHub”插件用于 **上的远程漂亮封装库** 的只读访问 https:// | ||
| + | | ---- | ------------------------------------------------------------ | | ||
| + | | | | | ||
| + | |||
| + | 要将封装库表中的 GitHub 条目添加到封装库表条目中的“库路径”,必须将其设置为有效的 GitHub URL。 | ||
| + | |||
| + | 例如: | ||
| + | |||
| + | ``` | ||
| + | https:// | ||
| + | ``` | ||
| + | |||
| + | 通常 GitHub URL 采用以下形式: | ||
| + | |||
| + | ``` | ||
| + | https:// | ||
| + | ``` | ||
| + | |||
| + | “插件类型”必须设置为“Github”。 | ||
| + | |||
| + | 下表显示了具有默认选项(无 COW 支持)的封装库表条目: | ||
| + | |||
| + | | 昵称 | ||
| + | | --------- | ----------------------------------------------- | --------- | ---- | ------------------ | | ||
| + | | GitHub 上 | https:// | ||
| + | |||
| + | ##### 写入时复制(Copy-On-Write) | ||
| + | |||
| + | 要启用“写入时复制”功能,必须将“allow_pretty_writing_to_this_dir”选项添加到封装库表条目的“选项”设置中。 此选项是“库路径”,用于本地存储从 GitHub 存储库读取的修改过的封装副本。 保存到此路径的占用空间与 GitHub 存储库的只读部分组合以创建封装库。 如果缺少此选项,则 GitHub 库是只读的。 如果 GitHub 库存在该选项,则对该混合库的任何写入都将转到本地“*.pretty”目录。 | ||
| + | |||
| + | 此混合 COW 库的 github.com 常驻部分始终是只读的,这意味着您无法删除任何内容或直接修改指定 GitHub 存储库中的任何封装。 在所有进一步的讨论中,聚合库类型仍然是“Github”,但它包括本地读/ | ||
| + | |||
| + | 下表显示了一个带有 COW 选项的足迹库表条目。 请注意仅使用环境变量“${HOME}”作为示例。 github.pretty 目录位于“${HOME}/ | ||
| + | |||
| + | | 昵称 | ||
| + | | --------- | ----------------------------------------------- | --------- | ------------------------------------------------------------ | ------------------ | | ||
| + | | GitHub 上 | https:// | ||
| + | |||
| + | 封装载荷将始终优先于选项“allow_pretty_writing_to_this_dir”给出的路径中找到的局部封装。 通过在封装编辑器中执行封装保存将封装保存到 COW 库的本地目录后,在加载与您本地保存的封装相同的封装时,不会看到 GitHub 更新。 | ||
| + | |||
| + | 始终为每个 GitHub 库保留一个单独的本地“**.pretty”目录,永远不要通过多次引用同一目录来组合它们。 另外,不要在封装库表条目中使用相同的COW(“**.pretty”)目录。 这可能会造成混乱。 选项“allow_pretty_writing_to_this_dir”的值将使用“${}”符号扩展任何环境变量,以与“库路径”设置相同的方式创建路径。 | ||
| + | |||
| + | ##### 使用写入时复制(Copy-On-Write)共享封装 | ||
| + | |||
| + | COW 有什么意义? 如果您定期通过电子邮件将您的 COW 相当封装修改发送给 GitHub 存储库维护者,您可以帮助更新 GitHub 副本。 只需将您在 COW 目录中找到的单个“*.kicad_mod”文件通过电子邮件发送给 GitHub 存储库的维护者。 在收到确认已提交更改后,您可以安全地删除您的 COW 文件,并且 GitHub 库的只读部分中更新的封装将向下流动。 您的目标应该是通过 https:// | ||
| + | |||
| + | | | 您还可以使用 *KiCad* 插件使用相关库的本地 Git 克隆为库开发做出贡献,并向库维护者提交拉取请求。 | | ||
| + | | ---- | ------------------------------------------------------------ | | ||
| + | | | | | ||
| + | |||
| + | ##### 缓存 GitHub 请求 | ||
| + | |||
| + | GitHub 插件可能很慢,因为它必须先从 Internet 下载所有库才能使用它们。 | ||
| + | |||
| + | Nginx 可以用作 GitHub 服务器的缓存,以加快封装的加载速度。 它可以安装在本地或网络服务器上。 在“pcbnew/ | ||
| + | |||
| + | #### 使用模式 | ||
| + | |||
| + | 封装库可以全局定义,也可以专门定义到当前加载的项目。 用户全局表中定义的封装库始终可用,并存储在用户主文件夹的“fp-lib-table”文件中。 即使没有打开项目网表文件,也可以随时访问全局封装库。 项目特定的封装表仅对当前打开的网络列表文件有效。 项目特定的封装库表保存在当前打开的板文件路径中的文件“fp-lib-table”中。 您可以在任一表中自由定义库。 | ||
| + | |||
| + | 每种方法都有优点和缺点: | ||
| + | |||
| + | - 您可以在全局表中定义所有库,这意味着它们将在您需要时始终可用。 | ||
| + | - 这样做的缺点是您可能需要搜索大量的库来查找您正在寻找的足迹。 | ||
| + | - 您可以根据项目特定定义所有库。 | ||
| + | - 这样做的好处在于你仅需要定义你在某个项目中需要用到的封装,这将大大减小搜索的复杂度。 | ||
| + | - 缺点是您始终需要记住为每个项目添加所需的每个封装库。 | ||
| + | - 您还可以在全局和项目中专门定义封装库。 | ||
| + | |||
| + | 一种用法模式是全局定义最常用的库,而库只需要项目特定库表中的项目。 您如何定义库没有限制。 | ||
| + | |||
| + | ##### 修改PCB项目中的封装 | ||
| + | |||
| + | 将占位面积添加到 PCB 时,整个封装将复制到 PCB 文件中( *.kicad_pcb* )。 这意味着库中的封装的更改不会自动影响 PCB。 | ||
| + | |||
| + | 这也意味着您可以单独编辑 PCB 上的封装,而不会影响相同封装的其他实例(在同一 PCB 或其他 PCB 上)。 | ||
| + | |||
| + | 但是,如果修改库占用空间,则下次放置实例时,它将与现有的同名封装不匹配。 | ||
| + | |||
| + | | | 通常的做法是将您使用的所有占用空间复制到单独的版本控制位置,以便此项目不会因系统或用户库的更改而意外受到影响。 此外,它确保用于 PCB 的所有封装资源都可以轻松地与 PCB 文件一起分发。 | | ||
| + | | ---- | ------------------------------------------------------------ | | ||
| + | | | | | ||
| + | |||
| + | ## 一般操作 | ||
| + | |||
| + | ### 工具栏和命令 | ||
| + | |||
| + | 在 Pcbnew 中,可以使用各种方法执行命令: | ||
| + | |||
| + | - 主窗口顶部的基于文本的菜单。 | ||
| + | - 顶部工具栏菜单。 | ||
| + | - 右侧工具栏菜单。 | ||
| + | - 左侧工具栏菜单。 | ||
| + | - 鼠标按钮 (菜单选项)。特别: | ||
| + | - 鼠标右键显示一个弹出菜单,其内容取决于鼠标箭头下的元素。 | ||
| + | - 键盘(功能键“F1”,“F2”,“F3”,“F4”,“Shift”,“Delete”,“+”,“ - ”,“Page Up”,“Page Down” 和“空格键”)。 “Esc” 键通常会取消正在进行的操作。 | ||
| + | |||
| + | 下面的屏幕截图说明了对这些操作的一些可能访问: | ||
| + | |||
| + |  of the element under the cursor. | ||
| + | - Single-click hold and drag starts a block selection operation. | ||
| + | |||
| + | ##### Center button/ | ||
| + | |||
| + | - 快速缩放和图层管理器中的一些命令。 | ||
| + | - Hold down the center button and draw a rectangle to zoom to the described area. Rotation of the mouse wheel will allow you to zoom in and zoom out. | ||
| + | |||
| + | ##### 右键 | ||
| + | |||
| + | - Displays a pop-up menu with the operations permitted on the element under the cursor. | ||
| + | |||
| + | In high density designs there can be so many elements under the cursor that the heuristics algorithm cannot determine a single element. In this case a disambiguation pop-up menu will be displayed with all of the elements to allow selection of the desired element. | ||
| + | |||
| + | | | Force display of disambiguation pop-up menu | | ||
| + | | ---- | ------------------------------------------- | | ||
| + | | | | | ||
| + | |||
| + | In some instances the heuristics algorithm does not allow the desired element to be selected. In this case, the disambiguation pop-up menu display can be forced to display by holding the `Ctrl` key on Windows and Linux systems and holding `Alt` on macOS systems. | ||
| + | |||
| + | #### Blocks | ||
| + | |||
| + | ##### Selection behavior | ||
| + | |||
| + | The block drag behavior determines how elements are selected. | ||
| + | |||
| + | - Dragging left to right selects only elements fully contained within the block. | ||
| + | - Dragging right to left selects elements fully contained within and intersect the block. | ||
| + | |||
| + | Successive block selection can be used to change the selected elements. The table below shows the block select modifier keys and their associated behavior. | ||
| + | |||
| + | | Modifier Keys | Selection Effect | ||
| + | | ----------------------------------------------------- | ---------------------------------------- | | ||
| + | | `Shift` | ||
| + | | `Alt + Shift` Linux and Windows, `Ctrl + Shift` macOS | Subtract block from existing selections. | | ||
| + | |||
| + | ##### 块上的操作 | ||
| + | |||
| + | 通过弹出菜单可以进行移动,反转(镜像),复制,旋转和删除块的操作。 此外,视图可以缩放到块描述的区域。 | ||
| + | |||
| + | 通过在按住鼠标左键的同时移动鼠标来跟踪块的框架。 释放按钮时执行操作。 | ||
| + | |||
| + | 通过按住其中一个热键“Shift”或“Ctrl”,或同时按住“Shift”和“Ctrl”两个键,在绘制块时,操作反转,旋转或删除将自动选择,如下表所示: | ||
| + | |||
| + | | Action | ||
| + | | ---------------------------------------------- | -------------------------------------- | | ||
| + | | Left mouse button held down | Trace framework to move block | | ||
| + | | `Shift` + Left mouse button held down | Trace framework for invert block | | ||
| + | | `Ctrl` + Left mouse button held down | Trace framework for rotating block 90° | | ||
| + | | `Shift` + `Ctrl` + Left mouse button held down | Trace framework to delete the block | | ||
| + | | Center mouse button held down | Trace framework to zoom to block | | ||
| + | |||
| + | 移动块时: | ||
| + | |||
| + | - 将块移动到新位置并操作鼠标左键以放置元素。 | ||
| + | - To cancel the operation use the right mouse button and select Cancel Block from the menu or press the `Esc` key. | ||
| + | |||
| + | 或者,如果在绘制块时未按任何键,请使用鼠标右键显示弹出菜单并选择所需的操作。 | ||
| + | |||
| + | 对于每个块操作,选择窗口使操作仅限于某些元素。 | ||
| + | |||
| + | ### 选择网格大小 | ||
| + | |||
| + | 在元素布局期间,光标在网格上移动。 可以使用左侧工具栏上的图标打开或关闭网格。 | ||
| + | |||
| + | 可以使用弹出窗口或屏幕顶部工具栏上的下拉选择器来选择任何预定义的网格大小或用户定义的网格。 使用菜单栏选项“尺寸” - > | ||
| + | |||
| + | ### 调整缩放级别 | ||
| + | |||
| + | 可以使用以下任一方法更改缩放级别: | ||
| + | |||
| + | - 打开弹出窗口(使用鼠标右键),然后选择所需的缩放。 | ||
| + | - 使用以下功能键: | ||
| + | - ‘F1’: 放大(放大) | ||
| + | - ‘F2’: 缩小(缩小) | ||
| + | - ‘F3’: 重绘显示 | ||
| + | - `F4`: Center view at the current cursor position | ||
| + | - 旋转鼠标滚轮。 | ||
| + | - 按住鼠标中键并绘制一个矩形以缩放到所描述的区域。 | ||
| + | |||
| + | ### 显示光标坐标 | ||
| + | |||
| + | The cursor coordinates are displayed in inches or millimeters as selected using the ' | ||
| + | |||
| + | 无论选择哪个单位,Pcbnew 的精度始终为 1/ | ||
| + | |||
| + | 屏幕底部的状态栏给出: | ||
| + | |||
| + | - 当前的缩放设置。 | ||
| + | - 光标的绝对位置。 | ||
| + | - 光标的相对位置。 注意,通过按空格键可以在任何位置将相对坐标(x,y)设置为(0, | ||
| + | |||
| + | 此外,可以使用其极坐标(光线+角度)显示光标的相对位置。 可以使用左侧工具栏中的图标打开和关闭此功能。 | ||
| + | |||
| + |  | ||
| + | - ‘V’:如果布线正在进行中,如果布线工具处于活动状态,则切换工作层或放置过孔。 | ||
| + | - ‘+’和‘-’:选择下一层或上一层。 | ||
| + | - ‘Ctrl+F1’:显示所有热键的列表。 | ||
| + | - ‘Space’:重置相对坐标。 | ||
| + | |||
| + | ### 在块上操作 | ||
| + | |||
| + | 弹出菜单中提供了移动,反转(镜像),复制,旋转和删除块的操作。 此外,视图可以缩放到块描述的视图。 | ||
| + | |||
| + | 通过在按住鼠标左键的同时移动鼠标来跟踪块的框架。 释放按钮时执行操作。 | ||
| + | |||
| + | 通过按住“Shift”或“Ctrl”键中的一个键,同时将“Shift”和“Ctrl”键合在一起,或者“Alt”,在绘制块时,将自动选择反转,旋转,删除或复制操作,如图所示 下表: | ||
| + | |||
| + | | 活动 | ||
| + | | --------------------------- | -------------- | | ||
| + | | 按住鼠标左键 | ||
| + | | 按住“Shift”+鼠标左键 | ||
| + | | 按住“Ctrl”键+鼠标左键 | ||
| + | | 按住Shift键+“Ctrl”+鼠标左键 | 删除块 | ||
| + | | 按住‘Alt’ +鼠标左键 | ||
| + | |||
| + | 执行块命令时,将显示一个对话框窗口,可以选择此命令中涉及的项目。 | ||
| + | |||
| + | Any of the commands above can be canceled via the same pop-up menu or by pressing the Escape key (`Esc`). | ||
| + | |||
| + | ,配置选项,打印,绘图和帮助文件。 | ||
| + | |||
| + |  of the circuit for use with automatic testers. | ||
| + | |||
| + | #### 编辑菜单 | ||
| + | |||
| + | 允许一些全局编辑操作: | ||
| + | |||
| + |  | ||
| + | - 设置设计规则(布线和过孔尺寸,间隙)。 | ||
| + | |||
| + | 一个重要的菜单。 允许调整: | ||
| + | |||
| + | - 文本大小和图纸的线宽。 | ||
| + | - 焊盘的尺寸和特性。 | ||
| + | - 设置阻焊层和焊膏层的全局值 | ||
| + | |||
| + | 。 | ||
| + | - 管理其他显示选项。 | ||
| + | - 创建,编辑(和重新读取)热键文件。 | ||
| + | |||
| + | #### 帮助菜单 | ||
| + | |||
| + | 提供对用户手册和版本信息菜单(Pcbnew About)的访问。 | ||
| + | |||
| + | ### 使用顶部工具栏上的图标 | ||
| + | |||
| + | 此工具栏可以访问 Pcbnew 的主要功能。 | ||
| + | |||
| + | . | ||
| + | - 设置网格大小。 | ||
| + | - 此外,右键单击元素可以编辑最常修改的元素参数。 | ||
| + | |||
| + | 下面的屏幕截图显示了弹出窗口的外观。 | ||
| + | |||
| + | ### 可用模式 | ||
| + | |||
| + | 使用弹出菜单时有3种模式。 在弹出菜单中,这些模式添加或删除一些特定命令。 | ||
| + | |||
| + | | 。 | ||
| + | - 启动 Pcbnew 并阅读修改后的网表。 这也将读取带封装选择的文件。 | ||
| + | |||
| + | 然后,Pcbnew 将自动加载所有必要的封装。 现在可以手动或自动将封装放置在电路板上,并且可以布线。 | ||
| + | |||
| + | ### 更新印刷电路板的程序 | ||
| + | |||
| + | 如果修改了原理图(在生成印刷电路板之后),则必须重复以下步骤: | ||
| + | |||
| + | - 使用 Eeschema 生成新的网表文件。 | ||
| + | - 如果对原理图的更改涉及新元件,则必须使用 Cvpcb 分配相应的封装。 | ||
| + | - 启动 Pcbnew 并重新读取修改后的网表(这也将重新读取带有封装选择的文件)。 | ||
| + | |||
| + | 然后,Pcbnew 将自动加载任何新的占用空间,添加新连接并删除冗余连接。 此过程称为前向注释,是制作和更新 PCB 时非常常见的过程。 | ||
| + | |||
| + | ### 读取网表文件 - 加载封装 | ||
| + | |||
| + | #### 对话框 | ||
| + | |||
| + | 可从图标图像访问:它们: | ||
| + | |||
| + | 激活封装模式(区域,然后单击右键: | ||
| + | |||
| + | 。 | ||
| + | |||
| + | 以下屏幕截图显示了结果。 | ||
| + | |||
| + | ,结束在31(后面)。 由于元件不能放在 * 内层 * (编号1到30)中,因此只有 0 和 31 层是 * 元件层 * 。 | ||
| + | |||
| + | 任何铜层的名称都是可编辑的。 铜层具有在使用外部布线 *Freerouter* 时很有用的功能属性。 默认图层名称的示例是 **F.Cu** 和 **In0** ,用于图层编号0。 | ||
| + | |||
| + | 的元素将自动镜像,并在翻转覆盖区时移动到补充层。 | ||
| + | |||
| + | 配对的技术层是: | ||
| + | |||
| + | - **粘合剂层**(F.Adhes 和 B.Adhes) | ||
| + | |||
| + | 这些用于粘合剂的应用,通常在波峰焊之前将 SMD 元件粘到电路板上。 | ||
| + | |||
| + | - **焊膏层**(F.Paste 和 B.Paste) | ||
| + | |||
| + | 用于生产锡膏层,通常在回流焊接之前,将焊膏放置在表面贴装元件的焊盘上。 通常只有表面贴装焊盘占据这些层。 | ||
| + | |||
| + | - **丝印层**(F.SilkS 和 B.SilkS) | ||
| + | |||
| + | 它们是元件图纸出现的层。 这就是你绘制元件极性,第一个引脚指示器,安装参考,…… | ||
| + | |||
| + | - **阻焊层**(F.Mask 和 B.Mask) | ||
| + | |||
| + | 这些定义了阻焊层。 所有焊盘应出现在其中一个层(SMT)或两者(用于通孔)上,以防止绿油覆盖焊盘。 | ||
| + | |||
| + | - **封装层**(F.CrtYd 和 B.CrtYd) | ||
| + | |||
| + | 用于显示元件在 PCB 上物理占用的空间大小。 | ||
| + | |||
| + | - **制造层**(F.Fab 和 B.Fab) | ||
| + | |||
| + | 制造层主要用于记录目的,以将信息传达给例如 PCB 制造商或组装厂。 | ||
| + | |||
| + | #### 独立技术层 | ||
| + | |||
| + | - **边缘切割(Edge.Cuts)** | ||
| + | |||
| + | 该层保留用于绘制电路板边框。 放置在该图层上的任何元素(图形,文本…)都出现在所有其他图层上。 仅使用此图层绘制板边框。 | ||
| + | |||
| + | - **余量(Margin)** | ||
| + | |||
| + | 板的边缘后退边框(? | ||
| + | |||
| + | #### 一般用途的图层 | ||
| + | |||
| + | 这些层可用于任何用途。 它们可用于文本,例如装配或布线说明或结构图,用于创建用于装配或加工的文件。 他们的名字是: | ||
| + | |||
| + | - 注释 | ||
| + | - E.C.O. 1 | ||
| + | - E.C.O. 2 | ||
| + | - 图纸 | ||
| + | |||
| + | ### 选择活动层 | ||
| + | |||
| + | 可以通过以下几种方式选择活动工作层: | ||
| + | |||
| + | - 使用右侧工具栏(图层管理器)。 | ||
| + | - 使用上方工具栏。 | ||
| + | - 使用弹出窗口(用鼠标右键激活)。 | ||
| + | - 使用 + 和 - 键(仅适用于铜层)。 | ||
| + | - 通过热键。 | ||
| + | |||
| + | #### 使用图层管理器进行选择 | ||
| + | |||
| + | 层自动切换到用于过孔的层对的交替层(除非在添加过孔时保持“移位”)。 | ||
| + | |||
| + | 也可以通过热键切换到另一个活动层,如果正在进行跟踪,则会插入一个过孔。 | ||
| + | |||
| + | ### 使用高对比度模式 | ||
| + | |||
| + | 激活工具(在左侧工具栏中)时进入此模式:: | ||
| + | |||
| + | : | ||
| + | |||
| + | : | ||
| + | |||
| + | : | ||
| + | |||
| + | 边框: | ||
| + | |||
| + | 1. 选择“添加图形圆”或“添加图形圆弧”工具 | ||
| + | 2. 单击以固定圆心 | ||
| + | 3. 通过移动鼠标调整半径 | ||
| + | 4. 再次单击完成。 | ||
| + | |||
| + | | | 可以在“参数”菜单中调整边框的宽度(建议宽度 = 150in 1/10 mils)或通过“选项”调整,但除非图形以边框模式以外的方式显示,否则不会显示。 | | ||
| + | | ---- | ------------------------------------------------------------ | | ||
| + | | | | | ||
| + | |||
| + | 结果边框可能如下所示: | ||
| + | |||
| + | 成原始的简单形状。 在 LibreCAD 中,使用以下步骤: | ||
| + | |||
| + | 1. 打开 DXF 文件的副本。 | ||
| + | 2. 选择板形状(选定的形状用虚线显示)。 | ||
| + | 3. 在 **修改** 菜单中,选择 **炸开** 。 | ||
| + | 4. 按 ENTER 键。 | ||
| + | |||
| + | 作为下一步,像 **ELLIPSIS** 这样的复杂曲线需要在“近似”所需形状的小线段中分解。 当导出 DXF 文件或以较旧的 **DXF R12** 文件格式保存时,会自动发生这种情况(因为 R12 格式不支持复杂的曲线形状,CAD 应用程序会将这些形状转换为线段。某些 CAD 应用程序允许配置数字或 所用线段的长度)。 在 LibreCAD 中,段长度通常足够小,可用于板形。 | ||
| + | |||
| + | 在 LibreCAD 中,使用以下步骤导出为 **DXF R12** 文件格式: | ||
| + | |||
| + | 1. 在 **文件** 菜单中,使用 **另存为…** | ||
| + | 2. 在 **将绘图另存为** 对话框中,对话框底部附近有一个 **保存类型:** 选择。 选择选项 *绘制交换 DXF R12 * 。 | ||
| + | 3. (可选)在 **文件名:** 字段中输入文件名。 | ||
| + | 4. 点击 **保存** | ||
| + | |||
| + | 您的 DXF 文件现已准备好导入 KiCad。 | ||
| + | |||
| + | ##### 将 DXF 文件导入 KiCad | ||
| + | |||
| + | 以下步骤描述了将准备好的 DXF 文件作为板形状导入 KiCad。 请注意,导入行为略有不同,具体取决于使用的“画布”。 | ||
| + | |||
| + | 使用“默认”画布模式: | ||
| + | |||
| + | 1. 在 **文件** 菜单中,选择 **导入** ,然后选择 **DXF 文件** 选项。 | ||
| + | 2. 在 **导入 DXF 文件** 对话框中,使用“浏览”选择要导入的准备好的 DXF 文件。 | ||
| + | 3. 在“放置 DXF 原点(0, | ||
| + | 4. 在“层”选择中,选择导入的板层。 电路板边框需要 * Edge.Cuts * 。 | ||
| + | 5. 单击“确定”。 | ||
| + | |||
| + | 使用“OpenGL”或“Cairo”画布模式: | ||
| + | |||
| + | 1. 在 **文件** 菜单中,选择 **导入** ,然后选择 **DXF 文件** 选项。 | ||
| + | 2. 在 **导入 DXF 文件** 对话框中,使用“浏览”选择要导入的准备好的 DXF 文件。 | ||
| + | 3. 在此模式下,将忽略‘放置 DXF 原点(0, | ||
| + | 4. 在“层”选择中,选择导入的板层。 电路板边框需要 * Edge.Cuts * 。 | ||
| + | 5. 单击“确定”。 | ||
| + | 6. 现在,形状已附加到光标上,可以在电路板区域周围移动。 | ||
| + | 7. 单击以“放下”板上的形状。 | ||
| + | |||
| + | ##### 示例导入 DXF 形状 | ||
| + | |||
| + | 下面是一个 DXF 导入示例,其中一个板具有几个由多个短线段近似的椭圆段: | ||
| + | |||
| + | 不正确,请使用“选择”按钮浏览到所需的网表。 然后‘读’网表。 任何尚未加载的足迹都会出现,叠加在一起(我们将在下面看到如何自动移动它们)。 | ||
| + | |||
| + | 。 以下是这种自动安排的结果: | ||
| + | |||
| + | 。 | ||
| + | |||
| + | #### 已删除的元件 | ||
| + | |||
| + | Pcbnew 可以删除与已从原理图中删除的元件相对应的封装。 这是可选的。 | ||
| + | |||
| + | 这是必要的,因为通常会在 PCB 中添加封装(例如,用于固定螺钉的孔),这些封装从未出现在原理图中。 | ||
| + | |||
| + | ,但已放置封装,则 Pcbnew 不会修改封装,除非检查网表对话框的“更改封装”框的相应选项: | ||
| + | |||
| + | 可以通过编辑封装直接实现。 | ||
| + | |||
| + | #### 高级选项 - 使用时间戳选择 | ||
| + | |||
| + | 有时原理图的符号会发生变化,电路中没有任何重大变化(这会涉及参考文献 - 如 R5,U4 ……)。因此 PCB 保持不变(除了可能用于丝网印刷标记)。 然而,在内部,元件和封装由它们的参考表示。 在这种情况下,可以在重新读取网表之前选择网表对话框的“时间戳”选项: | ||
| + | |||
| + | 。 | ||
| + | |||
| + | | | 使用此选项时应特别小心(首先保存文件!)。 这是因为在包含多个部件的元件的情况下该技术是复杂的(例如,7400 具有4个部件和一个壳体)。 在这种情况下,时间戳不是唯一定义的(对于 7400,最多可以有四个 - 每个部分一个)。 然而,时间戳选项通常可以解决重新注释问题。 | | ||
| + | | ---- | ------------------------------------------------------------ | | ||
| + | | | | | ||
| + | |||
| + | ### 直接改变已经放置在板上的封装 | ||
| + | |||
| + | 将封装(或一些相同的封装)更改为另一个封装是非常有用的,并且非常简单: | ||
| + | |||
| + | 1. 单击封装以打开“编辑”对话框。 | ||
| + | 2. 激活更改封装。 | ||
| + | |||
| + | 。 | ||
| + | - **更改当前所有封装的具有相同值** 的封装 封装,仅限于具有相同价值的元件。 | ||
| + | - **更新电路板** 的所有封装,以便重新载入板上所有封装。 | ||
| + | |||
| + | ## 封装放置 | ||
| + | |||
| + | ### 协助安置 | ||
| + | |||
| + | 在移动封装的飞线同时,可以显示封装(网络连接)以帮助放置。 要启用此功能,必须激活左侧工具栏的图标 中止。 | ||
| + | |||
| + | 在这里,您可以看到移动过程中封装的飞线显示: | ||
| + | |||
| + | 打开和关闭此属性。 | ||
| + | |||
| + | 如上一章所述,在读取网表期间加载的新封装似乎堆积在板上的单个位置。 Pcbnew 允许自动分配封装,使手动选择和放置更容易。 | ||
| + | |||
| + | - 选择上方工具栏上的“封装模式”选项(图标 。 | ||
| + | |||
| + | 它还寻求封装的最佳方向(0度,90度,-90度,180度)。 放置是根据优化算法进行的,该算法寻求最小化 飞线的长度,并且寻求在具有许多焊盘的较大封装之间创建空间。 优化放置顺序,以便最初将这些较大的封装放置在许多焊盘上。 | ||
| + | |||
| + | #### 准备 | ||
| + | |||
| + | 因此,Pcbnew 可以自动放置封装,但是有必要指导这种放置,因为没有软件可以猜出用户想要实现的目标。 | ||
| + | |||
| + | 在进行自动放置之前,必须: | ||
| + | |||
| + | - 创建电路板的边框(它可能很复杂,但如果表格不是矩形,则必须关闭)。 | ||
| + | - 手动放置其位置的元件(连接器,夹孔等)。 | ||
| + | - 同样,某些 SMD 封装和关键元件(例如大尺寸)必须位于电路板上的特定侧面或位置,这必须手动完成。 | ||
| + | - 完成任何手动放置后,这些封装必须“固定”以防止它们被移动。 选择封装模式图标 。 | ||
| + | |||
| + | 通常,电阻器和非极化电容器被授权旋转 180度。 一些封装(例如小晶体管)可以被授权旋转 +/- 90度和180度。 | ||
| + | |||
| + | 对于每个封装,一个滑块授权90度旋转,第二个滑块授权180度旋转。 设置为0可防止旋转,设置为10可对其进行授权,中间值表示优先/ | ||
| + | |||
| + | 一旦将封装放置在板上,就可以通过编辑封装来完成轮换授权。 但是,最好将所需选项设置为库中的封装,因为这些设置将在每次使用封装时继承。 | ||
| + | |||
| + | #### 互动式自动放置 | ||
| + | |||
| + | 在自动放置期间可能需要停止(按 Esc 键)并手动重新定位放置。 使用命令自动放置下一个封装将从停止的位置重新启动自动放置。 | ||
| + | |||
| + | 命令自动放置新的封装允许自动放置尚未放置在 PCB 边框内的封装。 即使它们没有“固定”,它也不会移动 PCB 边框内的那些。 | ||
| + | |||
| + | 命令自动放置封装使得可以在鼠标指向的放置上执行自动放置,即使其“固定”属性处于活动状态。 | ||
| + | |||
| + | #### 附加说明 | ||
| + | |||
| + | Pcbnew 通过尊重板边框的形状自动确定封装的可能放置区域,板形状边框不一定是矩形(可以是圆形,或者有切口等)。 | ||
| + | |||
| + | 如果电路板不是矩形,则必须关闭边框,以便 Pcbnew 可以确定边框内部和外部的内容。 同样,如果有内部切口,则必须关闭它们的边框。 | ||
| + | |||
| + | Pcbnew 使用板的边框计算封装的可能放置区域,然后依次将每个封装传递到该区域,以确定放置它的最佳位置。 | ||
| + | |||
| + | ## 设置布线参数 | ||
| + | |||
| + | ### 当前设置 | ||
| + | |||
| + | #### 访问主对话框 | ||
| + | |||
| + | 可从以下下拉菜单访问最重要的参数: | ||
| + | |||
| + | 之间的间隙。 | ||
| + | - 布线时,Pcbnew 会自动选择与要创建或编辑的布线网络对应的网络类,从而选择布线参数。 | ||
| + | |||
| + | #### 设置布线参数 | ||
| + | |||
| + | 可在菜单中进行选择:设计规则 → 设计规则。 | ||
| + | |||
| + | #### 网类编辑器 | ||
| + | |||
| + | 网类编辑器允许您: | ||
| + | |||
| + | - 添加或删除网类。 | ||
| + | - 设置布线参数值:间隙,布线宽度,通孔尺寸。 | ||
| + | - 在网中组网类。 | ||
| + | |||
| + | 。 | ||
| + | - 盲孔或埋孔。 | ||
| + | - 微过孔,与埋入的通孔一样,但仅限于与其最近邻居的外部层。 它们用于将 BGA 引脚连接到最近的内层。 它们的直径通常非常小,并且通过激光钻孔。 | ||
| + | |||
| + | 默认情况下,所有过孔都具有相同的钻孔值。 | ||
| + | |||
| + | 此对话框指定过孔参数的最小可接受值。 在电路板上,小于此处指定的通道会产生 DRC 错误。 | ||
| + | |||
| + | #### 布线参数 | ||
| + | |||
| + | 指定可接受的最小布线宽度。 在电路板上,小于此处指定的磁道宽度会产生 DRC 错误。 | ||
| + | |||
| + | #### 具体尺寸 | ||
| + | |||
| + |  | ||
| + | |||
| + | | 单位 | CLASS 1 | CLASS 2 | CLASS 3 | CLASS 4 | CLASS 5 | | ||
| + | | ---- | ------- | ------- | ------- | ------- | ------- | | ||
| + | | mm | 0.7 | 0.5 | 0.35 | 0.23 | 0.15 | | ||
| + | | mils | 27 | 20 | 14 | 9 | 6 | | ||
| + | |||
| + | 通常,最小间隙与最小布线宽度非常相似。 | ||
| + | |||
| + | ### 例子 | ||
| + | |||
| + | #### 粗制 | ||
| + | |||
| + | - 间隙:0.35 mm(0.0138 inches)。 | ||
| + | - 布线宽度:0.8 mm(0.0315 inches)。 | ||
| + | - IC 和过孔的焊盘直径:1.91 mm(0.0750 inches)。 | ||
| + | - 直插元件的焊盘直径:2.54 mm(0.1 inches)。 | ||
| + | - 地(GND)布线宽度:2.54 mm(0.1 inches)。 | ||
| + | |||
| + | 。 | ||
| + | - 布线宽度:0.5 mm(0.0127 inches)。 | ||
| + | - IC 的焊盘直径:使它们伸长,以便允许布线在 IC 焊盘之间通过,并使焊盘提供足够的粘合表面(1.27 x 2.54 mm - > 0.05 x 0.1 inches)。 | ||
| + | - 过孔:1.27 mm(0.0500 inches)。 | ||
| + | |||
| + | 绘制布线。 布线锁定在角节点中时单击。 | ||
| + | |||
| + | 首先绘制布线的方向(例如,首先,然后是对角线,或者首先是对角线,然后是右侧)称为“布线样式”,可以使用热键“/ | ||
| + | |||
| + | 大小,最好的方法是为必须编辑的网络使用特定的网类(请参阅全局更改)。 | ||
| + | |||
| + | ### 编辑和更改布线 | ||
| + | |||
| + | #### 更改布线 | ||
| + | |||
| + | 在许多情况下,需要重新绘制布线。 | ||
| + | |||
| + | 新布线(正在进行中): | ||
| + | |||
| + | 或再次按 **X** 键将鼠标悬停在该项目上。 新曲目将使用起始项的网络。 在空 PCB 空间上单击或按 **X** 可启动未分配网络的布线。 | ||
| + | |||
| + | 移动鼠标以定义布线的形状。 布线将尝试跟踪鼠标轨迹,拥抱不可移动的障碍物(例如焊盘)和推迟碰撞轨迹/ | ||
| + | |||
| + | 单击同一网络中的焊盘/ | ||
| + | |||
| + | 要停止布线并撤消所有更改(推送项目等),只需按 **Esc** 即可。 | ||
| + | |||
| + | 按下 **V** 或从上下文菜单中选择 *放置通孔* ,同时布线会在路径的末尾附加一个过孔。 按 **V** 再次禁用通过放置。 单击任何位置可建立通道并继续布线(除非保持“Shift”)。 | ||
| + | |||
| + | 按 **/** 或从上下文菜单中选择 *切换布线样式* 可切换直线或对角线之间的初始布线线段的方向。 | ||
| + | |||
| + | | | 默认情况下,布线器捕捉到项目的中心/ | ||
| + | | ---- | ------------------------------------------------------------ | | ||
| + | | | | | ||
| + | |||
| + | ### 设置布线宽度和通孔尺寸 | ||
| + | |||
| + | 有多种方法可以预先选择布线宽度/ | ||
| + | |||
| + | - 使用标准的 KiCad 快捷方式。 | ||
| + | - 按 **W** 或从上下文菜单中选择 *自定义布线宽度* 以键入自定义布线宽度/ | ||
| + | - 从上下文菜单的 *选择布线宽度* 子菜单中选择预定义的宽度。 | ||
| + | - *使用初始布线宽度* 菜单中的 *选择初始布线宽度* 来从起始项目(或已连接到它的布线)中选择宽度。 | ||
| + | |||
| + | ### 拖动 | ||
| + | |||
| + | 路由器可以拖动布线段,角落和过孔。 要拖动项目,请按住 **Ctrl** 键单击它,将鼠标悬停在鼠标上并按 **G** 或从上下文菜单中选择 *拖动布线/ | ||
| + | |||
| + | ### 选项 | ||
| + | |||
| + | 在布线模式下,可以通过按 *E* 或从上下文菜单中选择 *布线选项* 来配置布线行为。 它会打开一个如下所示的窗口: | ||
| + | |||
| + | 选项是: | ||
| + | |||
| + | 后面碰撞痕迹而不是 “反映”了碰撞 | ||
| + | - **删除冗余布线** - 在布线时删除循环(例如,如果 新布线确保与现有布线相同的连接性 布线被删除)。 循环删除在本地工作(仅在开始之间 并结束当前布线的跟踪)。 | ||
| + | - **自动缩减** - 启用后,布线会尝试穿过 焊盘/ | ||
| + | - **平滑拖动的段** - 启用后,路由器会尝试合并 几个锯齿状的段成一个直的(拖动模式)。 | ||
| + | - **允许 DRC 违规**(仅限 *高亮碰撞* 模式) - 允许 即使违反 DRC 规则也要建立一条布线。 | ||
| + | - **优化工作量** - 定义布线应花费多少时间 优化布线/ | ||
| + | |||
| + | ## 创建铜区 | ||
| + | |||
| + | 铜区域由边框(闭合多边形)定义,并且可以包括孔(边框内的闭合多边形)。 可以在铜层上或在技术层上绘制区域。 | ||
| + | |||
| + | ### 在铜层上创建区域 | ||
| + | |||
| + | DRC 引擎检查填充铜区域的焊盘(和布线)连接。 必须填充(不仅仅是创建)区域以连接焊盘。 Pcbnew 目前使用布线段或多边形来填充铜区域。 | ||
| + | |||
| + | 每个选项都有其优点和缺点,主要缺点是在较慢的机器上增加了屏幕重绘时间。 然而,最终结果是一样的。 | ||
| + | |||
| + | 出于计算时间原因,每次更改后都不会重新创建区域填充,但仅限于: | ||
| + | |||
| + | - 如果执行填充区命令。 | ||
| + | - 执行 DRC 测试时。 | ||
| + | |||
| + | 在更换布线或焊盘后,必须填充或重新填充铜区域。 铜区(通常是地面和电力层)通常连接到网上。 | ||
| + | |||
| + | 要创建铜区,您应该: | ||
| + | |||
| + | - 选择参数(网名,图层……)。 打开图层并突出显示此网不是强制性的,但这是一种很好的做法。 | ||
| + | - 创建区域限制(如果不是,则将填充整个板)。 | ||
| + | - 填充区域。 | ||
| + | |||
| + | Pcbnew 尝试将所有区域填充为一块,通常,没有未连接的铜块。 可能会发生一些地区仍未填补的情况。 没有网的区域没有清洁,可以有隔热区域。 | ||
| + | |||
| + | ### 创建区域 | ||
| + | |||
| + | #### 创建区域的限制 | ||
| + | |||
| + | 使用工具 : | ||
| + | |||
| + | 绘制焊盘。 | ||
| + | - 热释放参数。 | ||
| + | |||
| + | #### 填充模式 | ||
| + | |||
| + | 可以使用多边形或线段填充区域。 结果是一样的。 如果您遇到多边形模式(慢速刷新屏幕)问题,则应使用分段。 | ||
| + | |||
| + | #### 间隙和最小铜厚度 | ||
| + | |||
| + | 清除的一个很好的选择是网格比路由网格稍大。 最小铜厚度值确保铜区域不会太小。 | ||
| + | |||
| + | | | 如果该值太大,则无法绘制出类似热浮雕中的热形状的小形状。 | | ||
| + | | ---- | -------------------------------------------------------- | | ||
| + | | | | | ||
| + | |||
| + | #### 焊盘选项 | ||
| + | |||
| + | 网的焊盘可以包括在区域中或从区域中排除,或者通过热释放连接。 | ||
| + | |||
| + | - 如果包括在内,由于大铜区域的高热质量,焊接和非焊接可能非常困难。 | ||
| + | |||
| + | 。 | ||
| + | |||
| + | ### 在区域内添加剪切区域 | ||
| + | |||
| + | 区域必须已存在。 要添加剪切区域(区域内的非填充区域): | ||
| + | |||
| + | - 右键单击现有边缘边框。 | ||
| + | - 选择添加剪切区域。 | ||
| + | |||
| + | : | ||
| + | |||
| + | ,方法是在每个图层上放置适当的文本。 | ||
| + | - 铜层上的所有文本(有时称为“焊料”或“底部”)必须进行镜像。 | ||
| + | - 创建任何地平面,根据需要修改布线以确保它们是连续的。 | ||
| + | - 放置对齐十字准线和可能的板边框尺寸(这些通常放置在一个通用层上)。 | ||
| + | |||
| + | 下面是一个示例,显示除了地平面之外的所有这些元素,为了更好的可见性而省略了这些元素: | ||
| + | |||
| + | ,单位为英寸, 和1的比例。 | ||
| + | |||
| + | 通常需要为所有铜层创建文件,并根据电路为丝印层,阻焊层和焊膏层创建文件。 通过选择相应的复选框,可以一步生成所有这些文件。 | ||
| + | |||
| + | 例如,对于带有丝印层,阻焊层和焊膏层(用于 SMD 元件)的双面电路,应生成8个文件(“xxxx”表示 .brd 文件的名称)。 | ||
| + | |||
| + | - 元件侧层的 xxxx-F_Cu.gbr。 | ||
| + | - 铜侧层为 xxxx-B_Cu.gbr。 | ||
| + | - 元件侧丝印层标记为 xxxx-F_SilkS.gbr。 | ||
| + | - 铜侧丝印层标记为 xxxx-B_SilkS.gbr。 | ||
| + | - 元件侧焊膏层为 xxxx-F_Paste.gbr。 | ||
| + | - 铜侧焊膏层为 xxxx-B_Paste.gbr。 | ||
| + | - 元件侧阻焊层为 xxxx-F_Mask.gbr。 | ||
| + | - 铜侧阻焊层为 xxxx-B_Mask.gbr。 | ||
| + | |||
| + | GERBER 文件格式: | ||
| + | |||
| + | Pcbnew 使用的格式是 RS274X 格式 4.6,英制,前导零省略,Abs 格式。 这些是非常常见的设置。 | ||
| + | |||
| + | #### POSTSCRIPT 格式 | ||
| + | |||
| + | 在 postscript 输出的情况下,输出文件的标准扩展名是 .ps。 对于 HPGL 输出,跟踪可以是用户选择的比例,并且可以进行镜像。 如果 原点 = 中心 选项处于活动状态,则假定跟踪表坐标的原点位于图形的中心。 | ||
| + | |||
| + | 如果“打印纸张参考”选项处于活动状态,则会跟踪纸张盒。 | ||
| + | |||
| + | #### 绘图选项 | ||
| + | |||
| + | Gerber 格式: | ||
| + | |||
| + | 的焊盘选项。 | ||
| + | |||
| + | 如果“打印纸张参考”选项处于活动状态,则会跟踪纸张盒。 | ||
| + | |||
| + | ### 阻焊层和焊膏层的全局间隙设置 | ||
| + | |||
| + | 可以为阻焊层和焊膏层全局设置掩模间隙值。 这些间隙可以设置为以下级别。 | ||
| + | |||
| + | - 在焊盘级。 | ||
| + | - 在封装级。 | ||
| + | - 在全局内。 | ||
| + | |||
| + | 并且 Pcbnew 按优先级顺序使用。 | ||
| + | |||
| + | - 焊盘值。 如果为空: | ||
| + | - 封装值。 如果为空: | ||
| + | - 全局值。 | ||
| + | |||
| + | #### 访问 | ||
| + | |||
| + | 可以通过过孔“尺寸”菜单访问此菜单选项: | ||
| + | |||
| + | 进行设置。 | ||
| + | |||
| + | ### 生成布线文档 | ||
| + | |||
| + | 要生成布线文档文件,可以跟踪组件和铜丝印层。 通常,仅元件侧丝印标记足以连接 PCB。 如果使用铜端丝印,则应对其包含的文本进行镜像以便可读。 | ||
| + | |||
| + | ### 生成用于自动元件插入的文件 | ||
| + | |||
| + | 可以通过 后处理/ | ||
| + | |||
| + | ### 高级布线选项 | ||
| + | |||
| + | 下面描述的选项(文件/ | ||
| + | |||
| + | 或全局覆盖焊盘的所有焊盘。 | ||
| + | - 编辑图形元素(线条,文本)。 | ||
| + | - 编辑信息字段(值,参考等)。 | ||
| + | - 编辑相关文档(描述,关键字)。 | ||
| + | |||
| + | 封装编辑器允许维护活动库以及: | ||
| + | |||
| + | - 在活动库中列出封装。 | ||
| + | - 从活动库中删除封装。 | ||
| + | - 将封装保存到活动库。 | ||
| + | - 保存印刷电路所包含的所有封装。 | ||
| + | |||
| + | 也可以创建新库。 | ||
| + | |||
| + | 库扩展名是‘.mod’。 | ||
| + | |||
| + | ### 访问封装编辑器 | ||
| + | |||
| + | 可以通过两种不同的方式访问封装编辑器: | ||
| + | |||
| + | - 直接通过 Pcbnew 主工具栏中的图标 ,有按钮封装编辑器。 | ||
| + | |||
| + | 的操作:源,如下所示:创建 A4 格式的电路板,以便能够轻松地进行打印( scale = 1)。 | ||
| + | |||
| + | 创建库将包含在此电路板上的封装。 将使用文件/ | ||
| + | |||
| + | 制作不同的库通常是个好主意,因为 Pcbnew 能够在加载封装时搜索许多库。 | ||
| + | |||
| + | 以下是此类库源的示例: | ||
| + | |||
| + | 。 官方库的 URL 是: https:// | ||
| + | |||
| + | 有关封装库表和管理器和向导的更多详细信息,请参阅 CvPcb 参考手册的 *Footprint Library Tables* 部分。 | ||
| + | |||
| + | ### 3D形状库管理 | ||
| + | |||
| + | 3D 形状库可以通过 3D 形状库向导下载。 它可以从菜单 首选项 - > 3D 形状库下载程序 中调用。 | ||
| + | |||
| + | ## 封装编辑器 - 创建和编辑封装 | ||
| + | |||
| + | ### 封装编辑器概述 | ||
| + | |||
| + | 封装编辑器用于编辑和创建 PCB 封装。 这包括: | ||
| + | |||
| + | - 添加和删除焊盘。 | ||
| + | - 封装编辑器用于编辑和更改焊盘属性(形状,层),用于单个焊盘或封装中的所有焊盘。这包括创建 PCB 封装。 | ||
| + | - 添加和编辑图形元素(边框,文本)。 | ||
| + | - 编辑字段(值,参考等)。 | ||
| + | - 编辑相关文档(描述,关键字)。 | ||
| + | |||
| + | ### 封装元素 | ||
| + | |||
| + | 封装是要插入 PCB 中的元件的物理表示(封装),并且必须链接到原理图中的相关元件。 每个封装包括三个不同的元素: | ||
| + | |||
| + | - 焊盘。 | ||
| + | - 图形边框和文本。 | ||
| + | - 字段。 | ||
| + | |||
| + | 此外,如果将使用自动放置功能,则必须正确定义许多其他参数。 这同样适用于生成自动插入文件。 | ||
| + | |||
| + | #### 焊盘 | ||
| + | |||
| + | 两个焊盘属性很重要: | ||
| + | |||
| + | - 几何形状(形状,层,钻孔)。 | ||
| + | - 焊盘编号,由最多四个字母数字字符组成。 因此,以下都是有效的垫号:1, | ||
| + | |||
| + | #### 边框 | ||
| + | |||
| + | 图形边框用于绘制封装的物理形状。 有几种不同类型的边框可供选择:直线,圆,圆弧和文本。 边框没有电学意义,它们只是图形辅助工具。 | ||
| + | |||
| + | #### 字段 | ||
| + | |||
| + | 这些是与封装相关联的文本元素。 两个是强制性的并且始终存在:参考字段和值字段。 在将封装加载到您的电路板期间读取网表时,Pcbnew 会自动读取和更新这些内容。 参考值由适当的原理图参考(U1,IC3 等)代替。 该值将替换为原理图中相应部件的值(47K,74LS02 等)。 可以添加其他字段,这些字段的行为类似于图形文本。 | ||
| + | |||
| + | ### 启动封装编辑器并选择要编辑的封装 | ||
| + | |||
| + | 封装编辑器可以通过两种方式启动: | ||
| + | |||
| + | - 直接通过图片:Pcbnew 主工具栏中的  | ||
| + | |||
| + | 此工具栏包含以下工具: | ||
| + | |||
| + | - 放置焊盘。 | ||
| + | - 添加图形元素(边框,文本)。 | ||
| + | - 定位锚点。 | ||
| + | - 删除元素。 | ||
| + | |||
| + | 具体功能如下: | ||
| + | |||
| + | |  | ||
| + | |||
| + | 这些工具管理封装编辑器中的显示选项: | ||
| + | |||
| + | | 代替。 | ||
| + | |||
| + | 新的封装将需要: | ||
| + | |||
| + | - 边框(可能还有图形文字)。 | ||
| + | - 焊盘。 | ||
| + | - 一个值(隐藏文本在使用时由真值替换)。 | ||
| + | |||
| + | 替代方法: | ||
| + | |||
| + | 当新的封装类似于库或电路板中的现有封装时,创建新封装的另一种更快的方法如下: | ||
| + | |||
| + | - 加载类似的封装(。 | ||
| + | - 编辑并保存新的封装。 | ||
| + | |||
| + | ### 添加和编辑焊盘 | ||
| + | |||
| + | 创建封装后,可以添加,删除或修改焊盘。 焊盘的修改可以是局部的,仅影响光标下的焊盘或全局,影响封装的所有焊盘。 | ||
| + | |||
| + | #### 添加焊盘 | ||
| + | |||
| + | 从右侧工具栏中选择图像:的管理对于电路制造和文档记录同样重要。 | ||
| + | |||
| + | 焊盘类型选择器触发通常足够的图层自动选择。 | ||
| + | |||
| + | ##### 矩形焊盘 | ||
| + | |||
| + | 对于 VQFP/PQFP 类型的 SMD 封装,其四边都有矩形焊盘(水平和垂直),建议仅使用一种形状(例如,水平矩形)并将其放置在不同的方向(水平为 0 和 90 度垂直)。 然后可以在单个操作中完成焊盘的全局尺寸调整。 | ||
| + | |||
| + | ##### 旋转焊盘 | ||
| + | |||
| + | 微波封装中使用的梯形焊盘只需要 -90 或 -180 的旋转。 | ||
| + | |||
| + | ##### 无镀通孔焊盘 | ||
| + | |||
| + | 焊盘可以定义为非镀通孔焊盘(NPTH 焊盘)。 | ||
| + | |||
| + | 这些焊盘必须在一个或所有铜层上定义(显然,所有铜层上都有孔)。 | ||
| + | |||
| + | 此要求允许您定义特定的间隙参数(例如螺钉的间隙)。 | ||
| + | |||
| + | 当焊盘通孔尺寸与焊盘尺寸相同时,对于圆形或椭圆形焊盘,此焊盘不会在 GERBER 文件中的铜层上绘制。 | ||
| + | |||
| + | 这些焊盘用于机械目的,因此不允许使用焊盘名称或网名。 无法连接到网络。 | ||
| + | |||
| + | ##### 偏移参数 | ||
| + | |||
| + | 焊盘3 的偏移 Y = 15 mils: | ||
| + | |||
| + |  参数(梯形焊盘) | ||
| + | |||
| + | 焊盘1的参数 Delta(希腊字母:得尔塔) X = 10 mils | ||
| + | |||
| + | 。 您可以通过双击该字段或封装属性对话框从弹出菜单访问该对话框: | ||
| + | |||
| + | 。 | ||
| + | |||
| + | 通常允许旋转 +/- 90 或 180度。 默认情况下,新的封装将其旋转权限设置为零。 这可以根据以下规则进行调整: | ||
| + | |||
| + | 值 0 表示无法旋转,10 表示完全旋转,任何中间值表示旋转受限。 例如,电阻器可能具有 10度 旋转 180度(不受限制)的许可,以及 5度 允许旋转 +/- 90度(允许但不鼓励)。 | ||
| + | |||
| + | ### 属性 | ||
| + | |||
| + | 属性窗口如下: | ||
| + | |||
| + | 。 此属性对表面贴装元件(SMD)最有用。 | ||
| + | - 虚拟表示元件由电路板直接形成。 例子是由特定布线形状(有时在微波封装中看到)创建的边缘连接器或电感器。 | ||
| + | |||
| + | ### 库封装的文档 | ||
| + | |||
| + | 强烈建议记录新创建的封装,以便于快速准确地检索。 谁能够回忆起 TO92 封装的多种引脚变体? | ||
| + | |||
| + | “封装属性”对话框提供了一种简单而强大的文档生成方法。 | ||
| + | |||
| + | 。 | ||
| + | - 多个关键字。 | ||
| + | |||
| + | 注释行与 CvPcb 中的元件列表和 Pcbnew 中的封装选择菜单一起显示。 关键字可用于限制搜索具有给定关键字的那些部分。 | ||
| + | |||
| + | 因此,在使用加载封装命令(Pcbnew 右侧工具栏中的图标)时,可以在对话框中键入文本“= TO220”,让 Pcbnew 显示拥有关键字“TO220”的封装列表 | ||
| + | |||
| + | ### 三维可视化 | ||
| + | |||
| + | 封装可以与包含元件的三维表示的文件相关联。 要将封装与模型文件相关联,请选择 *3D 设置* 选项卡,如下所示。 | ||
| + | |||
| + | 非常有用。 由于模型可能由任意数量的 VRML/X3D 编辑器或导出器生成,并且 VRML 不强制模型的长度单位,因此用户可以输入适当的比例值以确保模型在 3D 查看器中显示。 一些用户使用简单的 VRML 框作为元件的通用模型并选择比例值,以便框具有表示组件的正确大小。 对于机械 CAD(MCAD)模型,比例值应保持为1。 MCAD 格式始终指定单位长度,任何使用 MCAD 数据格式的导出器都将忽略缩放值。 但是 3D 查看器将始终应用比例值; | ||
| + | |||
| + | 通常需要偏移和旋转值以使 3D 模型与封装对齐。 由于 3D 建模软件的差异以及用户构建模型的方式不同,在绝大多数情况下,用户必须输入偏移和旋转值才能实现 3D 模型的所需定位。 旋转值以度为单位,并以 ZYX 的顺序连续应用; | ||
| + | |||
| + | KiCad 通过插件系统支持 3D 模型格式,并为视觉模型格式 VRML1,VRML2 和 X3D 以及 MCAD 格式 IDF 提供支持。 MCAD 格式 IGES 和 STEP 通过 OCE 插件支持,该插件需要合适版本的 OpenCascade 或 OpenCascade Community Edition(OCE)软件。 | ||
| + | |||
| + | #### 3D 模型路径 | ||
| + | |||
| + | 在过去,KiCad 使用固定路径到 3D 模型目录,后来依靠 *KISYS3DMOD* 环境变量来指定模型目录的位置。 可以使用其他环境变量指定模型的其他基目录。 当前版本的 KiCad 具有专门的 *别名* 系统,用于处理 3D 模型名称。 新文件名管理系统(文件名解析系统)的目的是提供一种与早期版本的 KiCad 兼容的方案,同时提供更灵活的机制来指定 3D 模型文件名并提高共享项目文件的能力。 | ||
| + | |||
| + | 由于需要支持先前的方案,同时提供用于查找 3D 模型的灵活的新方案,因此有两种不同的方法来指定 3D 模型的基本搜索路径。 | ||
| + | |||
| + | 为了保持 *kicad_pcb* 和 *pretty* 数据文件的易读性,KiCad 更喜欢使用通过使用环境变量(旧方法)或别名(新方法)缩短的文件名。由于设置环境变量可能很麻烦,尤其是在基于 GUI 的操作系统上,因此扩展了支持模型搜索路径的环境变量方案,以利用 KiCad 现有的内部定义的 *路径配置* 对话框。该对话框可通过 *首选项 → 配置路径* 菜单获得,如下所示。在此对话框中设置其他路径将扩展用于查找 3D 模型文件的搜索路径。该对话框实际上并没有设置环境变量,但文件名解析系统就像它一样; | ||
| + | |||
| + | 由图像激活:,则将覆盖该封装。 因为能够对库的封装有信心非常重要,所以在保存之前,有必要仔细检查错误的封装。 | ||
| + | |||
| + | 在保存之前,还建议将封装的引用或值更改为等于封装的库名称。 | ||
| + | |||
| + | ### 保存封装到电路板 | ||
| + | |||
| + | 如果编辑的封装来自当前板,则按钮图像:更轻松地手动布局元件。 | ||
| + | |||
| + | 通过使用热键(默认为 Ctrl-D)或上下文菜单中的重复项选项,完成复制图标图像: | ||
| + | |||
| + | ### 精确移动项目 | ||
| + | |||
| + | “移动精确”工具允许您将项目(或项目组)移动一定量,可以以笛卡尔或极坐标格式输入,并且可以在任何支持的单位中输入。 当切换到不同的网格或者根据任何现有网格没有间隔特征时,这将是有用的。 | ||
| + | |||
| + | 要使用此工具,请选择要移动的项目,然后使用热键(默认为 Ctrl-M )或上下文菜单项来调用对话框。 您还可以在移动或复制项目时使用热键调用对话框,这样可以轻松地将偏移重复应用于多个元件。 | ||
| + | |||
| + | 使用笛卡尔移动矢量条目精确移动 | ||
| + | |||
| + | ,也可以自己指定单位(例如,“1 in” 表示一英寸,“2 rad” 表示2弧度)。 | ||
| + | |||
| + | 按“确定”将转换应用于选择,取消将关闭对话框,不会移动项目。 如果按下确定,则下次打开对话框时将保存并预填充移动矢量,这允许将相同的矢量重复应用于多个对象。 | ||
| + | |||
| + | ### 阵列工具 | ||
| + | |||
| + | Pcbnew 和封装编辑器都有助于创建特征和元件阵列,可用于在 PCB 和封装上轻松准确地布置重复元素。 | ||
| + | |||
| + | #### 激活阵列工具 | ||
| + | |||
| + | 阵列工具作用于光标下的元件,或者在 GAL 模式下作用于选择。 可以通过上下文菜单,图标image:: | ||
| + | |||
| + | 阵列工具显示为对话框窗口,其中包含数组类型的窗格。 到目前为止,支持两种类型的数组:网格和圆形。 | ||
| + | |||
| + | 可以在各个窗格上完全指定每种类型的阵列。 几何选项(如何布置网格)在左侧; | ||
| + | |||
| + | #### 网格阵列 | ||
| + | |||
| + | 网格阵列是根据二维方格网格放置元件的阵列。 这种阵列也可以通过仅布置单个行或列来生成线性阵列。 | ||
| + | |||
| + | 网格阵列的设置对话框如下所示: | ||
| + | |||
| + | 。 行或列是否交替取决于编号方向。 这个 选项对于 DIP 这样的包很有用,其中编号会增加一个 一边倒另一边。 | ||
| + | - **重新开始编号** :如果使用已有数字的项目进行布局, 重置为开始,否则从该项目的编号继续 | ||
| + | - **编号方案** | ||
| + | - **连续** : 编号只在行/ | ||
| + | - **坐标** : 编号使用双轴方案 number由行和列索引组成。 哪一个是第一位的 (行或列)由编号方向确定。 | ||
| + | - **轴编号** : 用于对轴进行编号的“字母”。 选择是 | ||
| + | - **整数** 对于普通整数索引 | ||
| + | - **十六进制** 用于基数为 16 索引 | ||
| + | - **字母,减去 IOSQXZ** ,电子元件的通用方案, ASME 推荐 Y14.35M-1997 sec. 5.2(以前的 MIL-STD-100 sec. 406.5) 避免与数字混淆。 | ||
| + | - **全字母** 来自A-Z。 | ||
| + | |||
| + | #### 圆形阵列 | ||
| + | |||
| + | 圆形阵列围绕圆形或圆弧布置项目。 圆由定义的位置(或所选组的中心)和指定的中心点定义。 下面是循环阵列配置对话框: | ||
| + | |||
| + |  | ||
| + | - **旋转** :围绕自己的位置旋转每个项目。 否则, 项目将被翻译但不会旋转(例如,方形焊盘 如果未设置此选项,将始终保持直立)。 | ||
| + | |||
| + | ##### 编号选项 | ||
| + | |||
| + | 圆形阵列只有一个维度,比网格更简单。 可用选项的含义与网格相同。 项目顺时针编号 - 对于逆时针阵列,指定负角度。 | ||
| + | |||
| + | ### 测量(标尺)工具 | ||
| + | |||
| + | 测量工具是一个线性标尺,可用于目视检查 PCB 上的尺寸和间距。 | ||
| + | |||
| + | 可以通过卡尺图标图像访问它:右侧工具栏中的 image: : | ||
| + | |||
| + | 激活时,可以在画布上绘制一个临时标尺,该标尺将标有当前单位。 您可以通过按住 Ctrl 键捕捉到45度角。 可以使用常用热键(默认情况下为 Ctrl-U)在不离开工具的情况下更改单位。 | ||
| + | |||
| + | ”:将事件与脚本操作相关联或注册新菜单或工具栏图标。 | ||
| + | - **命令行脚本** :可以从命令行,加载板或库中使用的脚本,修改它们,以及渲染输出或新板。 | ||
| + | |||
| + | 需要注意的是,唯一支持脚本编写的 KiCad 应用程序是 Pcbnew。 未来还计划为 Eeschema。 | ||
| + | |||
| + | ### KiCad 对象 | ||
| + | |||
| + | 脚本 API 反映了 KiCad/ | ||
| + | |||
| + | - 请参阅下面的 板(BOARD) 部分。 | ||
| + | |||
| + | ### 基本 API 参考 | ||
| + | |||
| + | 所有 pcbnew API 都是从 Python 中的“pcbnew”模块提供的。 GetBoard() 方法将在编辑器中返回当前打开的PCB,对于从 pcbnew 或 action 插件中的集成脚本 shell 编写的命令非常有用。 | ||
| + | |||
| + | ### 加载和保存板(Board) | ||
| + | |||
| + | - **LoadBoard(文件名): | ||
| + | - **SaveBoard(文件名,板): | ||
| + | - **board.Save(文件名): | ||
| + | |||
| + | 加载板,隐藏所有值的示例显示所有引用 | ||
| + | |||
| + | ``` | ||
| + | # | ||
| + | import sys | ||
| + | from pcbnew import * | ||
| + | |||
| + | filename=sys.argv[1] | ||
| + | |||
| + | pcb = LoadBoard(filename) | ||
| + | for module in pcb.GetModules(): | ||
| + | print "* Module: %s" | ||
| + | module.Value().SetVisible(False) | ||
| + | module.Reference().SetVisible(True) | ||
| + | |||
| + | pcb.Save(" | ||
| + | ``` | ||
| + | |||
| + | ### 列出和加载库 | ||
| + | |||
| + | 枚举库,枚举模块,枚举焊盘 | ||
| + | |||
| + | ``` | ||
| + | # | ||
| + | |||
| + | from pcbnew import * | ||
| + | |||
| + | libpath = "/ | ||
| + | print ">> | ||
| + | |||
| + | # Load the suitable plugin to read/write the .pretty library | ||
| + | # (containing the .kicad_mod footprint files) | ||
| + | src_type = IO_MGR.GuessPluginTypeFromLibPath( libpath ); | ||
| + | # Rem: we can force the plugin type by using IO_MGR.PluginFind( IO_MGR.KICAD ) | ||
| + | plugin = IO_MGR.PluginFind( src_type ) | ||
| + | |||
| + | # Print plugin type name: (Expecting " | ||
| + | print( " | ||
| + | |||
| + | list_of_footprints = plugin.FootprintEnumerate(libpath) | ||
| + | |||
| + | for name in list_of_footprints: | ||
| + | fp = plugin.FootprintLoad(libpath, | ||
| + | # print the short name of the footprint | ||
| + | print name # this is the name inside the loaded library | ||
| + | # followed by ref field, value field, and decription string: | ||
| + | # Remember ref and value texts are dummy texts, replaced by the schematic values | ||
| + | # when reading a netlist. | ||
| + | print " | ||
| + | |||
| + | # print pad info: GetPos0() is the pad position relative to the footrint position | ||
| + | for pad in fp.Pads(): | ||
| + | print " | ||
| + | " | ||
| + | "shape offset", | ||
| + | print "" | ||
| + | ``` | ||
| + | |||
| + | ### 板(BOARD) | ||
| + | |||
| + | 板(Board)是 KiCad pcbnew 中的基本对象,它是文档。 | ||
| + | |||
| + | 板(BOARD)包含一组可以使用以下方法访问的对象列表,它们将返回可以使用“for obj in list:”迭代的可迭代列表: | ||
| + | |||
| + | - **board.GetModules():** 此方法返回 组件(MODULE) 对象列表,板中可用的所有模块都将在此处公开。 | ||
| + | - **board.GetDrawings():** 返回属于电路板图纸的 板项目(BOARD_ITEMS) 列表 | ||
| + | - **board.GetTracks(): | ||
| + | - **board.GetFullRatsnest(): | ||
| + | - **board.GetNetClasses(): | ||
| + | - **board.GetCurrentNetClassName(): | ||
| + | - **board.GetViasDimensionsList(): | ||
| + | - **board.GetTrackWidthList(): | ||
| + | |||
| + | 板(Board)检查示例 | ||
| + | |||
| + | ``` | ||
| + | # | ||
| + | import sys | ||
| + | from pcbnew import * | ||
| + | |||
| + | filename=sys.argv[1] | ||
| + | |||
| + | pcb = LoadBoard(filename) | ||
| + | |||
| + | ToUnits = ToMM | ||
| + | FromUnits = FromMM | ||
| + | # | ||
| + | # | ||
| + | |||
| + | print " | ||
| + | |||
| + | for item in pcb.GetTracks(): | ||
| + | if type(item) is VIA: | ||
| + | |||
| + | pos = item.GetPosition() | ||
| + | drill = item.GetDrillValue() | ||
| + | width = item.GetWidth() | ||
| + | print " * Via: %s - %f/%f " | ||
| + | |||
| + | elif type(item) is TRACK: | ||
| + | |||
| + | start = item.GetStart() | ||
| + | end = item.GetEnd() | ||
| + | width = item.GetWidth() | ||
| + | |||
| + | print " * Track: %s to %s, width %f" % (ToUnits(start), | ||
| + | |||
| + | else: | ||
| + | print " | ||
| + | |||
| + | print "" | ||
| + | print "LIST DRAWINGS:" | ||
| + | |||
| + | for item in pcb.GetDrawings(): | ||
| + | if type(item) is TEXTE_PCB: | ||
| + | print "* Text: ' | ||
| + | elif type(item) is DRAWSEGMENT: | ||
| + | print "* Drawing: %s" | ||
| + | else: | ||
| + | print type(item) | ||
| + | |||
| + | print "" | ||
| + | print "LIST MODULES:" | ||
| + | |||
| + | for module in pcb.GetModules(): | ||
| + | print "* Module: %s at %s" | ||
| + | |||
| + | print "" | ||
| + | print " | ||
| + | print "track w cnt:", | ||
| + | print "via s cnt:", | ||
| + | |||
| + | print "" | ||
| + | print "LIST ZONES:", | ||
| + | |||
| + | for idx in range(0, pcb.GetAreaCount()): | ||
| + | zone=pcb.GetArea(idx) | ||
| + | print " | ||
| + | |||
| + | print "" | ||
| + | print " | ||
| + | ``` | ||
| + | |||
| + | ### 例子 | ||
| + | |||
| + | #### 更改元件引脚的焊膏层边距 | ||
| + | |||
| + | 我们只想将引脚从1改为14, | ||
| + | |||
| + | ``` | ||
| + | # | ||
| + | import sys | ||
| + | from pcbnew import * | ||
| + | |||
| + | filename=sys.argv[1] | ||
| + | pcb = LoadBoard(filename) | ||
| + | |||
| + | # Find module U304 | ||
| + | u304 = pcb.FindModuleByReference(' | ||
| + | pads = u304.Pads() | ||
| + | |||
| + | # Iterate over pads, printing solder paste margin | ||
| + | for p in pads: | ||
| + | print p.GetPadName(), | ||
| + | id = int(p.GetPadName()) | ||
| + | # Set margin to 0 for all but pad (pin) 15 | ||
| + | if id<15: p.SetLocalSolderPasteMargin(0) | ||
| + | |||
| + | pcb.Save(" | ||
| + | ``` | ||
| + | |||
| + | ### 封装向导 | ||
| + | |||
| + | 封装向导是可以从封装编辑器访问的 Python 脚本的集合。 如果调用封装对话框,则选择一个给定的向导,该向导允许您查看渲染的封装,并且您可以编辑一些参数。 | ||
| + | |||
| + | 如果插件未正确分发到您的系统软件包,您可以在 KiCad 源代码树中的链接中找到最新版本:https:// | ||
| + | |||
| + | 它们应位于例如“C: | ||
| + | |||
| + | 在linux上,您还可以将用户插件保存在“$HOME/ | ||
| + | |||
| + | 构建封装,轻松填写参数。 | ||
| + | |||
| + | ``` | ||
| + | from __future__ import division | ||
| + | import pcbnew | ||
| + | |||
| + | import HelpfulFootprintWizardPlugin as HFPW | ||
| + | |||
| + | |||
| + | class FPC_FootprintWizard(HFPW.HelpfulFootprintWizardPlugin): | ||
| + | |||
| + | def GetName(self): | ||
| + | return "FPC (SMT connector)" | ||
| + | |||
| + | def GetDescription(self): | ||
| + | return "FPC (SMT connector) Footprint Wizard" | ||
| + | |||
| + | def GetValue(self): | ||
| + | pins = self.parameters[" | ||
| + | return " | ||
| + | |||
| + | def GenerateParameterList(self): | ||
| + | self.AddParam( " | ||
| + | self.AddParam( " | ||
| + | self.AddParam( " | ||
| + | self.AddParam( " | ||
| + | self.AddParam( " | ||
| + | self.AddParam( " | ||
| + | self.AddParam( " | ||
| + | self.AddParam( " | ||
| + | |||
| + | |||
| + | # build a rectangular pad | ||
| + | def smdRectPad(self, | ||
| + | pad = pcbnew.D_PAD(module) | ||
| + | pad.SetSize(size) | ||
| + | pad.SetShape(pcbnew.PAD_SHAPE_RECT) | ||
| + | pad.SetAttribute(pcbnew.PAD_ATTRIB_SMD) | ||
| + | pad.SetLayerSet( pad.SMDMask() ) | ||
| + | pad.SetPos0(pos) | ||
| + | pad.SetPosition(pos) | ||
| + | pad.SetPadName(name) | ||
| + | return pad | ||
| + | |||
| + | def CheckParameters(self): | ||
| + | p = self.parameters | ||
| + | self.CheckParamInt( " | ||
| + | |||
| + | |||
| + | def BuildThisFootprint(self): | ||
| + | p = self.parameters | ||
| + | pad_count | ||
| + | pad_width | ||
| + | pad_height | ||
| + | pad_pitch | ||
| + | shl_width | ||
| + | shl_height | ||
| + | shl_to_pad | ||
| + | shl_from_top | ||
| + | |||
| + | offsetX | ||
| + | size_pad = pcbnew.wxSize( pad_width, pad_height ) | ||
| + | size_shld = pcbnew.wxSize(shl_width, | ||
| + | size_text = self.GetTextSize() | ||
| + | |||
| + | # Gives a position and size to ref and value texts: | ||
| + | textposy = pad_height/ | ||
| + | self.draw.Reference( 0, textposy, size_text ) | ||
| + | |||
| + | textposy = textposy + size_text + self.GetTextThickness() | ||
| + | self.draw.Value( 0, textposy, size_text ) | ||
| + | |||
| + | # create a pad array and add it to the module | ||
| + | for n in range ( 0, pad_count ): | ||
| + | xpos = pad_pitch*n - offsetX | ||
| + | pad = self.smdRectPad(self.module, | ||
| + | self.module.Add(pad) | ||
| + | |||
| + | |||
| + | # Mechanical shield pads: left pad and right pad | ||
| + | xpos = -shl_to_pad-offsetX | ||
| + | pad_s0_pos = pcbnew.wxPoint(xpos, | ||
| + | pad_s0 = self.smdRectPad(self.module, | ||
| + | xpos = (pad_count-1) * pad_pitch+shl_to_pad - offsetX | ||
| + | pad_s1_pos = pcbnew.wxPoint(xpos, | ||
| + | pad_s1 = self.smdRectPad(self.module, | ||
| + | |||
| + | self.module.Add(pad_s0) | ||
| + | self.module.Add(pad_s1) | ||
| + | |||
| + | # add footprint outline | ||
| + | linewidth = self.draw.GetLineThickness() | ||
| + | margin = linewidth | ||
| + | |||
| + | # upper line | ||
| + | posy = -pad_height/ | ||
| + | xstart = - pad_pitch*0.5-offsetX | ||
| + | xend = pad_pitch * pad_count + xstart; | ||
| + | self.draw.Line( xstart, posy, xend, posy ) | ||
| + | |||
| + | # lower line | ||
| + | posy = pad_height/ | ||
| + | self.draw.Line(xstart, | ||
| + | |||
| + | # around left mechanical pad (the outline around right pad is mirrored/y axix) | ||
| + | yend = pad_s0_pos.y + shl_height/ | ||
| + | self.draw.Line(xstart, | ||
| + | self.draw.Line(-xstart, | ||
| + | |||
| + | posy = yend | ||
| + | xend = pad_s0_pos.x - (shl_width/ | ||
| + | self.draw.Line(xstart, | ||
| + | |||
| + | # right pad side | ||
| + | self.draw.Line(-xstart, | ||
| + | |||
| + | # set SMD attribute | ||
| + | self.module.SetAttributes(pcbnew.MOD_CMS) | ||
| + | |||
| + | # vertical segment at left of the pad | ||
| + | xstart = xend | ||
| + | yend = posy - (shl_height + linewidth + margin*2) | ||
| + | self.draw.Line(xstart, | ||
| + | |||
| + | # right pad side | ||
| + | self.draw.Line(-xstart, | ||
| + | |||
| + | # horizontal segment above the pad | ||
| + | xstart = xend | ||
| + | xend = - pad_pitch*0.5-offsetX | ||
| + | posy = yend | ||
| + | self.draw.Line(xstart, | ||
| + | |||
| + | # right pad side | ||
| + | self.draw.Line(-xstart, | ||
| + | |||
| + | # vertical segment above the pad | ||
| + | xstart = xend | ||
| + | yend = -pad_height/ | ||
| + | self.draw.Line(xstart, | ||
| + | |||
| + | # right pad side | ||
| + | self.draw.Line(-xstart, | ||
| + | |||
| + | |||
| + | # register into pcbnew | ||
| + | FPC_FootprintWizard().register() | ||
| + | ``` | ||
| + | |||
| + | ### 动作插件 | ||
| + | |||
| + | 动作插件将事件关联到脚本动作。 目前只注册一个新菜单。 | ||
| + | |||
| + | 菜单内有新菜单 **工具** ⇒ **外部插件** 。 | ||
| + | |||
| + |  | ||
| + | - **在 PCB 上添加日期** :示例插件。 | ||
| + | |||
| + | **警告** :与所有其他 python 脚本一样,undo/ | ||
| + | |||
| + | 动作插件示例:向内容为“$date$”的任何文本项添加日期 | ||
| + | |||
| + | ``` | ||
| + | import pcbnew | ||
| + | import re | ||
| + | import datetime | ||
| + | |||
| + | class text_by_date(pcbnew.ActionPlugin): | ||
| + | """ | ||
| + | test_by_date: | ||
| + | Add the date to any text field of the board where the content is ' | ||
| + | How to use: | ||
| + | - Add a text on your board with the content ' | ||
| + | - Call the plugin | ||
| + | - Automaticaly the date will be added to the text (format YYYY-MM-DD) | ||
| + | """ | ||
| + | |||
| + | def defaults(self): | ||
| + | """ | ||
| + | Method defaults must be redefined | ||
| + | self.name should be the menu label to use | ||
| + | self.category should be the category (not yet used) | ||
| + | self.description should be a comprehensive description | ||
| + | of the plugin | ||
| + | """ | ||
| + | self.name = "Add date on PCB" | ||
| + | self.category = " | ||
| + | self.description = " | ||
| + | |||
| + | def Run(self): | ||
| + | pcb = pcbnew.GetBoard() | ||
| + | for draw in pcb.GetDrawings(): | ||
| + | if draw.GetClass() == ' | ||
| + | txt = re.sub(" | ||
| + | " | ||
| + | if txt == " | ||
| + | draw.SetText(" | ||
| + | |||
| + | |||
| + | text_by_date().register() | ||
| + | ``` | ||
| + | </ | ||
