DÍA 250 DE 365

Fase 5: Diseño Industrial y Proyecto Final

📖 Teoría a Estudiar

El Enemigo Oculto: Ley de Ohm en el Plano GND

Recordemos la física básica: Voltaje = Corriente x Resistencia (V = I * R). Aunque una pista de cobre ancha (Plano de Tierra) tiene una resistencia bajísima (ej. 0.05 Ohmios), no es cero. Si un relé que consume 2 Amperios manda su corriente de regreso a la fuente pasando por debajo de tu microcontrolador, generará una caída de voltaje de: V = 2A * 0.05Ω = 0.1 Voltios (100 mV).

Un conversor ADC de 12 bits leyendo un sensor a 3.3V tiene una resolución de 0.8 mV por escalón. ¡Ese ruido de 100 mV en la tierra acaba de introducir un error de 125 escalones en tu lectura! La temperatura marcará saltos de 10 grados cada vez que se encienda una válvula.

La Solución Industrial: Star Grounding (Tierra en Estrella)

Para evitar que el agua sucia se mezcle con el agua limpia, la industria divide los planos de tierra en tres categorías lógicas, que luego se unen en un solo punto físico centralizado (como los rayos de una rueda hacia el eje):

  1. AGND (Analog Ground): Zona hiper-limpia. Retornos de los sensores PT100, Divisores de voltaje del circuito EOL (Día 240).
  2. DGND (Digital Ground): Zona de ruido medio, alta frecuencia. Retornos del STM32, ESP32, Relojes SPI e I2C.
  3. PGND (Power Ground): Zona de violencia eléctrica (Corrientes altas y ruidosas). Retornos de Válvulas, Relés, Zumbadores y Reguladores Switching (Buck Converters).
TOPOLOGÍA DE RETORNO DE CORRIENTE (GROUNDING) AMATEUR: CASCADA (GROUND BOUNCE) PSU GND Válvulas (PGND) STM32 (DGND) Sensor (AGND) 2.0 Amperes Ruido Inducido = 150mV ERROR: La corriente bruta del motor atraviesa el camino del sensor, desplazando su 0V lógico. INDUSTRIAL: STAR GROUNDING (AISLADO) PSU GND Star Point (Net-Tie en KiCad) Válvulas (PGND) STM32 (DGND) Sensor (AGND) 2.0 A 50 mA 1 mA ÉXITO: Las corrientes regresan a la fuente por pistas separadas. Cero interferencia.

⚙️ Ejercicios Prácticos

Pasos en KiCad (El Componente Net-Tie): En el software de diseño de PCBs, si intentas conectar una pista etiquetada como `AGND` con otra etiquetada como `DGND`, el DRC (Design Rule Checker) te lanzará un error de "Cortocircuito". Para solucionarlo, debes usar un componente mágico de la librería de KiCad llamado Net Tie (Punto de Unión). Este componente permite conectar dos planos de cobre físicamente diferentes en un único puente de cobre intencional de 1 milímetro.

Ejercicio 1: Mitigación por Software (Filtro DSP). Incluso con el mejor *Star Grounding* del mundo, algo de ruido térmico y EMI residual puede afectar al ADC del sensor de temperatura (PT100). En software crítico (MISRA-C), jamás se toma una lectura cruda del ADC como válida. Implementaremos un Filtro Promediador Exponencial (EMA - Exponential Moving Average) que elimina las fluctuaciones de tierra actuando como un Filtro Pasabajo Digital (Low-Pass Filter).


/**
 * @file filtro_dsp_adc.c
 * @brief Filtro Pasabajo Digital (EMA) para blindar metrología contra Ruido de Tierra
 */

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

// =========================================================================
// PARÁMETROS DEL FILTRO DSP (Digital Signal Processing)
// =========================================================================
// Factor 'Alpha' del filtro EMA. 
// Define cuánto "peso" le damos a la nueva lectura frente al histórico.
// 0.01 = Filtro muy lento/fuerte (Ignora picos violentos de relés)
// 0.50 = Filtro rápido/débil (Reacciona rápido a cambios térmicos)
#define EMA_ALPHA           (0.05F) 
#define EMA_ALPHA_INVERSO   (1.0F - EMA_ALPHA) // 0.95F

