Una máquina Pick-and-Place (PnP) tiene una cámara apuntando hacia abajo. Cuando la PCB entra en la máquina, la cámara busca puntos de referencia exactos para calcular el desplazamiento X/Y y la rotación angular de la placa. Estos puntos se llaman Fiduciales.
Un fiducial no es un componente electrónico; es un "dibujo" en el cobre. Anatómicamente consiste en tres capas estrictas:
Fiduciales Globales: Se colocan en los bordes de la PCB. Se usan tres en total (ej. Arriba-Izquierda, Arriba-Derecha, Abajo-Izquierda). Nunca se ponen cuatro. La asimetría permite a la máquina detectar si un humano metió la placa al revés o girada 180 grados en la cinta transportadora.
Fiduciales Locales: Se usan exclusivamente para chips de empaquetado ultra fino (como QFN o el TQFP de 64 pines de tu STM32). Se colocan dos fiduciales en esquinas diagonalmente opuestas del chip para que la cámara recalibre sus coordenadas locales milimétricamente antes de soltar la pieza de silicio.
Paso 1: Añadir Símbolos al Esquemático.
En KiCad, los fiduciales se tratan como componentes. Abre tu esquemático y añade tres símbolos llamados Fiducial. Asígnales el footprint Fiducial:Fiducial_1mm_Mask3mm.
Paso 2: Ruteo Asimétrico en la Placa (PCB).
1. Actualiza el PCB desde el esquemático. Aparecerán los tres fiduciales.
2. Coloca FID1 en la esquina superior izquierda.
3. Coloca FID2 en la esquina superior derecha.
4. Coloca FID3 en la esquina inferior izquierda.
5. Deja la esquina inferior derecha vacía intencionalmente.
Paso 3: Exportar el Archivo CXY (Centroid / POS File).
El robot no lee archivos Gerber (esos son para imprimir el cobre). El robot necesita un archivo de texto con coordenadas X,Y. En KiCad, ve a File -> Fabrication Outputs -> Component Placement (.pos). Selecciona "ASCII" y "Single file for board". Este archivo .pos (o .csv) contiene la posición, capa y rotación de cada resistencia y microcontrolador de tu diseño.
En el mundo DevOps de hardware, es imperdonable enviar a fabricar una placa que no tenga los fiduciales requeridos. Añadiremos un script de Python al pipeline (junto con el ERC y la densidad de vías) que aborte el despliegue a manufactura si un novato olvidó colocar las marcas ópticas.
#!/usr/bin/env python3
"""
@file audit_fiducials.py
@brief Script CI/CD para verificar la presencia de Fiduciales Globales en KiCad 8.
"""
import sys
import pcbnew
# -----------------------------------------------------------------
# REGLAS DE NEGOCIO INDUSTRIAL (Design For Manufacturing - DFM)
# -----------------------------------------------------------------
MIN_GLOBAL_FIDUCIALS = 3
def auditar_fiduciales(pcb_path):
print(f"[*] Evaluando alineación óptica DFM (Fiduciales): {pcb_path}")
board = pcbnew.LoadBoard(pcb_path)
fiducial_count = 0
# Iterar por todos los componentes de la placa
for footprint in board.GetFootprints():
fp_name = str(footprint.GetFPID().GetLibItemName()).lower()
# Buscar la palabra clave 'fiducial' en el nombre del footprint
if "fiducial" in fp_name:
fiducial_count += 1
print(f" -> Total de Fiduciales detectados: {fiducial_count}")
if fiducial_count < MIN_GLOBAL_FIDUCIALS:
print(f"\n[X] FALLO DFM: Se requieren al menos {MIN_GLOBAL_FIDUCIALS} fiduciales globales.")
print(" La máquina Pick-and-Place (PnP) no podrá calcular la rotación de la placa.")
print(" Añade componentes 'Fiducial' en las esquinas asimétricas.")
sys.exit(1)
elif fiducial_count == 4:
print("\n[!] ADVERTENCIA: Detectados 4 fiduciales globales.")
print(" Recomendamos usar 3 para crear asimetría y evitar rotaciones de 180° inadvertidas.")
# No fallamos el build, pero advertimos
sys.exit(0)
else:
print("\n[V] AUDITORÍA DFM EXITOSA: Marcas ópticas de ensamblaje validadas.")
sys.exit(0)
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Uso: python audit_fiducials.py <archivo.kicad_pcb>")
sys.exit(1)
auditar_fiduciales(sys.argv[1])
Objetivo del día: Preparación para Manufactura en Masa (PCBA) y Tolerancias Geométricas.
Puedes construir el mejor código del mundo, pero si tu placa madre debe ser ensamblada a mano por humanos usando pinzas y lupas, tu empresa no podrá escalar. Un operador humano tarda 4 horas en soldar los 300 componentes de la tarjeta de control de tu Despachador de Gas LP. Un robot Yamaha o Fuji Pick-and-Place lo hace en 25 segundos.
Pero el robot es esclavo del archivo de posicionamiento (.pos). Al diseñar tus Fiduciales Globales y Locales, has creado el puente entre el archivo matemático y el mundo físico. Cuando el panel de FR4 entre a la fábrica en China, la cámara buscará los tres círculos de cobre de 1mm. En microsegundos, el software de visión artificial triangulará la posición exacta, compensará cualquier distorsión mecánica que la placa haya sufrido durante el horneado, y colocará el costoso procesador ARM Cortex-M4 con una precisión de micras sobre la pasta de soldar. Has cruzado el umbral que separa un prototipo de garaje de un producto industrial manufacturable a escala global.