DÍA 319 DE 365

Fase 5: Diseño Industrial y Hardware

📖 Teoría a Estudiar

El Trauma de la "Chip Shortage"

Durante la crisis de semiconductores de 2020-2022, microcontroladores que costaban $3 USD llegaron a venderse en el mercado gris por $80 USD. Las empresas que diseñaron sus placas para soportar una única matrícula de componente se paralizaron. Las empresas que aplicaron DFSC (Design for Supply Chain) simplemente cambiaron su orden de compra a un chip alternativo y continuaron fabricando.

Técnicas de Hardware Anti-Desabasto

  1. Drop-in Replacements (Pin-to-Pin): Son chips de diferentes familias o incluso diferentes fabricantes, pero cuyos pines de tierra, alimentación y señales críticas caen exactamente en los mismos milímetros de cobre. Ej: El STM32F401RCT6 (256KB Flash) es 100% compatible Pin-to-Pin con el STM32F411RCT6 (512KB Flash) y la familia STM32F412.
  2. Nested Footprints (Huellas Anidadas): ¿Qué pasa si el circuito integrado de tu fuente de poder solo existe en encapsulado SOIC-8 y la fábrica solo tiene stock de MSOP-8 (más pequeño)? En KiCad, el Arquitecto dibuja dos huellas superpuestas en el mismo espacio. La máquina Pick & Place soldará el chip que tengas disponible sobre las pistas correspondientes sin alterar la placa.
  3. Zero-Ohm Jumpers: Si tienes que elegir entre dos sensores de presión de diferentes marcas que tienen sus pines I2C invertidos, incluyes resistencias de Cero Ohmios (puentes de estaño) en el diseño. Dependiendo del sensor que compres, el operador de ensamblaje cerrará un puente u otro para enrutar la señal correctamente.
ESTRATEGIAS DE DISEÑO ANTI-DESABASTO (DFSC) 1. COMPATIBILIDAD PIN-TO-PIN Familias de silicio diseñadas para escalar STM32F401 Flash: 256 KB Clock: 84 MHz STOCK: 0 UND STM32F411 Flash: 512 KB Clock: 100 MHz STOCK: 5,000 UND Misma Huella LQFP-64 Basta con cambiar una variable en el firmware. La placa PCB no se modifica. 2. HUELLAS ANIDADAS (NESTED) Dos encapsulados compartiendo el mismo ruteo 1 2 3 4 Si hay SOIC-8, se suelda afuera. Si hay MSOP-8, se suelda adentro. Regla DRC: KiCad marcará error de cruce de pads. Se debe asignar la misma 'NET' a ambos pads.

⚙️ Pasos Prácticos en KiCad

Paso 1: Identificar Riesgos en el BOM.
Abre tu Lista de Materiales (BOM). Identifica los componentes de fuente única (Single-Sourced). Si usas un regulador Buck DC-DC de Texas Instruments que nadie más fabrica, tienes un riesgo extremo. Si usas un amplificador operacional genérico (como el LM358), tienes docenas de proveedores alternativos.

Paso 2: Ruteo de Huellas Anidadas.
En el Pcbnew de KiCad, coloca el Footprint de un integrado SOIC-8. Luego, coloca justo en el centro el Footprint de la versión TSSOP-8 del mismo componente. Asigna la misma red eléctrica (ej. Net-(U1-Pad1)) a los pines correspondientes de ambos encapsulados y conéctalos con pistas cortas de cobre. Ignora la advertencia de colisión física (Courtyard overlap) de KiCad, ya que en producción solo soldarás uno de los dos chips a la vez.

💻 Firmware: La Capa de Abstracción de Hardware (HAL Dinámica)

Si la fábrica agota el `STM32F401` y suelda el `STM32F411` en tu placa, el hardware encenderá perfecto, pero el software se estrellará si no lo preparas. El F401 corre a 84 MHz y el F411 corre a 100 MHz. Configuraremos el C Preprocessor para adaptar la lógica de reloj y periféricos simplemente cambiando una sola línea de código antes de compilar.


