checkpoint: v5.5 as saved by Leo before Claude fixes (pre-audit report included)
This commit is contained in:
parent
329bd41137
commit
c3e8e48780
@ -0,0 +1,171 @@
|
||||
# EinarBoard v5 (`hbox-watchdog-v5`) — pre-audit checks
|
||||
|
||||
**Fecha:** 2026-08-20 · **Archivos analizados:** `hbox-watchdog-v5.kicad_sch` (guardado 18-Ago 04:22)
|
||||
y `hbox-watchdog-v5.kicad_pcb` (guardado 20-Ago 02:43) · **Placa:** 155.0 × 100.1 mm, 229 huellas,
|
||||
1852 segmentos, 199 vías, 5 zonas.
|
||||
|
||||
> Alcance: sólo las dudas planteadas (Q1/Q2/Q4/Q10, Q2 sin señales, capacitores sueltos,
|
||||
> los 12 errores de DRC, U13 en 3D). La auditoría completa va aparte.
|
||||
|
||||
---
|
||||
|
||||
## 1. Q1, Q2, Q4, Q10 — pads sin red: causa raíz
|
||||
|
||||
**No es un problema de ruteo. Es un desajuste símbolo↔huella.**
|
||||
|
||||
Los cuatro usan `Device:Q_PMOS` / `Device:Q_NMOS`, cuyos pines están numerados con **letras**
|
||||
(`G`, `D`, `S`). Las huellas `SOT-23` y `TO-252-2` tienen pads **`1`, `2`, `3`**.
|
||||
Ningún número coincide → KiCad no puede mapear ningún pin a ningún pad → **los tres pads quedan
|
||||
sin red y sin `pinfunction`**. Por eso aparecen "unconnected" y sin etiqueta.
|
||||
|
||||
Q5/Q6 (`Transistor_BJT:Q_NPN_BEC`, pines 1/2/3) y Q7 (`Drogheda-sym:AO4406A`) sí mapean bien.
|
||||
|
||||
### El esquemático SÍ está correcto — estas son las redes que les tocan
|
||||
|
||||
| Ref | Parte | Encapsulado | Gate | Source | Drain |
|
||||
|-----|-------|-------------|------|--------|-------|
|
||||
| **Q1** | AO3401A (P-ch) | SOT-23 | `/GATE_LS` | `/SW_IN` | `/SW_5V` |
|
||||
| **Q2** | AO3400A (N-ch) | SOT-23 | `/FAN_GATE` | `GND` | `/FAN_RET`|
|
||||
| **Q4** | AO3400A (N-ch) | SOT-23 | `/EXT_LED` | `GND` | `/LED_K` |
|
||||
| **Q10** | IRFR5305 (P-ch)| TO-252-2 | `/Q10_GATE` | `/24V` | `/24V_IN` |
|
||||
|
||||
*(Q10 D=24V_IN / S=24V es lo correcto para protección de polaridad inversa: el diodo de cuerpo
|
||||
conduce con polaridad buena y bloquea con polaridad invertida.)*
|
||||
|
||||
### Corrección
|
||||
|
||||
Los símbolos de reemplazo tienen **la misma geometría de pines** que los actuales, así que es un
|
||||
cambio "drop-in": los cables y las etiquetas del esquemático se quedan donde están.
|
||||
|
||||
| Ref | Cambiar de | Cambiar a | Numeración resultante |
|
||||
|-----|-----------|-----------|----------------------|
|
||||
| Q1 | `Device:Q_PMOS` | **`Transistor_FET:Q_PMOS_GSD`** | 1=G, 2=S, 3=D ✔ AO3401A |
|
||||
| Q2 | `Device:Q_NMOS` | **`Transistor_FET:Q_NMOS_GSD`** | 1=G, 2=S, 3=D ✔ AO3400A |
|
||||
| Q4 | `Device:Q_NMOS` | **`Transistor_FET:Q_NMOS_GSD`** | 1=G, 2=S, 3=D ✔ AO3400A |
|
||||
| Q10 | `Device:Q_PMOS` | **`Transistor_FET:Q_PMOS_GDS`** | 1=G, 2=D(tab), 3=S ✔ IRFR5305 DPAK |
|
||||
|
||||
Después: *Tools → Update PCB from Schematic*. **Esto también elimina 6 de los 12 errores de DRC**
|
||||
(ver §5).
|
||||
|
||||
---
|
||||
|
||||
## 2. DzG1 (BZX84C15) — el clamp de gate NO existe físicamente ⚠ CRÍTICO
|
||||
|
||||
`DzG1` usa `Device:D_Zener` (2 pines: 1=K, 2=A) sobre `Package_TO_SOT_SMD:SOT-23` (3 pads).
|
||||
KiCad mapeó K→pad 1 y A→pad 2, dejando el pad 3 sin red.
|
||||
|
||||
**El BZX84C15 real en SOT-23 es: pad 1 = Ánodo · pad 2 = NC · pad 3 = Cátodo.**
|
||||
|
||||
Consecuencia en la placa fabricada:
|
||||
|
||||
- `/24V` llega al **ánodo** (pad 1).
|
||||
- `/Q10_GATE` llega a un **pin NC** (pad 2) → no va a ningún lado.
|
||||
- El **cátodo** (pad 3) queda flotando.
|
||||
- → **El zener no clampa nada.**
|
||||
|
||||
Y eso importa: `Rrp1` (10 k) jala `/Q10_GATE` a GND mientras el source de Q10 está en 24 V.
|
||||
Sin clamp, **Vgs = −24 V** contra el máximo del IRFR5305 de **±20 V** → ruptura de óxido de compuerta
|
||||
en cuanto se energice en una máquina de 24 V (RTG, Reach Stacker, Empty Handler son todas 24 V).
|
||||
|
||||
**Corrección:** cambiar el símbolo a **`Diode:BZX84Cxx`** (300 mW zener SOT-23; pin 1=A, 2=NC, 3=K)
|
||||
y conectar **pin 3 (K) → `/24V`**, **pin 1 (A) → `/Q10_GATE`**.
|
||||
|
||||
---
|
||||
|
||||
## 3. U13 (PCF8574) — el 3D tiene razón, la huella está mal
|
||||
|
||||
- Huella en la placa: `Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm` (cuerpo **ancho, 7.5 mm**).
|
||||
- Modelo 3D asignado: `SOIC-16_3.9x9.9mm_P1.27mm.step` (cuerpo **angosto, 3.9 mm**).
|
||||
- Parte real: **LCSC C7605 = NXP PCF8574T/3,518**, encapsulado NXP **SOT109-1 = SO16, ancho de
|
||||
cuerpo 3.9 mm, largo 9.9 mm, paso 1.27 mm**.
|
||||
|
||||
LCSC lo etiqueta "SOIC-16-300mil", que es lo que engañó; la hoja de datos de NXP y la huella
|
||||
sugerida por la base JLCPCB coinciden en el **angosto**.
|
||||
|
||||
**Corrección:** U13 → `Package_SO:SOIC-16_3.9x9.9mm_P1.27mm`.
|
||||
Es un cambio de huella, así que hay que **volver a rutear la zona de U13** (el ancho de pads a pads
|
||||
baja de ~10.3 mm a ~6.0 mm).
|
||||
|
||||
---
|
||||
|
||||
## 4. MP1584EN ×3 (U2, U7, U12) — pad expuesto sin red ⚠
|
||||
|
||||
El símbolo `Drogheda-sym:MP1584EN` tiene 8 pines; la huella `SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.29x3mm`
|
||||
tiene **pad 9 (exposed pad)**. En los tres reguladores el pad 9 está **sin red**.
|
||||
|
||||
En el MP1584 el EP es el camino térmico a GND. Tres bucks de 3 A sin disipación, dentro de una
|
||||
caja ASA sellada, dentro de un gabinete ABS IP67 sellado — es literalmente el modo de falla del
|
||||
RCA de junio.
|
||||
|
||||
Comparar: U6 (LTC4040, QFN-24-1EP) **sí** tiene su pad 25 = `GND_EP` correctamente conectado.
|
||||
|
||||
**Corrección:** agregar pin 9 (`EP`, tipo `power_in`) al símbolo `Drogheda-sym:MP1584EN`, atarlo a
|
||||
GND en el esquemático, y poner un campo de vías térmicas bajo cada EP.
|
||||
|
||||
---
|
||||
|
||||
## 5. Los 12 errores de DRC (del archivo guardado)
|
||||
|
||||
| # | Tipo | Ubicación (mm) | Causa |
|
||||
|---|------|----------------|-------|
|
||||
| 1–3 | `clearance` 0.140 vs 0.150 mm | (161.65, 120.39) · (150.21, 120.39) · (150.21, 115.13) | Cerca de C31 / RS1 / JP2 — faltan **10 µm**. Empujar la pista. |
|
||||
| 4–6 | `shorting_items` `/EXT_LED` ↔ *(sin red)* | (124.04, 51.44) · (123.62, 51.86) ×2 | **Q4** — es el §1. Se corrige solo. |
|
||||
| 7–9 | `solder_mask_bridge` | (123.62, 51.86) · (124.04, 51.44) · (122.25, 53.23) | Misma causa: **Q4**. Se corrige solo. |
|
||||
| 10–12 | `npth_inside_courtyard` | MH9 (77.90, 81.64) · MH7 (76.63, 129.90) · MH10 (128.70, 96.88) | Los barrenos M2.5 caen dentro del courtyard de **MOD1** (`Module:Arduino_UNO_R3`). Es **por diseño** (bolt-down del shield). Excepcionar la regla o recortar el courtyard de MOD1. |
|
||||
|
||||
**Neto: 6 de 12 desaparecen al arreglar Q4. Los 3 de MH son waivables. Sólo 3 son ruteo real.**
|
||||
|
||||
Advertencias que valen la pena (no errores): `track_dangling` 27, `via_dangling` 20,
|
||||
`lib_footprint_mismatch` 85, `text_height` 144, `silk_over_copper` 11.
|
||||
|
||||
---
|
||||
|
||||
## 6. Planos internos — nombre y red intercambiados
|
||||
|
||||
| Zona (nombre) | Capa | Red asignada |
|
||||
|---|---|---|
|
||||
| `P3V3_PLANE_IN1` | In1.Cu | **GND** |
|
||||
| `GND_PLANE_IN2` | In2.Cu | **/3V3** |
|
||||
|
||||
Los nombres y las redes están cruzados. Si las redes son las buenas, sólo hay que renombrar las
|
||||
zonas; si los nombres son los buenos, el stackup está invertido. Cualquiera de las dos, hay que
|
||||
resolverlo antes de generar plots — quien lea `In1`/`In2` va a asumir lo que dice el nombre.
|
||||
|
||||
---
|
||||
|
||||
## 7. Rig2 existe sólo en el PCB (no está en el esquemático)
|
||||
|
||||
`Rig2` (22 k, `/IGN_SENSE` → `GND`) es una huella **sin símbolo** y con redes asignadas a mano
|
||||
(no tiene `path` al esquemático). Es la única de las 9 huellas huérfanas que no es un barreno.
|
||||
|
||||
Efectos:
|
||||
|
||||
- No aparece en el BOM.
|
||||
- El próximo *Update PCB from Schematic* con «delete extra footprints» **la borra**.
|
||||
- La pata baja del divisor de ignición queda entonces sólo con `Rigb1` (3.3 k).
|
||||
|
||||
Cálculo del divisor a `/IGN_SENSE` → PA5 (pin 21 del F411RET6), con `Rig1` = 22 k arriba:
|
||||
|
||||
| Escenario | Pata baja | 24 V → PA5 | 12 V → PA5 |
|
||||
|---|---|---|---|
|
||||
| Con Rig2 | 22 k ∥ 3.3 k = 2.87 k | 2.77 V | 1.39 V |
|
||||
| Sin Rig2 | 3.3 k | 3.13 V | 1.57 V |
|
||||
|
||||
Ambos quedan bajo 3.3 V (y `D5` BAT54 clampa de todos modos), así que **no es un paro de línea** —
|
||||
pero sí es una discrepancia de BOM y contra la documentación, que dice divisor **22k/10k**.
|
||||
Decidir cuál es el valor bueno y meterlo al esquemático.
|
||||
|
||||
---
|
||||
|
||||
## 8. Pendiente: la lista exacta de "unconnected"
|
||||
|
||||
El `.kicad_pcb` en disco es de las **02:43 de hoy**. Contra ese archivo cuento ~100 pads de señal
|
||||
sin cobre encima — no 28. Además **las 5 zonas tienen el relleno viejo**: los pads de GND quedan a
|
||||
~0.62 mm del pour, sin thermal spokes.
|
||||
|
||||
Es decir: **el archivo guardado va atrás de tu sesión viva de KiCad.**
|
||||
|
||||
Para darte la lista exacta de los 28 y de cada capacitor suelto con su red de destino:
|
||||
**Ctrl+S en pcbnew** (KiCad rellena las zonas al guardar / al correr DRC) y vuelvo a correr el
|
||||
análisis. Ningún capacitor de la placa está *sin red asignada* — todos tienen su net; es puramente
|
||||
cuestión de ruteo, así que en cuanto vea el archivo fresco te doy pad por pad a dónde va cada uno.
|
||||
File diff suppressed because it is too large
Load Diff
@ -39,9 +39,9 @@
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 1.1,
|
||||
"height": 2.0,
|
||||
"width": 2.0
|
||||
"drill": 0.0,
|
||||
"height": 0.95,
|
||||
"width": 0.8
|
||||
},
|
||||
"silk_line_width": 0.1,
|
||||
"silk_text_italic": false,
|
||||
@ -856,7 +856,7 @@
|
||||
"uuid": "561403b3-895e-4153-a7be-3876ae930d43"
|
||||
}
|
||||
],
|
||||
"used_designators": "SW4G1,Rmled1,Rcomp1,Dbk1,Rfreq1,Rgs1,Cbst1,Rtp1,Rdfu1,Rled1,D4G1,Rigb1,Rig1,#PWR1-4,Ccomp1,Rrp1,Rg1,Rts1,DzG1",
|
||||
"used_designators": "DzG1,Rts1,Rg1,Rrp1,Ccomp1,#PWR1-4,Rig1,Rigb1,D4G1,Rled1,Rdfu1,Rtp1,Cbst1,Rgs1,Rfreq1,Dbk1,Rcomp1,Rmled1,SW4G1",
|
||||
"variants": []
|
||||
},
|
||||
"sheets": [
|
||||
|
||||
@ -1 +0,0 @@
|
||||
{"hostname":"Leopoldos-MacBook-Pro-2","username":"leo"}
|
||||
@ -1 +0,0 @@
|
||||
{"hostname":"Leopoldos-MacBook-Pro-2","username":"leo"}
|
||||
@ -1 +0,0 @@
|
||||
{"hostname":"Leopoldos-MacBook-Pro-2","username":"leo"}
|
||||
Loading…
Reference in New Issue
Block a user