Las pistas de cobre de una PCB no son conductores perfectos; tienen resistencia eléctrica. Cuando una corriente alta (ej. 2 Amperios para las válvulas) viaja por una pista delgada, ocurren dos desastres físicos dictados por la física básica:
En el Día 63 aprendimos que los Capacitores de Bypass (100nF) salvan al MCU de los ruidos de alta frecuencia. Pero de nada sirve poner el capacitor cerca del pin si **ruteas el cobre mal**. La energía de la fuente *debe* entrar obligatoriamente por el pad del capacitor, limpiarse, y *luego* salir hacia el pin del microcontrolador. A esto se le llama "Flujo de Energía en Cascada".
En KiCad, no calculas el ancho a ojo. Existen calculadoras integradas que te dicen: "Si quieres pasar 2 Amperios por cobre de 1 oz, necesitas una pista de 0.76 mm".
Pero la técnica definitiva para VCC y GND no es usar pistas... es usar Planos de Cobre (Filled Zones). Al dibujar un polígono que cubre grandes áreas de la placa y asignarle la red GND o +3V3, creas una superautopista infinita de electrones con resistencia casi nula.
Ejercicio 1: Si por un error de ruteo en KiCad hiciste la pista de VCC muy delgada, cuando la electroválvula del gasero encienda, el voltaje del STM32 caerá por un milisegundo de 3.3V a 2.7V. Esto corromperá la memoria. En tu Firmware, configura el sistema de Detección de Caída de Voltaje (Brown-Out Reset - BOR) del hardware STM32, y lee sus banderas al arrancar para informar si el diseño de la placa está fallando eléctricamente.
#include <stdint.h>
#include <stdbool.h>
// --- 1. REGISTROS FÍSICOS (STM32F4 Reset & Clock Control) ---
volatile uint32_t *RCC_CSR = (volatile uint32_t *)0x40023874; // Control & Status Register
// Máscaras de Banderas de Reinicio
#define RCC_BORRSTF_FLAG (1 << 25) // Brown-Out Reset Flag (Caída de voltaje)
#define RCC_PORRSTF_FLAG (1 << 27) // Power-On Reset Flag (Encendido normal)
#define RCC_RMVF_BIT (1 << 24) // Remove Reset Flags (Limpiar banderas)
extern void lcd_imprimir_alerta(const char* msg);
// --- 2. DIAGNÓSTICO DE INTEGRIDAD DE POTENCIA (Hardware-Software) ---
void diagnosticar_ruteo_potencia_pcb(void) {
// Leemos el registro de estado que nos dice POR QUÉ se reinició el chip
uint32_t registro_reinicio = *RCC_CSR;
// Si la bandera de Brown-Out (BOR) está levantada...
if (registro_reinicio & RCC_BORRSTF_FLAG) {
// ¡FALLA DE RUTEO O FUENTE DE PODER!
// El voltaje de 3.3V colapsó temporalmente. Si esto pasa en medio del
// despacho de gas cuando se activan los motores, significa que nuestras
// pistas de cobre (VCC/GND) son demasiado delgadas y generaron una
// caída de tensión masiva, o los capacitores de bypass están mal ruteados.
lcd_imprimir_alerta("ERR PCB: VCC DROP!");
// Guardamos el evento en la EEPROM de logs (Día 50) para auditoría.
// log_registrar_falla_energia();
}
else if (registro_reinicio & RCC_PORRSTF_FLAG) {
// Reinicio normal por encendido en frío. Todo bien.
}
// Limpiamos las banderas para la próxima vez
*RCC_CSR |= RCC_RMVF_BIT;
}
// --- 3. EL ARRANQUE DEL SÚPER BUCLE ---
int main(void) {
// 1. Antes de mover un solo bit de lógica, preguntamos al Hardware:
// ¿Morimos por asfixia eléctrica la última vez?
diagnosticar_ruteo_potencia_pcb();
while(1) {
// Algoritmo metrológico de gas...
}
return 0;
}
Objetivo del día: Integridad de Energía (Power Integrity) en PCB.
El código Bare-Metal más perfecto del mundo colapsará si la sangre del sistema (el voltaje) no llega de forma limpia al corazón (el STM32). Al dibujar en KiCad usando pistas de 1.0 mm (40 mils) para las líneas de potencia, o mejor aún, usando Planos de Cobre de Tierra (GND Pours), garantizas que la resistencia eléctrica de tu placa sea casi nula.
Pero el truco de oro industrial que has aprendido hoy es el Flujo a través del Bypass. Si ruteas el cobre de VCC hacia el pad del capacitor, y de ahí sale la pista directa hacia el procesador, obligas a la corriente ruidosa a chocar contra la barrera capacitiva. Con esto, y con el diagnosticar_ruteo_potencia_pcb() vigilando el nivel de hardware (BOR) desde C, tu placa se convierte en un monolito inquebrantable, donde el firmware audita los posibles defectos termodinámicos de la tarjeta fabricada en China.
1. ¿Por qué es una pésima idea usar un Plano de Cobre (Filled Zone) para el nodo V_OUT de la bobina de nuestro Convertidor Buck (Día 69), si dijimos que los planos son buenos para la energía?
Respuesta: Porque el nodo V_OUT del Buck (antes del filtro) está conmutando de 24V a 0V un millón de veces por segundo (1 MHz). Si dibujas un polígono gigante de cobre atado a esa señal, acabas de fabricar la antena transmisora más poderosa del mundo. Irradiarás un ruido espantoso (EMI) a todo el cuarto y a los sensores del Despachador. Los nodos conmutados (Switching Nodes) deben ser pistas anchas pero **lo más cortas y pequeñas posibles**.
2. ¿Por qué el código Bare-Metal necesita "Limpiar" las banderas de reset escribiendo un "1" en el bit RCC_RMVF_BIT?
Respuesta: Las banderas en los registros de hardware son "Sticky" (pegajosas). Una vez que el silicio detecta el Brown-Out (BOR) y levanta la bandera, esta se queda levantada para siempre, incluso a través de reinicios posteriores. Si tu código no la limpia, la próxima vez que reinicies el sistema de forma normal, el software creerá falsamente que ocurrió otro Brown-Out. Limpiar el estado tras leerlo es la base del control de periféricos Bare-Metal.