DÍA 077 DE 365

Fase 2: Fundamentos de Hardware y Electrónica

📖 Teoría a Estudiar

Eeschema KiCad y el "Sistema Mínimo" del MCU

En el editor de esquemáticos (Eeschema), tu lienzo es infinito. El objetivo aquí no es dibujar cómo se verá la placa físicamente, sino establecer las reglas lógicas y eléctricas. Para que un microcontrolador STM32 (o cualquier chip ARM Cortex-M) funcione de manera estable en un entorno industrial, tu esquemático debe incluir cuatro subsistemas obligatorios:

  1. Alimentación (Power & Decoupling): Los pines VDD y VSS. Requieren los filtros que diseñamos en el Día 63 (0.1µF por cada pin VDD, más uno de 10µF general).
  2. Reloj (Clock / HSE): Aunque el STM32 tiene un reloj interno (HSI), varía con la temperatura. Para metrología exacta y UART sin errores, conectamos un Cristal de Cuarzo externo (HSE) con sus dos capacitores de carga.
  3. Reinicio (Reset / NRST): Un pin con resistencia Pull-up (Día 62) y un capacitor a tierra para evitar reinicios por ruido, sumado a un botón físico de Reset para el técnico.
  4. Interfaz de Depuración (SWD): Los pines SWDIO y SWCLK conectados a un conector de 4 pines para poder programar la placa con un ST-Link sin tener que sacarla del chasis.
HOJA 1: SISTEMA MÍNIMO STM32 (EESCHEMA) U1 STM32F401RETx (LQFP-64) VDD_1 VDD_2 +3V3 C1 100nF C2 100nF VSS_1 VSS_2 GND OSC_IN OSC_OUT Y1 (8 MHz) NRST R3 (10k) +3V3 GND PA13 (SWDIO) PA14 (SWCLK) J1 (ST-LINK) VDD DIO CLK GND SWDIO SWCLK +3V3 GND Regla de Oro en Eeschema: Usa "Net Labels" en lugar de cruzar cables por toda la hoja.

El Adiós al "Spaghetti Wire" (Etiquetas de Red)

Los ingenieros novatos conectan la bomba, la LCD y el STM32 dibujando largas y torcidas líneas verdes que cruzan toda la pantalla. Eso hace que el esquemático sea imposible de leer. Los profesionales usan Etiquetas de Red (Net Labels).

Si pones una etiqueta llamada PWM_BOMBA en el pin PA8 del STM32, y pones esa misma etiqueta en la resistencia del MOSFET (Día 66) en la otra esquina de la pantalla, KiCad sabe matemáticamente que están unidas por el mismo cable, sin necesidad de dibujar la línea. El esquemático se vuelve limpio, modular y auditable.

⚙️ Ejercicios Prácticos

Ejercicio 1: El hardware que dibujes en KiCad dicta las macros de tu firmware en C. Crea el archivo de cabecera hardware_map.h que documente (para el software) los pines exactos que acabamos de asignar lógicamente en el esquemático, garantizando que el Hardware y el Software hablen el mismo idioma.


#ifndef HARDWARE_MAP_H
#define HARDWARE_MAP_H

/**
 * ============================================================================
 * ARCHIVO DE MAPEADO HARDWARE-SOFTWARE (Basado en Esquemático Rev 1.0)
 * Proyecto: Despachador de Gas LP
 * ============================================================================
 * NOTA BARE-METAL: 
 * Este archivo DEBE coincidir 100% con las "Net Labels" de KiCad Eeschema.
 * Si el ingeniero de hardware cambia un pin en KiCad, solo se modifica este
 * archivo y todo el proyecto se recompila automáticamente sin romper la lógica.
 */

// ----------------------------------------------------------------------------
// SISTEMA MÍNIMO (Core System)
// ----------------------------------------------------------------------------
// Cristal Externo (HSE) conectado a pines OSC_IN / OSC_OUT (Generalmente PH0/PH1)
#define RELOJ_HSE_FRECUENCIA_HZ 8000000UL 

