hbox-docs/docs/hardware/t42b-hv24-28oct.md
Leopoldo Rodríguez a844fcd979 T42b en V5.6/V5.7 (HBox_PCB 8b0a23a): página, documentos de diseño v1.5, instrucciones de Leo, índice, bitácora y lote
- docs/hardware/t42b-hv24-28oct.md (+3 figuras): qué estaba mal en la clase HV24, las reglas F-01, los arreglos de
  cobre de cada tarjeta, cómo se probó (DRC, paquete, red de cada vía/pista/pad en el Gerber) y la revisión
  independiente en 2 rondas (NO-GO por una vía de costura que el paquete sacaba como /3V3; corregido; GO).
- diseno-v56/v57 v1.5 (§12 clases y reglas, §13 E-15/T42b hechos, §14 historial), victorias rápidas (§4 hecho),
  instrucciones para Leo v1.3 (los paquetes del piloto ya llevan T42b; commit 8b0a23a o posterior).
- hardware/index.md y bitácora: entrada del 28-oct. mkdocs.yml: Auditorías y pasadas. sync-docs.sh: MAP de T42b.
- backend/lotes/2026-10-28_t42b-hv24.json: t-v5-t42b-hv24 a Hecho, nota y descripción en t-v56-piloto, lección
  para t-v6-g1-paquete (gerber_netcheck.py).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QCy5VHMVLkAmftYM6swWmx
2026-10-28 14:23:58 -06:00

106 lines
12 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.

