DÍA 287 DE 365

Fase 5: Diseño Industrial y Hardware

📖 Teoría a Estudiar

La Pasta de Soldar (Solder Paste)

A diferencia de la soldadura de hilo que usas con el cautín, la soldadura SMD (Surface Mount Device) utiliza una pasta que parece plastilina gris. Esta pasta es una mezcla de dos cosas:

  1. Polvo de Aleación: Microscópicas esferas de metal. El estándar industrial libre de plomo es SAC305 (96.5% Estaño, 3.0% Plata, 0.5% Cobre).
  2. Flux (Fundente) y Solvente: Un gel químico que le da la textura pegajosa para sostener los componentes antes de entrar al horno, y que, al calentarse, ataca químicamente la oxidación del cobre para permitir la fusión.

Las 4 Zonas de la Curva de Reflujo (Reflow Profile)

El horno industrial no "enciende y apaga". Sigue una coreografía térmica estricta de 4 a 6 minutos, dictada por la norma IPC/JEDEC J-STD-020, gobernada por la ecuación de la rampa térmica $\frac{dT}{dt}$:

PERFIL TÉRMICO DE SOLDADURA POR REFLUJO (LEAD-FREE SAC305) 250°C (Pico) 217°C (Líquido) 150°C (Activación) 25°C (Ambiente) Temperatura (°C) Tiempo (s) 60s 150s 240s 300s 1. PRECALENTAMIENTO 2. REMOJO (SOAK / FLUX ACTIVATION) 3. REFLUJO (LIQUIDUS) 4. ENFRIAMIENTO Evapora Solventes < 3°C/segundo Elimina Óxidos Equilibra Temperaturas Estaño Líquido TAL: 30 - 60s Cristalización ~ -4°C/segundo

⚙️ Práctica: El Controlador PID de Reflujo (Firmware)

¿Qué hace un ingeniero embebido cuando no quiere pagar $2,000 dólares por un horno industrial de reflujo para prototipar? Compra un horno tostador doméstico de 30 dólares, le instala un termopar MAX31855, un Relé de Estado Sólido (SSR), y usa un microcontrolador para convertirlo en una máquina industrial.

Ejercicio 1: Máquina de Estados para Horno de Reflujo. Escribiremos el núcleo (Core) de la FSM (Finite State Machine) en C que gobierna las resistencias eléctricas del horno siguiendo estrictamente la curva J-STD-020.


/**
 * @file reflow_oven_fsm.c
 * @brief Controlador PID y Máquina de Estados para Horno de Reflujo SMD (Bare-Metal)
 */

#include <stdint.h>
#include <stdbool.h>

// =========================================================================
// DEFINICIÓN DE PERFIL SAC305 (LEAD-FREE)
// =========================================================================
#define TEMP_PREHEAT_END    (150.0f)
#define TEMP_SOAK_END       (200.0f)
#define TEMP_REFLOW_PEAK    (245.0f)
#define TEMP_SAFE_COOL      (50.0f)

#define TIME_SOAK_MAX_SEC   (90U)
#define TIME_REFLOW_MAX_SEC (45U)

// Estados de la máquina
typedef enum {
    REFLOW_IDLE,
    REFLOW_PREHEAT,
    REFLOW_SOAK,
    REFLOW_REFLOW,
    REFLOW_COOLING,
    REFLOW_ERROR
} ReflowState_t;

static ReflowState_t current_state = REFLOW_IDLE;
static uint32_t zone_timer_sec = 0;

// Dependencias Externas (Abstracción de Hardware)
extern float MAX31855_Read_Temp(void);
extern void SSR_Heater_Control(float pid_output);
extern float PID_Compute(float setpoint, float current_temp);
extern void Alarm_Sound(void);

