Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions docs/eco-603/ADDITIONS-603.snippets.kicad_sch
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# ADDITIONS-603 — snippets para pegar en Eeschema

Copiar a mano (Eeschema no hace merge textual seguro de UUIDs; genera símbolo R/D/F con `a` y renombra).

## E0 herencia 602 (bm1370.kicad_sch)
Borrar R21 20k. Cambiar etiqueta GND→1V2 en (229.87 52.07), junction a (198.12 52.07), wires (204.47 46.99)→(198.12 46.99) y (198.12 46.99)→(198.12 52.07), wire (173.99 59.69)→(198.12 59.69). Ver commit 8bd74c8.
Fix #6 U9 SN74AVC4T774: B4→GND o DIR4=H (no flotante CMOS).

## E2 pull-ups (power.kicad_sch, net 3V3 existente)
R30: pin1=PMB_DATA(U2-2), pin2=3V3 — 4.7k 0402
R31: pin1=PMB_CLK(U2-3), pin2=3V3 — 4.7k
R32: pin1=SMB_ALRT(U2-6), pin2=3V3 — 4.7k

## E1 (power.kicad_sch)
Wire SYNC(U2-38)→GND, BCX_CLK(U2-39)→GND, BCX_DAT(U2-40)→GND. Añadir etiqueta GND + vía.

## E4 entrada (root o power)
J1 pin+ → F1 pin1; F1 pin2 = net 5V_FUSED → PVIN/AVIN U2 + C60+ → GND; D1 cátodo=5V_FUSED, ánodo=GND.
F1: Fuse_5A_1206, D1: SMAJ5.0A DO-214AC, C60: 100uF/6.3V 1206.

## E5 USB-C (esp32.kicad_sch, J5 USB4105-GF-A)
R33: CC1→GND 5.1k; R34: CC2→GND 5.1k.
R3-USB: D2 USBLC6-2SC6: I/O1=D+, I/O2=D-, GND=GND, VCC=5V_FUSED junto a J5. D+/D- diff 90Ω a GPIO19/20.

## R2/R3 power (power.kicad_sch)
R35: PGD(U2-1)→3V3 10k 0402. C61 47u 1206 + C62 100n 0402: PVIN/AVIN→GND <5mm U2.
D3/D4 PESD3V3S1BL: SDA/SCL→GND junto a U2. TPs: VCORE/PGD/3V3/GND pads 2mm en borde.

