En el Día 274 diseñamos un circuito con un optoacoplador para separar la lógica de 3.3V de la potencia. Pero ese esfuerzo no sirve de nada si en el PCB trazas la pista de 120V AC o 24V DC a medio milímetro de distancia del pin del STM32. Para que el aislamiento galvánico sea real, la separación física del cobre debe cumplir estándares internacionales (como el IEC 60950 o IPC-2221B).
Existen dos formas en las que la electricidad puede "saltar" entre dos pistas y causar un arco letal:
El metal o plástico que envuelve a tu placa es la última línea de defensa. Para un dispensador de Gas LP, no basta con una caja de plástico impresa en 3D. Debes exigir gabinetes con certificaciones específicas:
Paso 1: El Corte de Ranura (Milled Slot) en KiCad.
Si tu fuente de poder (AC/DC) o el Optoacoplador que diseñamos para la válvula tienen pistas de alto voltaje cerca del sector digital, debes abrir un abismo físico en la PCB.
Paso 2: Aislamiento Químico (Conformal Coating).
Para un equipo al aire libre expuesto al gas, el aire y la humedad son enemigos. La placa final debe rociarse o sumergirse en Barniz Dieléctrico (Conformal Coating - Silicón o Acrílico). Esto sella las pistas de cobre, previniendo la oxidación y multiplicando dramáticamente la resistencia al arco eléctrico superficial.
Paso 3: El Anclaje de Chasis (Protective Earth - PE).
En la placa PCB, debes tener al menos un agujero de montaje metálico (Mounting Hole with Pad) ruteado explícitamente a un pin de Tierra Física (o a un plano interno dedicado). Este agujero debe atornillarse con herrajes metálicos directamente a la pared del gabinete NEMA o ATEX de acero inoxidable, unificando todo el metal exterior al mismo potencial de cero voltios de la planta.
Los gabinetes industriales poseen un "Tamper Switch" (Interruptor de intrusión). Si alguien abre la puerta del gabinete del Despachador mientras hay flujo de gas o energía viva, la placa debe detectarlo instantáneamente a través de una interrupción de hardware y clavar los frenos de emergencia.
/**
* @file safety_interlock.c
* @brief Gestión de Intrusión del Gabinete y Failsafe Crítico (MISRA-C)
*/
#include "stm32f401xe.h"
#include "stm32f4xx_hal.h"
#include <stdbool.h>
// El interruptor físico del gabinete está conectado al pin PC13 (Botón azul típico)
// Configurado con resistencia Pull-Up. Si se abre la puerta, la línea sube a 3.3V.
#define TAMPER_PORT GPIOC
#define TAMPER_PIN GPIO_PIN_13
// Dependencias
extern void Actuator_Emergency_Shutdown_All(void);
extern void Cloud_Telemetry_Send_Alarm(const char* msg);
// Bandera global de bloqueo del sistema
volatile bool System_Locked_Failsafe = false;
// =========================================================================
// RUTINA DE SERVICIO DE INTERRUPCIÓN EXTI (HARDWARE IRQ)
// =========================================================================
/**
* @brief EXTI15_10_IRQHandler
* Esta interrupción se dispara asíncronamente en el momento exacto
* en que el circuito del Tamper Switch cambia de estado, sin importar
* lo que el RTOS o el despachador estén haciendo.
*/
void EXTI15_10_IRQHandler(void) {
// Verificar si la interrupción proviene de nuestro pin de seguridad
if(__HAL_GPIO_EXTI_GET_IT(TAMPER_PIN) != RESET) {
__HAL_GPIO_EXTI_CLEAR_IT(TAMPER_PIN); // Limpiar bandera
// Ejecutar rutina de crisis
Safety_Trigger_Enclosure_Tamper();
}
}
// =========================================================================
// MANEJO DEL EVENTO DE CRISIS
// =========================================================================
void Safety_Trigger_Enclosure_Tamper(void) {
// 1. APAGADO INMEDIATO DE HARDWARE (Corte de Gas y Poder)
// Desenergizamos válvulas solenoides y contactores de motores.
Actuator_Emergency_Shutdown_All();
// 2. BLOQUEO LÓGICO
// Prevenimos que el RTOS intente reabrir válvulas.
System_Locked_Failsafe = true;
// 3. AUDITORÍA CLOUD
// Alertar a la oficina central de la gasera que el gabinete ha sido
// abierto (posible sabotaje, robo de tarjeta o mantenimiento no programado).
Cloud_Telemetry_Send_Alarm("CRITICAL ALARM: Enclosure Tamper Switch Triggered. Gas Cutoff Executed.");
// El sistema permanecerá en Halt hasta que un operador con credenciales
// reinicie físicamente la máquina.
}
Objetivo del día: Mitigación de Riesgos Catastróficos y Cumplimiento NOM (Norma Oficial Mexicana).
Operar en el sector de hidrocarburos en México y América Latina no es un juego de makers; requiere estricto apego regulatorio. Un Despachador de Gas LP opera bajo el escrutinio de Protección Civil y regulaciones eléctricas severas (como la NOM-001-SEDE referida a Instalaciones Eléctricas). Si tu placa sufre un arco eléctrico porque no respetaste la distancia de fuga (*Creepage*) entre el rectificador y la lógica de 3.3V, la chispa podría deflagrar dentro del panel de control.
Al diseñar tu PCB con **Ranuras Físicas (Milled Slots)** debajo de la barrera de optoaislamiento (Día 274), y al envolver todo el sistema dentro de un **Gabinete Clase 1 División 1 (A Prueba de Explosión)** sólidamente conectado a la Tierra Protectora (PE), aseguras que ningún fallo electrónico pueda propagar fuego al exterior. Además, al integrar un **Tamper Switch** gobernado por interrupciones de hardware directo en el núcleo del STM32, garantizas que cualquier intento de violar el gabinete cortará el suministro de gas instantáneamente. Has transformado una placa experimental en un equipo de misión crítica industrial legalmente defendible.
Edge.Cuts obliga a las corrientes de fuga a viajar por las paredes del corte, multiplicando artificialmente la distancia de Creepage.