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".
Para evitar esto, los ingenieros dividen la placa (Floorplanning) y el cobre en tres continentes, unidos solo por un único "puente":
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.
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;
}
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.
GND_A y GND_D) mediante un puente de cobre controlado por el diseñador.>> 4).