203 lines
13 KiB
HTML
203 lines
13 KiB
HTML
<!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>
|