/**
 * @file hardware_config.h
 * @brief Capa de Configuración Defensiva para Gestión de Desabasto (DfSC)
 */

#ifndef HARDWARE_CONFIG_H
#define HARDWARE_CONFIG_H

// =========================================================================
// SELECTOR DE TARGET (Modificar según disponibilidad en la fábrica)
// =========================================================================
#define TARGET_MCU_STM32F401  // Comentar si no hay stock
//#define TARGET_MCU_STM32F411  // Descomentar si usamos el chip alternativo

// =========================================================================
// RESOLUCIÓN DE DEPENDENCIAS EN TIEMPO DE COMPILACIÓN
// =========================================================================

#ifdef TARGET_MCU_STM32F401
    #include "stm32f401xe.h"
    #define SYS_CLOCK_FREQ_HZ   84000000U
    #define EEPROM_START_ADDR   0x08020000U // Sector 5 de la Flash
    #define MCU_IDENTIFIER_STR  "STM32-F401RC (84MHz)"
#endif

#ifdef TARGET_MCU_STM32F411
    #include "stm32f411xe.h"
    #define SYS_CLOCK_FREQ_HZ   100000000U
    #define EEPROM_START_ADDR   0x08040000U // Mapeo de Flash es distinto en F411
    #define MCU_IDENTIFIER_STR  "STM32-F411RC (100MHz)"
#endif

// =========================================================================
// APLICACIÓN EN LA LÓGICA DE INICIALIZACIÓN
// =========================================================================
/**
 * @brief Inicializa los relojes del sistema adaptándose al chip soldado.
 */
void SystemClock_Config_Adaptive(void) {
    
    printf("\r\n[BOOT] Detectado Target: %s\r\n", MCU_IDENTIFIER_STR);

    #if (SYS_CLOCK_FREQ_HZ == 84000000U)
        // Configuración específica de PLL para 84 MHz (F401)
        // PLL_M = 8, PLL_N = 336, PLL_P = 4, PLL_Q = 7
        Configure_PLL_Registers(8, 336, 4, 7);
        
    #elif (SYS_CLOCK_FREQ_HZ == 100000000U)
        // Configuración específica de PLL para 100 MHz (F411)
        // PLL_M = 8, PLL_N = 400, PLL_P = 4, PLL_Q = 8
        Configure_PLL_Registers(8, 400, 4, 8);
        
    #else
        #error "Frecuencia de reloj del MCU no soportada."
    #endif
}

#endif // HARDWARE_CONFIG_H
        

🚀 Avance del Proyecto Tesis: Despachador de Gas LP

Objetivo del día: Sostenibilidad de Manufactura y Resiliencia en la Cadena de Suministro.

Durante tu carrera universitaria te enseñaron a seleccionar el componente "perfecto" para el problema "perfecto". En la ingeniería industrial real, el componente "perfecto" es el componente que puedes comprar hoy en cantidades de 10,000 unidades con entrega inmediata. Si tu Despachador de Gas LP dependía de un sensor de temperatura digital de Texas Instruments que tiene un tiempo de entrega de 52 semanas, tu proyecto era un fracaso logístico esperando suceder.

Al aplicar las técnicas de **Design for Supply Chain (DfSC)**, has transformado tu diseño estático en un diseño fluido. Al trazar huellas anidadas (Nested Footprints) en tu placa KiCad, permites que tu ensamblador de PCB cambie de encapsulados sin cobrarte nuevos costos de ingeniería (NRE - Día 317). Y lo más importante, al estructurar tu código C con directivas de preprocesador (`#ifdef`), separaste la lógica de negocio de la lógica del hardware. Ahora, si la escasez golpea y debes migrar de emergencia a un `STM32F411`, tu algoritmo de metrología, la compensación API 54 y el RTOS que implementaremos pronto permanecerán intactos; solo necesitas cambiar un `#define` y compilar. Has garantizado que tu Tesis nunca será víctima del mercado global.

📝 Resumen del Día