Tras pegar: Annotate → ERC (0 errores) → Assign Footprints:
R30-35: Resistor_SMD:R_0402_1005Metric; F1: Fuse_SMD:Fuse_1206_3216Metric; D1: Diode_SMD:D_SMA; C60/C61: Capacitor_SMD:C_1206_3216Metric; C62: C_0402; D2: SOT-23-6; D3/D4: SOD-323; TPs: TestPoint_Pad_2mm.
53 changes: 53 additions & 0 deletions docs/eco-603/BOM-603.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
Qty,Reference,Value,PARTNO,DK,LCSC,Nota603
1,C6,4700pF,GRM155R71E472KA01D,490-1309-1-ND,,=
1,C9,2200pF,GRM155R61H222KA01D,490-8257-1-ND,,=
1,C10,4.7uF,GRM155R61A475MEAAD,490-14306-1-ND,,=
1,C11,1000pF,CC0805KRX7R9BB102,311-1127-1-ND,,verificar X7R 50V
1,C13,100pF,GRM1555C1H101JA01D,490-1317-1-ND,,FIX #3: era 885012005013 C0G 0402
1,C50,470pF,CL05B471KB5NNNC,1276-1566-1-ND,,=
24,"C1 C5 C7 C21 C22 C23 C26 C27 C28 C30 C31 C32 C33 C34 C35 C36 C39 C40 C41 C42 C44 C45 C46 C48",1uF,EMK105BJ105MV-F,587-5514-1-ND,,=
3,C14 C15 C16,22uF,GRM21BR61A226ME44L,490-10746-1-ND,,=
5,C17 C18 C19 C20 C43,100uF,CL31A107MQHNNNE,1276-1782-1-ND,,=
1,C60,100uF 6.3V,CL32A107MQVNNNE,1276-3377-1-ND,,NUEVO E4 bulk entrada
2,C2 C24,10uF,CL21A106KOQNNNE,1276-1096-1-ND,,=
3,C3 C4 C51,47uF,CL32A476KOJNNNE,1276-3376-1-ND,,=
10,C8 C12 C25 C29 C37 C38 C47 C49 C52 C53,0.1uF,CL05A104KO5NNNC,1276-1234-1-ND,,=
1,J1,PJ-002A-SMT,PJ-002A-SMT,CP-002A-ND,,FIX #49: era 54-00164 verificar footprint BarrelJack 5.5x2.1
1,J5,USB_C_Receptacle_USB2.0,USB4105-GF-A,2073-USB4105-GF-ACT-ND,,=
1,J6,Conn_01x04,0470531000,WM4330-ND,,=
1,J7,Conn_01x04,,,,"DNI OLED"
1,L1,300nH 25A,SLC1175-301MEC,,,"FIX #50: confirmar Isat/DCR; alt. Coilcraft XAL1010-301M"
1,R1,8.25k,RC0402FR-078K25L,311-8.25KLRCT-ND,,=
1,R5,14.7k,RC0402FR-0714K7L,YAG2984CT-ND,,=
1,R6,0,RC0402JR-070RL,311-0.0JRCT-ND,,=
1,R8,3.74k,RC0402FR-073K74L,311-3.74KLRCT-ND,,=
1,R9,11.8k,RC0402FR-0711K8L,YAG2958CT-ND,,=
1,R10,68.1k,RC0402FR-0768K1L,YAG3213CT-ND,,=
1,R11,10,RC0402FR-0710RL,311-10.0LRCT-ND,,=
1,R12,1,CSR1206FT1R00,CSR1206FT1R00CT-ND,,=
1,R19,1k,RC0402FR-071KL,311-1.00KLRCT-ND,,=
0,R21,DNI-eliminado-en-603,RC0402FR-0720KL,311-20.0KLRCT-ND,,E0 herencia 602: quitar R21, net directo a 1V2
1,R24,5.6k,RC0402FR-135K6L,13-RC0402FR-135K6LCT-ND,,=
2,R13 R14,49.9,RC0402FR-0749R9L,311-49.9LRCT-ND,,=
4,R15 R16 R17 R25,10k,RC0402JR-0710KL,311-10KJRCT-ND,,=
2,R22 R23,10,RC0402FR-0710RL,311-10.0LRCT-ND,,FIX E3: era 100R
3,R30 R31 R32,4.7k,RC0402FR-074K7L,311-4.70KLRCT-ND,,NUEVO E2 pull-ups PMBus
2,R33 R34,5.1k,RC0402JR-075K1L,311-5.1KJRCT-ND,,NUEVO E5 USB-C CC
2,SW1 SW2,GT-TC029B-H025-L1N,CS1213AGF260,2449-CS1213AGF260CT-ND,,=
1,U2,TPS546D24ARVFR,TPS546D24ARVFR,296-TPS546D24ARVFRCT-ND,,=
1,U3,RT9080-33GJ5,RT9080-33GJ5,1028-1509-1-ND,,=
1,U4,ESP32-S3-WROOM-1,ESP32-S3-WROOM-1-N16R8,1965-ESP32-S3-WROOM-1-N16R8CT-ND,,=
1,U5,MCP1824T-1202E/OT,MCP1824T-1202E/OT,MCP1824T-1202E/OTCT-ND,,=
1,U6,MCP1824T-0802E,MCP1824T-0802E/OT,MCP1824T-0802E/OTCT-ND,,=
1,U7,25MHz,SX3M25.000E20F30THN,,C5137262,=
1,U8,BM1370_mode1,,,,"comprar desoldado S21 Pro"
1,U9,SN74AVC4T774,SN74AVC4T774PWR,296-24739-1-ND,,=
1,U10,EMC2101,EMC2101-R-ACZL-TR,EMC2101-R-ACZL-CT-ND,,=
1,D1,SMAJ5.0A,SMAJ5.0A-LF,SMAJ5.0A-ND,,NUEVO E4 TVS SMA DO-214AC
1,F1,FUSE 5A 24V 1206,0451005.MR,F5760CT-ND,,NUEVO E4 fusible rápido
1,R35,10k,RC0402FR-0710KL,311-10KLRCT-ND,,NUEVO R2 PGD pull-up a 3V3 (open-drain)
1,C61,47u 6.3V,CL32A476KOJNNNE,1276-3376-1-ND,,NUEVO R3 bulk PVIN U2 1206
1,C62,0.1uF,CL05A104KO5NNNC,1276-1234-1-ND,,NUEVO R3 decoupling AVIN U2 0402
1,D2,USBLC6-2SC6,USBLC6-2SC6,497-11686-1-ND,,NUEVO R3 ESD USB D+/D- SOT23-6 junto J5
2,D3 D4,PESD3V3S1BL,PESD3V3S1BL,1727-8417-1-ND,,NUEVO R3 ESD SDA/SCL SOD-323 junto U2
5,TP1 TP2 TP3 TP4 TP5,TestPoint 2mm,5000,36-5000CT-ND,,NUEVO R1 TP_VCORE/TP_PGD/TP_3V3/2xGND
22 changes: 22 additions & 0 deletions docs/eco-603/CHECKLIST-603.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# CHECKLIST-603 — fabricación, ensamblaje y bring-up

