hbox-docs/docs/formularios/banco.html

203 lines
13 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>Acta de diagnóstico en banco — HBOX</title>
<link rel="stylesheet" href="acta.css">
</head>
<body>
<div id="acta"></div>
<script src="flota.js"></script>
<script src="acta.js"></script>
<script>
const corto = v => String(v.continuidad || '').startsWith('Sí');
const enciende = v => String(v.rampa || '').startsWith('C') || String(v.rampa || '').startsWith('D');
const listoParaFlashear = v => v.subido && v.subido('log_blackpill');
Acta.render({
tipo: 'diagnostico-banco',
repetible: true,
tecnicoDesdeUsuario: true,
nombres: { alan: 'Alán Basurto', daniel: 'Daniel Martínez', leo: 'Leo Rodríguez' },
unidades: window.FLOTA,
etiquetaSerie: 'Unidad que estás revisando',
titulo: 'Acta de diagnóstico en banco — HBOX',
subtitulo: 'Helgen Technologies · unidad sobre la mesa, con fuente de banco y multímetro.',
textoOK: 'QUEDA FUNCIONAL',
intro: '<b>Antes de empezar.</b> En una unidad ya desmontada se perdieron la temperatura máxima, '
+ 'la cuenta de recuperaciones y la causa del último arranque: el firmware v3 las guarda en '
+ 'memoria y se borraron al desconectarla. Aquí no vamos a poder probar la historia térmica con '
+ 'datos del equipo — solo con lo que se vea. Lo que sí sale de este banco: si hay corto, cuánto '
+ 'consume, si arranca, si el módem registra, si el GNSS ve cielo y en qué estado está la batería. '
+ 'Procedimiento completo: <a href="../procedimientos/diagnostico-banco/">Diagnóstico en banco</a>.',
secciones: [
{ titulo: '0 · Identificación',
items: [
{ tipo:'fecha', clave:'fecha', req:true, guardaEn:'fecha', txt:'Fecha de la revisión' },
{ tipo:'texto', clave:'maquina_id', rows:'1', guardaEn:'maquina_id',
txt:'¿De qué máquina venía esta unidad?', ph:'RT-ZPMC-20 · HS-WES-62 · FL-JUN-060' },
{ tipo:'radio', clave:'llego', txt:'¿Cómo llegó a la mesa?',
opciones:['Desmontada por nosotros','Desmontada por personal de ICAVE','No sé quién la desmontó'] },
{ tipo:'texto', clave:'antecedente', rows:'2',
txt:'¿Qué se sabe de su falla?', ph:'Dejó de reportar a fines de agosto; se desmontó el 15-sep.' },
{ tipo:'nota', txt:'<div class="peligro"><b>Orden obligatorio:</b> inspección → continuidad → '
+ 'energizado. <b>Nunca energices antes de medir continuidad.</b> Si hay un corto, la fuente '
+ 'lo encuentra quemando algo.</div>' },
] },
{ titulo: '1 · Inspección sin energía',
sub:'Con la unidad desconectada de todo y antes de mover cables.',
items: [
{ tipo:'foto', clave:'f_ext', req:true, etiqueta:'exterior', txt:'Exterior de la caja (varios lados).' },
{ tipo:'foto', clave:'f_int', req:true, etiqueta:'interior', txt:'Interior completo, antes de tocar nada.' },
{ tipo:'radio', clave:'olor', req:true, txt:'¿Huele a quemado o hay partes oscurecidas o derretidas?',
opciones:['No','Sí, leve','Sí, evidente'] },
{ tipo:'foto', clave:'f_dano', etiqueta:'dano', si:v=>String(v.olor||'').startsWith('Sí'), req:true,
txt:'Foto del daño por calor.' },
{ tipo:'radio', clave:'agua', req:true, txt:'¿Agua, marcas de agua, sarro o corrosión verde?',
opciones:['No','Marcas o humedad','Corrosión evidente'] },
{ tipo:'radio', clave:'bateria_fisica', req:true, txt:'Estado físico de la batería',
opciones:['Normal','Hinchada o abombada','Con manchas o fuga','Caliente','La unidad no trae batería'],
aviso:'Hinchada, con fuga o caliente: <b>desconéctala antes de energizar</b> y trabaja sin ella. No la cargues, no la perfores, no viaja en avión.' },
{ tipo:'foto', clave:'f_bat', etiqueta:'bateria',
si:v=>['Hinchada','Con manchas','Caliente'].some(t=>String(v.bateria_fisica||'').startsWith(t)), req:true,
txt:'Foto de la batería, dos ángulos.' },
{ tipo:'check', clave:'wiggle', txt:'Prueba de meneo en cada conector, Dupont y SMA. Anoto abajo lo que esté flojo.' },
{ tipo:'texto', clave:'nota_visual', rows:'2', txt:'¿Qué encontraste?' },
] },
{ titulo: '2 · Continuidad a tierra — antes de energizar',
sub:'Multímetro en ohms, punta negra en el negativo/chasis. La lectura sube despacio: es normal, espera a que se estabilice.',
items: [
{ tipo:'medida', clave:'r_24v', txt:'Entrada 24 V (GX16 pines 1-2)', esperado:'> 10 kΩ', u:'Ω' },
{ tipo:'medida', clave:'r_5v', txt:'Riel de 5 V (salida Mean Well)', esperado:'> 1 kΩ', u:'Ω' },
{ tipo:'medida', clave:'r_3v3', txt:'Riel de 3.3 V', esperado:'> 1 kΩ', u:'Ω' },
{ tipo:'medida', clave:'r_rtk', txt:'Alimentación del simpleRTK2B (riel conmutado)', esperado:'> 1 kΩ', u:'Ω' },
{ tipo:'medida', clave:'v_bat_vacio', txt:'Voltaje de la batería en vacío (desconectada)', esperado:'3.0 – 4.2 V', u:'V' },
{ tipo:'radio', clave:'continuidad', req:true, txt:'¿Alguna lectura se quedó fija entre 0 y 20 Ω?',
opciones:['No, todas suben o están altas','Sí — hay un corto'] },
{ tipo:'nota', si:corto, txt:'<div class="peligro"><b>Hay un corto: no energices.</b> Fotografía la zona, '
+ 'marca la unidad, complétala como FALLA y déjala aparte para enviar a Querétaro. '
+ 'Energizar un corto convierte una reparación en una tarjeta perdida.</div>' },
{ tipo:'foto', clave:'f_corto', etiqueta:'corto', si:corto, req:true, txt:'Foto de la zona donde mediste el corto.' },
] },
{ titulo: '3 · Energizado con rampa de corriente', si:v=>!corto(v),
sub:'Fuente a 24.0 V, límite de corriente 500 mA, sin antenas todavía. Mira el amperímetro los primeros 3 segundos.',
items: [
{ tipo:'medida', clave:'i_pico', txt:'Corriente de arranque (pico)', u:'mA' },
{ tipo:'medida', clave:'i_estable', txt:'Corriente estable a los 60 segundos', esperado:'150 – 400 mA con la etapa RTK encendida', u:'mA' },
{ tipo:'radio', clave:'rampa', req:true, txt:'¿Qué hizo al energizar?',
opciones:[
'A · 0 mA, la fuente no entrega nada',
'B · Se pega al límite y el voltaje se cae (corto)',
'C · 50–150 mA estables, sin LED',
'D · 150–400 mA y el LED parpadea',
'E · Sube despacio y algo se calienta'] },
{ tipo:'nota', si:v=>/^[BE]/.test(String(v.rampa||'')),
txt:'<div class="peligro"><b>Apaga la fuente ahora.</b> Busca con el dorso de la mano qué componente '
+ 'se calienta, tómale foto y no vuelvas a energizar.</div>' },
{ tipo:'foto', clave:'f_calor', etiqueta:'sobrecalentamiento', si:v=>String(v.rampa||'').startsWith('E'), req:true,
txt:'Foto del componente que se calienta.' },
] },
{ titulo: '4 · Rieles', si:enciende,
sub:'Con la unidad energizada y estable.',
items: [
{ tipo:'medida', clave:'v_24', txt:'Entrada 24 V', esperado:'23 – 26 V', u:'V' },
{ tipo:'medida', clave:'v_5', txt:'Riel 5 V (salida Mean Well)', esperado:'4.8 – 5.2 V', u:'V' },
{ tipo:'medida', clave:'v_3v3',txt:'Riel 3.3 V', esperado:'3.20 – 3.40 V', u:'V' },
{ tipo:'medida', clave:'v_rtk_arranque', txt:'Alimentación del simpleRTK2B al arrancar', esperado:'0 V (obligatorio)', u:'V',
aviso:'Si hay 5 V aquí en el instante de arrancar es un <b>defecto</b>: apagado es el estado seguro, la etapa RTK solo debe encender cuando el MCU lo pide.' },
{ tipo:'medida', clave:'v_bat_on', txt:'Batería con la unidad encendida', u:'V' },
] },
{ titulo: '5 · Captura del Blackpill (la principal)', si:enciende,
sub:'USB del Blackpill · 115200 baudios · guardar a archivo · 3 minutos, luego RESET.',
items: [
{ tipo:'archivo', clave:'log_blackpill', etiqueta:'blackpill', req:true,
txt:'Sube el archivo de la captura del Blackpill',
ayuda:'Nómbralo <code>RTK-0NN_blackpill_AAAA-MM-DD.log</code>. Súbelo aunque no entiendas lo que dice.' },
{ tipo:'texto', clave:'linea_boot', rows:'2', txt:'Pega la línea BOOT (dice qué firmware trae)', ph:'BOOT,1240,fw=3.0.3,reset=PIN' },
{ tipo:'texto', clave:'linea_tlm', rows:'3', txt:'Pega una línea TLM ya estabilizada', ph:'TLM,182000,RUN,DEGR,1,11,…' },
{ tipo:'radio', clave:'estado_fw', txt:'¿A qué estado llegó después de 10 minutos con antenas?',
opciones:['RUN con link OK','RUN pero link DEGR o LIMP','Se queda en BOOT','Se reinicia solo una y otra vez','SLEEP'] },
] },
{ titulo: '6 · Captura del módem 4G NTRIP Master', si:enciende,
sub:'Puerto USB "XBEE" del simpleRTK2B Pro · 115200 baudios · 3 minutos desde el arranque.',
items: [
{ tipo:'nota', txt:'<b>Ojo con esta consola:</b> una unidad sana imprime casi lo mismo que una '
+ 'averiada. <b>No prueba</b> que las correcciones lleguen ni que los datos se envíen — eso solo lo '
+ 'dicen el <code>link</code> del Blackpill, un fix ≥4 en el ArduSimple o el tráfico en el servidor. '
+ 'Sirve para saber si el módem enciende, si registra en Telcel y con qué configuración quedó.' },
{ tipo:'archivo', clave:'log_4g', etiqueta:'modem4g', txt:'Sube la captura del módem 4G',
ayuda:'Nómbralo <code>RTK-0NN_modem4g_AAAA-MM-DD.log</code>.' },
{ tipo:'radio', clave:'led_4g', txt:'LED de red del módulo 4G',
opciones:['Parpadeo lento o fijo (registrado)','Parpadeo rápido (buscando, no registra)','Apagado'] },
{ tipo:'texto', clave:'id_estacion', rows:'1', txt:'ID de estación (AS+K) y mountpoint, si pudiste leerlos' },
{ tipo:'texto', clave:'imei_iccid', rows:'1', txt:'IMEI del módem e ICCID de la SIM, si están a la vista' },
] },
{ titulo: '7 · Captura del simpleRTK2B Pro (ArduSimple)', si:enciende,
sub:'USB POWER+GPS · 115200 baudios · antena GNSS CON VISTA AL CIELO (dentro del taller no habrá fix).',
items: [
{ tipo:'archivo', clave:'log_ard', etiqueta:'ardusimple', txt:'Sube la captura de NMEA o el log de u-center',
ayuda:'Nómbralo <code>RTK-0NN_ardusimple_AAAA-MM-DD.nmea</code>.' },
{ tipo:'medida', clave:'sats', txt:'Satélites vistos', esperado:'≥ 8 a cielo abierto' },
{ tipo:'radio', clave:'calidad', txt:'Calidad del fix (sexto campo de $GNGGA, o Fix Mode en u-center)',
opciones:['0 — sin posición','1 — GPS solo, sin correcciones','2 — corregido básico','4 — RTK fijo','5 — RTK flotante'],
aviso:'Un receptor en <b>1</b> con buenos satélites <b>no está roto</b>: dice que las correcciones no le llegan. Eso apunta al módem o al servidor, no al GNSS.' },
{ tipo:'texto', clave:'fw_f9p', rows:'1', txt:'Versión de firmware del ZED-F9P (u-center → UBX-MON-VER)' },
] },
{ titulo: '8 · Reflasheo — solo si ya subiste la captura', si:enciende,
sub:'El flasheo borra la memoria del equipo y cambia el firmware que estaba fallando. Por eso va después de la evidencia, no antes.',
items: [
{ tipo:'nota', si:v=>!listoParaFlashear(v),
txt:'<div class="peligro">⛔ <b>Todavía no puedes reflashear.</b> Sube primero la captura del '
+ 'Blackpill en el paso 5. Sin ella, reflashear destruye la única evidencia del estado en que '
+ 'estaba la unidad.</div>' },
{ tipo:'radio', clave:'reflash', si:listoParaFlashear, txt:'¿Reflasheaste la unidad?',
opciones:['No','Sí, con el binario publicado en Descargas'] },
{ tipo:'texto', clave:'fw_nuevo', si:v=>String(v.reflash||'').startsWith('Sí'), rows:'1',
txt:'Versión que quedó (línea BOOT después del flasheo)', ph:'fw=3.0.3' },
{ tipo:'archivo', clave:'log_post', etiqueta:'post-flasheo', si:v=>String(v.reflash||'').startsWith('Sí'),
txt:'Captura DESPUÉS del flasheo', ayuda:'Las dos capturas juntas son la prueba de si el firmware cambió algo.' },
{ tipo:'radio', clave:'reflash_result', si:v=>String(v.reflash||'').startsWith('Sí'),
txt:'¿Cambió algo?', opciones:['Sí, ahora arranca y se estabiliza','No, repite la misma falla','Empeoró: ya no arranca'] },
] },
{ titulo: '9 · Veredicto',
items: [
{ tipo:'radio', clave:'clasificacion', req:true, guardaEn:'clasificacion', txt:'Clasificación',
opciones:[
'Corto a tierra',
'No enciende, sin corto',
'Enciende pero la etapa RTK no arranca',
'Módem no registra en la red',
'GNSS sin correcciones (fix 1) con módem registrado',
'Batería dañada',
'Daño por calor visible',
'Agua o corrosión',
'Funciona en banco — no se reproduce la falla',
'No está claro'] },
{ tipo:'radio', clave:'accion', req:true, guardaEn:'accion', txt:'Disposición',
opciones:[
'Lista para reinstalar',
'Reflasheada, en observación',
'Se queda en el taller esperando refacción',
'Se envía a Querétaro',
'Baja definitiva'] },
{ tipo:'texto', clave:'observaciones', rows:'4', req:true,
txt:'Cuenta qué viste y qué hiciste',
ph:'Escríbelo como se lo contarías a un compañero. Esto es lo que va a leer ingeniería.' },
] },
]
});
</script>
</body>
</html>