// =========================================================================
// EL MOTOR DEL HORNO (Debe llamarse cada 1 segundo exacto mediante un Timer)
// =========================================================================
void Reflow_Engine_Update(void) {
    
    float current_temp = MAX31855_Read_Temp();
    float target_setpoint = 0.0f;
    float pid_power = 0.0f;
    
    switch (current_state) {
        
        case REFLOW_IDLE:
            SSR_Heater_Control(0.0f); // Apagado por seguridad
            break;
            
        case REFLOW_PREHEAT:
            // Rampa suave a 150°C
            target_setpoint = TEMP_PREHEAT_END;
            pid_power = PID_Compute(target_setpoint, current_temp);
            
            if (current_temp >= TEMP_PREHEAT_END) {
                current_state = REFLOW_SOAK;
                zone_timer_sec = 0;
            }
            break;
            
        case REFLOW_SOAK:
            // Mantener temperatura entre 150 y 200 para activar el Flux
            target_setpoint = TEMP_SOAK_END;
            pid_power = PID_Compute(target_setpoint, current_temp);
            
            zone_timer_sec++;
            if (current_temp >= TEMP_SOAK_END || zone_timer_sec > TIME_SOAK_MAX_SEC) {
                current_state = REFLOW_REFLOW;
                zone_timer_sec = 0;
            }
            break;
            
        case REFLOW_REFLOW:
            // Golpe rápido de calor para derretir la soldadura
            target_setpoint = TEMP_REFLOW_PEAK;
            pid_power = PID_Compute(target_setpoint, current_temp);
            
            zone_timer_sec++;
            
            // Seguridad: Si pasamos el tiempo máximo en zona líquida, abortar
            if (zone_timer_sec > TIME_REFLOW_MAX_SEC || current_temp >= TEMP_REFLOW_PEAK) {
                current_state = REFLOW_COOLING;
            }
            break;
            
        case REFLOW_COOLING:
            // Apagamos los calentadores y esperamos a que baje la temperatura
            pid_power = 0.0f; 
            
            // Opcional: Activar ventilador de extracción
            // Fan_Extract_On();
            
            if (current_temp <= TEMP_SAFE_COOL) {
                Alarm_Sound(); // Bip Bip: Placa lista para retirar
                current_state = REFLOW_IDLE;
            }
            break;
            
        case REFLOW_ERROR:
        default:
            pid_power = 0.0f; // Emergencia: Fuego apagado
            break;
    }
    
    // Aplicamos la potencia calculada al Relé de Estado Sólido (PWM)
    if (current_state != REFLOW_IDLE && current_state != REFLOW_ERROR) {
        SSR_Heater_Control(pid_power);
    }
}
        

🚀 Avance del Proyecto Tesis: Despachador de Gas LP

Objetivo del día: Integridad Mecánica de Uniones (Solder Joints) bajo Vibración.

El Despachador de Gas LP que estás construyendo no estará sentado en un escritorio con aire acondicionado. Estará atornillado junto a un motor de varios caballos de fuerza. Si ignoras la curva de reflujo y calientas la placa abruptamente con una pistola de calor manual, sucederán dos cosas: los componentes masivos (como los relés pesados o las borneras) no alcanzarán a fundir el estaño adecuadamente (Soldadura Fría), mientras que las diminutas resistencias SMD 0805 se sobrecalentarán y se oxidarán.

Una Soldadura Fría es frágil como el yeso. Con la vibración continua de la bomba de gas en el campo, esas soldaduras desarrollarán micro-fracturas invisibles en meses. Tu despachador funcionará intermitentemente y perderás la confianza del cliente. Al dominar la termodinámica del Remojo (Soak), garantizas que toda la masa térmica de tu tarjeta madre se equilibre antes del pico líquido, logrando que el estaño "moje" los pads de cobre y los pines del STM32 a la perfección. Esas uniones metálicas brillantes, en forma de rampa de patinaje cóncava, son el verdadero pegamento estructural que le dará a tu hardware 10 años de vida operativa.

📝 Resumen del Día