Drogheda/03-Architecture-Hardware/2026-08-20_Drogheda_EinarBoard-v5_Pre-Audit-Checks_v1.0.md

172 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.