En ingeniería de producto, la supervivencia se mide con la norma IEC 60529. El código IP consta de dos números:
Meter tu placa en una caja de aluminio o policarbonato con una junta tórica (O-ring) de silicón logra el estándar IP67 en la carcasa. El eslabón débil siempre son las salidas. Los cables que van hacia la pantalla, las válvulas y el caudalímetro tienen que atravesar esa pared metálica.
Nunca, bajo ninguna circunstancia, se deben dejar hoyos abiertos ni usar cables pegados con silicón térmico (Hot Glue). La industria usa soluciones certificadas:
La Electrónica como Diagnóstico Mecánico: Por más bueno que sea tu conector M12, un operador puede dejarlo flojo o un choque puede fracturarlo. Cuando el agua entra en un conector que lleva voltaje (ej. los 3.3V del sensor del caudalímetro), el agua salina crea un puente microscópico con los pines adyacentes. Esto no provoca un corto circuito instantáneo, provoca una Resistencia Parásita o Fuga de Corriente (Leakage Current). En lugar de leer 0V o 3.3V, leerás voltajes "fantasma" que degradan tu señal.
Ejercicio 1: Monitor de Integridad del Conector por Software (Diagnostic Watchdog). Utilizando nuestro conocimiento del ADC y del Circuito EOL del Día 240, programaremos una alarma que avise si el conector físico está perdiendo hermeticidad (el voltaje empieza a derivar fuera del rango permitido debido a la filtración de agua).
/**
* @file connector_diagnostics.c
* @brief Monitor Húmedo: Detección de Fuga de Corriente en Conectores M12
*/
#include "stm32f401xe.h"
#include "cmsis_os2.h"
#include <stdint.h>
#include <stdbool.h>
// =========================================================================
// RANGOS DEL CIRCUITO DE FIN DE LÍNEA (EOL)
// =========================================================================
// Reposo perfecto (Divisor 10k/10k exacto = 1.65V = ~2048 ADC)
#define EOL_REPOSO_IDEAL (2048U)
// Margen de tolerancia para temperatura y ruido (± 300 puntos)
#define EOL_REPOSO_MAX_VALIDO (2348U)
#define EOL_REPOSO_MIN_VALIDO (1748U)
// Si el voltaje sube ligeramente por encima del Reposo, sin llegar al Cable Cortado,
// Significa que hay agua o corrosión sulfatando el pin creando una resistencia parásita a VCC.
#define ZONA_PELIGRO_CORROSION_HIGH_MIN (2349U)
#define ZONA_PELIGRO_CORROSION_HIGH_MAX (3499U) // A los 3500 ya es "Cable Cortado"
// Variable capturada por DMA (Día 240)
extern volatile uint16_t adc_caudalimetro_raw;
// =========================================================================
// TAREA DE DIAGNÓSTICO PREDICTIVO (MANTENIMIENTO)
// =========================================================================
void Task_Diagnostico_Mecanico(void *argument) {
// Filtro anti-falsos positivos (Queremos detectar humedad constante, no ruido eléctrico breve)
uint32_t contador_anomalias = 0U;
const uint32_t UMBRAL_SEGUNDOS_DEGRADACION = 30U; // 30 segundos continuos fallando
for(;;) {
uint16_t lectura_actual = adc_caudalimetro_raw;
// El diagnóstico de hermeticidad solo es válido cuando la máquina no está operando
if (Obtener_Estado_Maquina() == ESTADO_REPOSO) {
// Evaluamos si el voltaje está "flotando" en las zonas muertas
if ((lectura_actual >= ZONA_PELIGRO_CORROSION_HIGH_MIN) &&
(lectura_actual <= ZONA_PELIGRO_CORROSION_HIGH_MAX)) {
contador_anomalias++;
if (contador_anomalias >= UMBRAL_SEGUNDOS_DEGRADACION) {
// HEMOS DETECTADO UNA MICRO-FUGA DE AGUA EN EL CONECTOR M12.
// Aún no causa un corto fatal, pero el conector se está pudriendo.
// Acción de Mantenimiento Preventivo (IoT)
// AWS_Publicar_Alerta("WARNING_IP67_DEGRADATION", "Conector Sensor Flujo");
// Encender LED Ámbar de "Requiere Servicio" en el panel frontal.
HAL_GPIO_WritePin(GPIOB, LED_MANTENIMIENTO_PIN, GPIO_PIN_SET);
// Detenemos el contador para no saturar el servidor MQTT
contador_anomalias = 0U;
}
} else {
// Si la lectura vuelve a los márgenes ideales o es un pulso claro,
// reseteamos el contador (era solo un ruido transitorio).
contador_anomalias = 0U;
}
}
osDelay(pdMS_TO_TICKS(1000U)); // Evaluamos cada segundo
}
}
Objetivo del día: Certificación Ambiental, Diseño Electromecánico y Prevención de Mantenimiento (Predictive Maintenance).
En el diseño de la caja de tu dispensador, se cruzan dos normas letales: **IP67** (Estanqueidad contra agua y polvo) y **ATEX/NOM** (Protección contra atmósferas explosivas). Si el gas LP se fuma y entra en tu gabinete, la más mínima chispa de un relé volará la estación. Tradicionalmente, esto se resuelve con cajas metálicas gigantescas a prueba de explosión ("Explosion Proof") donde todas las uniones se sellan con resina epóxica (Potting).
Pero tú fuiste más allá. Especificaste conectores de panel **M12** que sellan al vacío las paredes del gabinete, permitiendo que la placa sea reemplazable en campo sin romper resinas (Ahorro brutal en OPEX). Pero el verdadero toque maestro fue **Hibridar el Diseño Mecánico con el Software**. Has programado una rutina de *Mantenimiento Predictivo* que lee los micro-cambios de voltaje del ADC causados por el agua salina. Tu máquina no espera a que el conector haga corto circuito y detenga las ventas; semanas antes de fallar, tu Despachador "siente" la humedad en sus pines y envía una notificación a AWS pidiendo a un técnico que vaya a apretar la tuerca M12. Esto es ingeniería 4.0: Software diagnosticando Hardware.