--- title: "Watchdog v3 — Preparación y bring-up del prototipo en protoboard" tags: [project-drogheda, hardware, watchdog, prototype, breadboard, bring-up, readiness, historico] date: 2026-06-24 project: Project Drogheda author: Helgen Technologies status: HISTÓRICO — guía de banco del 25-jun-2026 (sustituyó la mitad de procedimiento de la lista de compras para v3) --- # Watchdog v3 — Preparación y bring-up del prototipo en protoboard Tarjeta: V3 en protoboard (prototipo DEV sobre Blackpill, antes de la EinarBoard 1.0). !!! abstract "Para quién · Cuándo · Tiempo · Necesitas" - Para quién: ingeniería (banco QRO) - Cuándo: documento histórico — bring-up del prototipo en protoboard del watchdog v3 (jun-2026), antes de la primera PCB. El paso siguiente fue el [bring-up de la EinarBoard 1.0](einarboard-1.0-bringup.md) - Tiempo: un día de banco - Necesitas: la [lista de compras del protoboard](historico-protoboard.md), Blackpill, fuente de 5 V, multímetro, fuente de calor Traducido del original en inglés (24-jun-2026, actualizado 03-jul-2026). Alcance: armar en protoboard el watchdog DEV sobre el Blackpill existente y probar la máquina de estados + sensado + interruptor de carga + lazo ventilador/temperatura. El layout de la PCB queda explícitamente fuera del alcance (se hace después de que el prototipo funcione). Autoridad: `watchdog-electrical-design-state` (canónico, repo) · firmware `04-Source-Code/firmware/blackpillrtkcode_v2/` (v2.3) · esquemático `kicad/hbox-watchdog-v3.kicad_sch`. !!! warning "Actualización 2026-07-03 — el conjunto de sensores cambió a las partes en mano" Los sensores del prototipo ahora son **AHT10** (0x38, I²C1 solo, 3V3) + **LM35 → PA7** + **NTC → PB1** (sin SHT40/TMP102 en el prototipo — solo en PCB). El TP4056 del kit **no tiene pin TEMP** → el corte de carga es **PA8 `CHRG_RUN`** (IRF9540N en IN+ del TP4056, **invertido respecto a `CHRG_EN` de PROD**). Interruptor de corte cableado: nodo SYS → SPST → MAIN5V. **El ventilador en mano es de 2 hilos** → la prueba de tacómetro en PB10 se elimina. Las filas de §1/§3 están parchadas; el cableado autoritativo = libro de conexiones xlsx + `Drogheda_Guia-Conexion-Protoboard_ES_v2.2.pdf`. **El firmware v2.3 todavía lee el SHT40 (0x44)** — el driver del AHT10, el canal LM35 y la bandera CHRG_RUN quedaron pendientes de un pase de firmware; hasta entonces las filas de I²C y corte de carga son «cablear ahora / probar después». ## 0. Veredicto: se puede construir, con tres salvedades Se puede construir y arrancar el núcleo del watchdog. Nada del esquemático ni de su estado de ERC bloquea un armado en protoboard. Las salvedades son de *cobertura de firmware* y *disciplina de alcance*, no de preparación: 1. **Los «problemas» de ERC son cosméticos — no bloquean.** ERC sobre el archivo `hbox-watchdog-v3.kicad_sch` = **0 errores, 1 aviso** (un símbolo `Q_NPN_BCE` que no coincide con la caché). La red de tierra está unificada (4 símbolos `GND`, **0** instancias `GNDREF` colocadas — el GNDREF que se ve es solo una entrada huérfana de la caché de librería, no una segunda tierra real). Nada de esto afecta al protoboard. *(Limpiarlo solo antes de pasar al layout — ver §2.)* 2. **Dos subcircuitos de v3 todavía no están en firmware.** El build v2.3 flasheado **no** maneja el indicador de batería de 4 LEDs (PB12–15) ni `CHRG_EN` (PA8). Se pueden cablear, pero quedarán apagados hasta un pase de firmware. Decidir según §4 si se arman ahora o después. 3. **v2.3 nunca se ha validado en hardware.** Invariante del repositorio: *probar en banco antes de flashear.* Este es su primer banco real — tratar el paso 1 (flash + confirmar telemetría) como la compuerta antes de confiar en cualquier paso posterior. **Lo que no se pudo verificar:** las partes compradas exactas. Los dos BOM del prototipo en `.xlsx` (`watchdog-protoboard-BOM-3boards.xlsx`, `watchdog-LISTA-DE-COMPRAS-ES.xlsx`) estaban abiertos en LibreOffice, así que el checklist (§3) se reconstruyó desde los documentos de diseño; se compara con la lista real al cerrarlos. ## 1. Qué se puede probar (el firmware v2.3 lo soporta) y qué no | Subcircuito | Pines | Firmware v2.3 | ¿Se prueba? | |---|---|---|---| | Arranque + telemetría `$PHLG`/STREAM (USB) | USB-C | ✅ `ENABLE_PHLG=1` | Sí — es la compuerta | | LED de estado (códigos de parpadeo) | PB0 | ✅ | Sí | | Interruptor de carga de la etapa RTK (el corazón de la recuperación) | PA1 → 2N3904 → IRF9540 | ✅ OFF al reset, el MCU lo enciende | Sí | | Sensado: batería / 5 V / ignición | PA0 / PA4 / PA5 | ✅ histéresis + debounce | Sí | | Ventilador inteligente (PWM) | PA6 · *(PB10 tacómetro = DNP, el ventilador en mano es de 2 hilos)* | ✅ PWM 25 kHz · RPM/atasco n/a | Sí (rampa PWM; sin tacómetro) | | Temperatura/HR por I²C — **AHT10 0x38, solo en el bus** [2026-07-03] | PB6/PB7 | ❌ v2.3 lee SHT40 0x44 → **driver AHT10 pendiente** (+ el respaldo de temperatura del MCU funciona) | cablear OK, lee después del parche de firmware | | Temperatura analógica ×2 — NTC→PB1 + **LM35→PA7** [2026-07-03] | PB1 / PA7 | ❌ canales no codificados | cablear OK, verificar con multímetro mientras tanto | | Indicador de batería de 4 LEDs | PB12–15 | ❌ no codificado | cablear OK, queda apagado | | Corte de carga por temperatura — **`CHRG_RUN`** [2026-07-03] | PA8 → 2N3904 → IRF9540N en IN+ del TP4056 | ❌ no codificado (**invertido respecto a `CHRG_EN` de PROD** — necesita bandera) | cablear OK; probar a mano puenteando PA8 alto/bajo | | Reset (hardware) | NRST | n/a (solo HW) | Sí — el botón simplemente funciona | **Nota del ventilador [actualizada 2026-07-03]:** el ventilador en mano es de **2 hilos** → sin tacómetro; PB10 queda DNP y la comprobación de RPM/atasco de v2.3 no lee nada (inofensivo). La falla de ventilador se inferirá por temperatura en el pase de firmware. El manejo PWM en PA6 a través del IRLZ44N se prueba exactamente igual. ## 2. La situación del ERC - Lo que ERC reporta en el archivo DEV: 0 errores, 1 aviso (`Q_NPN_BCE` no encontrado en la librería `Device`). Ese aviso significa que el símbolo del esquemático viene de la caché del proyecto y la librería `Device` instalada tiene un nombre/pines ligeramente distintos — puramente cosmético, de enlace de librería. - El GNDREF: **no hay símbolos GNDREF colocados** — solo la *definición* sobrante en la caché embebida. La tierra es una sola red. - **Por qué no bloquea el protoboard:** ERC valida una *netlist para fabricación*. En protoboard todas las tierras se unen físicamente; la colocación fuera de rejilla y un nombre de caché distinto son invisibles para el cobre que se cablea a mano. - Antes del layout (después), limpiar en KiCad: Tools → *Update Symbols from Library* (quita el aviso de caché de `Q_NPN_BCE`), después *Annotate* y volver a correr ERC; mover cualquier parte fuera de rejilla a la rejilla de 1.27 mm. No editar el esquemático por script mientras KiCad lo tiene abierto (conflicto de bloqueo de archivo). ## 3. Checklist de partes antes de armar (reconstruido — confirmar contra la caja) **Ya se tiene (no comprar):** Blackpill STM32F411, cable USB-C, 18650 + PowerBoost (o fuente de banco), Mean Well SD-15B-05 (o 5 V de banco), multímetro, una fuente de calor (secadora / taza de agua caliente) para la prueba del ventilador. *F9P + 4G master NO se necesitan para este bring-up.* Núcleo (los «cerebros» — indispensable): - [ ] Protoboard ×2 (830 puntos) + kits de jumpers (M-M y M-F) - [ ] Surtido de resistencias incl. **330 Ω, 1 k, 4.7 k, 10 k, 100 k, 220 Ω** - [ ] **2N3904** ×3 (driver del interruptor de carga, TO-92) - [ ] **IRF9540 / IRF9540N** ×2 (P-FET lado alto para 5 V, TO-220) - [ ] LED ×5 (estado) · **100 nF** cerámico ×10 (filtros ADC/desacoplo) · 100 µF ≥ 16 V ×4 (bulk) - [ ] **Potenciómetro de 10 kΩ** ×2 + botón táctil/interruptor deslizante ×2 (barrer VBAT / simular ignición) - [ ] Tira de header macho 1×40 (para pinar cualquier módulo sin pines) **Térmico (nuevo en v3):** - [x] Ventilador 5 V, 40–60 mm — **2 hilos, en mano** [2026-07-03] (sin tacómetro; PB10 DNP) - [ ] **IRLZ44N** ×2 (N-FET de nivel lógico, lado bajo del ventilador) — *un IRF540/IRFZ44 común no enciende con 3.3 V; si no hay IRLZ44N usar 2N2222A/TIP120 + 1 kΩ en base* - [ ] **1N5819** ×3 (flyback del ventilador; 1N4007 aceptable) - [x] Breakout I²C **AHT10** (0x38) — en mano [2026-07-03]; **solo en el bus**, 3V3 únicamente; parche de lectura de firmware pendiente (v2.3 habla SHT40) - [x] **LM35** (TO-92) — en mano [2026-07-03]; temperatura analógica #2 en **PA7**, alimentado de 5 V **Adiciones de v3 (armar solo si se quieren cableadas ahora — ver §4):** - [ ] Reset: botón táctil → NRST↔GND (+ header de 2 pines opcional para reset externo) - [ ] Indicador de batería: **4× LED + 4× 330 Ω** en PB12–15 *(quedan apagados hasta el firmware)* - [ ] Sustituto del respaldo de batería: módulo **TP4056** + boost **MT3608** + **2× 1N5819** (OR-ing) *(reproduce carga / pérdida de energía→respaldo / BAT_SENSE)*. **[2026-07-03]** El TP4056 del kit **no tiene pin TEMP** → la NTC de 10 kΩ del cargador no se usa; el corte por temperatura ahora está en el prototipo en hardware: PA8 `CHRG_RUN` → 1 k → 2N3904 → IRF9540N (pull-up 10 k) en IN+ del TP4056 (ALTO = carga; sin MCU = sin carga — invertido respecto a PROD). Más el interruptor de corte: nodo SYS → SPST → MAIN5V (corta vehículo y batería) ## 4. Decisión antes de sentarse: cuánto de v3 cablear - Recomendado — armar el núcleo probable + térmico (todo lo marcado *Sí* en §1). Prueba toda la lógica del watchdog y el nuevo lazo ventilador/temperatura, que es el objetivo del prototipo. Añadir el botón de reset (gratis — funciona sin firmware). - **Indicador (PB12–15):** cablearlo si se quiere el layout/sensación, pero no encenderá hasta que exista el driver del indicador. *Más barato añadirlo después.* - **Sustituto del respaldo de batería (TP4056+MT3608):** vale la pena si se quiere observar específicamente la transferencia pérdida de energía → respaldo y que `BAT_SENSE` siga a la celda. Omitir si el día es solo para la lógica del watchdog. ## 5. Secuencia de bring-up (correr en orden — cada paso habilita el siguiente) 1. **Solo USB — flashear y compuerta.** Compilar v2.3 (Arduino IDE / STM32duino, tarjeta = Blackpill F411CE), flashear por DFU (mantener BOOT0). Abrir serie a 115200. **Confirmar líneas `BOOT` / `COLS` / `TLM` y un `$PHLG,...*CS` cada 30 s.** Si falla, detenerse y corregir el firmware antes de cablear nada. 2. LED de estado — PB0 → 330 Ω → LED → GND. Observar que los códigos de parpadeo cambien con el estado. 3. Interruptor de carga (el corazón de la recuperación) — PA1 → 1 kΩ → base del 2N3904; colector → gate del IRF9540; 10 kΩ gate→5 V; drain → 5 V conmutado; poner un LED+330 Ω en la salida conmutada. **Confirmar: OFF al reset, ON cuando PA1 lo pide.** (Apagado es el estado seguro.) 4. Divisores de sensado — 10 k/10 k ÷2 hacia **PA0** (batería vía 18650/pot) y **PA4** (riel 5 V); pot de 10 kΩ hacia **PA5** (ignición). Barrer y observar que `veh`/`ign`/`vbat` cambien en TLM con histéresis (V5V_ON 4.20 / V5V_OFF 3.80; BAT_CRIT 3.40 / BAT_REC 3.70). 5. Ventilador + tacómetro — PA6 → 220 Ω → gate del IRLZ44N; ventilador(−) en el drain; 1N5819 ∥ ventilador; 100 kΩ gate→GND. Tacómetro de 3 hilos → pull-up 10 kΩ a 3V3 → PB10. Verlo girar/rampar; **desconectar el ventilador → `fan_fault`** en telemetría. 6. Temperatura I²C — SHT40/TMP102 en PB6/PB7 (+4.7 kΩ pull-up cada uno). Calentarlo → el ventilador rampa en la curva 45→70 °C. *¿Sin sensor? El respaldo de temperatura del MCU también rampa el ventilador — calentar toda la tarjeta.* 7. (Opcional) botón de reset — NRST↔GND momentáneo; presionar → reinicio limpio, línea de causa de reset en el log. 8. (Opcional) sustituto del respaldo de batería — 5 V del vehículo → IN del TP4056; celda en BAT del TP4056; TP4056/celda → MT3608 → 5 V vía OR-ing 1N5819 al riel; NTC junto a la celda. Quitar los 5 V del vehículo → observar que el respaldo sostenga el riel y `BAT_SENSE` siga. ## 6. Hoja de cableado (lado Blackpill, v3) ``` PA0 ← BAT ÷2 (10k/10k) desde 18650+ / pot PA6 → 220Ω → gate IRLZ44N; ventilador(−); 1N5819 ∥ ventilador PA4 ← 5V ÷2 (10k/10k) desde riel 5V PB10 ← tacómetro, pull-up 10k → 3V3 PA5 ← IGN ÷2 (10k/10k) desde pot/interruptor PB6/PB7 → I²C SCL/SDA (+4.7k cada uno → 3V3) PA1 → 1k → base 2N3904; colector → gate IRF9540 PB0 → 330Ω → LED → GND ; 10k gate→5V; drain → 5V conmutado NRST ← botón de reset → GND (opcional) → etapa (LED+330Ω como carga de prueba) PB12–15 → 330Ω → LED → GND (indicador; apagado hasta FW) Rieles GND / 5V / 3V3 comunes. 5 V del ventilador desde una fuente de 5 V SEPARADA (2ª fuente / LM2596) — no del riel conmutado de la etapa. ``` !!! note "Mapa de partes prototipo↔PCB (para no confundirse)" El esquemático usa equivalentes SMD (Q1 **AO3401A** P-FET, Q5 **MMBT3904**, Q2 **AO3400A** FET del ventilador). En el protoboard se usan los sustitutos through-hole de arriba (**IRF9540N / 2N3904 / IRLZ44N**) — misma topología, mismo firmware. ## 7. Después de que el prototipo funcione — siguientes pasos - Pase de firmware: driver del indicador de LEDs (PB12–15 desde `BAT_SENSE`) + lógica `CHRG_EN` de corte de carga en caliente. - KiCad: limpieza cosmética de ERC → huellas → después layout de PCB (DEV primero, después PROD según `watchdog-production-schematic-delta`). - Capacidad del paquete confirmada **~12 Ah** (2026-06-30; la etiqueta «40 Ah» estaba mal) — dimensiona la corriente de carga del LTC4040 (≈ C/5, ≤ 2.5 A). ## Relacionados `watchdog-electrical-design-state` (canónico, repo) · [lista de compras del protoboard](historico-protoboard.md) (22-jun) · `watchdog-production-schematic-delta` (especificación del build PROD, repo) · `kicad/hbox-watchdog-v3.kicad_sch` · lo que siguió: [bring-up de la EinarBoard 1.0](einarboard-1.0-bringup.md). ## Historial de revisiones | Versión | Fecha | Cambios | |---|---|---| | 1.0 | 2026-06-24 | Guía de banco original (inglés); actualización de sensores 03-jul. | | 1.1 | 2026-09-29 | Traducción al español, encabezado uniforme y enlaces. Sin cambios técnicos. |