typedef float float32_t;

// Variable estática para mantener memoria del valor histórico (El "Momento")
// Se inicializa en 0, pero en producción debería pre-cargarse con la primera lectura real.
static float32_t adc_filtrado_historico = 0.0F;
static bool filtro_inicializado = false;

// =========================================================================
// RUTINA DE FILTRADO (Llamada por la ISR del DMA o la Tarea RTOS a 1kHz)
// =========================================================================
/**
 * @brief  Suaviza matemáticamente el ruido de Ground Bounce del ADC
 * @param  lectura_cruda_adc: El valor bruto con ruido (0-4095)
 * @retval El valor flotante limpio y estabilizado
 */
float32_t DSP_Filtro_EMA_Temperatura(uint16_t lectura_cruda_adc) {
    
    float32_t lectura_float = (float32_t)lectura_cruda_adc;
    
    // Al arrancar la máquina, no tenemos histórico. 
    // Asignamos la primera lectura directa para no promediar contra 0V.
    if (!filtro_inicializado) {
        adc_filtrado_historico = lectura_float;
        filtro_inicializado = true;
        return adc_filtrado_historico;
    }
    
    // FÓRMULA MATEMÁTICA EMA:
    // Valor_Nuevo = (Lectura_Actual * Alpha) + (Valor_Historico * (1 - Alpha))
    
    float32_t termino_nuevo = lectura_float * EMA_ALPHA;
    float32_t termino_viejo = adc_filtrado_historico * EMA_ALPHA_INVERSO;
    
    adc_filtrado_historico = termino_nuevo + termino_viejo;
    
    // Retornamos el valor purificado al módulo de la Tabla API 54 (Día 237)
    return adc_filtrado_historico;
}

// =========================================================================
// INTEGRACIÓN (Tarea Metrológica)
// =========================================================================
/*
    // ... Dentro de la tarea de Metrología (Día 237) ...
    uint16_t ruido_hardware_pt100 = Leer_ADC_DMA_Temperatura();
    
    // La magia del Software reparando los ecos del Hardware
    float32_t adc_limpio = DSP_Filtro_EMA_Temperatura(ruido_hardware_pt100);
    
    int16_t temp_decimas = Convertir_ADC_a_Celsius(adc_limpio);
    float32_t vcf = API54_Compensar_Volumen(litros, temp_decimas);
*/
        

🚀 Avance del Proyecto Tesis: Despachador de Gas LP

Objetivo del día: Integridad de Señal Analógica y Arquitectura de Ruido Ultra-Bajo.

El error más frustrante que enfrentan las empresas que fabrican su primer equipo industrial es el "Ruido Fantasma". Todo el código es perfecto, los servidores en AWS funcionan, pero aleatoriamente la temperatura del gas salta de 25°C a 30°C y luego vuelve a bajar. Tras semanas de frustración, el ingeniero descubre que el "salto" de temperatura ocurre exactamente en el mismo instante en que se enciende la luz ámbar de la baliza o se dispara el zumbador. El diagnóstico es letal: La corriente sucia de las luces está regresando a la fuente pisando el plano de tierra del sensor térmico (Crosstalk Conductivo).

Al dominar la técnica de **Star Grounding (Conexión en Estrella)** en KiCad mediante el uso de **Net-Ties**, has separado físicamente los campos de batalla de tu PCB. La violencia de los relés, válvulas y módulos celulares viaja por su propio polígono de cobre (`PGND`) hacia la fuente. El silicio de tu STM32 opera en un paraíso libre de interferencias. Documentar la separación de planos `AGND`, `DGND` y `PGND` en la memoria técnica de tu tesis demostrará a cualquier auditor o inversor que no solo ensamblaste bloques de Arduino, sino que ejecutaste ingeniería electromagnética a nivel de placa base, un conocimiento reservado para especialistas de grado militar y automotriz.

📝 Resumen del Día