---
title: "T42b: la clase HV24 completa en la V5.6 y la V5.7, antes del piloto"
tags: [project-drogheda, hardware, hbox, einarboard, v5.6, v5.7, drc, hv24, piloto, t42b]
project: Project Drogheda
author: "Helgen Technologies (redacción y scripts: Claude; decide: Leo)"
date: 2026-10-28
version: 1.0
status: "HECHO — HBox_PCB 8b0a23a (28-oct). Los paquetes HBOX_v5_Rev6_PROD y Rev7_PROD del piloto ya llevan T42b"
audience: "Leo, Michelle, Aldair"
---
# T42b: la clase HV24 completa en la V5.6 y la V5.7
!!! success "Hecho el 28-oct (Leo: «yes», 12:57). El piloto prueba el mismo cobre que llevarán las 135/365"
- **El error:** en la V5.6 y la V5.7 la clase de red **HV24** (las redes de 24 V) solo atrapaba `/24V_IN`. A los patrones `24V`, `IGN_IN` y `Q6_GATE` les faltaba la «/» inicial, así que `/24V`, `/IGN_IN`, `/Q6_GATE` (y en la V5.7 `/VIN_FUSED`, `/SW_PWRIN` y `/BOOT_PWRIN`; en la V5.6 el nodo del buck del ventilador) se revisaban a 0.15 mm y no con la regla del equipo. Se encontró el 22-oct ([victorias rápidas, §4](v56-v57-victorias-rapidas-22oct.md#4-hallazgo-la-clase-hv24-solo-atrapa-24v_in-t42b)).
- **Lo que se hizo:** patrones con «/» y las reglas F-01 de la v6 (0.2 mm entre redes HV24, 0.3 mm en las caras y 0.5 mm en capas internas). Salieron **14 errores en la V5.6** (y una isla de GND que quedaba sin conectar) **y 16 en la V5.7** (15 de separación y un capacitor con un solo rayo de relleno). Se arreglaron por script (`tools/t42b_v5.py`), y en las dos tarjetas la isla de GND de la parte baja del divisor de la ignición lleva 2 vías de costura.
- **El que más importaba (V5.7):** la línea EN del regulador U15 (TPS54360B, **8.4 V como máximo**) pasaba a 0.15–0.28 mm de `/24V`, junto a los pads sin montar de R79. Ahora va a 0.38 mm o más.
- **Resultado:** DRC igual que antes (solo los 3 errores conocidos de MOD1), 0 sin conectar y paridad limpia. **BOM, CPL y designadores idénticos byte por byte**; en el Gerber cambian solo las 4 capas de cobre y los barrenos. Revisión independiente en dos rondas: la primera encontró una vía de costura que el paquete sacaba con otra red (§4); ya está corregido y la segunda dio GO.
- **Para el pedido no cambia nada:** son los mismos archivos (`HBOX_v5_Rev6_PROD` y `HBOX_v5_Rev7_PROD`), regenerados. Los pasos siguen en las [instrucciones para Leo](instrucciones-leo-27oct.md). Michelle no tiene que hacer nada en la V5.6 ni en la V5.7.
## 1. Qué estaba mal y por qué importa
KiCad compara cada patrón de clase de red contra el nombre completo de la red, que empieza con «/». Las clases `PWR_HI` y `PWR_MID` tienen cada patrón con y sin diagonal; `HV24` no. Por eso solo `/24V_IN` era HV24.
| Red de 24 V | V5.6 | V5.7 | Se revisaba a |
|---|---|---|---|
| `/24V`, `/IGN_IN`, `/Q6_GATE` | sí | sí | 0.15 mm |
| `/VIN_FUSED`, `/SW_PWRIN`, `/BOOT_PWRIN` | — | sí | 0.15 mm |
| `/SW_FAN`, `/BST_FAN` (buck del ventilador, U15 de la V5.6) | sí | — | 0.15 mm |
A 32 V o menos, IPC-2221 pide de 0.05 a 0.13 mm bajo máscara, así que no era un riesgo eléctrico inmediato. El problema es que la regla de 0.5 mm que el equipo puso después del corto del 23-jul no se aplicaba a esas redes, y nadie lo sabía. En una caja sellada en el puerto, con humedad y sal, lo que más cuenta son los pads expuestos: por ejemplo, los pads sin montar de R79 (V5.7), con `/24V` en un lado y la línea EN en el otro.
## 2. Las reglas nuevas (las mismas de la v6)
- **`.kicad_pro`.** HV24 = `/24V_IN`, `/24V`, `/IGN_IN`, `/Q6_GATE`, `/VIN_FUSED`, `/SW_PWRIN`, `/BOOT_PWRIN`, `/SW_FAN` y `/BST_FAN`. Las que no existen en una tarjeta no atrapan nada; la lista es la misma en las dos. `/SW_FAN` sale de `PWR_MID` (una red, una clase). La separación de la clase queda en 0.3 mm, como en la v6.
- **`.kicad_dru`.** Las reglas F-01 de la v6 en lugar del «HV24 clearance» de 0.5 mm:
- 0.15 mm entre redes que no son HV24;
- 0.2 mm entre redes HV24;
- 0.3 mm de HV24 a lo demás en F.Cu y B.Cu (bajo máscara);
- 0.5 mm de HV24 a lo demás en In1 y In2 (margen contra defectos y CAF, por el corto del 23-jul);
- entre pads del mismo CI (U15) manda la huella del fabricante.
- **Consecuencia que conviene saber:** `/24V_IN` pasa de 0.5 a 0.3 mm en las caras, porque así lo pide F-01. El relleno de GND se acerca 0.2 mm a la entrada (J15, Q6, D18).
## 3. Los arreglos de cobre
### V5.7: 16 errores
![T42b, V5.7: EN de U15 lejos de 24 V](img/2026-10-28_Drogheda_T42b-V57-EN-U15_v1.0.png)
| Dónde | Antes | Con T42b |
|---|---|---|
| **EN de U15** (`/EN_PWRIN`, TPS54360B) junto a C79.1, C35.1 y R79.1 (`/24V`) | 10 puntos a 0.15–0.28 mm | Ruta nueva de 0.3 mm por x = 183.52 y y = 75.05: **≥ 0.38 mm** de `/24V` (y 0.23 mm del pad RT de U15, 0.30 mm de `/VEH5V`). EN no lleva corriente (R78/R79 sin montar) |
| Colita de `/24V` que salía 0.1 mm del pad C79.1 hacia EN | 0.15 mm de EN | Se quitó (estaba dentro del pad) |
| Vías de GND junto al `/24V` de B.Cu (186.0, 74.4) y (187.88, 73.12) | 0.28 y 0.15 mm | Movidas 0.14 y 0.28 mm: **≥ 0.42 mm** |
| Vía de `/IGN_IN` (131.6, 54.75) | 0.40 mm de una vía de GND y 0.30 mm de `/NTC_CELL` (In2) | Vía de GND de 0.6 mm, 0.05 mm a la izquierda: **0.55 mm**. `/NTC_CELL` baja 0.2 mm con 0.3 mm de ancho junto a la vía: **0.60 mm** |
| C80.2 (39 pF, compensación de U15) | Con un solo rayo de relleno: el brazo que llegaba a C78.2 ya no pasa a 0.3 mm de `/SW_PWRIN` | C78.2 a la vía de GND de (192.1, 65.2) y **C80.2 directo a R77.2** (GND), entre los pads de R76 |
| Isla de GND en F.Cu con C12.2, R16.2 y R6.2 (la parte baja del divisor de la ignición) | Al pedir 0.3 mm alrededor de `/IGN_IN`, el cuello que la unía se cierra y queda con una sola vía, en (118.0, 50.0), a 16 mm de R16 (lo vio la revisión independiente; el DRC no lo marca) | **Las mismas 2 vías de costura «libres» que en la V5.6** |
### V5.6: 14 errores y una isla
![T42b, V5.6: buck del ventilador y /24V de In2](img/2026-10-28_Drogheda_T42b-V56-Buck-In2_v1.0.png)
| Dónde | Antes | Con T42b |
|---|---|---|
| `/24V` de C35.1 a la vertical de x = 182.6 (entrada del buck del ventilador, < 0.1 A) | 1.0 mm, a 0.15 mm de C35.2 (GND) | 0.6 mm: **0.35 mm** |
| `/SW_FAN` junto a C75.1 (`/BST_FAN`) | 0.18 mm (entre HV24 se pide 0.2) | La horizontal baja 0.1 mm: **0.28 mm** |
| Vía de GND (179.9, 68.55) | 0.24 mm de `/24V` | 0.15 mm a la izquierda: **0.39 mm** |
| Vía de GND (185.03, 73.155) y su tramo hacia `/24V` | 0.15 mm (3 puntos) | Vía a (185.2, 72.95), **«libre»**: **0.355 mm**, y **tramo nuevo hacia el otro lado**: sin él, KiCad borraba como isla 16 mm² de relleno de GND entre `/SW_FAN` y `/24V` |
| Vías de `/MODEM_LED_MCU`, `/3V3` y `/RGBR_K` junto al `/24V` de In2 | 0.46, 0.39 y 0.495 mm | Movidas 0.12–0.2 mm: **≥ 0.59 mm** |
| Isla de GND en F.Cu con C12.2, R16.2 y R6.2 (la parte baja del divisor de la ignición) | Al pedir 0.3 mm alrededor de `/IGN_IN`, el cuello que la unía se cerraba: «sin conectar» | **2 vías de costura «libres»**, en (136.6, 55.3) y (142.1, 54.65) |
| Vía de `/IGN_IN` | Igual que en la V5.7 | Igual que en la V5.7 |
![T42b: zona de /IGN_IN y tierras](img/2026-10-28_Drogheda_T42b-IGN-Tierras_v1.0.png)
## 4. Cómo se probó
- **Script** `tools/t42b_v5.py` (por omisión, en seco). Antes de escribir:
- revisa que cada tramo y vía sea el esperado;
- todo lo nuevo o movido queda dentro de las reglas con 0.045 mm de sobra como mínimo;
- el cobre fijo (sin zonas) que no cumple con HV24 pasa de 13 a 0 en la V5.6 y de 14 a 0 en la V5.7 (los mismos pares que marca KiCad);
- la conectividad de las redes tocadas no cambia;
- revisa barrenos y orilla.
El resultado es idéntico byte por byte en la nube y en la Mac.
- **DRC** (KiCad 10.0.4, con el relleno guardado y paridad):
- V5.6: 3 errores (los de MOD1, conocidos) y 96 avisos, igual que antes;
- V5.7: 3 errores y 98 avisos, igual que antes;
- en las dos, 0 sin conectar y paridad limpia.
- **Paquete** (Fabrication Toolkit, `tools/fab_package.py`), contra el de `bdda3fd`:
- BOM, CPL y designadores **idénticos byte por byte**;
- máscaras, pasta, serigrafía, contorno y NPTH idénticos;
- cambian las 4 capas de cobre y los barrenos PTH: de 539 a 541 en la V5.6 y de 545 a 547 en la V5.7 (las 2 vías de costura de cada una).
- **La red de cada vía, pista y pad en el Gerber** (`tools/gerber_netcheck.py`, nuevo). La revisión independiente encontró que el paquete de la primera corrida sacaba la vía de costura de (136.6, 55.3) como `/3V3` en las 4 capas, aunque en el PCB es GND. Así, la isla de C12.2, R16.2 y R6.2 quedaba con una sola vía. KiCad le cambia la red a una vía que no es «libre» y no tiene pistas, según el cobre que encuentra junto a ella al armar la conectividad; aquí era el relleno viejo de `/3V3` en In2, porque el paquete se generó antes de guardar el relleno nuevo. El DRC de `kicad-cli` no lo ve. **Arreglo:** las vías de costura nuevas y la vía de GND movida que solo sostiene un tramo (185.2, 72.95) van «libres» (`free`), como las 175 de costura que ya tiene cada tarjeta, y el paquete sale del PCB ya rellenado y guardado. `gerber_netcheck.py` compara contra el Gerber las 397 / 405 vías, ≈ 2 260 pistas y ≈ 840 pads de cada tarjeta: **0 diferencias** en las dos.
- **De dónde sale cada cambio de cobre** (por capa, F.Cu / In1 / In2 / B.Cu: V5.6 52.3 / 95.1 / 51.9 / 31.0 mm²; V5.7 42.5 / 89.4 / 13.7 / 27.8 mm²). Es el relleno de GND que se aparta de las redes de 24 V (de 0.15 a 0.3 mm en las caras y a 0.5 mm adentro; lo más grande es `/IGN_IN` en In1 y `/24V` en In2), el que se acerca a `/24V_IN` en las caras, y lo que rodea a lo editado. La revisión independiente lo midió red por red en el Gerber: todo queda a la regla + 0.25 mm de cobre HV24 o junto a lo editado; el relleno solo crece junto a `/24V_IN`, y los cuellos de relleno que se pierden son de 1.2 mm² o menos, sin pads.
- **Revisión independiente** (otro agente, que no vio mi análisis; 2 rondas). Revisó las reglas, las clases de red, cada arreglo de cobre y el Gerber red por red. 1.ª ronda: **NO-GO** por la vía que salía como `/3V3` y porque el paquete no venía del relleno guardado; además propuso las 2 vías de costura de la V5.7. 2.ª ronda, sobre los archivos que se subieron: **GO**. 0 diferencias de red en vías, pistas y pads; cada red queda en una sola pieza y ningún barreno toca dos redes; F-01 y el piso de 0.15 mm se cumplen en todo el cobre, rellenos incluidos; el relleno guardado es idéntico al del Gerber. Dejó como opcional: 8 vías viejas en la V5.6 y 3 en la V5.7 no son «libres» ni llegan a una pista; hoy salen con su red, y `gerber_netcheck.py` queda como compuerta de cada paquete.
## 5. Lo que sigue
- **Pedido del piloto** (bloqueado por el pago): con `HBOX_v5_Rev6_PROD` y `HBOX_v5_Rev7_PROD` de HBox_PCB `8b0a23a`, siguiendo los mismos pasos. En el visor de JLC no cambia nada que revisar.
- **Las 135/365** llevan los mismos archivos.
- En la v6 las reglas F-01 ya estaban; nada de esto la toca. Para su paquete (G1) se corre también `tools/gerber_netcheck.py`.
- **Para la siguiente revisión, no para el piloto:** con 0.5 mm en capas internas, la ranura que `/IGN_IN` abre en el plano de GND de In1 (116 mm) pasa de 0.6 a 1.3 mm, y por encima cruzan USB y el cristal. A 12 Mbps y con cruces en ángulo recto no se espera nada medible, pero conviene rutear `/IGN_IN` por otro lado. Ojo: la excepción de pads de U15 no se usa (todas sus separaciones son de 0.3 mm o más); se deja igual que en la v6.
*Archivos: HBox_PCB `bdda3fd` (antes) y `8b0a23a` (con T42b). Respaldos de antes en `kicad/_to_delete/t42b/` (no se suben).*