DÍA 272 DE 365

Fase 5: Diseño Industrial y Hardware

📖 Teoría a Estudiar

La Topología Híbrida: Buck + LDO

En el diseño de PCB industrial moderno, dividimos la regulación en dos etapas para obtener lo mejor de ambos mundos: eficiencia térmica y limpieza analógica.

1. Etapa de Conmutación (Buck Converter): De 24V a 5V
Utilizaremos un chip regulador Switching (como el LM2596, o un más moderno TPS54302 de Texas Instruments). Este chip no "quema" el voltaje sobrante. Actúa como un interruptor rapidísimo (a cientos de kHz) cargando un Inductor magnético y un Capacitor. Su eficiencia es superior al 90%, por lo que bajar 24V a 5V apenas generará un ligero calor en la placa. De estos 5V alimentaremos los Relés, la pantalla LCD, los sensores externos y al ESP32.

2. Etapa Lineal (LDO): De 5V a 3.3V
El problema de los conversores Buck es que generan ruido (Rizado o Ripple) en la línea de voltaje debido a su conmutación. Si conectamos el ADC del STM32 a esta línea sucia, la lectura de tu termopar o de tu sensor de vibración (Día 264) saltará incontrolablemente. Por ello, colocamos un LDO (Low-Dropout Linear Regulator) tras el Buck. Bajar de 5V a 3.3V genera muy poco calor, y el LDO actúa como un filtro natural, entregando un voltaje 3V3 purificado, liso como un espejo, perfecto para la metrología del procesador.

El Escudo Anti-Desastres (Filtros de Entrada)

Si conectas un cable 24V de la red industrial directo a tu chip, el primer chispazo de un contactor electromagnético enviará un pico de 100V que destruirá el silicio. En KiCad, la entrada de tu máquina debe tener 3 barreras:

  1. Fusible PTC (Reseteable): Corta la energía automáticamente si hay un cortocircuito, y se repara solo cuando se enfría.
  2. Diodo de Polaridad Inversa (Ej. SS34 o M7): Si el instalador conecta el positivo en el negativo, el diodo bloquea la corriente. Protege a la máquina de la estupidez humana.
  3. Diodo TVS (Transient Voltage Suppressor): Un "pararrayos" electrónico. Si el voltaje supera los 30V, el TVS se cortocircuita en nanosegundos, desviando el pico destructivo hacia Tierra (GND) antes de que toque tu circuito.
Sub-Sheet: 01_PowerSupply.kicad_sch +24V_IN F1 (PTC 2A) D1 (SS34) D2 TVS C1 10uF U1 TPS54302 (Buck Switcher) VIN SW L1 10uH R1 100k FB R2 13.3k +5V_SYS (Para ESP32, LCD) R3 100k ADC_VIN_SENSE R4 10k U2 AMS1117-3.3 (LDO Linear) +3V3_MCU (Pure Analog Power)

⚙️ Ejercicios Prácticos

El Divisor de Tensión (Monitoreo Predictivo): Un apagón en la planta de gas no ocurre en 0 milisegundos. Cuando cortan la luz, los capacitores gigantes de las fuentes de poder de 24V se descargan durante varios cientos de milisegundos. El voltaje cae de 24V a 20V, luego a 15V, luego a 10V. En el diagrama agregamos un divisor de tensión resistivo (R3 de 100k y R4 de 10k) que conecta la línea cruda de 24V directamente al ADC del STM32. Cuando el STM32 ve que el voltaje baja de 18V, sabe que "la muerte se acerca". Tiene fracciones de segundo vitales para guardar en la EEPROM la transacción de gas actual antes de que el STM32 se apague por completo.

Ejercicio 1: El Sensor de Vida (Firmware ADC). Programaremos la función en C que lee el pin ADC_VIN_SENSE y ejecuta la rutina de cierre de válvulas si detecta una caída de tensión inminente.


/**
 * @file adc_power_monitor.c
 * @brief Detección temprana de pérdida de alimentación (Brown-out precursor)
 */

#include "stm32f401xe.h"
#include "cmsis_os2.h"
#include <stdint.h>
#include <stdbool.h>

