DÍA 358 DE 365

Fase 5: Diseño Industrial y Hardware

📖 Teoría a Estudiar

Física Óptica: El Problema del Air Gap

Cuando integras una pantalla LCD en un chasis de metal, normalmente colocas un cristal protector grueso (Policarbonato o Vidrio Templado) frente a ella. Esto deja un espacio de aire (Air Gap) entre la pantalla y el cristal protector. Según las leyes de Fresnel, cuando la luz solar atraviesa medios con diferente índice de refracción (Cristal $n \approx 1.5$ a Aire $n \approx 1.0$), se produce reflexión interna:

$R = \left( \frac{n_1 - n_2}{n_1 + n_2} \right)^2$

Este espacio de aire actúa como un espejo. La luz del sol rebota en la pantalla y ciega al operador. La solución industrial es el Optical Bonding (Adhesión Óptica). Se inyecta una resina de curado UV (LOCA - Liquid Optically Clear Adhesive) que llena el vacío, igualando el índice de refracción. El reflejo interno se reduce del 15% al 0.2%, logrando Sunlight Readability sin gastar energía extra en luces de fondo.

Retroalimentación Táctil (Tactile Feedback) Extrema

Un teclado de membrana clásico o de cajero automático requiere una fuerza de actuación de $\approx 100\text{ gf}$ a $150\text{ gf}$ (gramos-fuerza). Un operador petroquímico lleva guantes que disipan hasta el 70% de esa fuerza. Para que el cerebro del operador registre mecánicamente que el botón fue pulsado sin tener que mirar la pantalla, se requieren Teclas de Resorte Rígido (Heavy Duty Mechanical Switches) o domos metálicos gigantes que exijan una fuerza de rotura de $300\text{ gf}$ a $500\text{ gf}$ ($3\text{N} - 5\text{N}$). El "chasquido" mecánico debe viajar a través del guante hasta el hueso del dedo.

ERGONOMÍA MECÁNICA: LEGIBILIDAD ÓPTICA Y FEEDBACK TÁCTIL PANTALLA: OPTICAL BONDING DISEÑO COMÚN (AIR GAP) Cristal LCD Espacio de Aire Reflejo OPTICAL BONDING Resina LOCA Cero Reflejo Al igualar el índice de refracción entre el vidrio y el display, se elimina el efecto espejo y se maximiza el contraste. TECLADO: RESORTE RÍGIDO E INDUSTRIAL Guante de Carnaza F = 4.5N PCB Core DESAFÍO PARA EL FIRMWARE: Los resortes rígidos mecánicos generan un rebote (Bounce) mucho más prolongado e inestable que un táctil común. Requiere un filtro de software (Debounce) avanzado.

⚙️ Procedimiento Práctico: Filtro Antirrebote Avanzado

Paso 1: Diseño Mecánico del Panel.
En lugar de comprar una pantalla con un cristal laminado barato, especifica en tu BOM (Bill of Materials) un display industrial que venga de fábrica con el cristal Optically Bonded y un tratamiento AR (Anti-Reflective). Para los botones, descarta las membranas de carbono. Utiliza pulsadores Vandal-Proof (Antivandálicos) de acero inoxidable con actuadores mecánicos internos clasificados para más de $350\text{ gf}$.

Paso 2: Algoritmo de Integración (Debounce Fuerte).
En el Día 323 usamos una máquina de estados sencilla. Pero los resortes pesados vibran durante $15\text{ ms}$ a $30\text{ ms}$ cuando colisionan. Un simple HAL_Delay(20) paralizará el sistema RTOS. Debemos implementar un Filtro Integrador basado en Registros de Desplazamiento (Bit-Shift Debounce). Esta técnica lee el pin cada milisegundo e inserta el bit en una variable. Solo cuando el patrón binario es estable y continuo, se dispara el evento.

💻 Firmware C: Shift-Register Debounce

Este algoritmo es computacionalmente ligero, no bloquea el RTOS (cero delays) y es invulnerable al ruido mecánico extremo de los botones rígidos de grado industrial.


/**
 * @file heavy_duty_debounce.c
 * @brief Algoritmo de Antirrebote Avanzado para Botones Mecánicos de Alta Tensión
 */

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

// Estado histórico del botón (Registro de desplazamiento de 16 bits)
static uint16_t button_history = 0x0000;

// Máscara de validación. Exigimos 12 lecturas continuas estables (12 ms)
// 0x0FFF en binario es: 0000 1111 1111 1111
#define DEBOUNCE_MASK 0x0FFF 

// =========================================================================
// FILTRO INTEGRADOR (Llamar desde un Timer Interrupt o Tarea RTOS cada 1ms)
// =========================================================================
/**
 * @brief Procesa el estado físico ruidoso de un resorte metálico.
 * @return true SOLO en el flanco de bajada limpio y estable.
 */
bool Is_Heavy_Button_Pressed(void) {
    bool event_triggered = false;
    
    // 1. Desplazar el historial hacia la izquierda (dejando espacio en el bit 0)
    button_history = (button_history << 1);
    
    // 2. Leer el pin físico. Asumimos lógica Pull-Up (0 = Presionado, 1 = Suelto)
    // Si el pin está suelto (1), inyectamos un '1' en el bit 0.
    if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == GPIO_PIN_SET) {
        button_history |= 0x0001; 
    }
    
    // 3. Evaluar el estado puro. 
    // Para registrar un "Toque Fuerte", los últimos 12 ms deben ser 0 (Presionado),
    // pero justo ANTES de eso (bit 12), debía estar suelto (1).
    // Patrón binario buscado: ...x0001 0000 0000 0000 -> 0x1000
    
    // Aplicamos una máscara OR con 0xF000 para ignorar los bits más viejos (bits 12-15)
    // y solo evaluar la ventana de tiempo estricta que definimos.
    if ((button_history | 0xF000) == 0xF000) { 
        
        // ¡El botón lleva presionado exactamente 12 ms continuos sin rebotar!
        event_triggered = true;
        
        // "Truco" para no disparar eventos múltiples si el usuario mantiene presionado:
        // Llenamos el historial de ceros, de modo que el patrón no volverá a 
        // coincidir hasta que suelte el botón (inyectando 1s) y lo vuelva a presionar.
        button_history = 0x0000; 
    }
    
    return event_triggered;
}
        

🚀 Avance del Proyecto Tesis: Cumplimiento NOM-005 y ATEX

Objetivo del día: Alinear el diseño mecánico con las normativas de durabilidad y seguridad en áreas clasificadas.

La selección del hardware táctil no es solo un capricho ergonómico, es un requerimiento legal. En zonas con riesgo de explosión (ATEX Zona 1/2), los componentes frágiles son un peligro. Si un operador fractura el acrílico de la pantalla intentando leerla a contraluz, o rompe una membrana barata con la llave de herramientas, el gas inflamable podría infiltrarse en la placa electrónica y detonar al contacto con una chispa del bus I2C.

Al documentar en tu tesis el uso de gabinetes sellados con pantallas Optically Bonded (que aumentan la resistencia física al impacto al no haber un hueco de aire colapsable) y Pulsadores Mecánicos Antivandálicos IP67 con alta fuerza de actuación, demuestras que tu diseño electrónico está intrínsecamente ligado a la contención estructural del sistema. A su vez, presentas un algoritmo *Debounce* de Grado Industrial capaz de mitigar el ruido de estos actuadores pesados, cerrando el ciclo entre la física mecánica y el firmware en C.

📝 Resumen del Día