Los componentes pasivos SMD (Resistores, Capacitores) se nombran usando códigos de cuatro dígitos basados en pulgadas (Sistema Imperial). Por ejemplo, un 0805 mide 0.08 x 0.05 pulgadas (2.0 mm x 1.25 mm). Un 0402 mide 0.04 x 0.02 pulgadas (1.0 mm x 0.5 mm).
Mientras más moderno es un iPhone, más diminutos son sus componentes (0201 o incluso 01005). Los ingenieros de software adoran miniaturizar las placas porque se ven "avanzadas". Pero en la industria pesada, la miniaturización es tu enemigo por tres leyes físicas:
El Estándar de Oro Industrial: Utilizamos 0805 para todos los resistores pull-up, pull-down y LEDs, y bajamos a 0603 solo para capacitores de desacoplo muy cerca del microcontrolador. Reservamos el 1206 estrictamente para rutas de potencia (Shunts o divisores de 24V).
Paso 1: Asignación de Huellas (Footprint Assignment).
Resistor_SMD.R_0805_2012Metric_HandSolder. Has asignado el chasis industrial por defecto a todas tus resistencias lógicas.Paso 2: Excepciones de Potencia (El Shunt 4-20mA).
¿Recuerdas el resistor Shunt de 150 Ω del Día 273? Si fluyen 20mA (0.02A) por él, la potencia disipada será P = I² * R = (0.02)² * 150 = 0.06 W. Un resistor 0805 disipa máximo 0.125W. Está al 50% de su límite. En la industria operamos componentes de potencia al 25% de su límite máximo por seguridad térmica. Asigna a este componente específico la huella R_1206_3216Metric_HandSolder, que soporta 0.25W.
Así como programamos un script de Python (Día 267) para auditar el archivo binario del código, podemos escribir un script en Python usando la API de KiCad (pcbnew) para correr en GitHub Actions y auditar la placa. Si algún ingeniero del equipo asigna un diminuto e inestable 0402 a la placa del Despachador de Gas LP, la nube rechazará el diseño.
#!/usr/bin/env python3
"""
@file check_footprints.py
@brief Script CI/CD (DevOps) para auditar restricciones mecánicas DFM en KiCad 8.
"""
import sys
import pcbnew # API oficial de KiCad en Python
# -----------------------------------------------------------------
# REGLAS DE NEGOCIO INDUSTRIAL (Design For Manufacturing)
# -----------------------------------------------------------------
BANNED_FOOTPRINTS = ["0201", "0402"]
ALLOWED_FOOTPRINTS = ["0603", "0805", "1206", "1210"]
def auditar_pcb(pcb_path):
print(f"[*] Cargando placa para auditoría térmica/mecánica: {pcb_path}")
board = pcbnew.LoadBoard(pcb_path)
errores = 0
# Iterar por cada componente (Footprint) físico en la placa
for footprint in board.GetFootprints():
fp_name = str(footprint.GetFPID().GetLibItemName())
ref_des = footprint.GetReference()
# Revisamos si el nombre de la huella contiene formatos prohibidos
for banned in BANNED_FOOTPRINTS:
if banned in fp_name:
print(f"[X] FALLO DFM: {ref_des} utiliza un footprint prohibido ({fp_name}).")
print(f" Razón: {banned} no soporta vibración industrial y es inmanejable en Rework de campo.")
errores += 1
if errores > 0:
print(f"\n[!] CI/CD ABORTADO. Se detectaron {errores} componentes bajo el estándar mínimo de masa térmica.")
sys.exit(1)
else:
print("\n[V] AUDITORÍA DFM EXITOSA: Todos los componentes cumplen con el estándar mecánico industrial (>= 0603).")
sys.exit(0)
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Uso: python check_footprints.py <archivo.kicad_pcb>")
sys.exit(1)
auditar_pcb(sys.argv[1])
Objetivo del día: Diseño para la Manufacturabilidad (DFM) y Resiliencia Térmica.
Un ingeniero electrónico inexperto asume que la física dentro de su computadora aplica al mundo exterior. Asigna componentes SMD tamaño 0402 porque "caben mejor", envía los archivos Gerber a China y recibe su placa de control del Despachador de Gas LP. Todo funciona en el laboratorio. Pero tres meses después de la instalación en la gasolinera, la bomba de 5 caballos de fuerza arranca, hace vibrar la carcasa metálica, la placa PCB de fibra de vidrio se flexiona microscópicamente, y el diminuto resistor de 1 milímetro se desprende silenciosamente. La máquina muere sin explicación y el dueño pierde ventas de gas todo el fin de semana.
Al auditar activamente tus Huellas de Componentes, estableciste que **0805** es tu "Línea Base". Sacrificaste el tamaño de la placa (haciéndola ligeramente más grande) a cambio de una robustez sísmica. Tus resistores tienen la masa térmica suficiente para disipar calor, y sus Pads extendidos (HandSolder) tienen suficiente estaño anclado para absorber las tensiones mecánicas de la bomba de gas. Además, tu script de CI/CD impide estadísticamente que cualquier error de diseño frágil llegue jamás a la línea de ensamblaje (Pick & Place) de tu fábrica en Shenzhen.