// =========================================================================
// DEFINICIONES DE HARDWARE (Constantes del Divisor de Voltaje)
// =========================================================================
// R3 = 100k, R4 = 10k. 
// Voltaje en el Pin = Voltaje_Entrada * (R4 / (R3 + R4))
// Multiplicador Inverso para recuperar el voltaje real = 11.0f
#define DIVISOR_MULTIPLIER      (11.0f)
#define ADC_MAX_VOLTAGE         (3.3f)
#define ADC_RESOLUTION          (4095.0f)

// Límites de Seguridad de la Máquina
#define VOLTAJE_NOMINAL_MINIMO  (21.0f) // Operación normal sana
#define VOLTAJE_PELIGRO_APAGON  (16.0f) // ¡La fuente se está apagando!

extern uint16_t HAL_ADC_Leer_Pin_PowerSense(void);
extern void Disparar_Rutina_Panico_Apagon(void);

// =========================================================================
// TAREA RTOS: VIGILANTE DE ENERGÍA (Prioridad Crítica)
// =========================================================================
void Task_Power_Monitor(void *argument) {
    
    // Esta tarea se ejecuta muy rápido (cada 10ms) para atrapar el apagón a tiempo.
    for(;;) {
        // 1. Leer el valor digital crudo (0 - 4095)
        uint16_t adc_raw = HAL_ADC_Leer_Pin_PowerSense();
        
        // 2. Convertir a Voltaje en el Pin del Micro (0 a 3.3V)
        float voltaje_pin = ((float)adc_raw / ADC_RESOLUTION) * ADC_MAX_VOLTAGE;
        
        // 3. Reconstruir el Voltaje real de la red industrial (0 a 36.3V máx)
        float voltaje_red_24v = voltaje_pin * DIVISOR_MULTIPLIER;
        
        // 4. LÓGICA DE SUPERVIVENCIA
        if (voltaje_red_24v < VOLTAJE_PELIGRO_APAGON) {
            
            // EL APAGÓN ESTÁ OCURRIENDO. 
            // Los capacitores de la fuente están cediendo.
            // Nos quedan aproximadamente 200 milisegundos de vida antes 
            // de que el LDO de 3.3V colapse y el STM32 muera.
            
            // Acción inmediata (En este exacto orden):
            // 1. Desconectar los Relés de las válvulas para cortar el flujo de Gas.
            // 2. Apagar la pantalla LCD (consume energía valiosa).
            // 3. Escribir el litro exacto despachado en la memoria I2C EEPROM.
            
            Disparar_Rutina_Panico_Apagon(); // Salto sin retorno.
            
            // Loop infinito. El hardware se apagará físicamente en breve.
            while(1); 
        }
        
        // Ceder el control
        osDelay(pdMS_TO_TICKS(10U)); 
    }
}
        

🚀 Avance del Proyecto Tesis: Despachador de Gas LP

Objetivo del día: Aislamiento de Ruido y Supervisión de Energía (Early Brown-out Detection).

El diseño de una fuente de poder no trata solo de "darle voltaje a la placa". En un entorno industrial, la fuente de poder es la primera línea de defensa de la ciber-seguridad física. Un pico de voltaje inducido por un rayo lejano o un motor defectuoso no destruirá tu microcontrolador, porque el **Diodo TVS** sacrificará su propia integridad (cortocircuitándose y haciendo volar el **Fusible PTC**) antes de permitir que la sobretensión cruce hacia el silicio digital.

Por otro lado, la división del poder en un **Buck Converter de alta eficiencia** seguido de un **LDO lineal de alta pureza** asegura que los componentes más ruidosos (como el Módem Celular que consume 2 Amperios en picos) no contaminen el ADC del STM32 que vigila los delicados sensores del gas. Finalmente, al amarrar la lectura analógica de los 24V al software a través del divisor de tensión, has cerrado el círculo de la Resiliencia: tu Despachador "siente" cuándo va a morir y usa sus últimos latidos eléctricos para salvar la contabilidad financiera en la base de datos persistente. Eso es arquitectura de grado de misión.

📝 Resumen del Día