## Fab (JLC/PCBWay/Seeed)
- 4L, 1.6mm, TG150, ENIG, 6mil/0.3mm. Gerbers 601 + delta ECO. Pedir stencil top+bottom.
- Verificar footprint J1 PJ-002A vs Gerber Edge+Pads antes de panelizar.

## SMT
- Pasta Sn63/Pb37 T3 fría, horno convección: soak 140-150C 2min → reflow 200-220C 30s, termopar sobre PCB.
- Orden: bottom chico → top. U2 QFN + BM1370 con lupa/microscopio, sin puentes.
- No montar J7 si usas OLED externo. Limpiar IPA.

## Bring-up sin ASIC-hash (primera vez)
1. Sin alimentar: F1 0Ω, D1/D2/D3/D4 diodo OK, SYNC/BCX 0Ω→GND, pull-ups 4.7k→3V3 + PGD 10k→3V3, CC 5.1k→GND, R21 ausente + net=1V2, B4 no flotante.
2. 5V lab con límite 1A: corriente <150mA, 3V3=3.3±0.07V, Vcore=0V (EN off).
3. USB-C cable A-C: enumera ESP32-S3, flashea AxeOS/ESP-Miner.
4. Set Vcore 1.15V vía PMBus, mide en test point, PGD=3V3.
5. Hash 525MHz: ~1.2TH/s, temp estable ±2C, fan PWM OK. Si fluctúa >5C revisa R22/23=10R y soldadura BM1370.
6. Stress 12h + prueba 12V accidental NO hacer — el TVS+fusible es última defensa, no prueba.

