Compare commits

..

2 Commits

5 changed files with 918 additions and 5 deletions

View File

@ -37,7 +37,7 @@ y dejarla flasheada con el firmware de arranque entregado por ingeniería.
| 1 | Fuente de banco 0–30 V con límite de corriente ajustable |
| 1 | Cable USB-C ↔ USB-C (o USB-A ↔ USB-C) **con datos** (no solo carga) |
| 1 | Laptop con **STM32CubeProgrammer** instalado (o `dfu-util` en terminal) |
| 1 | Archivo de firmware: **`hbox-v5-bringup_0.1.0.bin`** (repo: `04-Source-Code/firmware/hbox_v5_bringup/release/`, SHA-256 inicia `1a9a77ae`) |
| 1 | Archivo de firmware: **`hbox-v5-bringup_0.2.0.bin`** — descarga: **https://drogheda.helgen.online/descargas/** (repo: `04-Source-Code/firmware/hbox_v5_bringup/release/`, SHA-256 inicia `8491625d`) |
| 1 | Jumper 2.54 mm para P11 (interruptor de corte) |
| 1 | Lupa o lámpara con aumento |
| — | Hoja de registro (sección 7) |
@ -183,7 +183,7 @@ Solo para tarjetas que pasaron las secciones 1 a 4.
2. Arriba a la derecha, en el selector de conexión elegir **USB**. Pulsar el botón de refrescar;
debe aparecer `USB1`. Pulsar **Connect**.
3. Ir a la pestaña **Erasing & Programming** (icono de flecha hacia abajo, lado izquierdo).
4. **File path** → seleccionar `hbox-v5-bringup_0.1.0.bin`.
4. **File path** → seleccionar `hbox-v5-bringup_0.2.0.bin`.
5. **Start address** = `0x08000000`. Marcar **Verify programming** y **Run after programming**.
6. Pulsar **Start Programming**. Esperar "File download complete" y "Verify… successful".
7. Pulsar **Disconnect**.
@ -192,7 +192,7 @@ Solo para tarjetas que pasaron las secciones 1 a 4.
```bash
dfu-util -l # debe listar [0483:df11]
dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.1.0.bin
dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.2.0.bin
```
### 5d. Verificación después del flasheo
@ -206,7 +206,7 @@ dfu-util -a 0 -s 0x08000000:leave -D hbox-v5-bringup_0.1.0.bin
| **D17** (LED azul) + LED de panel en P8 (si hay) | **Parpadean** a 1 Hz (MCU ejecutando el firmware) |
| **DB1 → DB4** (LEDs del indicador de batería) | Se encienden **en secuencia** una vez, luego se apagan; después R, G, B en P14 si hay LED RGB conectado |
| Laptop | Aparece un **puerto serie** nuevo ("STMicroelectronics Virtual COM Port" / `usbmodem…`) |
| Terminal serie a **115200 baud** | Encabezado `hbox-v5-bringup 0.1.0`, luego líneas `[PASS]` / `[FAIL]`, y al final **`>>> BOARD OK`** |
| Terminal serie a **115200 baud** | Encabezado `hbox-v5-bringup 0.2.0`, luego líneas `[PASS]` / `[FAIL]`, y al final **`>>> BOARD OK`** |
3. Si el terminal se abrió tarde y no se vio el reporte: teclear **`r`** en el terminal → repite
todas las pruebas (y vuelve a encender los LEDs en secuencia).

View File

