DÍA 081 DE 365

Fase 2: Fundamentos de Hardware y Electrónica

📖 Teoría a Estudiar

El Netlist: El Puente entre dos Mundos

Un Netlist es un archivo de texto puro que actúa como traductor entre el Esquemático (Eeschema) y el Editor de Placas (Pcbnew). Contiene dos listas fundamentales:

  1. Lista de Componentes: "Tenemos a R1 que es una resistencia tamaño 0805, y a U1 que es un STM32 tamaño LQFP-64".
  2. Lista de Redes (Nets): "Existe un cable lógico llamado CTRL_VALVULA. Este cable conecta el Pin 1 de R1 con el Pin 5 de U1".

Nota moderna: En versiones antiguas de KiCad debías exportar un archivo .net manualmente. En KiCad moderno (v6+), esto se hace con un solo botón: "Update PCB from Schematic" (F8). Aunque ocurre invisiblemente en la memoria RAM, el concepto del Netlist sigue siendo el motor subyacente.

IMPORTACIÓN A PCB: EL ARCHIVO NETLIST 1. ESQUEMÁTICO U1 R1 Net: CTRL_VALVULA F8 2. NETLIST (Texto) (net (code 14) (name "CTRL_VALVULA") (node (ref "U1") (pin "5") ) (node (ref "R1") (pin "1") ) ) 3. PCB (Pcbnew) El Nido de Ratas U1 R1 Airwire Regla: El Airwire indica que DEBES rutar una pista de cobre entre esos pads.

El "Rat's Nest" (Nido de Ratas)

Cuando presionas F8 (Update PCB) y pasas al editor de placas, todos tus componentes aparecerán amontonados en una esquina. Verás cientos de líneas blancas, delgadas y rectas cruzándose entre sí. Esas líneas se llaman Airwires (Hilos de aire) y conforman el Rat's Nest.

Un Airwire no es un cable físico; es una "liga elástica virtual" originada en el Netlist. Te recuerda: "Oye, en el esquemático dijiste que el Pin 5 de U1 va al Pin 1 de R1. Así que dibuja una pista de cobre aquí". A medida que dibujas el cobre real, los Airwires desaparecen. Tu objetivo como diseñador de PCB es eliminar todos los Airwires.

⚙️ Ejercicios Prácticos

Ejercicio 1: En proyectos industriales grandes, el diseñador de Hardware y el ingeniero de Firmware a veces son personas distintas. Analicemos cómo la anatomía del archivo Netlist dicta directamente la estructura de tus archivos de cabecera en C para evitar que el Súper Bucle actúe sobre pines equivocados.


/* 
 * LA ANATOMÍA DEL NETLIST (Lo que generó KiCad):
 * 
 * (net (code 42) (name "ALERTA_VISUAL_BJT")
 *   (node (ref U1) (pin 13))   --> Microcontrolador STM32, Pin 13
 *   (node (ref R5) (pin 1))    --> Resistencia de Base del Transistor
 * )
 * 
 * Si observas, el Netlist no dice "Puerto C, Pin 13", solo dice "Pin 13" del 
 * empaquetado físico (LQFP-64). El ingeniero de Hardware eligió ese pin porque
 * físicamente quedaba más cerca del transistor en la placa para rutar el cobre.
 */

// ============================================================================
// ARCHIVO: bsp_hardware.h (Board Support Package)
// ============================================================================
#ifndef BSP_HARDWARE_H
#define BSP_HARDWARE_H

#include <stdint.h>

// El Firmware DEBE hacer "traducción" del Netlist físico al Silicon Interno
// El Pin físico 13 en un LQFP-64 corresponde lógicamente a PC13 en el STM32.

#define PUERTO_ALARMA_BJT      GPIOC
#define PIN_ALARMA_BJT         13   // Físicamente ligado al Net "ALERTA_VISUAL_BJT"

// Macros de control directo Bare-Metal O(1)
#define ALARMA_ENCENDER()      (PUERTO_ALARMA_BJT->BSRR = (1 << PIN_ALARMA_BJT))
#define ALARMA_APAGAR()        (PUERTO_ALARMA_BJT->BSRR = (1 << (PIN_ALARMA_BJT + 16)))

#endif // BSP_HARDWARE_H


// ============================================================================
// ARCHIVO: main.c
// ============================================================================
#include "bsp_hardware.h"

int main(void) {
    
    // Inicialización
    // GPIO_Init_Salida(PUERTO_ALARMA_BJT, PIN_ALARMA_BJT);
    
    while(1) {
        // En el Día 65 hicimos esto. 
        // Ahora entendemos la cadena completa:
        // CÓDIGO C -> GPIO_BSRR -> PIN FÍSICO 13 -> PISTA DE COBRE (Ruteada)
        // -> RESISTENCIA 1K -> BASE DEL BJT -> TORRETA ESTROBOSCÓPICA DE 24V.
        
        // ALARMA_ENCENDER();
    }
    
    return 0;
}
        

🚀 Avance del Proyecto Tesis: Despachador de Gas LP

Objetivo del día: Sincronización del Diseño Físico con las Reglas Esquemáticas.

Al oprimir F8 en KiCad, has importado todo tu despachador a la placa virtual oscura de Pcbnew. Verás el STM32 de 64 pines, el módulo Wi-Fi ESP32, los transistores TO-252 del LDO y los MOSFETs de las válvulas. Verás miles de líneas cruzadas (el Nido de Ratas).

Este momento es crítico: el Netlist ha fijado las reglas. Si intentas dibujar una pista de cobre entre un pin de Tierra (GND) y la línea de 24V de potencia (VCC), Pcbnew no te dejará hacerlo. El DRC (Design Rules Checker) de la placa lee el Netlist en tiempo real y bloquea tu cursor para protegerte de causar un cortocircuito físico. Tu placa ya no es solo un dibujo; tiene leyes físicas y eléctricas inquebrantables embebidas en el software.

📝 Resumen del Día

❓ Cuestionario de Autoevaluación

1. Al importar a PCB, notas que tu STM32 y tus conectores están amontonados. Decides que el Pin 5 ya no te sirve porque cruza toda la placa, y sería mejor usar el Pin 10. ¿Puedes simplemente borrar el Airwire en Pcbnew y dibujar una pista hacia el Pin 10?
Respuesta: ¡No! Pcbnew te bloqueará y te dará un error de DRC. El editor de placas es "esclavo" del Netlist. Si quieres cambiar el Pin 5 al Pin 10 (técnica conocida como Pin Swapping), debes cerrar Pcbnew, regresar a Eeschema, cambiar la conexión lógica ahí, volver a oprimir F8 para actualizar el Netlist, y entonces Pcbnew redibujará el Airwire hacia el Pin 10. Siempre manda el Esquemático.

2. ¿Qué significa el comando (node (ref "U1") (pin "5")) dentro de un bloque (net) en el archivo de texto Netlist?
Respuesta: Es la instrucción topológica. Le dice al software: "Agrega el Pad número 5 de la huella física llamada U1 a esta red eléctrica". Cualquier otro node listado dentro de ese mismo bloque net estará eléctricamente unido a él mediante un Airwire, obligándote a rutarlos juntos con cobre para que compartan exactamente el mismo voltaje.