// Interfaz de Depuración Serial Wire Debug (SWD)
// ADVERTENCIA: No usar estos pines como GPIO normales, o perderás la 
// capacidad de reprogramar el chip por ST-Link.
#define PUERTO_SWD         GPIOA
#define PIN_SWDIO          13    // Etiqueta KiCad: SWDIO
#define PIN_SWCLK          14    // Etiqueta KiCad: SWCLK

// ----------------------------------------------------------------------------
// ACTUADORES DE POTENCIA (Días 64, 65, 66)
// ----------------------------------------------------------------------------
#define PUERTO_VALVULA     GPIOB
#define PIN_MOSFET_VALVULA 5     // Etiqueta KiCad: CTRL_VALVULA_PRINCIPAL

#define PUERTO_ALARMA      GPIOC
#define PIN_TORRETA_BJT    13    // Etiqueta KiCad: CTRL_TORRETA_ROJA

// ----------------------------------------------------------------------------
// SENSORES E INSTRUMENTACIÓN (Días 70, 71, 72, 73, 74)
// ----------------------------------------------------------------------------
#define PUERTO_CAUDAL      GPIOA
#define PIN_CAUDALIMETRO   0     // Etiqueta KiCad: HALL_PULSO_GAS (TIM2_CH1)

#define PUERTO_ANALOGICO   GPIOA
#define PIN_PT100_ADC      2     // Etiqueta KiCad: ADC_TEMP_PT100
#define PIN_MOTOR_SHUNT    4     // Etiqueta KiCad: ADC_CORRIENTE_BOMBA
#define PIN_LAZO_4_20MA    5     // Etiqueta KiCad: ADC_PRESION_TANQUE

#endif // HARDWARE_MAP_H
        

🚀 Avance del Proyecto Tesis: Despachador de Gas LP

Objetivo del día: Trazabilidad entre el Dominio Lógico (KiCad) y el Firmware (C).

Dibujar el "Sistema Mínimo" del STM32 es el equivalente a construir los cimientos del edificio. Si olvidas el capacitor de Reset (NRST), tu máquina se reiniciará sola cada vez que la contactora de la bomba haga chispa. Si omites los capacitores de desacople (VDD), el ADC leerá puros números basura.

Al diseñar este esquemático en KiCad usando etiquetas (Net Labels) claras como HALL_PULSO_GAS y mapearlas rigurosamente en el archivo hardware_map.h de tu código Bare-Metal, has creado una **Ingeniería Concurrente**. Si mañana decides cambiar el caudalímetro del pin PA0 al pin PB3 porque rutar la pista de cobre es más fácil, simplemente cambias la etiqueta en KiCad, cambias el número "0" por un "3" en este archivo de C, y el Despachador entero seguirá funcionando a la perfección sin tocar la sagrada Máquina de Estados (FSM).

📝 Resumen del Día

❓ Cuestionario de Autoevaluación

1. En el diseño SVG, ¿por qué pusimos un conector de 4 pines (J1) para el SWD (VDD, DIO, CLK, GND) en lugar de solo 2 pines (DIO y CLK)?
Respuesta: Porque el programador (ST-Link) y la placa de destino deben compartir la misma referencia de Tierra (GND) para que las señales eléctricas de datos tengan sentido (como vimos en el aislamiento galvánico). Además, el programador lee el pin VDD de tu placa para adaptar su voltaje interno (Sensing); si tu placa corre a 3.3V, el ST-Link envía datos a 3.3V, si corre a 1.8V, se adapta a 1.8V para no quemar el chip. Sin esos 4 pines, la programación fallará.

2. ¿Qué desastre de hardware y software ocurriría si configuras el pin PA13 como una salida estándar para encender un LED y le conectas una resistencia a Tierra en tu esquemático KiCad?
Respuesta: Te quedarías "encerrado" fuera de tu propio chip (Brick). El pin PA13 es el SWDIO (Datos del programador). Si el hardware lo ancla a tierra o si el código main() inicia y rápidamente lo reconfigura como una salida normal (GPIO Out), el ST-Link perderá la comunicación instantáneamente y no podrá inyectar nuevo código para arreglarlo. En la industria, los pines de SWD se dejan exclusivos y sagrados, jamás se multiplexan a menos que sea una emergencia absoluta de falta de pines.