DÍA 314 DE 365

Fase 5: Diseño Industrial y Hardware

📖 Teoría a Estudiar

El Mito de los 0 Voltios (Ground Bounce)

En el diagrama esquemático, todos los símbolos de GND están conectados mágicamente al mismo punto de 0V. En la PCB física, el cobre tiene resistencia ($R$) e inductancia parásita ($L$). La Ley de Ohm nos dice que $V = I \times R$. Si un relé envía una corriente de retorno ($I$) muy alta y rápida a través de la pista de tierra, esa pista generará un voltaje. Tu tierra ya no es 0V, tal vez suba a 0.3V. A esto se le llama Ground Bounce (Rebote de Tierra).

Si el ADC del STM32 (que está tratando de leer 0.1V del sensor de presión) tiene su referencia de tierra atada a esos mismos 0.3V contaminados, la lectura analógica estará destruida. El software leerá "ruido".

Los Tres Dominios de la PCB

Para evitar esto, los ingenieros dividen la placa (Floorplanning) y el cobre en tres continentes, unidos solo por un único "puente":

  1. AGND (Analog Ground): Para el PT100, el sensor 4-20mA y los pines analógicos del STM32. Es una zona silenciosa, de bajísima corriente.
  2. DGND (Digital Ground): Para el STM32, el módulo ESP32 Wi-Fi y memorias I2C/SPI. Hay frecuencias altas (84 MHz) que generan picos agudos de ruido (Ringing).
  3. PGND (Power Ground): Para los reguladores conmutados (Buck Converters) y los transistores/relés de las válvulas de 24V. Es la zona más violenta.
TOPOLOGÍA DE PCB: STAR GROUNDING Y POLÍGONOS DE COBRE AGND (Analógica) Tierra Silenciosa (Sensores) MAX31865 OpAmp ADC DGND (Digital) Ruido de Alta Frecuencia (84MHz / Wi-Fi) STM32 ESP32 (Wi-Fi) PGND (Potencia) Ruido Violento / Corrientes de Retorno Relé 24V DC-DC Buck GND IN NET TIE (Star Point) La sucia corriente de retorno de la válvula viaja directo a la fuente, NUNCA pasa por AGND.

⚙️ Procedimiento Práctico en KiCad (Floorplanning)

Paso 1: Agrupación Geométrica.
En el entorno de diseño de PCB (Pcbnew), no mezcles los componentes. Coloca la fuente DC-DC y los relés en el lado derecho. Coloca el microcontrolador en el centro. Coloca los Amplificadores Operacionales y conversores analógicos (ADC) en el lado izquierdo absoluto. Este es el primer paso de un Star Grounding.

Paso 2: Polígonos de Cobre Independientes.
En lugar de un solo polígono de GND para toda la placa, dibuja un polígono AGND para la zona analógica, un DGND para la digital y un PGND para potencia. Físicamente, el cobre está cortado y separado por canales vacíos en la tarjeta.

Paso 3: El "Net Tie" (Lazo de Red).
Si dejas los polígonos separados, el circuito no cerrará. En KiCad, agregas un componente especial llamado Net Tie. En el esquemático une AGND, DGND y PGND en un solo símbolo de tierra maestra. En la PCB física, el Net Tie te obliga a dibujar un diminuto puente de cobre justo al lado del capacitor de entrada de la fuente de poder principal. Toda la corriente de retorno confluye en este "punto estrella", evitando que las corrientes sucias crucen por los dominios limpios.

💻 Firmware: Filtrado Digital (El Escudo Final)

Incluso con el mejor diseño de PCB del mundo (Hardware), la inducción electromagnética ambiental de una gasera introducirá algo de ruido en los ADC. El Arquitecto aplica un filtro por software (Firmware) como última línea de defensa. Nunca confíes en una sola lectura (RAW) de un sensor.


/**
 * @file hardware_adc_filter.c
 * @brief Filtro de Promedio Móvil (Moving Average) para mitigar Ground Bounce residual
 */

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

extern ADC_HandleTypeDef hadc1;

// Tamaño de la ventana del filtro (Potencia de 2 para optimizar la división)
#define FILTER_WINDOW_SIZE 16 

/**
 * @brief Lee el sensor de presión mitigando el ruido eléctrico impulsivo.
 * Aplica Oversampling básico y Promedio Móvil mediante arreglos circulares.
 * @retval uint32_t: Valor ADC limpio y promediado (0 - 4095)
 */
uint32_t Read_Pressure_ADC_Clean(void) {
    
    // Buffer estático para conservar los datos entre llamadas
    static uint16_t adc_buffer[FILTER_WINDOW_SIZE] = {0};
    static uint8_t index = 0;
    static uint32_t sum = 0;
    
    // 1. Leer el valor físico RAW del hardware
    HAL_ADC_Start(&hadc1);
    HAL_ADC_PollForConversion(&hadc1, 10);
    uint16_t raw_value = HAL_ADC_GetValue(&hadc1);
    HAL_ADC_Stop(&hadc1);
    
    // 2. Restar el valor más viejo que vamos a sobreescribir
    sum -= adc_buffer[index];
    
    // 3. Añadir el nuevo valor RAW sucio
    adc_buffer[index] = raw_value;
    sum += raw_value;
    
    // 4. Avanzar el puntero del buffer circular
    index++;
    if (index >= FILTER_WINDOW_SIZE) {
        index = 0;
    }
    
    // 5. Calcular el promedio. 
    // Truco de Hardware C: Dividir entre 16 es igual a "Shift Right" >> 4
    // Esto se ejecuta en 1 solo ciclo de reloj de la ALU, vs docenas en una división normal.
    uint32_t clean_average = sum >> 4; 
    
    return clean_average;
}
        

🚀 Avance del Proyecto Tesis: Despachador de Gas LP

Objetivo del día: Inmunidad Electromagnética (EMC) y Precisión Metrológica a Nivel Físico.

En el Día 274 diseñaste el esquemático de tu placa base. En papel, tu circuito analógico de temperatura (PT100) y tu circuito de relés compartían el mismo símbolo de "Tierra". Un estudiante enviaría eso a fabricar a China y vería cómo todo el vertido de cobre se fusiona. Al conectar las electroválvulas en campo, los violentos chasquidos inductivos alterarían momentáneamente el plano GND. El microcontrolador registraría caídas fantasmas de presión y activaría la Alarma de Fuga (Día 303) apagando la máquina docenas de veces al día sin explicación aparente.

Al dominar la **Segregación de Planos de Cobre** y el concepto del **Net Tie (Punto Estrella)**, obligas a los electrones sucios de las válvulas de gas a regresar a la fuente de poder por una "autopista" paralela, sin jamás cruzar ni contaminar la "zona residencial" donde el chip MAX31865 está midiendo microvoltios de temperatura. Además, al implementar el **Filtro de Promedio Móvil** en el firmware de hoy, usaste la aritmética veloz del procesador ARM (Shift Bitwise) para planchar electrónicamente cualquier rizado residual. Tu Tesis ya no es vulnerable a las leyes del electromagnetismo; las utiliza a su favor.

📝 Resumen del Día