120 lines
11 KiB
HTML
120 lines
11 KiB
HTML
<!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 13-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>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 & 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: respaldo continuo, nunca ciclos de etapa en batería; 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.',
|
||
quien: 'Jesús (pruebas) · Alan y Daniel (campo)',
|
||
docs: [['Manual V5', '../manuales/manual-tarjeta-V5/'], ['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: 'Layout en pasada 2 — NO LISTA para pedir (BAT_PLUS por In1)',
|
||
siguiente: 'Michelle corrige la pasada 2 → Claude revisa pad a pad y genera Gerber/BOM/CPL → paquete a Aldair. Pedido: 113 (con SD-15B). Firmware 0.7.0.',
|
||
quien: 'Michelle (layout) · Claude (auditoría) · Leo (pedido)',
|
||
docs: [['▶ Pasada 2 — correcciones', '../hardware/v56-layout-pasada-2/'], ['Auditoría 13-oct (inglés)', '../hardware/v56-auditoria-layout-13oct/'], ['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: 'Esquemático aplicado (ERC 0); PCB retomado de V5.6 d71098d',
|
||
siguiente: 'Leo coloca y rutea la fuente a bordo (U25, F2) en la zona acordada → Michelle replica las correcciones de V5.6 y cierra → auditoría → pedido 327.',
|
||
quien: 'Leo (fuente) · Michelle (cierre) · Claude (auditoría)',
|
||
docs: [['▶ Guía de layout V5.7', '../hardware/v57-layout-guia/'], ['ECO V5.7 — fuente a bordo', '../hardware/v57-eco-fuente/']] },
|
||
{ v: 'v6', cls: 'v6', badge: 'badge-v6', estado: 'Auditada (28-sep) con plan de corrección — no pedir todavía',
|
||
siguiente: 'Cierre para pedido según «Próximos pasos»: aplicar a P7/P8 la decisión de P12, regla DFM U6, plan de cobre EMC. Pedido 130 + todos los reemplazos. No habrá v6.1.',
|
||
quien: 'Leo · Claude',
|
||
docs: [['▶ Próximos pasos para ordenar', '../hardware/v6-proximos-pasos/'], ['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>
|