DÍA 090 DE 365

Fase 2: Fundamentos de Hardware y Electrónica

📖 Teoría a Estudiar

El Lenguaje de las Máquinas: Formato RS-274X

Una fábrica de PCBs no necesita tu archivo `.kicad_pcb`. Necesita coordenadas matemáticas 2D (vectores) que controlen sus máquinas de fotolitografía y láseres. El estándar universal para esto es el formato Gerber (RS-274X).

La placa no se exporta como una sola imagen, sino que se "despedaza" en capas individuales. El fabricante apilará y procesará químicamente cada una de estas capas para construir tu hardware paso a paso.

La Anatomía de la Exportación

Al hacer clic en el botón "Plot" (Trazar) en KiCad, generarás una colección de archivos. Los más críticos para una placa de 2 capas son:

DESCOMPOSICIÓN DE CAPAS (GERBER STACKUP) GAS-LP v1 F.Silkscreen (.gto) F.Mask (.gts) (Aislante / Negativo) F.Cu (.gtl) Edge.Cuts (.gm1) (Contorno de la Placa) Drill (.drl) (Broca CNC)

Hardware Versioning (Versionado de Hardware)

Tu diseño inicial es la Revisión 1.0. Pero en 6 meses lanzarás la Revisión 1.1 con una mejor fuente de poder. El firmware en C que escribas será el mismo para ambos, pero necesita saber en cuál placa está corriendo para configurar los pines correctamente.

Una técnica de hardware industrial consiste en reservar 2 o 3 pines GPIO (ej. HW_REV_0 y HW_REV_1). En el diseño PCB de la versión 1.0, unes ambos a GND en el cobre (0-0). En la PCB versión 1.1, unes uno a 3.3V y otro a GND (0-1). El firmware lee estos pines al arrancar y ajusta su comportamiento automáticamente según la tarjeta física que le tocó.

⚙️ Ejercicios Prácticos

Ejercicio 1: Escribe la rutina de booteo (arranque) Bare-Metal en C que lee los pines físicos de "Hardware Revision" anclados en el cobre de la PCB, permitiéndole al software autoconfigurarse dinámicamente.


#include <stdint.h>
#include <stdbool.h>

// --- 1. DEFINICIONES DE HARDWARE BARE-METAL ---
volatile uint32_t *GPIOB_IDR = (volatile uint32_t *)0x40020410; // Input Data Register Port B

// El Arquitecto rutó los pines PB0 y PB1 en KiCad específicamente para identificar la placa
#define PIN_HW_REV_0  0
#define PIN_HW_REV_1  1

extern void log_imprimir(const char* msg);
extern void inicializar_lcd_v1(void);
extern void inicializar_lcd_v2_i2c(void);


// --- 2. DETECCIÓN DE VERSIÓN DE PCB (HARDWARE-FIRMWARE INTERLOCK) ---
void detectar_hardware_pcb(void) {
    
    // Leemos el estado eléctrico (3.3V o 0V) de los pines de revisión
    // Extraemos los bits 0 y 1 y los combinamos en un número binario (0 al 3)
    uint8_t bit_0 = (*GPIOB_IDR & (1 << PIN_HW_REV_0)) ? 1 : 0;
    uint8_t bit_1 = (*GPIOB_IDR & (1 << PIN_HW_REV_1)) ? 1 : 0;
    
    uint8_t revision_placa = (bit_1 << 1) | bit_0;
    
    // Autoconfiguración basada en la soldadura del PCB
    switch (revision_placa) {
        
        case 0: // Binario 00 -> Revisión 1.0 (Placa Prototipo)
            log_imprimir("Boot: Hardware Rev 1.0 detectado.");
            inicializar_lcd_v1(); // Usa LCD paralela antigua
            break;
            
        case 1: // Binario 01 -> Revisión 1.1 (Placa de Producción)
            log_imprimir("Boot: Hardware Rev 1.1 detectado.");
            inicializar_lcd_v2_i2c(); // Usa nueva LCD I2C
            break;
            
        default:
            log_imprimir("ERR: Placa no reconocida. Abortando.");
            while(1); // Detener el sistema por seguridad
    }
}

int main(void) {
    
    // Lo primero que hace el firmware es "mirar su propio cuerpo"
    detectar_hardware_pcb();
    
    while(1) {
        // Lógica metrológica principal...
    }
    return 0;
}
        

🚀 Avance del Proyecto Tesis: Despachador de Gas LP

Objetivo del día: Exportar Gerbers y liberar el diseño para manufactura (Release to Manufacturing - RTM).

Abre tu archivo final en KiCad. Presiona `File -> Fabrication Outputs -> Gerbers`. Marca las casillas de F.Cu, B.Cu, F.Silkscreen, F.Mask, B.Mask y Edge.Cuts. Haz clic en "Plot". Luego ve a `Generate Drill Files` y exporta los archivos EXCELLON.

¡Felicidades! Al hacer esto, tu Despachador de Gas LP deja de ser un concepto matemático en tu computadora y se convierte en un paquete de datos de manufactura. Empaqueta todos estos archivos generados en un solo `.zip`. Con este archivo, ahora tienes la capacidad de cotizar la fabricación de la placa con proveedores locales de PCBs en Guadalajara para obtener tu primer prototipo rápido, o enviarlo a fábricas internacionales para una producción de ensamble en masa. Has dominado el diseño de hardware.

📝 Resumen del Día