## Archivos entrega
ECO-603.md, BOM-603.csv, SILK-603.md, ADDITIONS snippets, apply_eco603.py, este checklist.
Licencia derivada: CERN-OHL-S-2.0 (mantener).
40 changes: 40 additions & 0 deletions docs/eco-603/ECO-603.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# ECO-603 — bitaxeGamma 601 → 603 (incluye herencia 602)
Fecha: 2026-09-05. Base: `main` rev 601 (`title_block date 2024-09-26`).
Linaje: 600 → 602-intento (`8bd74c8`: quita R21 + fix #6, GND→1V2) → revert a 601 (`a4fcd87`) → 602-comercial en calle (misma 601 + BOM) → **603 = 601 + herencia 602 + fixes nuevos**. Se salta a 603 para no colisionar con placas ya vendidas como 602.

## Lista de cambios (obligatorios)

| ID | Issue | Hoja | Cambio | Rework 601 |
|----|-------|------|--------|------------|
| E0 | #6 + `8bd74c8` | `bm1370.kicad_sch` | **Herencia 602:** eliminar R21 20k 0402, atar ese net directo a 1V2 (etiqueta en 229.87 52.07, junction en 198.12 52.07, wires 204.47→198.12 y 198.12→52.07). No dejar input B4 del SN74AVC4T774 (U9) flotante: B4→GND o DIR4=H para B4=salida. | Quitar R21, puente a 1V2 |
| E1 | #47 | `power.kicad_sch` U2 TPS546D24 (pins 38 SYNC, 39 BCX_CLK, 40 BCX_DAT) | Conectar SYNC + BCX_CLK + BCX_DAT a GND con vía dedicada <20mm al pad AGND/PGND. Quitar NC. | Hilo 30AWG a GND |
| E2 | #25 | `power.kicad_sch` | Añadir R30,R31,R32 4.7k 0402 1% a 3V3: PMB_DATA(2), PMB_CLK(3), SMB_ALRT(6). Pull-up junto a U2 <15mm. | 4.7k voladas a 3V3 |
| E3 | #13+#16 | `fan.kicad_sch` | R22,R23 100R → 10R 0402 1% (DK 311-10.0LRCT-ND). Routing diferencial corto al BM1370, plano GND debajo. | Cambiar a 10R/0R |
| E4 | #11+#17 | entrada 5V | Añadir F1 fusible rápido 5A 24V 1206 (ej. Littelfuse 0451005.MR, DK F5760CT-ND) en serie al +5V tras J1 + D1 TVS SMAJ5.0A (DK SMAJ5.0A-ND) cátodo a 5V_FUSED / ánodo a GND, a <10mm de J1. Añadir C60 100uF 6.3V 1206 bulk junto a J1. | TVS por debajo + fusible externo en cable |
| E5 | #37 | `esp32.kicad_sch` J5 USB4105-GF-A | Añadir R33,R34 5.1k 0402 5% de CC1/CC2 a GND. Revisar D+/D- 90Ω diff a GPIO19/20. | Exigir cable A-C |
| E6 | BOM #50/#49/#3 | BOM | J1 fijar a CUI PJ-002A-SMT (DK CP-002A-ND) footprint `BarrelJack_GCT_DCJ250-002AQ-A`. L1 fijar SLC1175-301MEC 300nH Isat ~25A + altern. Coilcraft XAL1010-301M. C13 100pF → C0G 50V 0402 GRM1555C1H101JA01D (DK 490-1317-1-ND). C11 1000pF verificar X7R. | Verificar antes de pedir |
| E7 | Serigrafía | `bitaxeGamma.kicad_pcb` F.SilkS/B.SilkS | Ver §3 SILK-603.md | — |

## Cambios recomendados (incluidos en 603, mismo 4L/tamaño)

| ID | Área | Cambio plasmado en PCB |
|----|------|------------------------|
| R1 | Power-integridad | Vías térmicas 0.3/0.6mm bajo U2 TPS546 + pad BM1370 a GND/In2.Cu. Pour 1V2 reforzado ancho ≥3mm / polygon. Sense VOSNS/GOSNS en estrella Kelvin al output, sin compartir alta corriente. TP_VCORE + TP_PGD + TP_3V3 + 2x TP_GND (Keystone 5000 / pad 2mm). |
| R2 | Señal | TEMP_DP/DN (fan.kicad_sch, EMC2101→BM1370) en diff paralelo corto + guard GND, R22/23 10R ya en E3. D+/D- J5→ESP32 GPIO19/20 diff 90Ω, largo igualado <0.5mm. R35 10k PGD(U2-1)→3V3 (open-drain, ya pedido en silk power). FAN_TACH con RC 1k+1nF serie si hay ruido. |
| R3 | Robustez | D2 ESD USB USBLC6-2SC6 en D+/D- junto a J5. D3/D4 PESD3V3S1BL en SDA/SCL junto a U2. C61 47u 1206 + C62 0.1u 0402 en PVIN/AVIN U2 (<5mm). Keepout antena ESP32-S3: sin cobre/silk denso, marcado en F.SilkS. |
| R4 | DFM/Fab | Potencia 0402→0603 donde disipe (pull-ups se quedan 0402). 3x fiduciales 1mm + courtyard + F.Fab con Value+DK. J1/L1/C13 verificados en E6. No mover ESP32 ni BM1370. |

No cambiar stackup: 4 capas 1.6mm, 1oz ext / 0.5oz int, 6mil/0.3mm.

## Aplicación en KiCad 9.0
1. Copia de seguridad + `Annotate + ERC + DRC`.
2. Ejecuta `apply_eco603.py` (hace E0-parcial, E3, rev→603, y chequea E1/E2/E4/E5/R1-R4 pendientes).
3. Manual en Eeschema: E0 (quitar R21, net→1V2, fix B4 U9), E1 (cable SYNC/BCX→GND), E2 (3x R 4.7k), E4 (F1+D1+C60), E5 (2x 5.1k), R2 (R35 10k PGD→3V3), R3 (D2/D3/D4 + C61/C62). Ver `ADDITIONS-603.snippets.kicad_sch` para pegar.
4. En PCBNew: importar, quitar footprint R21, colocar F1/D1 junto a J1 (top), R30-32 junto a U2, R33-34 junto a J5, D2 junto a J5, D3/D4 + C61/C62 junto a U2, R35 junto a U2-1. Añadir vías térmicas U2/BM1370, pour 1V2, TPs, fiduciales. Vías a GND directas. Re-pour.
5. Actualiza serigrafía (§3), Fab + BOM (`BOM-603.csv`), genera Gerbers + `CHECKLIST-603.md`.

## Validación mínima
- E0: R21 eliminado, net=1V2, B4 U9 no flotante (0Ω a GND o DIR4=H).
- Continuidad SYNC/BCX→GND, pull-ups 4.7k→3V3, CC→GND 5.1k, TVS diodo (0.5V un sentido), F1 0Ω.
- R1-R3: PGD pull 10k→3V3, ESD D2/D3/D4 diodo OK, C61/C62 montados, TEMP_DP/DN 10R en serie, D+/D- continuidad, TPs rotulados.
- En vacío 5V: 3V3 ±2%, Vcore 1.15V, PMBus lee 0x24, temp estable ±2C, WiFi/AxeOS, hash 525MHz/1150mV ~1.2TH/s <65C.
29 changes: 29 additions & 0 deletions docs/eco-603/SILK-603.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Serigrafía + PCB 603 (F.SilkS / B.SilkS, F.Fab)

## 3.1 Textos a añadir (altura 1.0-1.27mm, grosor 0.15mm)
- `F.SilkS` junto a J1: `5V ONLY 5A MAX` + `+` en pin central.
- `F.SilkS` sobre U2: `Gamma 603` (reemplaza 601).
- `F.SilkS` junto a F1: `F1 5A` + marco. Junto a D1: `D1 SMAJ5.0A` + barra cátodo.
- `F.SilkS` junto a R30-32: `PU 4K7 PMBus`. Junto a R33-34: `CC 5K1`. Junto a R35: `PGD 10K`.
- `F.SilkS` junto a D2: `ESD USB`. Junto a D3/D4: `ESD I2C`. Junto a C61/C62: `47u+100n PVIN`.
- `B.SilkS`: `R21 REMOVED→1V2 | R22 R23=10R | SYNC/BCX→GND` + `603=601+602fixes`.
- `F.Fab`: valores + DK de F1/D1/R30-35/C60-62/D2-D4/TPs.

## 3.2 Reglas
- No silk sobre pads/vías. Clearance silk→pad ≥0.2mm.
- Polaridad: D1 barra hacia 5V, F1 sin polaridad pero marcar 1-2. D2 pin1 punto, D3/D4 barra a GND.
- TPs: rotular `VCORE PGD 3V3 GND GND SDA SCL` en F.SilkS junto a cada pad 2mm.
- Keepout antena ESP32-S3: rectángulo hatch en F.SilkS `ANT KEEPOUT`, sin cobre/silk denso.
- Fiduciales: 3x círculo 1mm + máscara 2mm en esquinas, fuera de silk.

## 3.3 Placement recomendado (origen esquina J1)
- F1 1206 en serie +5V entre J1 y D1, pista ≥2.5mm ancho (5A). Pour 1V2 ≥3mm post-U2.
- D1 SMA DO-214AC a <10mm de J1, vías GND 2x0.5mm.
- C60 1206 a <8mm de J1. C61 47u + C62 100n a <5mm de PVIN/AVIN U2.
- R30-32 0402 a <15mm de U2 pins 2/3/6, pull a net 3V3 existente. R35 10k PGD(1)→3V3 <10mm.
- R33-34 a <10mm de J5. D2 a <8mm de J5 en D+/D-. D3/D4 a <10mm de U2 en SDA/SCL.
- Vías térmicas 0.3/0.6mm: 3x3 bajo U2, 4x4 bajo BM1370 a In2.Cu/GND. TEMP_DP/DN diff + guard.
- TPs 2mm en borde: VCORE/PGD/3V3/GND accesibles con punta.

## 3.4 Stackup/fab (sin cambio)
4L 1.6mm FR4, 1oz ext/0.5oz int, 6mil/0.3mm, ENIG, pasta top+bottom para stencil.
36 changes: 36 additions & 0 deletions docs/eco-603/apply_eco603.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/usr/bin/env python3
"""apply_eco603.py — parche semiautomático 601→603 (incluye herencia 602).
Uso: python3 apply_eco603.py /tmp/opencode/bitaxeGamma
- Hace backup .bak601
- rev 601→603, R22/R23 100→10, marca R21 como DNI (herencia 602), chequea pendientes E0/E1/E2/E4/E5.
- NO coloca footprints nuevos ni borra símbolos; usar ADDITIONS snippets + KiCad.
"""
import sys, shutil, re
from pathlib import Path
root = Path(sys.argv[1] if len(sys.argv)>1 else "/tmp/opencode/bitaxeGamma")
for f in ["power.kicad_sch","fan.kicad_sch","bm1370.kicad_sch","esp32.kicad_sch","bitaxeGamma.kicad_sch"]:
p = root/f
if not p.exists(): continue
txt = p.read_text()
if ".bak601" not in str(p):
shutil.copy(p, str(p)+".bak601")
txt = txt.replace('(rev "601")','(rev "603")')
txt = txt.replace('(date "2024-09-26")','(date "2026-09-05")')
if f=="fan.kicad_sch":
# R22/R23: cambia Value 100 que sigue a Reference R22/R23
def _repl(m):
return m.group(1) + "10" + m.group(2)
txt = re.sub(r'(property "Reference" "R2[23]".*?property "Value" ")100(")', _repl, txt, flags=re.S)
txt = txt.replace("311-100LRCT-ND","311-10.0LRCT-ND").replace("RC0402FR-07100RL","RC0402FR-0710RL")
if f=="bm1370.kicad_sch":
# E0 herencia 602: marcar R21 como DNI (borrado manual en KiCad + net a 1V2)
txt = txt.replace('(property "Reference" "R21"', '(property "Reference" "R21_DNI-E0"')
p.write_text(txt)
print(f"OK {f}")
print("\nPENDIENTES MANUALES en Eeschema (ver ECO-603.md):")
print("- E0: quitar R21 (ya marcado DNI), net→1V2 directo, fix B4 U9 no flotante (#6)")
print("- E1: SYNC(38)+BCX_CLK(39)+BCX_DAT(40) U2 → GND")
print("- E2: añadir R30-32 4.7k a 3V3 en PMB_DATA/CLK/SMB_ALRT")
print("- E4: añadir F1 5A + D1 SMAJ5.0A + C60 100uF en J1")
print("- E5: añadir R33-34 5.1k CC1/CC2→GND en J5")
print("- E6: revisar J1/L1/C13 + actualizar PCB, silk, BOM-603.csv")