Una Defensa de Tesis no es una clase teórica. Los sinodales ya saben qué es la Ley de Ohm y qué es un microcontrolador. Lo que están evaluando es tu Criterio de Ingeniería. Quieren saber por qué elegiste el Camino A sobre el Camino B. En ingeniería no hay soluciones perfectas, solo compromisos (Trade-Offs).
Pregunta 1 (Sinodal Industrial): "Veo que usaste un STM32 alimentado a 3.3V en un ambiente petroquímico lleno de motores. Eso es muy ruidoso. Un Arduino Nano opera a 5V y tiene más margen de ruido. ¿Por qué te complicaste con 3.3V?"
Tu Defensa: "Es correcto, operar a 3.3V reduce el margen de inmunidad al ruido interno. Sin embargo, el Trade-Off valía la pena porque la industria actual exige telemetría IoT. El módulo ESP32 y las memorias Flash SPI modernas operan exclusivamente a 3.3V. Para compensar la vulnerabilidad de voltaje, aislé la lógica de la potencia mediante optoacopladores, diseñé un anillo de guarda en la PCB (Day 281), e instalé filtros de ferrita en las entradas analógicas. Preferí lidiar con el ruido mediante diseño de hardware robusto para obtener los beneficios de los microcontroladores de nueva generación."
Pregunta 2 (Sinodal de Software): "No entiendo tu código de metrología. Escribiste multiplicaciones extrañas y usaste tipos `uint64_t` en lugar de simplemente declarar `float` para el volumen y usar librerías estándar como `math.h`. ¿No estás reinventando la rueda?"
Tu Defensa: "La decisión de usar Fixed-Point Math (Matemáticas de Punto Fijo) fue deliberada. El STM32F401 tiene una unidad FPU para cálculos flotantes de precisión simple (32-bit), pero no de doble precisión. Al sumar acumuladores volumétricos que corren por horas, un float pierde resolución y causará truncamientos que significan pérdida de dinero para la gasera. Al usar enteros de 64 bits escalados (x1000), garantizo que 1 millón de pulsos se calcule de forma 100% determinista, en un solo ciclo de reloj de la ALU, sin el overhead de las librerías de C, y con precisión metrológica exacta exigida por la NOM-005."
Si el sinodal duda de tu afirmación anterior, le presentas este extracto de tu Tesis. Le muestras exactamente por qué el código "Fácil" falla, y por qué tu código de ingeniería "Complejo" sobrevive.
/**
* @file defense_float_vs_fixed.c
* @brief Demostración para Sinodales: El Peligro del Float en Metrología
*/
#include <stdint.h>
#include <stdio.h>
// --- LO QUE HARÍA UN ESTUDIANTE (CON BUGS DE ACUMULACIÓN) ---
float k_factor_float = 100.0f; // 100 pulsos = 1 Litro
float volumen_acumulado_L = 0.0f;
void Estudiante_Suma_Pulsos(uint32_t pulsos_nuevos) {
// Si la máquina ha despachado 100,000 Litros históricos (un número grande)
// sumar 0.01 Litros (un pulso) comenzará a fallar debido a que la mantisa
// de 23-bits del IEEE-754 no tiene resolución suficiente.
float litros_nuevos = (float)pulsos_nuevos / k_factor_float;
volumen_acumulado_L += litros_nuevos;
// EVENTUALMENTE: volumen_acumulado_L dejará de incrementar. ¡Pérdida de cobro!
}
// --- LO QUE HACE EL ARQUITECTO (TU TESIS - PUNTO FIJO SEGURO) ---
uint32_t k_factor_scaled = 100000; // Escalado x 1000
uint64_t volumen_acumulado_mL = 0; // Resolución en Mililitros, Límite enorme
void Arquitecto_Suma_Pulsos(uint32_t pulsos_nuevos) {
// 1. Usar uint64_t previene desbordamiento en la multiplicación transitoria
uint64_t mL_nuevos = ((uint64_t)pulsos_nuevos * 1000000ULL) / k_factor_scaled;
// 2. Suma entera exacta, bit a bit.
// Un uint64_t puede almacenar hasta 18 trillones de mililitros.
// Jamás perderá precisión sin importar el tamaño del historial.
volumen_acumulado_mL += mL_nuevos;
}
Objetivo del día: Habilidades de Comunicación Técnica y Defensa de Criterios (Engineering Trade-Offs).
Una Tesis de Ingeniería no se aprueba solo porque la placa parpadee; se aprueba porque el autor demuestra dominio absoluto sobre su creación. Si el sinodal cuestiona la falta de un Sistema Operativo, tu respuesta será: *"Hasta este día (309), la prioridad era garantizar el control duro de los actuadores de gas. El Bare-Metal y las interrupciones anidadas ofrecen la latencia más baja posible. Sin embargo, mi arquitectura es modular. La siguiente fase de mi investigación (Fase 6) introduce FreeRTOS para delegar las comunicaciones Wi-Fi y la pantalla a tareas de menor prioridad, manteniendo el núcleo metrológico en un Timer de hardware."*
Al dominar la respuesta basada en el contexto, las opciones descartadas y los compromisos asumidos, has desarmado al tribunal. Les has demostrado que cada resistencia, cada milímetro de Clearance en tu PCB y cada variable `uint64_t` en tu código no son accidentes copiados de un tutorial en internet; son decisiones deliberadas y calculadas para proteger la vida humana y las finanzas en una planta de Gas LP.
float) es uno de los argumentos defensivos más poderosos en sistemas de metrología y facturación financiera, demostrando prevención contra la pérdida de precisión IEEE-754 a largo plazo.