文件
phonerail/kicad/README.md
T

117 行
9.1 KiB
Markdown
原始文件 Blame 文件历史

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# PhoneRail —— KiCad 版本(由 EasyEDA 工程自动转换)
从 EasyEDA Pro 工程「五路手机直供电源板」转换而来。**KiCad 侧为主线**,EasyEDA 工程保留。
转换范围(2026-09-07 商定):**符号库 + 封装库 + 原理图 + 网表**。
EasyEDA PCB 没有搬(铜箔、布线、铺铜都保留原处)。KiCad 两块220×135mm四层PCB已完成R2功能布局,随后新增十颗Hub配置下拉,当前529个电气封装全部入板。下板已完成三批40处局部连接、120段走线,包括十条独立分流器取样线;J1已旋转180°并移至左板边,插口朝外。其余布线和铺铜未完成。规则见 [PCB_LAYOUT_RULES.md](PCB_LAYOUT_RULES.md),最新结果见 [PCB_PROGRESS.md](PCB_PROGRESS.md)。
**2026-09-07 原理图审查更新**:已修正无源引脚类型、裸铜触点 BOM、重复说明及 17 段悬空延伸线。
后续已核对三片 74HC595 控制链、修正引脚类型,并为四个已确认不用的输出加 NC。
现已改为两侧一进一出:J26进风、J27排风,删除J28~J30及旧分压;四线接口、高边默认关电、开漏PWM及两路MOS测速接收器已实现。
**FAN-R2:经本机立创EDA重新选用山洋9G0612P4S001 / C2920592 ×2**,替换Noctua方案;J26/J27改为Phoenix1725672 / C3816889四位螺钉端子,适配风扇裸引线。原厂PDF、曲线及机械图已归档,见[FAN_SELECTION.md](FAN_SELECTION.md)、[FAN_CIRCUIT.md](FAN_CIRCUIT.md)及`fan-assembly-bom.csv`。
用户已决定剩余两项风扇验证首版暂不考虑,现记为延期项。专项检查:固件验证副本505通过/0失败/2延期,原固件502通过/3失败/2延期;三个引脚修复及29个C自检用例已验证,补丁待合入同级固件。严格模式仍保留两项未验证结果,详见[FAN_FIVE_CHECKS.md](FAN_FIVE_CHECKS.md)。P6 ERC为0。0% PWM仍约3300RPM,停转必须关电;两只满速额定合计16.08W。
起板时已修复67个迁移封装的Y轴镜像、USB-C长圆孔方向和裸铜触点焊膏层;814个原始焊盘坐标及3种标准IC引脚手性复核通过。当前两板原理图一致性和几何类DRC均为0项,原生连通引擎统计未连接为807/632;此前499仅是DRC报告列表数量,**尚未达到生产输出阶段**。
最新ERC为下板29/载板196项,其中205项未连接引脚待审。十项电源未驱动只登记为暂时允许继续布线;Hub十个配置复用脚已补100k下拉,十个USB/LED未用端已标NC,原有元件与网络对账通过。完整逐项处理台账见 [ERC_DISPOSITION.md](ERC_DISPOSITION.md)。
随后按用户要求将载板C737改为22µF/10V固态钽KEMET T491A226K010AT / C116575,原理图、极性、PCB封装、BOM及PDF已同步,见 [C737_TANTALUM.md](C737_TANTALUM.md)。
样机目标为总热负荷 40W、装机有效风量 6~8CFM,上下两层同时通风;设计和测试要求见 [THERMAL_TWO_FAN.md](THERMAL_TWO_FAN.md)。
当前结论和复核命令见 [HARDWARE_REVIEW.md](HARDWARE_REVIEW.md),检查脚本为 `scripts/check_hardware.py`。
## 目录
```
kicad/
lib/PhoneRail.kicad_sym 72 个符号(68 元件 + 1 镜像变体 + 4 电源)
lib/PhoneRail.pretty/ 67 个封装
lib/PhoneRail-Fan.pretty/ 3 个风扇电路新增封装
lib/PhoneRail-Mechanical.pretty/ 2 个机械孔封装
lib/PhoneRail-Qualified.pretty/ 厂家资料核对的替换封装,含C737固态钽
PhoneRail-Board1/ 下板:11 页原理图,301 PCB元件(FAN-R2,两风扇另列装配BOM)
PhoneRail-Board2/ 载板:12 页原理图,228 元件(新增10颗Hub配置下拉)
out/ 导出的 PDF
```
两个工程各自带 `sym-lib-table` / `fp-lib-table`,用相对路径 `${KIPRJMOD}/../lib` 指向共享库,
整个 `kicad/` 目录可以整体拷走。
## 迁移验收基线(两风扇改动前)
下表是历史基线。当前下板已按用户决定删除六个元件并改动测速网络,不再与旧 EasyEDA 全量一致;载板不涉及此次电路变更。
| 检查 | Board1 | Board2 |
|---|---|---|
| 元件集合 vs EasyEDA 网表 | ✔ 290/290 | ✔ 218/218 |
| 封装名 | ✔ 全部一致 | ✔ 全部一致 |
| **网络(按引脚集合逐网络比对)** | **✔ 169/169** | **✔ 150/150** |
| 封装焊盘号覆盖符号引脚号 | ✔ | ✔ |
判据是 EasyEDA 自己编译出来的网表(`sch_ManufactureData.getNetlistFile`),
不是几何反推。网络**名**不参与比对(EasyEDA 的匿名网 `$1N236` 和 KiCad 的自动命名本来就不同),
按引脚集合配对。
复核:
```bash
/c/Python314/python .claude/k_verify.py # 网表对账(会调 kicad-cli 重新编译)
/c/Python314/python .claude/k_check_fp.py # 封装库完整性
```
## 已知差异 / 待办
1. **`R9A`~`R9E`(Board1 的五个 2Ω 串联母线泄放电阻)位号不以数字结尾**,KiCad 判定为「未批注」,
每次 ERC / 导出网表都会警告一次。网表本身导得出来、也对得上。
保留原名是为了和设计文档 §、EasyEDA 工程、PCB 丝印一致 —— 要清掉警告就得改名(如 R91~R95),
那是设计侧的决定,没有替你做。
2. **205个未连接引脚没有打NC标记**(Board1 18个/Board2 187个);两路测速接收器已接通,不再有四个孤立测速标签。
EasyEDA 侧这些引脚的 `NoConnected` 全是 `false`,即设计者从未声明「故意不接」,
后续已按控制链用途确认四个 595 输出、按TI手册确认五个EDL未用常闭端并加 NC;其余需要按器件手册逐项判断,不要为了清零 ERC 批量打 NC 或重新生成覆盖本轮整改。
3. **17 个悬空导线端点已整改**(Board1 7 / Board2 10),移除延伸线后全量网表对账一致。
4. **未定义引脚电气类型已清完**,库与内嵌符号同步修正,pin_to_pin为0。
ERC当前为Board1 29/Board2 196条,保留未连接、电源及信号未驱动报告。AMS1117输出电容已按手册改为22µF固态钽,见 [C737_TANTALUM.md](C737_TANTALUM.md)。
5. 少量位号与相邻元件的值标签轻微重叠(如 P1B-5V 的 U30 与 C733),
源自 EasyEDA 与 KiCad 字体度量不同,拖一下即可。
## 重新生成
依赖 EasyEDA Pro 客户端开着 + `easyeda-api` 桥接在线(步骤 1、2)。
步骤 3 之后纯离线。
```bash
python .claude/k_dump.py # 1. 工程树 + 23 页源码 + 每块板 3 种格式的网表
python .claude/k_extract.py # 2. 23 页图元几何(元件/引脚/导线/文本)
python .claude/k_dump_epro.py # 3. 整包 .epro(符号/封装源码在这里,页面源码里没有)
python .claude/k_inv.py # 4. 清点引用到的符号
python .claude/k_gen_sym.py # 5. -> lib/PhoneRail.kicad_sym
python .claude/k_gen_fp.py # 6. -> lib/PhoneRail.pretty/
python .claude/k_gen_sch.py # 7. -> 两个工程的 23 页原理图(--nc 可打 NC 标记)
python .claude/k_verify.py # 8. 终检
```
中间产物在 `.claude/eda_src/`(约 11 MB,含 `.epro` 原始包)。
## 转换里踩实的几何约定
这些是实测结论,改生成器之前先看一眼,否则会重蹈覆辙:
| 项 | 结论 |
|---|---|
| 原理图 Y 轴 | EasyEDA **向上**、KiCad `.kicad_sch` **向下** → 放置时翻 Y |
| 符号 Y 轴 | EasyEDA `.esym` 与 KiCad `.kicad_sym` **同为向上** → 符号内部图形**不翻** |
| 页面 DSL 的 Y | `.esrc` 里的 Y = API 报的 Y 的**相反数**(取标签坐标时要取负) |
| 旋转 | Y-up 下的**逆时针**,KiCad 角度 = EasyEDA 角度(503/508 个元件实测) |
| 镜像 | EasyEDA 是「先转 θ 再翻 X」。**不要用 KiCad 的 `(mirror y)`**,次序不同会错位;<br>改用镜像过的符号变体 + 角度取 `(360−θ)` |
| 字段角 | KiCad 渲染角 = 存储角 + 元件旋转。90/270 的元件要存 `(360−θ)` 才水平;<br>180 上补 180 会让文字**镜像**,所以只对 90/270 补 |
| 单位 | 原理图 1 单位 = 0.01 inch = 0.254 mm;PCB/封装是 **mil** = 0.0254 mm |
| **封装局部 Y / 角度** | **EasyEDA efoo 为 Y 向上,KiCad 为 Y 向下,必须反转 Y 和角度**。旧 `k_gen_fp.py` 的“不翻”注释错误,本轮已修复;重新生成后须运行本目录 `scripts/repair_footprint_handedness.py --apply` 并复核 |
| 内层子符号名 | `.kicad_sch` 的 `lib_symbols` 里,只有**最外层**符号名带 `PhoneRail:` 前缀,<br>内层 `NAME_0_1` / `NAME_1_1` 加了前缀会直接「加载原理图失败」 |
| 电源符号位号 | KiCad 的电源符号也必须有唯一位号(`#PWR0001`…),否则整个工程算未批注、网表拒绝导出 |
| 弧 | EasyEDA `["ARC",id,sx,sy,mx,my,ex,ey]` 的中间两个数就是**弧中点**,与 KiCad 三点式同构 |
## EasyEDA 侧的一条发现
`sch_ManufactureData.getNetlistFile(name, type)` 是**可用**的(标 BETA),能导出整块板编译后的
网表,支持 EasyEDA JSON / Protel2 / PADS 三种格式。
本仓库 `.claude/skills/easyeda-sch-geometry/scripts/verify_sch.py` 的注释写着
「EasyEDA 不通过 API 暴露编译后的网表,所以只能按几何自己推」—— 这条已经过时。
几何反推仍然有价值(能查悬空引脚),但**验收**用官方网表更硬。