hbox-docs/docs/tableros/ingenieria.html

121 lines
12 KiB
HTML
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.

<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Tablero de ingeniería — EinarBoard</title>
<link rel="stylesheet" href="tablero.css">
</head>
<body>
<div class="wrap">
<header class="top">
<div><h1>Tablero de ingeniería — ¿dónde está el hardware?</h1><div class="meta" id="meta">V5.5 · V5.6 · V5.7 · v6 — estado al 16-oct-2026</div></div>
<nav>
<a href="../">← Documentación</a>
<a href="kanban.html">Pendientes</a>
<a class="activo" href="ingenieria.html">Ingeniería</a>
<a href="produccion.html">Producción</a>
<a href="../hardware/">Tarjetas y hardware</a>
<a href="equipo.html">👥 Equipo</a>
</nav>
</header>
<details class="como">
<summary>Cómo se usa</summary>
<ol>
<li>Arriba, una tarjeta por versión de EinarBoard: estado, siguiente paso, responsable y sus documentos. Es texto fijo: cuando cambie una decisión, pide a Leo o a Claude que lo actualice aquí.</li>
<li>En medio, los <b>pendientes de la pista Ingeniería</b>: son los mismos del <a href="kanban.html">tablero de pendientes</a>, filtrados. Puedes moverlos desde aquí.</li>
<li>Abajo, las últimas decisiones con fecha y la filosofía de diseño. Antes de proponer un cambio, revisa que no contradiga una decisión ya tomada.</li>
<li>Para una tarjeta nueva o un cambio de pedido, primero el pendiente, luego el trabajo: así queda el rastro de quién y cuándo.</li>
</ol>
</details>
<div class="versiones" id="versiones"></div>
<section class="bloque">
<h2>Pendientes de ingeniería</h2>
<p class="sub">Pista Ingeniería del tablero. Arrastra o usa «Mover a…»; el historial anota quién lo hizo. <a href="kanban.html">Ver todas las pistas →</a></p>
<div id="kb"></div>
</section>
<section class="bloque">
<h2>Últimas decisiones</h2>
<p class="sub">Lo decidido manda hasta que otra decisión con fecha posterior lo cambie. Fuente: notas del proyecto; detalle en la sección de hardware.</p>
<ul class="decisiones">
<li><b>16-oct</b> — Auditoría de producción V5.6 / V5.7 / v6: <b>ninguna lista para pedir</b>. Corte de 10 s en batería: V5.6/V5.7 lo permiten en hardware, falta el firmware 0.7.0 y el banco. V5.7 sin SD-15B: entrada <b>9–32 V</b> (recomendado D10 → SMBJ33CA). v6: PCB sin actualizar y sin el firmware NTRIP que sustituye al 4G NTRIP Master. Puertos de V5.6/V5.7 con defectos ya resueltos en el esquemático v6 (portarlos: decide Leo). Acelerómetro en las tres. Barrenos de la V5.5 a V5.6/V5.7 con el script T25 (<b>MH4 en 185.2, no 193.2</b>). Hallazgo: límite de entrada del LTC4040 ≈ 1 A en V5.5/V5.6/V5.7 por el sensado de RS1. Recomendado: piloto de 5 V5.6 antes de las 113. <a href="../hardware/auditoria-produccion-16oct/">Auditoría</a> · <a href="../hardware/v56-v57-layout-pasada-3/">Pasada 3</a></li>
<li><b>13-oct</b> — Pedido de <b>570 HBOX</b>: 113 × V5.6 (con SD-15B), 327 × V5.7, 130 × v6; todos los reemplazos futuros en v6. Paquetes de fabricación V5.6 / V5.7 / v6 a <b>Aldair</b> (fabricación/ensamble, rol por confirmar). Caja plástica HBOX: el cable Ethernet no cabe — cambio por definir (pista Mecánica).</li>
<li><b>13-oct</b> — Auditoría del layout V5.6 de Michelle (d71098d): <b>NO LISTA</b> — /BAT_PLUS por In1 (bloqueante), MAIN5V/SYS5V/SW3 por capas internas; las 18 piezas movidas se quedan (opción A). Esquemático V5.7 aplicado con ERC 0 (F2 SMD 3 A, Q10/D10 reusados, fuera U2 y P2, JP1 puenteado). Reparto: <b>Leo</b> coloca la fuente en V5.7; <b>Michelle</b> corrige V5.6 y después toma V5.7. <a href="../hardware/v56-auditoria-layout-13oct/">Auditoría</a> · <a href="../hardware/v56-layout-pasada-2/">Pasada 2</a></li>
<li><b>12-oct</b> — <b>V5.7 = V5.6 + fuente conmutada 24 V → 5 V a bordo</b> (U25 TPS54360B, bloque de la v6), sin SD-15B externa. Proyecto KiCad separado <code>hbox-watchdog-v57</code>; V5.6 y V5.7 conviven. <a href="../hardware/v57-eco-fuente/">ECO V5.7</a></li>
<li><b>09-oct</b> — <b>P12 (sonda NTC) eliminada</b> de V5.6 con R42/C24: redundante y se necesita el espacio. Sin lectura de temperatura de celda en batería (aceptado). Aplica a P7/P8 de la v6.</li>
<li><b>08-oct</b> — Acelerómetro <b>U26 SC7A20TR</b> (I²C 0x18, INT1 → PB9) añadido a V5.6. <b>Regla DFM LTC4040 (U6)</b>: pasta del EP ≤ 50 %, vías tapadas (epoxy filled &amp; capped) o fuera de las ventanas de pasta, X-ray/AOI en U6, lupa en cada tarjeta antes de energizar. Vale para toda revisión, incluida la v6.</li>
<li><b>05-oct</b> — Revisión del bus I²C V5.6 / v6 (direcciones, pull-ups, TMP102 U18 en 0x49).</li>
<li><b>30-sep → 1-oct</b> — V5.6: revisión de modo batería y layout (U4 junto a L6, DzG1 corregido); estado hacia producción.</li>
<li><b>28-sep</b> — v6 auditada con las lecciones de V5.5 y plan de corrección. <b>«No habrá v6.1»</b>: lo que falte se corrige antes de pedir. <a href="../hardware/v6-plan-correccion/">Plan de corrección</a> · <a href="../hardware/v6-proximos-pasos/">Próximos pasos</a></li>
<li><b>27-sep</b> — Requisito V5.6: ciclo de 10 min en batería y mejor manejo térmico. ECO V5.6: LFP de alta temperatura, JP2 2-3, R55 5.6 k → flotación 3.50 V, RS1 10 mΩ, TMP102 U18 0x49. Regla de campo V5.5/V4 con 0.6.0: respaldo continuo en batería, nunca ciclos de etapa en batería. <a href="../hardware/v56-eco/">ECO V5.6</a></li>
<li><b>26-sep</b> — Decisión V5.6: los 500 ArduSimple ya pedidos se quedan (arquitectura con zócalos); nada de rework en tarjetas existentes; buck del módem AP64350 desde SYS5V, MODEM_EN/RST/LED al MCU, lista EMC. Hallazgo: el módem no arrancaba en batería porque el MP1584 (4.5 V mín.) caía en UVLO sobre el riel de 4.6–4.79 V del boost.</li>
<li><b>19/21-sep</b> — Un solo firmware por tarjeta; la versión del firmware no indica la tarjeta: V3 → <code>blackpillrtkcode_v4</code>, V4 → <code>hbox-tarjetaV4_x.y.z.bin</code>, V5 → <code>hbox-v5-bringup_x.y.z.bin</code>. V5.6 necesita 0.7.0 (<code>board_v56.h</code>).</li>
<li><b>22-ago</b> — V5.5 ordenada, 15 pzas (JLC). Auditoría EMC: /SW_BAT 0.3 mm y /BAT_PLUS 0.3–0.5 mm = críticos para la siguiente corrida (origen de la regla «nada de potencia por capas internas»).</li>
</ul>
</section>
<section class="bloque">
<h2>Filosofía de diseño</h2>
<p class="sub">Cinco reglas que explican casi todas las decisiones anteriores. Detalle y documentos en <a href="../hardware/">Tarjetas y hardware</a>.</p>
<ul class="filosofia">
<li><b>Primero la seguridad en campo.</b> La unidad vive en un puerto a más de 45 °C y en batería: en V5.5/V4, respaldo continuo, nunca ciclos de etapa en batería; desde V5.6 el corte de 10 s en batería es requisito, y se prueba en banco antes de usarlo en campo; se mide antes de energizar; una tarjeta con marca de daño no entra a un ensamble.</li>
<li><b>Una etapa probada vale más que una nueva.</b> Los zócalos para ArduSimple y módem se quedan (500 ya pedidos); nada de rework en tarjetas existentes; la fuente a bordo de V5.7 reutiliza el bloque ya auditado de la v6.</li>
<li><b>Redundancia solo cuando un modo de falla la justifica.</b> Por eso salió P12 (NTC redundante, estorbaba) y entró el acelerómetro U26 (detecta golpes y movimiento, que sí nos han fallado).</li>
<li><b>Las reglas de fabricación son órdenes permanentes.</b> LTC4040: pasta ≤ 50 %, vías tapadas, X-ray; ninguna red de potencia por capas internas (lección de V5.5); lupa en U6 antes de energizar. Se aplican a toda revisión, sin excepciones por prisa.</li>
<li><b>Cambios con prueba y rastro.</b> Esquemático por etiquetas y ediciones con script verificadas contra la netlist (ERC 0, paridad 100 %); git en dos pasos (submódulo KiCad y luego Drogheda); una tarjeta por proyecto KiCad (V5.7 separado); «no habrá v6.1»: se corrige antes de pedir, no después.</li>
</ul>
</section>
</div>
<script src="kanban.js"></script>
<script>
const VERSIONES = [
{ v: 'V5.5', cls: 'v55', badge: 'badge-v55', estado: 'En campo — 15 pzas (lote 22-ago), fw 0.6.x',
siguiente: 'Mantener la flota en 0.6.x con respaldo continuo en batería. Sin rework: lo aprendido va a V5.6. Inspeccionar U6 con lupa en cada tarjeta. Medir en una unidad el límite de entrada del cargador (≈ 1 A, auditoría 16-oct §4.3).',
quien: 'Jesús (pruebas) · Alan y Daniel (campo)',
docs: [['Manual V5', '../manuales/manual-tarjeta-V5/'], ['Auditoría 16-oct §4', '../hardware/auditoria-produccion-16oct/'], ['Lecciones V5.5 → v6', '../hardware/v6-revision-lecciones-v55/'], ['Acta de tarjeta V5', '../formularios/v5.html']] },
{ v: 'V5.6', cls: 'v56', badge: 'badge-v56', estado: 'Auditada 16-oct — NO LISTA, cerca: barrenos de la V5.5, sensado de RS1 y detalles (pasada 3)',
siguiente: 'Leo mete los barrenos (script T25) → Michelle pasada 3, parte A → Claude re-audita y genera Gerber/BOM/CPL → piloto de 5 → banco con firmware 0.7.0 → las 108 restantes (con SD-15B).',
quien: 'Michelle (layout) · Claude (auditoría) · Leo (pedido, firmware) · Jesús (banco)',
docs: [['▶ Pasada 3 — V5.6 y V5.7', '../hardware/v56-v57-layout-pasada-3/'], ['Auditoría de producción 16-oct', '../hardware/auditoria-produccion-16oct/'], ['ECO V5.6', '../hardware/v56-eco/'], ['Hoja de datos', '../hardware/v56-datasheet/'], ['Pinout', '../hardware/v56-pinout/']] },
{ v: 'V5.7', cls: 'v57', badge: 'badge-v57', estado: 'Fuente colocada (a7c0116); auditada 16-oct — NO LISTA: pasada 2 sin replicar, U25 sin vías térmicas, barrenos',
siguiente: 'Después de V5.6: Michelle pasada 3, parte B → re-auditoría → 5 prototipos (ECO §6: 9/12/24/32 V, polaridad, temperatura) → pedido 327. Entrada 9–32 V.',
quien: 'Michelle (layout) · Claude (auditoría) · Leo (pedido)',
docs: [['▶ Pasada 3 — parte B', '../hardware/v56-v57-layout-pasada-3/'], ['Auditoría de producción 16-oct', '../hardware/auditoria-produccion-16oct/'], ['ECO V5.7 — fuente a bordo', '../hardware/v57-eco-fuente/']] },
{ v: 'v6', cls: 'v6', badge: 'badge-v6', estado: 'PCB sin actualizar desde el esquemático (70 diferencias, 16-oct) — no pedir todavía',
siguiente: 'Antes de «Actualizar PCB»: marcar los MH «No en el esquemático» y agregar MH4 en (185.2, 90.3). Luego «Próximos pasos» (L-1…L-67), firmware 0.7.x con NTRIP en el MCU, strap de identificación (D8), homologación IFT y piloto de 20 antes de las 130. No habrá v6.1.',
quien: 'Michelle (layout) · Leo · Claude',
docs: [['▶ Próximos pasos para ordenar', '../hardware/v6-proximos-pasos/'], ['Auditoría 16-oct §8', '../hardware/auditoria-produccion-16oct/'], ['Plan de corrección', '../hardware/v6-plan-correccion/'], ['Manual v6', '../manuales/manual-tarjeta-v6/'], ['Plan de cobre', '../hardware/EinarBoard-v6_Plan-de-Cobre_ES.html']] },
];
const el = (t, a, ...k) => { const e = document.createElement(t); if (a) for (const p in a) { if (p === 'html') e.innerHTML = a[p]; else if (p === 'text') e.textContent = a[p]; else e.setAttribute(p, a[p]); } k.forEach(c => c != null && e.append(c)); return e; };
const cont = document.getElementById('versiones');
const contadores = {};
VERSIONES.forEach(x => {
const c = el('div', { class: 'ver ' + x.cls });
c.append(el('h3', null, el('span', { text: 'EinarBoard ' + x.v }), el('span', { class: x.badge, text: x.v })));
c.append(el('div', { class: 'est', text: x.estado }));
c.append(el('div', { class: 'sig', html: '<b>Siguiente:</b> ' + x.siguiente }));
c.append(el('div', { class: 'quien', text: '👤 ' + x.quien }));
const d = el('div', { class: 'docs' }); x.docs.forEach(([t, h]) => d.append(el('a', { href: h, text: t }))); c.append(d);
const cnt = el('div', { class: 'cnt', text: '…' }); contadores[x.v] = cnt; c.append(cnt);
cont.append(c);
});
Kanban.montar(document.getElementById('kb'), {
pista: 'ingenieria', filtros: true,
onCargado: tareas => {
VERSIONES.forEach(x => {
const mios = tareas.filter(t => t.version_tarjeta === x.v && t.estado !== 'hecho');
const bloq = mios.filter(t => t.estado === 'bloqueado').length, venc = mios.filter(t => t.vencida).length;
const a = el('a', { href: 'kanban.html?pista=ingenieria', text: mios.length + ' pendiente(s) abierto(s)' + (bloq ? ' · ' + bloq + ' bloqueado(s)' : '') + (venc ? ' · ' + venc + ' vencido(s)' : '') });
contadores[x.v].innerHTML = ''; contadores[x.v].append(a);
});
}
});
</script>
</body>
</html>