@ -0,0 +1,526 @@
---
tags: [project-drogheda, testing, halt, environmental, hbox, rig]
project: Project Drogheda
author: Helgen CTO
date: 2026-09-17
status: Draft for review
supersedes: none
---
# DIY Environmental Test Rig — 60 °C + Vibration + Impact for HBOX
**Question asked (Leo, 17-Sep):** can we build a cheap, off-the-shelf heat chamber
with vibration and impact that reproduces crane service conditions for the HBOX?
**Answer: yes.** Target scope agreed: 1–2 units in the chamber, self-declared
profile-shaped results (measured and logged, not calibration-traceable),
budget band **$10k–$30k MXN**. The design below lands at **~$22k MXN**
with a **~$14k MXN** stripped variant, buildable in the Querétaro shop in
**2–3 weeks** of part-time work.
The single most important design decision is in §2: **measure the real crane
environment before building anything**, using the accelerometer that is already
on the v6 board. That step costs nothing and is what turns this from a
"shake it and see" box into something we can put in a report and show ICAVE.
---
## 1. What we are actually trying to catch
We are not trying to certify the HBOX. We are trying to reproduce, in a week on
a bench, the failure modes that took months to appear at ICAVE, TIMSA and LCT:
| Failure mode | Provoked by | Evidence we already have |
|---|---|---|
| Solder joint / pad cracking on heavy parts (L22, U25, electrolytics, the GX16 entry) | Vibration + thermal cycling | Generic, but v5.5 has tall inductors and a 100 µF/50 V can |
| Connector backout / intermittent (P1 Phoenix, U.FL pigtails, GX16) | Vibration + impact | U.FL rated ~30 mating cycles; field units were hand-wired |
| Screw / standoff loosening, enclosure resonance | Vibration | ASA case in a sealed ABS cabinet |
| Battery charge stall and hot-pause at temperature | 60 °C soak | **Confirmed**: `RNTB` = 10 k puts the LTC4040 hot-pause at ≈ +42 °C (B3380). Port ambient ~45 °C. See `Battery-Chemistry-HighTemp v1.0` |
| Modem brownout / boot-loop under load at temperature | 60 °C soak + LTE TX burst | 10-Ago RCA, LTC4040 PFI 4.60 V trip |
| Firmware thermal policy bugs (fan, `BAT_CRITICAL`, watchdog) | 60 °C soak | fan-policy v3 doc, and v6 still has open firmware items |
| GNSS TCXO drift / fix loss hot | 60 °C soak | not yet characterised |
Note the asymmetry: **most of our known failures are thermal, not mechanical.**
The heat chamber is the part that earns its money immediately. Vibration and
impact are the insurance policy for the 250-unit rollout, where a 1 % mechanical
failure rate is 2–3 truck rolls to Veracruz.
That argues for building the thermal chamber first (§4) and the mechanical stage
second (§5–6). They are separable and the chamber is useful on day one.
---
## 2. Step zero: measure the crane, don't guess it
**Do this before buying a single part.**
The published standards a crane-mounted controller would normally be judged
against are all borrowed from adjacent industries and none of them is
"port crane":
- **IEC 60068-2-6** (Test Fc, sinusoidal sweep) — the generic industrial
severity is a constant-displacement leg then a constant-acceleration leg,
e.g. 10–150 Hz, 0.35 mm / 5 m·s⁻², 1 oct/min, 10–20 sweep cycles per axis.
Toradex, for example, runs 10–55 Hz at 0.54 mm and 10–300 Hz at 39 m·s⁻².
- **IEC 61373 Cat 1 Class B** (railway, equipment inside a case on the car body)
— the closest analogue in spirit: low-level random 5–150 Hz for function,
plus a 5 h/axis simulated-long-life run.
- **IEC 60068-2-27** (Test Ea, shock) — half-sine severities of
15 g / 11 ms, 30 g / 18 ms, 30 g / 11 ms, 50 g / 20 ms, typically
200–1000 shocks per direction over 3 axes.
Picking one of these off the shelf would be guessing. We don't have to guess:
> **EinarBoard v6 carries U26 = SC7A20TR (LIS3DH-compatible, I²C 0x18,
> INT1 → PB9).** Firmware work for `$PHLG` vibration fields is already an open
> item in the v6 brief. Finish that item first, flash one unit, mount it on a
> live crane at ICAVE for 5–7 working days, and log raw XYZ at 400 Hz ODR in
> bursts (e.g. 10 s every 5 min, plus a triggered burst on INT1 over threshold).
From that log we get, for free:
1. the real **PSD** — where the energy actually sits (expect < 50 Hz: gantry
travel over rail joints, trolley accel/decel, hoist, structural modes);
2. the real **shock spectrum** — container landing and twistlock events, which
is what "impact on a crane" actually means;
3. the **duty cycle** — how many shock events per shift, which sets how many
shocks the rig has to deliver to represent a year of service;
4. a defensible sentence for the report: *"the rig reproduces the 95th-percentile
measured field environment at ICAVE, ×N acceleration factor."*
That sentence is worth more to a client than "we ran IEC 60068-2-6."
**Fallback if the field log slips:** build to **5–60 Hz, 0.5 g rms broadband,
peaks to 2 g**, plus **15 g / 11 ms half-sine shock**. Those are the numbers
sized throughout this document and they are defensible as a conservative
industrial-vehicle envelope.
---
## 3. Architecture
Three subsystems on one frame. The key trick is that **the hot box rides on the
shaker** rather than the shaker living inside the heat — a 3600 rpm motor,
its bearings and a VFD do not belong in a 60 °C oven.
```
┌─────────────────────────────┐
│ HOT BOX (40×40×40 useful) │
│ ┌───────┐ ┌───────┐ │ ← 50 mm rockwool,
│ │ HBOX │ │ HBOX │ │ 3 mm alu liner
│ │ DUT1 │ │ DUT2 │ │
│ └───────┘ └───────┘ │ ← DUTs on the SAME
│ PTC heater + circ. fan │ bracket the crane uses
└──────────────┬──────────────┘
══════════════╪══════════════ ← 12 mm alu platen
║ │ ║
[spring] [ECC] [spring] ← VIBRATION MODE:
║ motor ║ 4 soft springs, fn ≈ 5 Hz
══════╩═══════════════╩══════ ← steel base frame, floor-bolted
▲ SHOCK MODE: springs swapped
│ 4× linear shaft + SC16UU for Shore-60A pucks, platen
│ (guided drop, 25–55 mm) lifted and released
```
Service loop for mains + thermocouples + DUT harness enters the moving platen
through a slack silicone-jacketed loop with a strain-relief anchor on both ends —
this is the #1 thing that breaks on rigs like this.
**Mode switching is a 20-minute job** (unbolt 4 springs, bolt in 4 pucks). Do not
try to do vibration and shock simultaneously; the pad stiffness requirements are
in direct conflict (see §6).
---
## 4. Thermal stage — 60 °C
### Sizing
Steady-state loss through 50 mm rockwool (k ≈ 0.040 W·m⁻¹·K⁻¹) on a 0.50 m cube,
ΔT = 45 K worst case (15 °C shop morning → 60 °C):
```
Q_cond = k·A·ΔT/t = 0.040 × 1.22 m² × 45 / 0.050 ≈ 44 W
× 3 for leakage, cable penetrations, door seal, thermal bridges ≈ 130 W
```
Pull-up dominates the sizing, not steady state. A 10 kg aluminium platen +
5 kg of DUT + fixture raised 35 K is **455 kJ**:
| Pull-up time | Power for the thermal mass alone |
|---|---|
| 15 min | 506 W |
| 20 min | 379 W |
| 30 min | 253 W |
**Specify 600 W** (2 × 300 W PTC fan-heater modules). That gives ~25 min to
setpoint with margin, and the PID will spend most of the soak at 20–25 % duty.
PTC elements are the right choice over nichrome coils or cartridge heaters: they
self-limit, they come as a sealed module with the fan integrated, and they cannot
run away if the fan stops.
### Control and — more important — safety
Two independent layers. This is not optional.
1. **Control loop:** REX-C100 PID → SSR-40DA → heaters. Type-K thermocouple in
the return air stream, *not* touching a DUT.
2. **Independent over-temperature cutout:** a **KSD301 85 °C normally-closed
thermostat** wired in series with the coil of a **mechanical contactor** that
feeds the heaters. The dominant failure mode of an SSR is **shorted on**, and
when that happens the PID has no authority at all. The contactor is the only
thing between a stuck SSR and a fire in an unattended overnight soak.
3. Plus: a 10 A breaker, a metal control enclosure, and PE bonded to the alu liner.
Log independently of the PID: 2 spare type-K probes (one at each DUT surface,
one in the air) into a cheap 2–4 channel USB/SD logger, so the report has a
measured temperature trace rather than "the display said 60."
### Materials
- **Insulation: rockwool board, not EPS/XPS.** EPS is rated ~75 °C and softens
and outgasses long before that near a heater; rockwool is non-combustible and
costs about the same. Polyiso is also fine but rockwool is safer next to a
600 W element.
- **Liner: 3 mm aluminium or a stainless steamer-pan shell.** Needed both as a
fire barrier and to stop the insulation from shedding fibres onto the DUTs.
- Door: piano hinge + silicone oven gasket + two over-centre latches.
### 🔴 Battery hazard — read before the first soak
The HBOX contains a lithium pack. A 60 °C ambient plus internal self-heating plus
LTE TX bursts puts cells above their charge window, and per
`Battery-Chemistry-HighTemp v1.0` the LTC4040 already hot-pauses at ≈ +42 °C with
the current `RNTB` = 10 k.
- Run the **first** soaks with the pack fitted but the charger inhibited, and a
thermocouple taped to the pack.
- **Never leave the first soak of a new build configuration unattended.**
- Keep a Class-D extinguisher or a bucket of dry sand and a welding blanket at
the rig. Not a CO₂ extinguisher.
- If we move to high-temp LFP 26650, re-baseline everything — LFP is the whole
reason 60 °C becomes a *reasonable* soak rather than a destructive one.
Useful side effect: **this rig is the cheapest way to prove the RNTB → 5.6 k +
LFP decision** before committing it to the 30-unit BOM.
---
## 5. Vibration stage
### Mechanism choice
**Rotating eccentric mass on soft springs.** It is the only mechanism that gives
useful force at 5–60 Hz for four figures of pesos. An electrodynamic shaker
(§5.4) is better but is a Phase 2 upgrade.
Moving assembly budget: alu platen 12 mm (~5 kg) + hot box shell and insulation
(~4 kg) + heaters and fixture (~2 kg) + 2 DUTs (~5 kg) ≈ **16 kg**.
### The honest limitation — read this before believing any number below
A fixed eccentric on a soft-mounted mass produces **constant displacement**,
so acceleration rises as **f²**:
| m_e·e | peak displacement | a @ 10 Hz | a @ 30 Hz | a @ 60 Hz |
|---|---|---|---|---|
| 2 g·m | 0.12 mm | 0.05 g | 0.45 g | 1.81 g |
| 5 g·m | 0.31 mm | 0.13 g | 1.13 g | 4.53 g |
| 10 g·m | 0.62 mm | 0.25 g | 2.26 g | 9.05 g |
| 20 g·m | 1.25 mm | 0.50 g | 4.53 g | 18.1 g |
You cannot hold a flat 0.5 g across 5–60 Hz with one weight setting. Anyone who
tells you their eccentric rig "runs IEC 60068-2-6" either has closed-loop
amplitude control or is not measuring.
**What we do instead — banded sweeps with a weight change between bands:**
| Band | Frequency | Motor RPM | Eccentric setting m_e·e | Achieved a |
|---|---|---|---|---|
| A | 5–15 Hz | 300–900 | ~20 g·m (400 g @ 50 mm) | 0.1 → 1.1 g |
| B | 15–40 Hz | 900–2400 | ~5 g·m (100 g @ 50 mm) | 0.3 → 2.0 g |
| C | 40–80 Hz | 2400–4800 | ~1.5 g·m (30 g @ 50 mm) | 0.9 → 3.8 g |
> ⚠ Band C overspeeds a 60 Hz motor to 80 Hz on the VFD. Check the motovibrador's
> rated maximum centrifugal force and bearing speed before doing this, and
> de-rate the weights accordingly — the force the bearings see scales as f² too.
> If the datasheet won't allow it, stop band C at 60 Hz and use Option V3 (BLDC)
> for anything above.
Each band is swept at 1 octave/min, several cycles, and **the accelerometer logs
what actually happened**. The report states measured levels per band, which is
honest and still perfectly good at finding cracked joints.
### Suspension
Soft springs so the platen floats above its own suspension resonance and the
bench does not get shaken:
| Target fn | k total | per spring (×4) | static deflection |
|---|---|---|---|
| 4 Hz | 10.1 kN/m | 2.5 kN/m | 15.5 mm |
| **5 Hz** | **15.8 kN/m** | **4.0 kN/m** | **9.9 mm** |
| 6 Hz | 22.7 kN/m | 5.7 kN/m | 6.9 mm |
Pick **fn ≈ 5 Hz** (4 N/mm springs). Note this means band A starts near the
suspension resonance — expect amplification there and **do not dwell at 5–7 Hz**
until you have watched the accelerometer trace.
### Drive options
- **Option V1 (recommended):** 3-phase motovibrador 0.18–0.25 kW with adjustable
half-moon counterweights + **VFD 0.75 kW, 220 V 1-ph in / 3-ph out**. Smooth
0–80 Hz, ramps programmable, weights adjustable by design. ~$5,400 MXN.
- **Option V2 (cheap):** 110 V 100 W single-phase vibrating motor
(VEVOR-class, 3600 rpm) on a phase-angle dimmer. Works, but speed regulation
under load is poor and the eccentric is often not adjustable. ~$2,000 MXN.
Acceptable for the stripped build.
- **Option V3 (reach 80–200 Hz):** RC outrunner BLDC + 80 A ESC + servo tester,
eccentric disc on the shaft. Spins to 10 000+ rpm for ~$1,200 MXN. Crude but
it is the only cheap way to excite PCB-level resonances (typically 150–300 Hz).
### 5.4 Phase 2 upgrade (optional, ~$6k MXN) — the woofer shaker
A 15" pro-audio woofer, its voice coil coupled to a light fixture, driven by a
class-D amp from a PC sound card, gives genuine **closed-loop swept sine and
random 20–200 Hz** with the accelerometer as the control sensor. Force is
modest (~100 N, so ~2 g on a 5 kg light fixture — the hot box is too heavy for
it), but it is the only sub-$10k way to run a real controlled profile.
Worth doing later for bare-PCBA resonance search; not needed for v1.
---
## 6. Impact / shock stage
A guided drop table. The platen is lifted a set height on four linear shafts and
released onto elastomer pucks. Pulse shape is a clean half-sine; peak g and
duration are set by drop height and puck stiffness, and both are *measured*, not
assumed.
For the **15 g / 11 ms** target on the 16 kg platen:
```
Δv = (2/π)·a·T = 0.6366 × 147.2 m/s² × 0.011 s = 1.03 m/s
```
| Rebound | Impact velocity | **Drop height** |
|---|---|---|
| 0 % | 1.03 m/s | 54 mm |
| 30 % | 0.79 m/s | 32 mm |
| 50 % | 0.69 m/s | 24 mm |
**Pad stiffness required: k = m·π²/T² = 1.31 MN/m**, i.e. 326 kN/m per puck
across four. With Shore 60A rubber (E ≈ 4 MPa) 25 mm thick that is a **51 mm
diameter puck**; Shore 70A (E ≈ 6 MPa) gives 42 mm. Buy an assortment of
30/40/50 mm pucks in 60A and 70A and tune empirically against the accelerometer
trace — this takes an afternoon.
> ⚠ The puck diameters above use k = E·A/L, which **under-estimates** real rubber
> in compression: a bonded or friction-constrained puck is stiffened by its shape
> factor, often by 2–4× for a squat geometry. Expect the pucks you actually need
> to be **smaller or softer** than the table says. Treat those numbers as the
> starting point of the tuning, not the answer.
Other severities for reference, same rig:
| Severity | Δv | Drop height (30 % rebound) | Pad k |
|---|---|---|---|
| 3 g / 30 ms (gentle, ≈ IEC 61373 Cat 1) | 0.56 m/s | 10 mm | 0.18 MN/m |
| 15 g / 11 ms | 1.03 m/s | 32 mm | 1.31 MN/m |
| 30 g / 11 ms | 2.06 m/s | 128 mm | 1.31 MN/m |
| 30 g / 18 ms | 3.37 m/s | 343 mm | 0.49 MN/m |
Everything up to 30 g / 11 ms is comfortably inside a 300 mm shaft travel.
Lift by hand with a lever and a detent for v1; motorise with a cam and a
geared motor later if we want 1000-shock endurance runs.
**Axes:** rotate the DUT in its bracket rather than tipping the table. Three
orthogonal orientations, N shocks each, per §2's measured duty cycle
(fallback: 100 per direction).
---
## 7. Instrumentation
| What | Sensor | Why |
|---|---|---|
| Rig control/reference vibration | **ADXL355** (±8 g, 20-bit, SPI, low noise) on the platen | This is the sensor the report quotes. Mount it rigidly to the platen, not the box |
| Shock peaks | **ADXL1002** (±50 g, 11 kHz BW, analog) | The ADXL355 will clip and alias on a 15 g / 11 ms pulse |
| DUT-internal vibration | **U26 SC7A20** already on the v6 board | Free, and it cross-checks the field log from §2 with the rig — that correlation *is* the validation of the rig |
| Temperature | 3 × type-K + the DUT's own `tair` (SHT40), `tntc`, `tbat` (TMP102) | Already in `$PHLG` |
| DUT health | `$PHLG` telemetry over RS-232/RS-485 out of the chamber, logged continuously | Pass/fail evidence |
Logger: Teensy 4.0 or Pi Pico → SD at ≥2 kHz for the shock channel. Keep the
logger *outside* the hot box.
**Pass/fail is defined on `$PHLG`, not on "it still turns on":** no GNSS fix
loss > N s, no modem re-registration, no watchdog reset, no `cflt` charge fault
that does not clear, no drift in `C/N₀` beyond X dB. Define the thresholds
before the first run, not after.
---
## 8. BOM and budget (MXN, Sep-2026 street prices, ±25 %)
### Thermal stage
| Item | Qty | Est. |
|---|---|---|
| Aluminium sheet 3 mm + angle frame (liner + door) | — | 1,800 |
| Rockwool board 50 mm, ~2 m² | — | 700 |
| PTC fan-heater module 220 V 300 W | 2 | 700 |
| High-temp circulation fan, metal blade | 1 | 400 |
| PID kit: REX-C100 + SSR-40DA + type-K probe | 1 | 450 |
| KSD301 85 °C cutout + mechanical contactor + 10 A breaker | 1 | 500 |
| Spare type-K probes + 4-ch SD/USB temp logger | 1 | 600 |
| Mains wiring, control enclosure, IEC inlet, silicone glands, oven gasket, latches | — | 900 |
| **Subtotal** | | **6,050** |
### Vibration stage
| Item | Qty | Est. |
|---|---|---|
| Motovibrador 3-ph 0.18–0.25 kW, adjustable weights | 1 | 3,500 |
| VFD 0.75 kW 220 V 1-ph → 3-ph | 1 | 1,900 |
| Aluminium platen 12 mm, 400×400 mm | 1 | 2,200 |
| Compression springs ~4 N/mm + guide cups | 4 | 600 |
| Steel base frame (PTR 2", welded, floor-anchored) | 1 | 1,400 |
| Guarding: steel mesh + polycarbonate window, E-stop | 1 | 1,200 |
| Fasteners, Loctite 243, service-loop cable + strain relief | — | 500 |
| **Subtotal** | | **11,300** |
### Impact stage
| Item | Qty | Est. |
|---|---|---|
| Linear shaft 16 mm × 300 mm + SC16UU bearings | 4 + 8 | 1,600 |
| Lift lever, detent, release latch, shaft supports | 1 | 900 |
| Rubber puck assortment, Shore 60A/70A, 30/40/50 mm | — | 500 |
| **Subtotal** | | **3,000** |
### Instrumentation
| Item | Qty | Est. |
|---|---|---|
| ADXL355 breakout | 1 | 1,100 |
| ADXL1002 breakout (shock channel) | 1 | 700 |
| Teensy 4.0 + SD + protoboard + wiring | 1 | 800 |
| **Subtotal** | | **2,600** |
### Total
| | MXN |
|---|---|
| Thermal | 6,050 |
| Vibration | 11,300 |
| Impact | 3,000 |
| Instrumentation | 2,600 |
| Subtotal | **22,950** |
| Contingency 15 % | 3,450 |
| **Total** | **≈ 26,400** |
### Stripped variant — ≈ $14,000 MXN
Drop to: 110 V 100 W vibrating motor on a dimmer instead of motovibrador + VFD
(−3,500), hand-built wooden outer box with rockwool and alu liner instead of a
folded alu shell (−1,000), 10 mm steel plate instead of alu tooling plate
(−1,200), ADXL345 only, no ADXL1002 (−1,400), no formal guarding beyond a
polycarbonate lid and E-stop (−700), reduced contingency.
**Do not strip:** the independent thermal cutout + contactor, the E-stop, the
reference accelerometer, or the guarding around the rotating mass. Those four
are the difference between a test rig and an incident.
---
## 9. Build sequence
| Week | Deliverable | Gate |
|---|---|---|
| 0 | Finish the `$PHLG` vibration fields + SC7A20 driver (already an open v6 item); flash one unit; ship to ICAVE | Firmware logs XYZ bursts to SD/telemetry |
| 1 | Field log running on a live crane, 5–7 days. **In parallel:** build the thermal chamber | Chamber holds 60.0 ± 1.0 °C for 4 h with the door shut and the cutout proven by test |
| 2 | Derive the real PSD + shock spectrum from the field log → freeze the rig target profile. Build platen, base frame, suspension, guarding | Bare platen sweeps 5–80 Hz, accelerometer trace logged and sane |
| 3 | Drop-table conversion; tune pucks to hit 15 g / 11 ms ± 20 % | Three consecutive pulses within tolerance |
| 4 | First full campaign: 2 units, one control | Report |
**Do not skip the "bare platen" and "empty chamber" commissioning runs.** Half
the problems in a rig like this are the rig's own resonances and hot spots, and
you want them characterised before a DUT is in there confusing the picture.
---
## 10. Test campaign v1 (proposed)
Two units. **DUT-A gets everything; DUT-B is the control and only gets the
thermal soak** — so that if something breaks, we know whether it was heat or
mechanics. Both fully instrumented, both powered and transmitting throughout.
1. **Baseline** — 1 h at 25 °C, full `$PHLG` logging, GNSS fix + NTRIP + LTE.
Record C/N₀, fix type, modem RSSI, `tbat`, `cflt`. This is the reference.
2. **Thermal soak** — ramp to 60 °C over 30 min, hold 8 h, with LTE TX active.
Then off, cool to ambient, repeat ×3 (3 cycles). Watch for: charge stall,
modem re-registration storms, fan policy behaviour, watchdog resets,
GNSS C/N₀ drift.
3. **Hot vibration** — at 60 °C, bands A/B/C per §5, 10 sweep cycles each,
in the Z axis first (crane deck is dominantly vertical), then X, then Y.
4. **Hot shock** — still at 60 °C, 100 half-sine pulses per direction ×
3 orientations at the measured field severity (fallback 15 g / 11 ms).
5. **Post-test** — repeat step 1 verbatim and diff against the baseline.
Then open both units: visual + X-ray-by-eye of L22, U25, the 100 µF can,
the GX16 entry and every connector; torque-check every screw; re-seat and
re-measure the U.FL pigtails.
The diff in step 5 is the deliverable. "Nothing visibly broke" is not a result;
"C/N₀ fell 2.1 dB and never recovered" is.
---
## 11. What this rig will NOT give you
State this plainly in any client-facing use of the results:
- **No traceability.** No calibrated accelerometer, no accredited lab, no
certificate. Measurements are self-declared with a commercial MEMS reference.
- **No closed-loop profile control.** The eccentric produces a measured
displacement-limited sweep, not a controlled constant-g or PSD-shaped profile.
- **Single-axis at a time**, not simultaneous triaxial.
- **No cold, no humidity, no salt fog.** Ports are humid and saline; that is a
separate (and for us, probably more relevant) test than cold.
- **Not a substitute for certification** if a client ever demands IEC/EN
compliance. It *is* a legitimate pre-screen that makes a paid lab run far more
likely to pass first time — which is where it saves real money.
---
## 12. Open decisions for Leo
1. **Green-light step zero?** The field-log firmware is already on the v6
open-items list; this just prioritises it. Nothing else should be bought
until that log exists.
2. **60 °C or 70 °C?** 60 °C is the stated target and matches port ambient +
solar gain in the cabinet. But the nested ASA-in-ABS heat trap from the June
RCA is what actually cooks the unit — if we have a measured internal cabinet
temperature above 60 °C, the chamber should be sized for that instead. The
design above has headroom to ~75 °C; the only change is insulation thickness.
3. **Battery in or out for the first campaign?** Recommend: in, charger
inhibited, pack instrumented. Revisit once the LFP decision lands.
4. **Who builds it?** This is ~2 weeks of shop time competing with the
ICAVE/Lázaro assembly finishing end of September. It may be worth waiting
until after the first-week-of-October shipment.
5. **Stripped ($14k) or full ($26k)?** Recommend full — the VFD and the
adjustable-weight motovibrador are what make the vibration stage
*repeatable*, and repeatability is the whole point.
---
## References
- IEC 60068-2-6 — Test Fc, sinusoidal vibration
- IEC 60068-2-27 — Test Ea, mechanical shock (half-sine severities)
- IEC 60068-2-64 — Test Fh, broadband random vibration
- IEC 61373 — Railway rolling stock, shock and vibration, Cat 1 Class B
- Internal: `03-Architecture-Hardware/2026-09-09_Drogheda_Battery-Chemistry-HighTemp_v1.0.md`
- Internal: `03-Architecture-Hardware/2026-08-24_Drogheda_EinarBoard-v6_GNSS-4G-Integration_Design-Brief_v1.0.md`
- Internal: `06-Testing-Validation/RCA-2026-06-field-failures.md`
- Internal: `06-Testing-Validation/2026-08-18_Drogheda_FW-v3.0.3_Fan-Policy_Bench-Test_v1.0.md`

View File

@ -0,0 +1,211 @@
---
title: HBOX v5 — Prueba de módulos (simpleRTK2B Pro y 4G NTRIP Master) e integración RTK antes del ensamble
tags: [project-drogheda, hardware, hbox, v5, ardusimple, 4g, ntrip, testing, procedimiento]
project: Project Drogheda
author: Helgen Technologies
date: 2026-09-17
version: 1.0
status: ACTIVO — se aplica a cada módulo antes de asignarlo a una unidad
audience: técnicos de banco
---
# HBOX v5 — Prueba de módulos e integración RTK (antes del ensamble)
**Objetivo:** que ningún módulo llegue al ensamble sin haber demostrado que funciona **solo** y **en
pareja**: cada simpleRTK2B Pro obtiene fix GNSS, cada 4G NTRIP Master se registra en la red, y la
pareja RTK + 4G alcanza **RTK FIX** con correcciones NTRIP. Todo queda registrado en las actas
del sitio (`https://drogheda.helgen.online` → Actas).
**Duración estimada:** módulo RTK 10 min · módulo 4G 10 min · integración 15–30 min (depende del cielo).
> ⛔ **REGLA 1 — Un acta por módulo, con su número de serie.** No se prueba "un lote"; se prueba
> RTK-010, 4G-006, uno por uno.
>
> ⛔ **REGLA 2 — Sin EinarBoard en estas pruebas.** El simpleRTK2B se alimenta por su propio USB y el
> módulo 4G va en el zócalo XBee del simpleRTK2B. La tarjeta EinarBoard entra hasta el ensamble.
>
> ⛔ **REGLA 3 — Antenas siempre conectadas antes de energizar** el módulo 4G y el receptor GNSS.
> Un transmisor LTE sin antena se puede dañar.
---
## 0. Identidad de cada pieza (números de serie)
| Pieza | Etiqueta | Rango | Dónde va la etiqueta |
|---|---|---|---|
| EinarBoard v5 | **V5-01 … V5-15** (30 seleccionables) | lote JLC 22-Ago | esquina cerca de MH4 (ya puesta en la prueba de tarjeta) |
| simpleRTK2B Pro (ArduSimple) | **ARD-001 … ARD-030** | consecutivo de 3 dígitos | sobre el blindaje del ZED-F9P, sin tapar el conector SMA ni el zócalo XBee |
| 4G NTRIP Master (módem) | **RTK-0001 … RTK-0030** | consecutivo de 4 dígitos (serie hasta RTK-1000) | sobre el blindaje del módem, sin tapar los conectores u.FL de antena |
| Unidad HBOX (ensamblada) | **HBOX5-E07-A010-R0006** | se calcula sola en el acta de ensamble | panel exterior del HBOX |
El número de la unidad **se arma con los tres módulos que lleva dentro**: `E07` = EinarBoard V5-07,
`A010` = ArduSimple ARD-010, `R0006` = módem 4G RTK-0006. **Ojo:** la etiqueta "RTK-" es la del **módem 4G**, no la del receptor GNSS. No hace falta que los números coincidan entre sí: el técnico
**selecciona** en el acta de ensamble qué módulo (ya aprobado) va en qué unidad, y el sitio compone el
número. Así, con solo leer la etiqueta del HBOX se sabe qué hay dentro.
Anota también en cada acta la **etiqueta de fábrica** del módulo (el código que trae impreso
ArduSimple) y, en el 4G, el **IMEI** y el **ICCID de la SIM**. Es lo que después permite rastrear un
módulo en la plataforma.
---
## 1. Material
| Cant. | Ítem |
|---|---|
| 1 | Laptop con **u-center** (u-blox, Windows) o **u-center 2** |
| 2 | Cables USB-C **con datos** (el simpleRTK2B Pro tiene dos puertos USB: **POWER+GPS** y **XBEE**) |
| 1 | Antena GNSS multibanda (SMA) con vista al cielo (ventana con cielo abierto o exterior) |
| 2 | Antenas LTE (u.FL → SMA pigtail según el módulo) |
| 1 | SIM Telcel activa (nano-SIM) por módulo 4G |
| 1 | Archivo de configuración del **ZED-F9P** de Helgen (u-center `.txt`) — lo entrega ingeniería |
| 1 | Archivo de configuración del **4G NTRIP Master** con credenciales reales (`4G_NTRIP_HelgenSRV-NMEA.local.txt`) — lo entrega ingeniería, **no** se copia a otras máquinas |
| — | Etiquetas ARD-NNN (ArduSimple) y RTK-NNNN (módem 4G), marcador, bolsas antiestáticas |
---
## 2. Módulo simpleRTK2B Pro (ArduSimple) — acta **"Módulo ArduSimple"**
### 2a. Inspección visual (sin energía)
- [ ] Etiqueta **ARD-NNN** puesta y legible; anotar también la etiqueta de fábrica.
- [ ] Pines del zócalo **XBee** (2 hileras de 10) rectos; conector **SMA** firme; sin componentes golpeados.
- [ ] Pines de la tira tipo Arduino (los que entran en MOD1 de la EinarBoard) rectos y completos.
### 2b. Energizado y fix GNSS
1. Conectar la **antena GNSS** al SMA. Colocarla con vista al cielo.
2. Conectar el USB-C **POWER+GPS** a la laptop.
3. Verificar:
| Punto | Esperado |
|---|---|
| LED **POWER** | Encendido |
| Laptop | Aparece un puerto serie (u-blox GNSS receiver) |
| u-center → Receiver → Connect | Conecta; **Fix Mode** pasa de *No Fix* a **3D** en < 2 min a cielo abierto |
| Satélites en uso | **≥ 10** (cielo abierto) |
| LED **GPS FIX** | Parpadea cuando hay fix |
4. Anotar en el acta: **versión de firmware** del ZED-F9P (u-center → View → Messages → UBX-MON-VER),
satélites en uso, y el tiempo hasta el primer fix.
### 2c. Cargar la configuración de Helgen
1. u-center → **Tools → Receiver Configuration** → *Load configuration* → archivo F9P de Helgen →
**Transfer file → GNSS**.
2. Guardar en el receptor: **UBX-CFG-CFG → Save current configuration** (todas las memorias) → Send.
3. Desconectar y reconectar el USB. Volver a conectar en u-center a la **velocidad configurada por Helgen
(115200)**. Debe seguir mostrando fix y mensajes `$GNGGA`.
- [ ] Configuración cargada y guardada; sobrevive al reinicio.
> Si el módulo no da fix en 5 min a cielo abierto, probar con otra antena antes de marcarlo FALLA.
---
## 3. Módem 4G NTRIP Master — acta **"Módem 4G"**
### 3a. Inspección visual (sin energía)
- [ ] Etiqueta **RTK-NNNN** puesta; anotar **IMEI** (etiqueta del módem) e **ICCID** (tarjeta SIM).
- [ ] **SIM insertada** en la dirección correcta, con clic.
- [ ] Pines XBee (2 × 10, paso 2 mm) rectos; conectores **u.FL** de antena sin daño.
### 3b. Montaje sobre el simpleRTK2B y configuración
1. **Sin energía**, insertar el módulo 4G en el zócalo **XBee del simpleRTK2B Pro** (el módulo queda
sobre el receptor; el corte de la silueta indica la orientación — nunca forzar).
2. Conectar las **2 antenas LTE** a los u.FL del módulo.
3. Conectar la antena GNSS. Conectar el USB **POWER+GPS** (alimenta todo) **y** el USB **XBEE** (puerto de
configuración del módem).
4. En la laptop abrir un terminal serie en el puerto **XBEE** a **115200 baud** y enviar, línea por línea,
el archivo `4G_NTRIP_HelgenSRV-NMEA.local.txt` (solo las líneas `$$$AS+…`). Cada línea debe contestar
`OK` (o el eco de ArduSimple).
5. Al terminar: `$$$AS+I=1111` para entrar a config y **`$$$AS+K=…`** debe llevar el **ID de estación**
que indique ingeniería para este módulo (se anota en el acta).
- [ ] Configuración enviada completa, sin líneas con `ERROR`.
- [ ] ID de estación (`AS+K`) anotado en el acta.
### 3c. Registro en la red
Esperar hasta 2 min con las antenas LTE conectadas:
| Punto | Esperado |
|---|---|
| LED de **red / 4G** del módulo | Pasa de parpadeo rápido (buscando) a **parpadeo lento o fijo** (registrado) |
| Consulta de estado por el puerto XBEE (comando de estado de ArduSimple) | Reporta operador **Telcel** y señal (RSSI) |
- [ ] Registrado en la red Telcel. Anotar RSSI si el módulo lo reporta.
> Sin registro en 3 min: revisar que la SIM esté activa (probar la SIM en otro módulo aprobado). Si
> la SIM funciona en otro módulo y este no registra → **FALLA (4G)**.
---
## 4. Integración ArduSimple + 4G — acta **"Integración"**
Se hace con la **pareja** que después irá junta en una unidad (ARD-NNN + RTK-NNNN). El acta registra
los dos números; el mismo par se seleccionará en el ensamble.
Montaje: el mismo del punto 3b (4G sobre el simpleRTK2B, dos antenas LTE, antena GNSS al cielo, USB
POWER+GPS conectado; el USB XBEE puede quedar conectado para ver mensajes).
1. u-center conectado al puerto **POWER+GPS** (115200). Esperar fix **3D**.
2. Observar el LED **NO RTK** del simpleRTK2B: encendido = sin correcciones; **parpadeando = RTK FLOAT**;
**apagado = RTK FIX**.
3. En u-center: **Fix Mode** debe llegar a **3D/DGNSS/FIXED** (RTK fixed). Tiempo típico a cielo abierto:
1–5 min tras el registro 4G.
| Punto | Esperado | Anotar |
|---|---|---|
| Tiempo desde encendido hasta **RTK FIX** | < 10 min | minutos |
| Fix Mode en u-center | 3D/DGNSS/**FIXED** | — |
| Satélites en uso | ≥ 10 | número |
| Precisión estimada (u-center, hAcc) | < 0.05 m en FIX | metros |
| Estabilidad | Se mantiene FIXED **5 min** sin caer a FLOAT (con la antena quieta) | sí/no |
| Plataforma Helgen | Ingeniería confirma que la estación (ID `AS+K`) aparece reportando en el servidor | sí/no |
- [ ] RTK FIX alcanzado y estable 5 min.
- [ ] Confirmado en plataforma (o anotado "pendiente de confirmar" con hora).
> **Si llega a FLOAT pero nunca a FIX:** cielo insuficiente (probar exterior) o punto de montaje
> incorrecto; no es falla del módulo si el módulo 4G ya registró y hay correcciones (LED NO RTK
> parpadea). Si **nunca sale de "encendido"** (sin correcciones): revisar credenciales NTRIP con
> ingeniería antes de marcar FALLA.
### 4b. Cierre
- [ ] Apagar (desconectar USB). Separar el módulo 4G del simpleRTK2B **con cuidado, sin doblar pines**.
- [ ] Guardar cada módulo en su bolsa con su etiqueta. Anotar en la bolsa del ArduSimple: "pareja: RTK-NNNN".
- [ ] Enviar el acta de integración con los dos números.
---
## 5. Hoja rápida de estados (para el técnico)
| Módulo | Aprobado cuando… |
|---|---|
| ARD-NNN | fix 3D, ≥10 sat, configuración Helgen cargada y guardada |
| RTK-NNNN (módem) | SIM registrada en Telcel, configuración enviada sin errores, `AS+K` anotado |
| Pareja ArduSimple + 4G | RTK FIX estable 5 min con correcciones por 4G |
Un módulo con **FALLA** no se asigna a ninguna unidad: el acta de ensamble no lo dejará seleccionar.
---
## Anexo A — Notas de ingeniería
- En la **unidad v5** el módulo 4G **no** va sobre el simpleRTK2B: va en el zócalo **J7/J8** de la
EinarBoard (mismo footprint XBee). El enlace F9P ↔ módem pasa por el relevador **K1**; con K1
liberado (estado por defecto del firmware, `BYP_CTRL` bajo) el camino es directo. Por eso la
prueba de integración se hace con el módulo montado en el simpleRTK2B (misma electrónica, sin
depender del firmware de la EinarBoard).
- Configuración F9P: UART1 a **115200** (es lo que lee la EinarBoard en PA3/PA2) y UART2 a la
velocidad del módem (`AS+B=115200`). El archivo `.txt` del F9P **no está en el repo** — hay que
añadirlo a `04-Source-Code/rtk-config/` (sin secretos) para que este procedimiento sea reproducible.
- El ID de estación `AS+K` es la identidad de la unidad en el servidor secundario (`AS+r/AS+h`).
Decisión pendiente: `AS+K` = número del módem 4G (R0006) o número de unidad. Mientras se decide,
el acta lo registra como texto libre.
- Las credenciales (APN, NTRIP) viven solo en `…local.txt` en la laptop de banco. Nunca en git ni en
el sitio.

View File

@ -0,0 +1,176 @@
---
title: HBOX v5 — Procedimiento de ensamble de la unidad y energizado final
tags: [project-drogheda, hardware, hbox, v5, ensamble, checklist, procedimiento]
project: Project Drogheda
author: Helgen Technologies
date: 2026-09-17
version: 1.0
status: ACTIVO — una unidad a la vez; se registra en el acta "Ensamble"
audience: técnicos de banco
---
# HBOX v5 — Ensamble de la unidad y energizado final
**Entrada:** tres módulos **ya aprobados** en sus actas — una EinarBoard **V5-NN** (acta de prueba y
flasheo), un simpleRTK2B Pro **ARD-NNN** y un módem 4G NTRIP Master **RTK-NNNN** que pasaron juntos la
**integración**. **Salida:** una unidad HBOX cerrada, etiquetada **HBOX5-Exx-Axxx-Rxxxx**, encendida y
reportando.
**Duración estimada:** 60–90 min por unidad.
> ⛔ **REGLA 1 — Primero el acta, luego el desarmador.** Abrir el acta de ensamble, seleccionar los
> tres módulos y esperar a que el sitio muestre los tres en **verde (Aprobado)** y la pareja ArduSimple+4G
> con **integración OK**. Si alguno sale en rojo o "sin acta", **no se ensambla** con ese módulo.
>
> ⛔ **REGLA 2 — Batería al final.** El pack 1S4P se conecta en P4 solo en la sección 6, con la unidad
> ya energizada desde 24 V y con el NTC del pack en P4-3.
>
> ⛔ **REGLA 3 — Todo módulo se inserta sin energía**, mirando la orientación dos veces. Un XBee al
> revés o un simpleRTK2B corrido un pin se destruye al encender.
---
## 0. El número de serie de la unidad
El acta lo compone automáticamente al seleccionar los módulos:
```
HBOX5 - E07 - A010 - R0006
│ │ │ └── módem 4G NTRIP Master RTK-0006
│ │ └────────── simpleRTK2B Pro (ArduSimple) ARD-010
│ └──────────────── EinarBoard V5-07
└──────────────────────── producto HBOX, tarjeta v5
```
Ese texto va en la **etiqueta exterior** del HBOX (panel, junto al GX16) y en la **etiqueta interior**
(cara interna de la tapa). Un módulo solo puede pertenecer a **una** unidad: el sitio rechaza el acta
si el módulo ya está asignado.
---
## 1. Material y herramientas
| Ítem | Notas |
|---|---|
| Gabinete HBOX con panel perforado (GX16-5, 3 × SMA, RJ45, prensaestopas) | según el diseño mecánico vigente |
| EinarBoard **V5-NN** aprobada, con firmware de bring-up **0.2.0 o superior** | ver acta de tarjeta |
| simpleRTK2B Pro **ARD-NNN** y módem 4G NTRIP Master **RTK-NNNN** aprobados e integrados | con sus bolsas |
| Fuente **Mean Well SD-15B-05** (24 V → 5 V) | va dentro del HBOX |
| Pack de batería **1S4P** con NTC (3 hilos → P4) | conectar al final |
| Ventilador 5 V 2 hilos (P6), LED de panel (P8), botón de reset (P10), interruptor de corte (P11), NTC de punto caliente (P12) | arnés interno |
| Pigtails de antena: GNSS SMA-hembra bulkhead → SMA del simpleRTK2B; 2 × LTE SMA bulkhead → u.FL del módulo 4G | |
| Separadores M2.5/M3, tornillería, bridas, fijador de rosca para SMA | |
| Fuente de banco 24 V / 1 A con límite de corriente, multímetro, laptop con terminal serie | |
| Etiquetas: exterior e interior con el número de unidad | impresas desde el acta |
---
## 2. Preparación de la tarjeta (sin energía)
- [ ] EinarBoard **V5-NN** corresponde a la seleccionada en el acta (leer la etiqueta cerca de MH4).
- [ ] Jumpers del cargador en la posición del pack Li-ion 4.00 V: **JP2 (F2) = 1 · JP3 (F1) = 0 · JP4 (F0) = 1**.
Anotar en el acta la posición de cada uno. *(Si el pack cambia a LiFePO4, ingeniería indicará JP2 = 0.)*
- [ ] Jumper **JP1** (0R, alimentación del ventilador) presente.
- [ ] **P11** (corte) **abierto** — sin jumper; el interruptor de panel se conecta ahí en la sección 4.
- [ ] Tarjeta fijada en la platina/gabinete con separadores en **MH1–MH6** (y MH7–MH12 según el diseño) sin flexionar la tarjeta; tornillos con apriete suave.
## 3. Módulos enchufables (sin energía)
- [ ] **simpleRTK2B Pro ARD-NNN** en **MOD1**: alinear el pin **"5V"** del zócalo UNO con el pin 5V del
módulo; las cuatro tiras entran a fondo y parejas; **ninguna** clavija queda fuera del zócalo.
- [ ] **Módem 4G NTRIP Master RTK-NNNN** en **J7/J8** (zócalo XBee de 2 mm de la EinarBoard, **no** en el
simpleRTK2B): la silueta del módulo coincide con la serigrafía; pin 1 (VCC) del lado marcado.
- [ ] SIM presente en el módulo 4G (ya verificada en su acta).
- [ ] Nada toca la tapa ni los separadores; los módulos no rozan componentes altos (K1, C10, L6).
## 4. Panel y arnés interno (sin energía)
Conectar contra el pinout; cada JST hace **clic**.
| Conector | Qué se conecta | Verificar |
|---|---|---|
| **P1** (GX16-5 del panel) | pin 1 = +24 V · pin 2 = GND · pin 3 = ignición · pin 4 = GND | polaridad con multímetro **antes** de conectar al panel |
| **SD-15B-05** | entrada: +24 V/GND del GX16 (empalme en Y) · salida +5 V/GND → **P2** (pin 1 = +5 V) | ajustar salida a **5.0 V** en banco antes de montar |
| **P6** | ventilador (pin 1 = +5V_FAN, pin 2 = retorno) | dirección de flujo: aire **hacia afuera** por la rejilla |
| **P8** | LED de panel (pin 1 = ánodo, pin 2 = cátodo) | LED asoma por el panel |
| **P10** | botón de reset externo | normalmente abierto |
| **P11** | interruptor de corte del panel (2 hilos) | en posición **ON** cierra pin 1–2 |
| **P12** | NTC de punto caliente pegado al módulo 4G o al disipador | con cinta térmica |
| **P4** | **NO conectar todavía** (batería, sección 6) | — |
| Antena **GNSS** | bulkhead SMA del panel → SMA del simpleRTK2B | fijador de rosca, apriete a mano + ¼ vuelta |
| Antenas **LTE (2)** | bulkheads SMA del panel → u.FL del módulo 4G | los u.FL hacen clic; ruta del cable sin dobleces < 10 mm |
| **J10** RJ45 / **P15** RS-485 / **P16** RS-232 | solo si el panel de esta unidad los lleva | tapas ciegas en los que no |
- [ ] Ningún cable pasa sobre el módulo 4G ni sobre la antena; cables sujetos con bridas al chasis.
- [ ] Sin conductores expuestos cerca de 24 V (P1, SD-15B).
## 5. Energizado desde 24 V (unidad abierta, sin batería)
1. Fuente de banco **24.0 V, límite 1.0 A**, salida apagada, conectada al **GX16** del panel (pin 1 = +, pin 2 = −).
Interruptor de corte (P11) en **ON**. USB-C en **J11** conectado a la laptop, terminal serie a 115200.
2. Encender la salida. En los primeros 10 s:
| Punto | Esperado |
|---|---|
| Corriente de la fuente | **< 150 mA** (etapa RTK aún apagada) |
| **D18** verde | Encendido |
| **D17** azul + LED de panel | Parpadean (firmware de bring-up corriendo) |
| Consola | Encabezado `hbox-v5-bringup`, reporte con **12 PASS**, luego `STAT … v5=4.9–5.1` |
| Ventilador | **Gira** (con 24 V presente el buck U2 se enciende solo) |
3. Anotar en el acta: `v5` (debe ser 4.8–5.1 V), `tmp102`, `sht40`.
4. **Encender la etapa RTK desde la consola:** teclear **`P`** y confirmar con **`Y`**. El firmware sube
`PWR_CTRL` y reporta `STACK ON`. En los siguientes 60 s:
| Punto | Esperado |
|---|---|
| Corriente de la fuente | sube a **250–600 mA** (pico corto al registrar el 4G) |
| simpleRTK2B: LED POWER | Encendido |
| 4G: LED de red | Buscando → registrado (< 2 min) |
| Consola, comando **`n`** | Muestra las tramas `$GNGGA` de PA3: **`fix=1`** (GPS) al minuto, **`fix=4`** (RTK FIX) en < 10 min con antena al cielo; `sats ≥ 10` |
5. Anotar en el acta el **tiempo hasta `fix=4`** y el número de satélites.
6. Teclear **`P`** de nuevo para **apagar** la etapa RTK. La corriente debe volver a < 150 mA.
> Si `n` no muestra tramas: el simpleRTK2B no está a 115200 en UART1 (volver al acta del módulo RTK:
> configuración Helgen) o MOD1 está corrido un pin. **Apagar antes de tocar nada.**
## 6. Batería y respaldo
1. Con la unidad encendida desde 24 V y la etapa RTK **apagada**: conectar el pack en **P4**
(pin 1 = BAT+, pin 2 = GND, pin 3 = NTC). Medir antes con multímetro: **3.0–4.2 V** entre BAT+ y GND.
2. En la consola, `STAT` debe mostrar **`vbat`** con el voltaje del pack y **`chrg`**: `0` = cargando
(el firmware de bring-up mantiene la carga **deshabilitada**, así que `chrg=1` es lo esperado aquí).
3. **Prueba de respaldo:** apagar la salida de la fuente de 24 V.
| Punto | Esperado |
|---|---|
| D18, D17 y consola | **Siguen vivos** (el LTC4040 conmuta a batería sin reinicio: el encabezado **no** se vuelve a imprimir) |
| `STAT` | `v5=0.0`, `vbat` con el voltaje del pack |
| Ventilador | Se detiene (no hay 24 V) — correcto |
4. Volver a encender 24 V: `STAT` vuelve a `v5≈5.0`. Sin reinicio.
5. Anotar: voltaje del pack, "respaldo OK sin reinicio".
## 7. Cierre, etiquetado y registro
- [ ] Etiqueta **exterior** `HBOX5-Exx-Axxx-Rxxxx` en el panel, junto al GX16. Etiqueta **interior** en la tapa.
- [ ] Interruptor de corte en **OFF** para almacenar (evita descargar la batería). Anotarlo en la etiqueta interior.
- [ ] Tapa cerrada con su sello; tornillos en cruz; prensaestopas apretados.
- [ ] Acta de ensamble enviada con resultado **APROBADA**.
---
## Anexo A — Notas de ingeniería
- **Firmware:** el bring-up **0.2.0** añade el modo de banco (`P` = stack ON/OFF con confirmación,
`n` = monitor NMEA de PA3, 20 s). Mantiene la carga deshabilitada (`CHRG_EN` alto) y K1 liberado.
La unidad ensamblada queda con este firmware hasta que exista el firmware de producción v5
(rediseño de gestión de batería); se re-flashea por J11 sin abrir el HBOX si J11 queda accesible —
**decidir si J11 asoma por el panel o se deja interno.**
- **Corriente en 24 V:** valores orientativos; los reales se fijan con las primeras tres unidades y
se actualizan aquí (bring-up 0.2.0 imprime `v5` pero no mide corriente).
- **Respaldo sin reinicio** es la prueba del LTC4040 + L6/SW_BAT en la tarjeta real (el EMC audit
marcó `/SW_BAT` 0.3 mm como crítico): si alguna unidad reinicia al cortar 24 V, anotar `vbat` y
temperatura — es evidencia para el respin.
- **Modo B / relevador K1:** no se prueba aquí; K1 queda liberado (camino directo F9P ↔ módem).

@ -1 +1 @@
Subproject commit 57f67332ebb20b916f5b46fefcd5c1af72fd5d25
Subproject commit 1a31352bdab00ae05ed922e003f07d5d18568728