commit 9ed713113acbf6170e5bc22b9707efe628647e2f
parent 4482cbb05c2e84f2707ad3c656b5ff690071bbf3
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date: Sun, 31 May 2026 22:38:21 -0300
Actualizar primera parte de `memoria.md`
Diffstat:
3 files changed, 109 insertions(+), 73 deletions(-)
diff --git a/img/3d_print_heater.png b/img/3d_print_heater.png
Binary files differ.
diff --git a/img/to220.png b/img/to220.png
Binary files differ.
diff --git a/memoria.md b/memoria.md
@@ -48,6 +48,7 @@ pruebas realizadas.
- [2.3.1 Control principal](#231-control-principal)
- [2.3.2 Módulo remoto](#232-módulo-remoto)
- [2.3.3 Sensor de temperatura](#233-sensor-de-temperatura)
+ - [2.3.4 Control de temperatura](#234-control-de-temperatura)
# 1. Introducción general
@@ -75,14 +76,21 @@ basado en un termostato por un sistema digital con mayor control, que permita:
- Persistencia de parámetros ante cortes de energía.
- Indicación luminosa y sonora de estados.
-## 1.2. Proyectos similares y alternativas
+El presente trabajo constituyó un producto mínimo viable (MVP) que demostró la
+factibilidad técnica del controlador digital. Quedaron fuera del alcance el
+diseño de una placa PCB definitiva, el ensayo en un entorno de producción real
+con miel, y la validación térmica exhaustiva del conjunto completo. Estos
+aspectos se identificaron como un trabajo futuro para llevar el prototipo a un
+producto comercializable.
+
+## 1.2. Trabajos similares y alternativas
No se encontraron productos comerciales que integren todas las funcionalidades
propuestas a un costo accesible en el mercado nacional. Los derretidores de miel
comerciales existentes se limitan a sistemas basados en termostatos, con control
on/off y sin display, conectividad y capacidad de programación.
-En el ámbito académico, se identificaron proyectos similares en cuanto al
+En el ámbito académico, se identificaron trabajos similares en cuanto al
control de temperatura, como un [horno eléctrico para gastronomía](https://docs.google.com/document/d/1ypnhOz-Gx_ZRbwiI6vEn4dvr7_YqNVnpy5sfgalQAoA/edit)
y un [horno para componentes SMD](https://docs.google.com/document/d/1rQf3P1D7NSb7egpnlkKMTvL_rzy9PuMcMBPcu7NxmQw/edit),
ambos de la misma materia (Sistemas Embebidos, FIUBA). Sin embargo, ninguno
@@ -93,32 +101,42 @@ temporizador programable en el contexto de derretido de miel.
## 2.1 Requisitos
-En la tabla 2.1 se listan los requisitos definidos para el proyecto, junto con
-su descripción detallada.
+En la tabla 2.1 se listan los requisitos del trabajo, junto con su
+descripción detallada. En esta tabla no se incluyen requisitos no alcanzados,
+los cuales fueron considerados inicialmente durante la definición del proyecto
+pero que por restricciones de tiempo no se pudieron alcanzar.
| ID | Requisito | Descripción |
| :- | :------------------------- | :---------------------------------------------------------------------------- |
-| 1 | Control por botones | El usuario puede establecer y modificar parámetros mediante 4 botones físicos |
-| 2 | Control remoto | El usuario puede controlar el dispositivo de manera remota vía Wi-Fi |
-| 3 | Programación de ciclos | El usuario puede programar ciclos con hora de inicio y fin |
-| 4 | Curvas de temperatura | El usuario puede definir perfiles de calentamiento (no implementado) |
-| 5 | Display | El sistema muestra el estado actual en un display LCD 16x2 |
-| 6 | LEDs indicadores | El sistema tiene LEDs para indicar estado de operación |
-| 7 | Alarma sonora | El sistema tiene un buzzer para eventos y alarmas |
-| 8 | Monitoreo en tiempo real | El sistema muestra temperatura, set point y duty cycle |
-| 9 | Conectividad Wi-Fi | El sistema se conecta a redes Wi-Fi para comunicación remota |
-| 10 | Registro de temperatura | El sistema almacena registro de temperatura (no implementado) |
-| 11 | Límite de temperatura | El sistema tiene un límite máximo de temperatura |
-| 12 | Persistencia de parámetros | El sistema recuerda la última configuración al encender |
-| 13 | Reloj de tiempo real | El sistema mantiene la hora incluso sin alimentación |
-
-<p align="center"><em>Tabla 2.1: Requisitos del proyecto</em></p>
+| 1 | Control por botones | El usuario puede establecer y modificar parámetros mediante 4 botones físicos |
+| 2 | Control remoto | El usuario puede controlar el dispositivo de manera remota vía Wi-Fi |
+| 3 | Programación de ciclos | El usuario puede programar ciclos con hora de inicio y fin |
+| 4 | Display | El sistema muestra el estado actual en un display LCD 16x2 |
+| 5 | LEDs indicadores | El sistema tiene LEDs para indicar estado de operación |
+| 6 | Alarma sonora | El sistema tiene un buzzer para eventos y alarmas |
+| 7 | Monitoreo en tiempo real | El sistema muestra temperatura, set point y duty cycle |
+| 8 | Conectividad Wi-Fi | El sistema se conecta a redes Wi-Fi para comunicación remota |
+| 9 | Persistencia de parámetros | El sistema recuerda la última configuración al encender |
+| 10 | Reloj de tiempo real | El sistema mantiene la hora incluso sin alimentación |
+
+<p align="center"><em>Tabla 2.1: Requisitos del trabajo</em></p>
+
+En la tabla 2.2 se muestran requisitos que quedaron fuera del alcance final del
+trabajo debido a restricciones de tiempo y complejidad. Se consideran requisitos
+futuros o deseables para una futura iteración del trabajo.
+
+| ID | Requisito | Descripción |
+| :- | :---------------------- | :------------------------------------------------- |
+| 11 | Curvas de temperatura | El usuario puede definir perfiles de calentamiento |
+| 12 | Registro de temperatura | El sistema almacena registro de temperatura |
+| 13 | Límite de temperatura | El sistema tiene un límite máximo de temperatura |
+
+<p align="center"><em>Tabla 2.2: Requisitos futuros del trabajo</em></p>
## 2.2 Casos de uso
-A continuación en las tablas 2.2, 2.3, 2.4, 2.5 y 2.6 se ejemplifican algunos
-casos de uso del derretidor de miel para cada uno de los modos de operación del
-sistema.
+A continuación en las tablas 2.3, 2.4 y 2.5 se ejemplifican algunos casos de uso
+del derretidor de miel para cada uno de los modos de operación del sistema.
| Elemento | Definición |
| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
@@ -127,57 +145,39 @@ sistema.
| Flujo principal | El usuario interactúa con la interfaz remota seleccionando la opción detener calefactor, se detiene el calefactor y se cambia a modo de operación en reposo |
| Flujos alternativos | Se pierde la conexión con el sistema, en caso de ocurrir previo a seleccionar la opción el sistema sigue operando en modo normal, se reintenta la conexión con el usuario |
-<p align="center"><em>Tabla 2.2: Caso de uso modo normal</em></p>
+<p align="center"><em>Tabla 2.3: Caso de uso modo normal</em></p>
| Elemento | Definición |
| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Disparador | Se desea programar un ciclo de derretido para una hora y fecha especifica |
-| Precondiciones | El sistema está en modo reposo operando el calefactor |
+| Precondiciones | El sistema está en modo reposo |
| Flujo principal | El usuario interactúa con la interfaz remota seleccionando la opción programar ciclo, elije entre las opciones disponibles y guarda la configuración. Llegado el momento definido por el usuario se cambia a modo de operación normal, enciendo el calefactor |
| Flujos alternativos | En caso de que se pierda la energía previo a iniciar el ciclo, luego de que se vuelva a energizar el sistema y vuelva a modo reposo (si no hay fallas) el ciclo configurado permanece guardado porque los parámetros se guardan en memoria no volátil, llegado el momento configurado por el ciclo se cambia a modo normal encendiendo el calefactor |
-<p align="center"><em>Tabla 2.3: Caso de uso modo reposo</em></p>
+<p align="center"><em>Tabla 2.4: Caso de uso modo reposo</em></p>
| Elemento | Definición |
| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Disparador | El sistema se energiza |
| Precondiciones | El sistema se encontraba apagado, desenergizado |
| Flujo principal | El sistema inicializa todos los bloques, se comprueba que no haya ciclos de derretido predefinidos para el momento actual, en caso de que los haya se pasa a modo normal, si no los hay se pasa a modo reposo |
-| Flujos alternativos | Si no se encuentra una red Wi-Fi disponible se pasa a modo falla indicando el error |
-
-<p align="center"><em>Tabla 2.4: Caso de uso modo transición</em></p>
-
-| Elemento | Definición |
-| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Disparador | No se detecta una medición de temperatura o resulta en una medición absurda |
-| Precondiciones | El sistema se encontraba en modo normal operando el calefactor |
-| Flujo principal | Se notifica en pantalla, con indicadores y a través de la interfaz remota que se ha detenido la operación del calefactor por falla en sensor |
-| Flujos alternativos | El usuario reconoce la falla y presiona un botón que permite verificar nuevamente la medición del sensor en caso de que sea correcto y los parámetros estén en valores normales se vuelve a la operación previa |
-
-<p align="center"><em>Tabla 2.5: Caso de uso modo falla</em></p>
-
-
-| Elemento | Definición |
-| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Disparador | El usuario selecciona en el menú o a través de la interfaz remota la opción de calibrar el sensor |
-| Precondiciones | El sistema se encuentra en modo reposo por al menor 30 minutos |
-| Flujo principal | Se notifica en pantalla, con indicadores y a través de la interfaz remota que se encuentra en modo calibración y se debe ingresar la temperatura actual del sensor |
-| Flujos alternativos | El usuario decide cancelar la calibración del sensor, se vuelve al modo previo |
+| Flujos alternativos | Si hubo un error durante la inicialización de alguna tarea el sistema no se inicializa |
-<p align="center"><em>Tabla 2.6: Caso de uso modo calibración</em></p>
+<p align="center"><em>Tabla 2.5: Caso de uso modo transición</em></p>
## 2.3 Descripción de módulos principales
### 2.3.1 Control principal
El control principal se implementa en la placa NUCLEO-F103RB, la cual se puede
-ver en la figura 2.3.1 la cual utiliza un
-microcontrolador ARM Cortex-M3 de 32 bits STM32F103RBT6 con una frecuencia de 64
-MHz. Este módulo ejecuta el firmware principal del sistema, compuesto por un
-ejecutor cíclico con una pauta establecida de que un tick nunca puede superar 1
-ms. Este ejecutar cíclico tiene asociado 8 tareas: system, buttons, buzzer,
-leds, menu, temp ctrl, temp sensor y remote. La comunicación entre tareas se
-realiza mediante eventos encolados y una estructura de datos compartida.
+ver en la figura 2.3.1. Esta placa utiliza un microcontrolador ARM Cortex-M3 de
+32 bits, el STM32F103RBT6, operando a una frecuencia de 64 MHz. En la placa se
+ejecuta el firmware principal del sistema, compuesto por un ejecutor cíclico con
+una pauta establecida de que un tick nunca supere 1 ms. Este ejecutar cíclico
+tiene asociado 8 tareas, las cuales controlan diferentes partes del sistema:
+'system', 'buttons', 'buzzer', 'leds', 'menu', 'temp_ctrl', 'temp_sensor' y
+'remote'. La comunicación entre tareas se realiza mediante eventos y una
+estructura de datos compartida.
<div style="text-align: center;">
<img style="padding: 10px" src="img/nucleo_f103rb_axo.png" height="350">
@@ -185,20 +185,18 @@ realiza mediante eventos encolados y una estructura de datos compartida.
<p align="center"><em>Figura 2.1: Placa NUCLEO F103RB</em></p>
</div>
+Esta placa NUCLEO se utilizó exhaustivamente en la materia a lo largo de la
+cursada y fue por esto principalmente que se utilizó para el desarrollo del
+trabajo.
+
### 2.3.2 Módulo remoto
Para el control remoto se utilizó el módulo Wi-Fi ESP-01S basado en un
microcontrolador Espressif ESP8266. Este se comunica a través de UART con la
-placa NUCLEO para intercambiar comandos con un formato especifico. Su elección
+placa NUCLEO para intercambiar comandos con un formato especifico. La elección
se basó en su bajo costo, disponibilidad en el mercado local y capacidad para
-actuar como servidor web.
-
-El firmware del ESP-01S fue desarrollado utilizando las librerias de Arduino a
-traves de PlatformIO e implementa funciones como la conexión a una red Wi-Fi
-fija, un servidor HTTP en el puerto 80 para servir la interfaz web estática
-desde LittleFS, servidor WebSocket en el puerto 81 para comunicación
-bidireccional en tiempo real, y hace de puente serial entre el servidor web y la
-placa NUCLEO.
+actuar como servidor web. En la figura 2.2 se pueden ver imágenes de la placa,
+asi como también las conexiones que ofrece la misma.
<div style="text-align: center;">
<img src="img/esp01s.jpg" style="padding: 10px;" height="300">
@@ -206,17 +204,55 @@ placa NUCLEO.
<p align="center"><em>Figura 2.2: Modulo ESP-01S</em></p>
</div>
+El firmware utilizado en la placa ESP01S fue desarrollado utilizando librerías
+de Arduino a través de PlatformIO. El firmware implementa funciones como la
+conexión a una red Wi-Fi fija, un servidor HTTP en el puerto 80 para servir la
+interfaz web estática desde el sistema de archivos, un servidor WebSocket en el
+puerto 81 para comunicación bidireccional en tiempo real y la comunicación UART
+con la placa NUCLEO.
+
+
### 2.3.3 Sensor de temperatura
-Se utilizo como sensor de temperatura el sensor DS18B20 de Maxim Integrated el
-cual es un termómetro digital con interfaz OneWire que ofrece una precisión de
-0.5 °C en el rango de -10 °C a 85 °C. Se seleccionó por su bajo costo y por
-tener la precisión adecuada para la aplicación.
-
-La placa NUCLEO no es compatible con el protocolo OneWire por defecto pero se
-se implementó un "emulador" del protocolo utilizando el periférico UART de la
-NUCLEO cambiando dinámicamente el baud rate (9600 baud para reset, 96500 baud
-para transferencia de datos). Y dado que la NUCLEO lo permite, se utilizo DMA
-para la comunicación con el sensor, disminuyendo así el tiempo de bloqueo del
-ejecutor cíclico.
+Para censar la temperatura real del liquido, se utilizó el sensor DS18B20 de
+Maxim Integrated el cual es un termómetro digital con interfaz OneWire que
+ofrece una precisión de 0.5 °C en el rango de -10 °C a 85 °C. Se seleccionó por
+su bajo costo, disponibilidad en el mercado local y por tener la precisión
+adecuada para la aplicación.
+
+<div style="text-align: center;">
+ <img src="img/ds18b20.png" style="padding: 10px;" height="250">
+ <img src="img/ds18b20_wiring.png" style="padding: 10px;" height="250">
+ <p align="center"><em>Figura 2.3: Sensor de temperatura DS18B20</em></p>
+</div>
+
+La placa NUCLEO no es compatible con el protocolo OneWire por defecto es por
+esto que se implementó un "emulador" del protocolo utilizando el periférico UART
+de la NUCLEO cambiando dinámicamente el baud rate (9600 baud para reset, 96500
+baud para transferencia de datos). Y dado que la NUCLEO lo permite, se utilizo
+DMA para la comunicación con el sensor, disminuyendo así el tiempo de bloqueo
+del ejecutor cíclico.
+
+### 2.3.4 Control de temperatura
+
+Para controlar la temperatura, se modeló el derretidor eléctrico de miel
+utilizando una resistencia de 12V y 48W, y el control de temperatura mediante un
+transistor MOSFET, controlado por modulación de ancho de pulsos (Pulse Width
+Modulation, PWM). El sistema regula la temperatura mediante un controlador
+Proporcional-Integral-Derivativo (PID) implementado en el firmware, siendo la
+señal de referencia a la temperatura establecida por el usuario y el valor leído
+de temperatura aquel obtenido mediante el sensor de temperatura.
+
+<div style="text-align: center;">
+ <img src="img/to220.png" style="padding: 10px;" height="300">
+ <img src="img/3d_print_heater.png" style="padding: 10px;" height="300">
+ <p align="center"><em>Figura 2.4: Dispositivos utilizados para el control de
+ temperatura</em></p>
+</div>
+
+El MOSFET es controlado por la señal PWM generada por un timer de la placa
+NUCLEO. La frecuencia de conmutación de la señal se estableció en
+aproximadamente 500 Hz y el duty cycle se calcula mediante el algoritmo PID
+implementado en la tarea 'temp_ctrl'.
+