% ================================================================ PAQUETE \section{A $\cdot$ El paquete de fabricación}\label{sec:paquete} \subsection{¿Los Gerber son el cobre que auditamos?} Sí. Cada capa exportada por el Fabrication Toolkit se comparó contra una regeneración hecha hoy con \texttt{kicad-cli} 10.0.4 sobre copias de los mismos archivos. Primero se compararon los comandos Gerber quitando solo los comentarios y atributos X2 (\texttt{\%TF}/\texttt{\%TA}/\texttt{\%TO}, que el Toolkit escribe como \texttt{G04} y \texttt{kicad-cli} como extendidos); después, por tipo de primitiva. \hwtab{\begin{tabular}{@{}L{2.83cm}L{1.89cm}L{1.89cm}L{8.87cm}@{}} \toprule \cab{\cw{Capa} & \cw{V5.6} & \cw{V5.7} & \cw{Resultado}}\\ \midrule F.Mask $\cdot$ B.Mask $\cdot$ F.Paste $\cdot$ B.Paste $\cdot$ F.Silk $\cdot$ B.Silk $\cdot$ Edge.Cuts & idénticas & idénticas & Comando por comando (1319 / 261 / 976 / 5 / 24 702 / 339 / 15 comandos en V5.6).\\ \rowcolor{HelgenMist} PTH.drl $\cdot$ NPTH.drl & idénticos & idénticos & NPTH: 8 barrenos iguales. PTH: iguales una vez normalizada la notación de ranuras (el Toolkit escribe \texttt{G00/M15/G01/M16}, \texttt{kicad-cli} \texttt{G85}; ambas válidas para JLC).\\ F.Cu $\cdot$ In1.Cu $\cdot$ In2.Cu $\cdot$ B.Cu — pads (flashes) y pistas (trazos) & idénticos & idénticos & 1236 / 547 / 547 / 547 flashes y 1564 / 130 / 193 / 377 trazos en V5.6; mismos conjuntos exactos en ambos.\\ \rowcolor{HelgenMist} F.Cu $\cdot$ In1.Cu $\cdot$ In2.Cu $\cdot$ B.Cu — rellenos de zona (regiones) & 0.000 mm$^2$ XOR & 0.000 mm$^2$ XOR & Contra un relleno fresco hecho con \texttt{pcbnew} \emph{con el proyecto cargado} (reglas \texttt{.kicad\_dru} y netclasses). A 20 $\mu$m por pixel no hay un solo pixel distinto.\\ \bottomrule \end{tabular}} \begin{helgennotice}[Hallazgo P-1 (11:30) — el repo guardaba el relleno viejo; el Gerber traía el fresco. Cerrado a las 13:00] Las regiones del Gerber \textbf{no} son las que están guardadas en los \texttt{.kicad\_pcb} del repo: contra el relleno guardado difieren 6.4 mm$^2$ (V5.6 F.Cu), 7.4 mm$^2$ (V5.7 F.Cu) y 9.5 mm$^2$ (V5.7 B.Cu), justo donde la pasada 6 (T34--T37) agregó vías y movió el hilo de sensado. Los scripts T no rellenan zonas; el Toolkit sí (\texttt{AUTO FILL: true}). Por eso el paquete está bien, pero \textbf{el archivo en disco no}: una exportación sin rellenar (o un \texttt{kicad-cli pcb export gerbers}, que no rellena) mandaría cobre de GND encima de la vía de \net{/SYS5V} en (138.7, 117.45) de T35 y de las vías de entrada de RS1 de T34 (figura \ref{fig:relleno}). Esto ya lo vimos en forma de «sin conectar» falsos el 21-oct; hoy se vio en forma de corto. \textbf{Arreglo (Leo, 5 min):} abrir cada tarjeta, \textsf{B}, guardar, \texttt{git commit}. Regla nueva (D-22-3): \emph{los scripts T que agregan o quitan cobre terminan con un rellenado del GUI antes del commit}. \textbf{Hecho a las 13:00} (ver la re-verificación al final de esta sección); falta el commit. \end{helgennotice} \begin{figure}[H]\centering \includegraphics[width=\linewidth]{fig/fig-relleno-viejo.png} \caption{Relleno guardado en el repo (pasada 5) contra el relleno del Gerber (fresco). En rojo, el cobre que tendría el archivo en disco y el Gerber no: pasa encima de la vía de T35 en V5.6 y de la vía de GND de C129 de T37 en V5.7.}\label{fig:relleno} \end{figure} \subsection{Capas, taladros y mínimos contra la capacidad de JLC (4 capas)} \hwtab{\begin{tabular}{@{}L{4.20cm}L{3.06cm}L{3.06cm}L{5.16cm}@{}} \toprule \cab{\cw{Parámetro} & \cw{V5.6} & \cw{V5.7} & \cw{Límite JLC / comentario}}\\ \midrule Contorno & 140.0 × 100.0 mm & 140.0 × 100.0 mm & Igual que V5.5; cabe en el HBOX.\\ \rowcolor{HelgenMist} Capas de cobre & F $\cdot$ In1 $\cdot$ In2 $\cdot$ B & igual & Stackup JLC04161H-7628 escrito en el archivo (T30): 0.035 / 0.0175 / 0.0175 / 0.035 mm, núcleo 1.065 mm, prepreg 7628.\\ Pista mínima & 0.20 mm (3 tramos), 0.25 mm (158) & 0.20 (2), 0.25 (167) & JLC 4 capas: 0.09 mm. Holgura mínima por regla 0.15 mm (DRC limpio).\\ \rowcolor{HelgenMist} Vías & 0.8/0.3 (268) $\cdot$ 0.6/0.3 (118) $\cdot$ 0.8/0.4 (8) $\cdot$ 0.5/0.3 (1) & 268 $\cdot$ 125 $\cdot$ 8 $\cdot$ 1 & Barreno mínimo 0.30 mm (JLC $\ge$ 0.15; las vías de 0.1 mm de \net{/NTC} ya no existen, T30). Anillo mínimo 0.10 mm ($\ge$ 0.13 recomendado por JLC: la 0.5/0.3 es una).\\ NPTH & 3 × 2.75 mm (MH7/9/10 ArduSimple) $\cdot$ 3 × 3.20 (MH4/5/6 placa base; MH4 en (185.2, 90.3)) $\cdot$ 2 × 3.25 (postes del RJ45 J10) & iguales & Los 6 barrenos de la V5.5 de producción, menos MH11 (abrazadera, decisión del 16-oct).\\ \rowcolor{HelgenMist} Ranuras PTH & 13 (conectores) & 13 & Expresadas como ruta; JLC las acepta.\\ Serigrafía & 2 avisos: contorno de MOD1 recortado por el borde; 1 sobre la máscara de MH6 & iguales & Cosméticos.\\ \rowcolor{HelgenMist} Cajetín & «EINARBoard HBOX V5.6», rev 5.6, 2026-10-19 & «… V5.7», rev 5.7 & Correctos (T30).\\ Acabado & \texttt{copper\_finish None} en el archivo & igual & Se elige en el pedido: \textbf{ENIG} (recomendado para QFN de 0.5 mm; HASL con plomo vale si el presupuesto manda).\\ \bottomrule \end{tabular}} \subsection{Pasta y pads térmicos — la condición 1 del pedido} El DFM del 8 de octubre (regla permanente: \texttt{drogheda-dfm-ltc4040-qfn}) nació de los puentes y bolas de soldadura que Leo vio en \refdes{U6} en las V5.5 y V4. La regla pedía pasta $\le$ 50 \% en el pad térmico y \emph{vías fuera de las ventanas de pasta o pedido con Epoxy Filled \& Capped}. Medido sobre el Gerber de hoy: \hwtab{\begin{tabular}{@{}L{2.10cm}L{2.86cm}L{2.29cm}L{2.48cm}L{5.34cm}@{}} \toprule \cab{\cw{Pieza} & \cw{Pad térmico} & \cw{Pasta} & \cw{Vías dentro} & \cw{Consecuencia}}\\ \midrule \refdes{U6} LTC4040 QFN-24 0.5 mm & 2.65 × 3.65 mm & 6 ventanas 0.95 × 0.85 = \textbf{50 \%} & \textbf{3} (0.6/0.3), las tres dentro de ventanas & Sin tapar, la pasta se mete en la vía: la pieza se inclina y puentea a 0.5 mm. \textbf{Pedir vías Epoxy Filled \& Capped + rayos X en U6.}\\ \rowcolor{HelgenMist} \refdes{U7} AP64350 ESOP-8 & 3.2 × 2.5 mm & \textbf{100 \%} (huella easyeda2kicad) & 4 (0.8/0.3) & Paso 1.27 mm: tolera, y la misma opción del pedido lo cubre. Siguiente revisión: pasta al 60 \%.\\ \refdes{U25} TPS54360B HSOP-8 (V5.7) & 2.5 × 3.2 mm & \textbf{100 \%} & 6 (0.8/0.3) & Igual que U7.\\ \rowcolor{HelgenMist} \refdes{U26} SC7A20 LGA-12 & — & 100 \% (pads 0.5 × 0.28) & 0 & Normal.\\ \bottomrule \end{tabular}} \begin{figure}[H]\centering \includegraphics[width=0.92\linewidth]{fig/fig-u6-pasta.png} \caption{\refdes{U6}: pad térmico, ventanas de pasta al 50 \% y las tres vías térmicas dentro de las ventanas, en V5.6 y V5.7. Es la razón de la condición 1 del pedido.}\label{fig:u6pasta} \end{figure} \subsection{BOM y lista de posiciones} \begin{itemize} \item \textbf{Cuadre con el PCB.} V5.6: 247 huellas en el PCB; 226 filas en la CPL y 226 referencias en el BOM; las 21 restantes son exactamente las que deben faltar: \refdes{JP1--JP6}, \refdes{TP1--TP7}, \refdes{MOD1}, \refdes{MH4/5/6/7/9/10} (fuera de BOM y posiciones, T30) y \refdes{R109} (DNP). V5.7: 252 / 229 / 229, con \refdes{R124} y \refdes{R125} (DNP, divisor de EN de U25) además. Ninguna fila sin código LCSC; ningún código distinto entre la propiedad de la huella y el BOM. \item \textbf{Rotaciones.} El Toolkit corrigió, como en la V5.5, las huellas de biblioteca KiCad (U6 QFN 0$\to$90°, Q7/U14 SOIC 0$\to$270°, U16 LQFP 180$\to$90°, U17 SOT-223 0$\to$180°, SOT-23 0$\to$180°, CP\_Elec 180$\to$0°, …). Las huellas \texttt{Drogheda-v6} (easyeda2kicad: \refdes{U7}, \refdes{U25}, \refdes{U26}, \refdes{L22}) y \refdes{D34} (\texttt{D\_SMC}, nuevo) \emph{no} están en su tabla y salen con la rotación de KiCad. Para huellas convertidas de EasyEDA eso es lo correcto (conservan la orientación de JLC), pero \textbf{nunca se ha fabricado con ellas}: condición 2 del pedido, confirmar en el visor. Los diodos SMA/SMB/SOD y las SOT ya pasaron en la V5.5 con la misma convención. \item \textbf{Códigos nuevos verificados en JLC:} \refdes{D34} C85100 = B560C-13-F (5 A, 60 V, SMC); \refdes{F2} C99550 = Littelfuse 0452003.MRL (3 A, 125 V, NANO2 lento); \refdes{L22} C840531 = Bourns SRP1265A-100M (10 $\mu$H, 15.5 A sat., 16.5 m$\Omega$); \refdes{Y4} C32346 = Epson FC-135 (CL 12.5 pF, 70 k$\Omega$); \refdes{U17} C15578 = TLV1117LV33DCYR (Iq $\approx$ 100 $\mu$A, no los 5 mA de un AMS1117); \refdes{U25} C524806; \refdes{U7} C2071691; \refdes{U26} C5126709; \refdes{C129} C19702; \refdes{C130} C1525. Todos «Extended» salvo los básicos conocidos; existencias se confirman al cargar el BOM. \item \textbf{Easy wins de BOM} (sin tocar cobre): \refdes{D10} SMBJ33A C224019 $\to$ \textbf{SMBJ33CA} (bidireccional, misma huella D\_SMB; p.\,ej.\ C8838 Littelfuse o C2688178 — el que tenga existencia); 10 nF 0603 con dos códigos (\refdes{C100/C125/CBST1} C1589 básico y \refdes{CCOMP2} C57112 extendido): unificar en C1589; \refdes{C22} dice «22uF/50V» pero C138687 es 10 $\mu$F/50 V (es la pieza que ya se usó en V5.5: corregir la etiqueta, no la pieza); para las 108 / 322: \refdes{U14} SP3485EN $\to$ THVD1410DR (C2671345, mismo pinout SOIC-8, receptor a prueba de bus abierto y ±16 kV) y \refdes{U15} MAX3232 $\to$ TRS3232E (mismo SOIC-16), como en la v6. \end{itemize} \subsection{Lo mecánico que cambió sin cambiar el contorno} Los conectores que atraviesan la pared del HBOX no se movieron (\refdes{J9}, \refdes{J11} USB-C; \refdes{J10} RJ45; \refdes{P15}/\refdes{P16}; \refdes{H4}; \refdes{P1}). Los JST internos del borde superior sí: respecto a la V5.5, \refdes{P4} (batería) 25 mm en V5.6 y 38 mm en V5.7; \refdes{P6} (ventilador) 18 / 29 mm; \refdes{P8} (LED del panel) 17 / 29 mm; \refdes{P11} (cutoff) 12 / 21 mm; y en V5.7 \refdes{P14} (RGB) pasó del borde derecho al superior (68 mm) y los LED del gauge \refdes{DB1--DB4} al borde derecho (14--21 mm). Nada de esto rompe la tarjeta; lo que hay que revisar con la primera unidad son los \textbf{largos de los arneses} y, si el gauge se ve por la tapa, la \textbf{tapa de la V5.7} (hallazgo P-7). \subsection{Re-verificación de las 13:30 sobre los archivos de las 13:00}\label{sec:reverif} Leo rellenó las zonas, guardó los dos tableros y regeneró los paquetes a las 13:00 (V5.6 \texttt{338ee14b}, V5.7 \texttt{85baca51}; \texttt{HBOX\_v5\_Rev6\_PROD.zip} \texttt{01e1a39d}, \texttt{Rev7} \texttt{7d2fe248}; BOM y CPL con el mismo SHA-256 que en la mañana). Se repitió el método A sobre copias nuevas (\texttt{\_to\_delete/audit-20261022b/}, script \texttt{verify.sh} + \texttt{gcmp\_b.py}): \hwtab{\begin{tabular}{@{}L{7.4cm}L{2.1cm}L{2.1cm}L{4.1cm}@{}} \toprule \cab{\cw{Comparación (F.Cu, In1, In2, B.Cu a 20 $\mu$m)} & \cw{V5.6} & \cw{V5.7} & \cw{Lectura}}\\ \midrule A $\cdot$ relleno guardado en el \texttt{.kicad\_pcb} vs relleno fresco con el proyecto cargado & 0.000 mm$^2$ & 0.000 mm$^2$ & \textbf{P-1 cerrado}: el archivo en disco ya es lo que se fabrica\\ \rowcolor{HelgenMist} B $\cdot$ paquete de las 13:00 vs archivo guardado (sin rellenar) & idéntico & idéntico & El Toolkit y el archivo coinciden\\ C $\cdot$ cobre de las 13:00 vs cobre auditado en la mañana (pads, pistas, rellenos) & idéntico & idéntico & Nada más cambió: 2264 / 396 y 2253 / 403 pistas / vías\\ \rowcolor{HelgenMist} D $\cdot$ paquete 13:00 vs paquete de la mañana: máscaras, pasta, serigrafía, contorno, taladros & idéntico & idéntico & Mismo paquete, con el relleno ya en el repo\\ DRC con \texttt{.kicad\_dru}, relleno y paridad & 3 MOD1 $\cdot$ 0 $\cdot$ 13 PF & 3 MOD1 $\cdot$ 0 $\cdot$ 13 PF & Igual que en la mañana\\ \rowcolor{HelgenMist} BOM y CPL & SHA iguales & SHA iguales & \refdes{D10} sigue como SMBJ33A: la condición 3 sigue viva\\ \bottomrule \end{tabular}} Lo único distinto dentro de los \texttt{.kicad\_pcb}, fuera de los rellenos, es la caché de glifos (\texttt{render\_cache}) de los textos de serigrafía «EINARBoard 5.x» y «www.helgen.tech» en la fuente MADE Evolve Sans: cosmético, porque la serigrafía exportada es idéntica región por región. \textbf{El veredicto de la mañana no cambia.} Si la sesión paralela de \emph{quick wins} toca el BOM o el cobre, se vuelve a correr \texttt{verify.sh} + \texttt{gcmp\_b.py} (5 min) antes de pagar.