DÍA 169 DE 365

Fase 3: Comunicaciones y Redes Industriales

📖 Teoría a Estudiar

El Camino de Retorno (Return Path)

Un error común de los novatos en diseño de PCBs es creer que la Tierra (GND) es un "sumidero mágico" donde la corriente desaparece. La realidad física es que toda la corriente que sale de una fuente, debe regresar a ella. En circuitos de alta velocidad, la corriente de retorno viaja exactamente por debajo de la pista de señal, buscando el camino de menor impedancia.

Si la agresiva corriente de retorno de tu controlador PWM (Válvula) atraviesa la misma lámina de cobre por donde regresa la delicada corriente de tu sensor PT100 analógico, los milivoltios de diferencia crearán un "ruido de modo común". Tu microcontrolador leerá saltos térmicos absurdos.

La Solución KiCad: El Foso y el Punto Estrella (Net Tie)

Para proteger a la electrónica analógica sensible, debemos crear un "Foso" (Moat). Cortamos el plano de cobre del GND físico en dos islas separadas:

  1. Isla DGND (Tierra Digital): Aquí viven los relés, el transceptor RS485, los LEDs y los osciladores del STM32. Es la zona sucia.
  2. Isla AGND (Tierra Analógica): Aquí viven el Amplificador Operacional, los sensores y los capacitores de filtro. Es la zona limpia.

Pero ambas tierras deben tener exactamente el mismo potencial de $0\text{V}$, así que no pueden estar desconectadas. Las unimos en un Único Punto Estrella (usualmente debajo del chip conversor ADC o cerca del regulador de voltaje principal) utilizando un componente especial de KiCad llamado Net Tie.

ARQUITECTURA DE PLANOS DE COBRE: AGND / DGND SPLIT (KICAD) PCB Outline (Capa Bottom/GND) ZONA AGND (Limpia) PT100 ADC (OpAmp) Retorno Analógico ZONA DGND (Sucia) STM32 RS485 (Modbus) PWM Válvula Retorno de Alta Corriente / Alta Frecuencia EL FOSO (Sin Cobre) Punto Estrella (KiCad Net Tie) ❌ JAMÁS cruzar señales por encima del foso LDO 3.3V IN

⚙️ Ejercicios Prácticos

Paso a Paso en KiCad 8:

  1. Esquemático: No unas los símbolos de tierra analógica y digital directamente. Coloca el símbolo Net Tie (Búscalo en la biblioteca Device). Conecta AGND a un pin y DGND al otro. Esto le dice a KiCad que son dos redes lógicas distintas que se tocarán en un solo punto físico.
  2. Editor de PCB: Crea dos Zonas de Cobre (Copper Pours) independientes en la capa inferior (B.Cu). Asigna una a AGND y otra a DGND. Dibuja sus contornos asegurando que dejen una brecha (Foso) de 1 o 2 mm entre ellas.
  3. Punto Estrella: Coloca la huella (Footprint) del Net Tie exactamente sobre el foso, idealmente muy cerca de la entrada de alimentación principal o cerca del pin AGND del STM32.
  4. Regla de Hierro (DRC): Jamás rutees una pista de señal digital (SPI, I2C, UART) por encima de la zona AGND, y jamás cruces el foso con una pista. Si una señal debe cruzar, debe hacerlo exclusivamente por encima del puente físico del Net Tie, para que su corriente de retorno no se pierda.

El Impacto en el Firmware (Monitor de Ruido Bare-Metal):
Podemos escribir una función que evalúe la varianza matemática (ruido) del ADC para demostrar que nuestro rediseño de PCB funcionó, incluso sin filtros de software.


/**
 * @file adc_noise_profiler.c
 * @brief Evaluador de Varianza de Ruido del Hardware ADC (Prueba de Integridad de PCB)
 */

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

// Cantidad de muestras para el análisis estadístico
#define SAMPLES_COUNT 100

// Dependencia de lectura
extern uint16_t adc_leer_canal_sencillo(uint8_t canal);

/**
 * @brief Mide la inestabilidad eléctrica (Ruido Peak-to-Peak) del plano analógico.
 *        Ideal para calibrar y certificar una nueva revisión de placa de circuito.
 */
uint16_t Hardware_Evaluar_Ruido_AGND(uint8_t canal_adc) {
    
    uint16_t max_val = 0;
    uint16_t min_val = 4095;
    
    // 1. Apagamos todas las Interrupciones para evitar que el 
    // procesador genere consumo de corriente errático y nos ensucie la prueba.
    __disable_irq();
    
    // 2. Tomar una ráfaga de muestras crudas a máxima velocidad
    for(int i = 0; i < SAMPLES_COUNT; i++) {
        
        uint16_t lectura = adc_leer_canal_sencillo(canal_adc);
        
        if (lectura > max_val) max_val = lectura;
        if (lectura < min_val) min_val = lectura;
        
        // Pequeño retardo para permitir que el ADC recargue su capacitor de retención
        for(volatile int j = 0; j < 50; j++); 
    }
    
    __enable_irq();
    
    // 3. Devolver la diferencia (Peak-to-Peak Noise)
    // En una PCB de una sola tierra (Sucia), este delta puede ser de 80 a 150 unidades.
    // En una PCB con Split AGND/DGND correcto, el delta bajará a 2 o 3 unidades.
    return (max_val - min_val);
}

int main(void) {
    // ...
    // Diagnóstico en Modo Laboratorio
    // uint16_t ruido = Hardware_Evaluar_Ruido_AGND(CANAL_PT100);
    // printf("Ruido Hardware: +/- %d LSB\n", ruido);
    // ...
}
        

🚀 Avance del Proyecto Tesis: Despachador de Gas LP

Objetivo del día: Certificación de Metrología (Ruido Eléctrico Nulo).

En el Día 157 programamos la Tabla de Calibración API para compensar la densidad del gas según su temperatura. El problema es que el sensor de temperatura (PT100) envía señales diminutas (milivoltios). En tu primer prototipo de PCB (usando un solo plano de tierra masivo), cada vez que el Transceptor RS485 transmitía un paquete Modbus, su violenta corriente de retorno cruzaba por debajo del amplificador del PT100. Esto causaba que la lectura "saltara" de 25°C a 29°C instantáneamente, y tu algoritmo compensaba mal la venta de gas, perdiendo dinero.

Al rediseñar la placa con **Split Planes (AGND / DGND) y un Net Tie** en KiCad, has desterrado físicamente el ruido. Las violentas corrientes digitales de las válvulas PWM y de la red RS485 ahora circulan obligatoriamente por la isla DGND, regresando a la fuente de poder sin contaminar jamás la isla analógica. La temperatura se mantiene perfectamente estable en tu ADC. Tu algoritmo de software (Día 156) ya no tiene que luchar contra el hardware; ahora trabajan en armonía electromagnética perfecta.

📝 Resumen del Día