commit abdb995f48a1b8ccb836ae823c50a37d719909de
parent a7608d2e8816f423175d32b00d8ca897d8ee67ad
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date: Mon, 8 Jun 2026 12:06:43 -0300
Agregar version preliminar de sección 4: "Ensayos y resultados"
Diffstat:
| M | MEMORIA.md | | | 226 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- |
1 file changed, 223 insertions(+), 3 deletions(-)
diff --git a/MEMORIA.md b/MEMORIA.md
@@ -73,7 +73,18 @@ pruebas realizadas.
- [3.2.7. Tarea para control de temperatura](#327-tarea-para-control-de-temperatura)
- [3.2.8. Tarea para sensor de temperatura](#328-tarea-para-sensor-de-temperatura)
- [3.2.9. Tarea para módulo remoto](#329-tarea-para-modulo-remoto)
- - [3.2.10. Medición de tiempo de ejecución](#3210-medicion-de-tiempo-de-ejecucion)
+ - [3.2.10. Medición de tiempo de ejecución](#3210-medición-de-tiempo-de-ejecución)
+- [4. Ensayos y resultados](#4-ensayos-y-resultados)
+ - [4.1. Pruebas funcionales del hardware](#41-pruebas-funcionales-del-hardware)
+ - [4.2. Pruebas funcionales del firmware](#42-pruebas-funcionales-del-firmware)
+ - [4.3. Pruebas de integración](#43-pruebas-de-integración)
+ - [4.4. Cumplimiento de requisitos](#44-cumplimiento-de-requisitos)
+ - [4.5. Comparación con trabajos similares](#45-comparación-con-trabajos-similares)
+ - [4.6. Documentación del desarrollo realizado](#46-documentación-del-desarrollo-realizado)
+ - [4.6.1. Consumo de corriente](#461-consumo-de-corriente)
+ - [4.6.2. Tiempo de ejecución](#462-tiempo-de-ejecución)
+ - [4.6.3. Factor de uso de CPU](#463-consumo-de-corriente)
+ - [4.6.4. Uso de memorias](#464-uso-de-memorias)
# 1. Introducción general
@@ -920,11 +931,220 @@ dispositivo.</em></p>
En el ejecutor cíclico se mide el tiempo de ejecución de cada tarea y del ciclo
completo mediante el contador de ciclos del DWT. Por cada tarea se mide:
-- `WCET`: Peor tiempo de ejecución histórico (desde boot).
-- `WCET_interval`: Peor tiempo en un intervalo (últimos 10 segundos).
+- `WCET`: Peor tiempo de ejecución desde que se inicializa el sistema.
+- `WCET_interval`: Peor tiempo de ejecución en un intervalo de 10 segundos.
- `runtime_us`: Tiempo total del ciclo actual.
- `runtime_us_mean`: Promedio sobre 1000 muestras (1 segundo).
Los resultados se pueden consultar mediante la consola de semi-hosting, lo que
permite caracterizar temporalmente el sistema sin afectar los tiempos de
ejecución.
+
+# 4. Ensayos y resultados
+
+En esta sección se evaluará el sistema desarrollado, tanto el firmware como el
+hardware, en aspectos como consumo de corriente, memoria, factor de uso de CPU,
+entres otras cosas. De esta forma se verificará si las decisiones tomadas para
+el diseña fueron correctas y si se cumplen los requisitos. En caso de que se
+cumplan los requisitos se comparará el sistema desarrollado con proyectos
+similares.
+
+## 4.1. Pruebas funcionales del hardware
+
+| Ensayo | Resultado | Estado |
+| :------------------------------ | :----------------------------------- | :------: |
+| Alimentación y regulación 3,3 V | Tensión estable en placa NUCLEO | Correcto |
+| Comunicación I2C con LCD | Inicialización y escritura correctas | Correcto |
+| Lectura DS18B20 | Detección y lectura de temperatura | Correcto |
+| Comunicación UART con ESP-01S | Intercambio de datos bidireccional | Correcto |
+| Control PWM sobre MOSFET | Variación de ciclo de trabajo | Correcto |
+| Buzzer PWM | Generación de tono a 1 kHz | Correcto |
+| LEDs | Estados ON/OFF/BLINK correctos | Correcto |
+| Botones con antirebote | Eventos limpios sin rebotes | Correcto |
+
+<p align="center"><em>Tabla 4.1: Pruebas funcionales de hardware.</em></p>
+
+## 4.2. Pruebas funcionales del firmware
+
+| Ensayo | Resultado | Estado |
+| :---------------------------- | :------------------------------------------ | :------: |
+| Ejecutor cíclico (1 ms tick) | Tiempo de ejecucion menor a 1 ms | Correcto |
+| Máquina de estados de sistema | Transiciones correctas en todos los estados | Correcto |
+| Algoritmo PID | Cálculo con valores esperados | Correcto |
+| Lectura DS18B20 asíncrona | Actualización cada 1 segundo sin bloqueo | Correcto |
+| Comunicación UART remota | Envío/recepción de comandos A-F | Correcto |
+| Persistencia en flash | Lectura/escritura en página dedicada | Correcto |
+| RTC con respaldo | Mantenimiento de hora sin alimentación | Correcto |
+| Antirebote de botones | Filtro de 50 ms sin falsos positivos | Correcto |
+
+<p align="center"><em>Tabla 4.2: Pruebas funcionales de firmware.</em></p>
+
+## 4.3. Pruebas de integración
+
+Se validó la interacción completa del sistema:
+
+1. Ciclo completo local: Botón enciende calefactor, PID regula temperatura,
+ display muestra valores, LEDs parpadean, buzzer suena.
+2. Ciclo completo remoto: Web solicita status, ESP-01S envía comando 'A', NUCLEO
+ responde con estado, WebSocket actualiza interfaz web.
+3. Temporizador: Configuración de timer, cambio automático de estado al alcanzar
+ la hora programada.
+4. Persistencia: Configuración, corte de energía, restauración correcta al
+ encender.
+
+Se realizaron capturas con analizador lógico (Saleae) para verificar el
+protocolo UART entre NUCLEO y ESP-01S.
+
+## 4.4. Cumplimiento de requisitos
+
+| ID | Requisito | Estado |
+| :--- | :------------------------- | :-------------- |
+| 1 | Control por botones | Implementado |
+| 2 | Control remoto | Implementado |
+| 3 | Programación de ciclos | Implementado |
+| 4 | Curvas de temperatura | No implementado |
+| 5 | Display | Implementado |
+| 6 | LEDs indicadores | Implementado |
+| 7 | Alarma sonora | Implementado |
+| 8 | Monitoreo en tiempo real | Implementado |
+| 9 | Conectividad Wi-Fi | Implementado |
+| 10 | Registro de temperatura | No implementado |
+| 11 | Límite de temperatura | Implementado |
+| 12 | Persistencia de parámetros | Implementado |
+| 13 | Reloj de tiempo real | Implementado |
+
+<p align="center"><em>Tabla 4.6: Estado de cumplimiento de requisitos propuestos
+inicialmente.</em></p>
+
+Notas sobre requisitos no implementados:
+
+- Requisito 4 (curvas de temperatura): No implementado por restricciones de
+ tiempo. Requeriría una interfaz de usuario más compleja y un algoritmo PID más
+ sofisticado que el actual.
+- Requisito 10 (registro de temperatura): No implementado por restricciones de
+ tiempo.
+
+## 4.5. Comparación con trabajos similares
+
+En la tabla 4.7 se presentan las principales diferencias entre el sistema
+desarrollado y los productos y proyectos académicos mencionados previamente.
+
+| Característica | Derretidor comercial | Horno gastronomía | Horno SMD | Este trabajo |
+| :--------------------- | :-------------------- | :---------------- | :---------- | :----------- |
+| Control de temperatura | On/off con termocupla | PID digital | PID digital | PID digital |
+| Control remoto | No | No | No | Si |
+| Display | No | Sí | Sí | Si |
+| Programación de ciclos | No | No | No | Sí |
+| Persistencia | No | No | No | Sí |
+| RTC | No | No | No | Sí |
+
+<p align="center"><em>Tabla 4.7: Comparación con sistemas similares.</em></p>
+
+## 4.6. Documentación del desarrollo realizado
+
+A continuación se presentan los resultados de las mediciones de consumo de
+corriente, tiempos de ejecución, factor de uso de CPU y uso de memoria.
+
+### 4.6.1. Consumo de corriente
+
+Las mediciones de consumo se realizaron en primer lugar sobre el conjunto NUCLEO
+y periféricos, luego sobre el calfactor.
+
+| Componente | Tension [V] | Corriente [mA] |
+| :-------------------------- | -----------: | --------------: |
+| NUCLEO | 5 | 61 |
+| ESP-01S (conectado, sin TX) | 3,3 | 58 |
+| ESP-01S (transmitiendo) | 3,3 | 208 |
+| Buzzer | 12 | 34 |
+| Luces indicadoras | 12 | 52 |
+| Calefactor | 12 | 2450 |
+
+<p align="center"><em>Tabla 4.3: Consumo de corriente del sistema.</em></p>
+
+La placa NUCLEO consume menos de 100 mA a 5V en operación normal, lo cual es
+menor al límite de 500 mA de un puerto USB estándar.
+
+### 4.6.2. Tiempo de ejecución
+
+Se midió el tiempo de ejecución de cada tarea utilizando el DWT. Mientras se
+realizaban las mediciones se presionaron multiples botones, navegando por
+diferentes interfaces, de manera de obtener el peor tiempo de ejecucion posible.
+En la tabla 4.4 a continuacion se muestran los tiempos de ejecucion obtenidos de
+cada tarea y el total para el ejecutor ciclico. Denotando $M_{i}$ al peor tiempo
+de ejecucion en un intervalo de 10 segundos y $C_{i}$ al peor tiempo de
+ejecución total, desde que se inicializa el sistema.
+
+| Tarea | $M_{i}\ [\mu s]$ | $C_{i}\ [\mu s]$ |
+| :----------------- | ---------------: | -------------: |
+| `task_system` | 5 | 5 |
+| `task_buttons` | 13 | 13 |
+| `task_buzzer` | 4 | 219 |
+| `task_leds` | 6 | 6 |
+| `task_menu` | 6 | 140 |
+| `task_temp_ctrl` | 4 | 5 |
+| `task_temp_sensor` | 33 | 33 |
+| `task_remote` | 4 | 94 |
+| **Total** | **75** | **515** |
+
+<p align="center"><em>Tabla 4.4: Tiempo de ejecución aproximado por tarea.</em></p>
+
+<!--
+En la figura 4.1 se muestra la evolución del WCET del sistema a lo largo del tiempo.
+
+<div align="center">
+ <img src="img/g_app_WCET_without_DMA.png" width="80%">
+ <p><em>Figura 4.1: WCET del sistema sin contar transfers DMA</em></p>
+</div>
+
+<div align="center">
+ <img src="img/g_app_WCET_DMA.png" width="80%">
+ <p><em>Figura 4.2: WCET del sistema con transfers DMA</em></p>
+</div>
+
+<div align="center">
+ <img src="img/g_app_runtime_us_mean.png" width="80%">
+ <p><em>Figura 4.3: Tiempo de ejecución promedio (1000 muestras)</em></p>
+</div>
+-->
+
+### 4.6.3. Factor de uso de CPU
+
+Utilizando la expresión clásica de sistemas en tiempo real, se define el factor
+de uso $U$ como la sumatoria del peor tiempo de ejecucion de cada tarea $C_{i}$
+dividido el tiempo de un tick del ejecutor ciclico $T$ ($1 ms$).
+
+$$U = \sum_{i=1}^{n} \frac{C_i}{T} = \frac{515\mu s}{1000 \mu s} \Rightarrow
+\boxed{U = 51,5\%}$$
+
+<!--
+| Tarea | $C_i$ [us] | $T$ [us] | $C_i/T$ |
+| :--------------- | ---------: | -------: | ------: |
+| Todas (conjunto) | 515 | 1000 | 0.368 |
+
+<p align="center"><em>Tabla 4.5: Factor de uso de CPU</em></p>
+-->
+
+El factor de uso resultante de $51,5 \%$ se mide en el peor caso posible.
+Tomando el tiempo de ejecucion en un intervalo de 10 segunddos se tine un factor
+de uso de CPU aproximado de $7,5 \%$.
+
+<!--
+En ambos casos se tiene un amplio margen para futuras extensiones, por lo que se
+confirma que el microcontrolador STM32F103RBT6 es adecuado para este proyecto.
+-->
+
+### 4.6.4. Uso de memorias
+
+El uso de memoria del firmare se reporta al momento de realizar la compilacion.
+La salida del programa se muestra a continuación.
+
+```
+ text data bss dec hex filename
+ 64648 276 5616 70540 1138c tdse-tf_3-02.elf
+```
+
+Por lo tanto se tiene:
+
+- Flash: 64648 bytes + 276 bytes = 64924 bytes (~50,7 % de 128 KB).
+- RAM: 5616 bytes + 276 bytes = 5892 bytes (~29,4 % de 20 KB).
+