commit 3cb99951f62e7450d7103bd258c3ad5ff163a71c
parent 46474b8df29c81adb3d331a4e2b370957e8f4c7b
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date: Sun, 7 Jun 2026 15:42:25 -0300
Deshacer commit anterior "Corregir niveles de titulos"
This reverts commit 46474b8df29c81adb3d331a4e2b370957e8f4c7b.
Diffstat:
| M | MEMORIA.md | | | 70 | +++++++++++++++++++++++++++++++++++----------------------------------- |
1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/MEMORIA.md b/MEMORIA.md
@@ -36,7 +36,7 @@ sobre uno analógico de los equipos comerciales existentes. En las siguientes
secciones se describe el diseño, la implementación y los resultados de las
pruebas realizadas.
-## Índice
+# Índice General
- [1. Introducción general](#1-introducción-general)
- [1.1. Alcance](#11-alcance)
@@ -73,9 +73,9 @@ pruebas realizadas.
- [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)
-## 1. Introducción general
+# 1. Introducción general
-### 1.1. Alcance
+## 1.1. Alcance
Un derretidor eléctrico de miel es un equipo diseñado para elevar la temperatura
de la miel de forma controlada, con el fin de reducir su viscosidad y facilitar
@@ -109,7 +109,7 @@ validación térmica exhaustiva del conjunto completo. Estos aspectos se
identificaron como un trabajo futuro para una posterior etapa de
industrialización y comercialización del prototipo, ajeno a este trabajo.
-### 1.2. Trabajos similares y alternativas
+## 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
@@ -123,7 +123,7 @@ ambos de la misma materia (Sistemas Embebidos, FIUBA). Sin embargo, ninguno
aborda la combinación de control PID, conectividad Wi-Fi con interfaz web, y
temporizador programable en el contexto de derretido de miel.
-## 2. Introducción específica
+# 2. Introducción específica
Se desarrolló un sistema de control de temperatura basado en el microcontrolador
STM32F103RB de la placa NUCLEO-F103RB y el sensor de temperatura digital
@@ -137,7 +137,7 @@ remota, mediante un navegador web de un dispositivo dentro de la red local del
sistema, accediendo a la pagina proporcionada por el modulo remoto ESP-01S del
sistema.
-### 2.1. Requisitos
+## 2.1. Requisitos
En la tabla 2.1 se listan los requisitos alcanzados del trabajo, junto con su
descripción correspondiente. En esta tabla no se incluyen requisitos no
@@ -171,7 +171,7 @@ futuros o deseables para una futura iteración del trabajo.
<p align="center"><em>Tabla 2.2: Requisitos futuros del trabajo</em></p>
-### 2.2. Casos de uso
+## 2.2. Casos de uso
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.
@@ -203,9 +203,9 @@ del derretidor de miel para cada uno de los modos de operación del sistema.
<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. Descripción de módulos principales
-#### 2.3.1. Control principal
+### 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. Esta placa utiliza un microcontrolador ARM Cortex-M3 de
@@ -225,7 +225,7 @@ Esta placa NUCLEO se utilizó exhaustivamente en la materia a lo largo de la
cursada y fue por esto principalmente que se eligió para el desarrollo del
trabajo.
-#### 2.3.2. Módulo remoto
+### 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
@@ -246,7 +246,7 @@ 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
+### 2.3.3. Sensor de temperatura
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
@@ -266,7 +266,7 @@ 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
+### 2.3.4. Control de temperatura
Para controlar la temperatura, se modeló el derretidor eléctrico de miel
utilizando un resistor de 12 V y 48 W, y el control de temperatura mediante un
@@ -290,7 +290,7 @@ 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'.
-#### 2.3.5. Display y adaptador paralelo a serie I2C
+### 2.3.5. Display y adaptador paralelo a serie I2C
Para el control local se utilizó un display LCD con interfaz paralelo de 16x2
caracteres, y para disminuir el número de pines usados de la NUCLEO, se utilizó
@@ -305,7 +305,7 @@ utilizado y a la derecha el adaptador de interfaz paralela a serie I2C.
<p align="center"><em>Figura 2.5: Display LCD y adaptador paralelo a serie I2C</em></p>
</div>
-#### 2.3.6. Cable y conector IDC
+### 2.3.6. Cable y conector IDC
Durante el diseño de hardware que se detallará en la sección siguiente, se
separó el sistema en dos placas perforadas separadas. Por un lado la placa una
@@ -323,7 +323,7 @@ soldado en ambas placas perforadas.
<p align="center"><em>Figura 2.6: Display LCD y adaptador paralelo a serie I2C</em></p>
</div>
-## 3. Diseño e implementación
+# 3. Diseño e implementación
En la figura 3.1 se muestra el diagrama en bloques con los principales
módulos y conexiones del sistema. Se puede ver que la placa NUCLEO es el
@@ -334,7 +334,7 @@ módulo central y luego todos los demás módulos se conectan a este.
<p><em>Figura 3.1: Diagrama en bloques del sistema.</em></p>
</div>
-### 3.1 Hardware del sistema
+## 3.1 Hardware del sistema
El trabajo se divide en dos placas perforadas experimentales. Estas placas
perforadas se utilizan para unir los módulos, evitando utilizar cables. Las
@@ -366,7 +366,7 @@ placa y al conector IDC.
<p><em>Figura 3.4: Placa perforada principal.</em></p>
</div>
-#### 3.1.1 Placa NUCLEO
+### 3.1.1 Placa NUCLEO
Como bien se mencionó, el trabajo se desarrolló utilizando la placa NUCLEO, esta
placa utiliza el procesador STM32F103RBT6 configurado para operar a 64 MHz, ya
@@ -419,7 +419,7 @@ la Tabla 8 del manual de usuario de la placa.[^1]
[^1]: STMicroelectronics, "UM1724 User manual - STM32 Nucleo-64 boards (MB1136)"
Rev. 17, 2025. [En linea]. Disponible en: https://www.st.com/resource/en/user_manual/um1724-stm32-nucleo64-boards-mb1136-stmicroelectronics.pdf
-#### 3.1.2 Sensor DS18B20
+### 3.1.2 Sensor DS18B20
El sensor DS18B20 se conectó al USART1 de la placa NUCLEO en modo half-duplex,
es decir, utilizando una sola linea del par TX/RX. De esta forma se puede
@@ -473,7 +473,7 @@ reduce aun más el tiempo de bloqueo del ejecutor cíclico y de uso de la CPU.
Thermometer," Rev. 6, ago. 2019. [En linea]. Disponible en:
https://www.analog.com/media/en/technical-documentation/data-sheets/ds18b20.pdf
-#### 3.1.3 Módulo ESP-01S
+### 3.1.3 Módulo ESP-01S
El módulo Wi-Fi ESP-01S se conecta con la placa NUCLEO a través del periférico
USART3 a una tasa de transmisión de 115200 baud.
@@ -496,7 +496,7 @@ cumpla las siguientes funciones:
constantemente para actualizar la información.
- Sistema de archivos LittleFS.
-#### 3.1.4 Display LCD 16x2 I2C
+### 3.1.4 Display LCD 16x2 I2C
El display LCD se conecta al bus I2C1 a través del adaptador paralelo a serie
mencionado previamente. Si bien es posible conectar el display directamente a la
@@ -505,7 +505,7 @@ por esto que se optó por el uso del adaptador I2C. Además al utilizar el
periférico I2C se puede utilizar DMA, reduciendo el tiempo de bloqueo del
ejecutor cíclico y for consiguiente el uso de la CPU.
-#### 3.1.5 Control de temperatura
+### 3.1.5 Control de temperatura
La etapa de control de temperatura consiste en un MOSFET IRFZ44N de canal N, el
IRFZ44N, controlado por la señal PWM del TIM1_CH1 (PA8). Dado que el MOSFET es
@@ -537,7 +537,7 @@ El calefactor del derretidor de miel se modeló como una carga resistiva pura,
por lo que se utilizó un resistor de alta potencia de 12 V y 48 W para las
pruebas de laboratorio.
-#### 3.1.6 Luces indicadoras
+### 3.1.6 Luces indicadoras
Para la luz indicadora, se utilizó un diodo emisor de luz (Light Emitting Diode,
LED) de 5 mm de color verde. Este tipo de LEDs requieren de aproximadamente 20
@@ -562,7 +562,7 @@ $$RC=\frac{12\text{ V} - 2.2\text{ V}}{45\text{ mA}} \approx 220\ \Omega$$
<!-- El LED 2 LEDs (PA5, PB10) con modos ON, OFF, BLINK (500 ms) y PULSE (250 ms). -->
-#### 3.1.7 Buzzer
+### 3.1.7 Buzzer
Para el buzzer o parlante se utilizó un zumbador piezoeléctrico pasivo de 12 V.
El termino pasivo implica que se debe suministrar una señal PWM para que este
@@ -572,7 +572,7 @@ MOSFET.
<!-- (TIM3_CH1, 1 kHz) con eventos de beep corto (35 ms) y largo (500 ms). -->
-#### 3.1.8 Botones
+### 3.1.8 Botones
Para los botones, se utilizaron 3 tact switch en la placa perforada principal
con los resistores de pull-up internos de la placa NUCLEO.
@@ -582,7 +582,7 @@ con los resistores de pull-up internos de la placa NUCLEO.
de estados en firmware (50 ms de filtro).
-->
-### 3.2 Firmware del sistema
+## 3.2 Firmware del sistema
El firmware de la placa NUCLEO se compone de una aplicación que implementa un
ejecutor cíclico con 8 tareas asociadas. Estas tareas se organizan de acuerdo al
@@ -602,7 +602,7 @@ eventos o mediante la estructura global compartida `shared_data`.
Esta aplicacion tiene como principal caracteristica ser no bloqueante.
-->
-#### 3.2.1 Ejecutor cíclico
+### 3.2.1 Ejecutor cíclico
El ejecutor cíclico se implementa en el archivo `app.c`. Este ejecutor ciclico
posee un tick de 1 ms generado por el timer SysTick propio del microcontrolador.
@@ -644,7 +644,7 @@ puede observar en la figura 3.9, en la cual las flechas con lineas punteadas
indican el mecanismo de acceso a la variable compartida y las flechas con lineas
continuas indican el mecanismo de eventos.
-#### 3.2.2 Tarea central
+### 3.2.2 Tarea central
La tarea central, `task_system`, gestiona la lógica del sistema y la máquina de
estados principal. A continuación en la figura 3.10 se muestra un diagrama de
@@ -681,7 +681,7 @@ Además en esta tarea se gestiona:
start_hour` (cruce de medianoche), activa o desactiva el calefactor
automáticamente.
-#### 3.2.3 Tarea para botones
+### 3.2.3 Tarea para botones
En la tarea `task_buttons` se implementa una máquina de estados de anti-rebote
para cada uno de los botones. En la figura 3.11 a continuación se muestra un
@@ -699,7 +699,7 @@ presionar el botón se active el buzzer, sin interactuar con la tarea central
`task_system`. Esto se observa también en el diagrama de bloques del firmware de
la figura 3.9.
-#### 3.2.4 Tarea para el buzzer
+### 3.2.4 Tarea para el buzzer
En la tarea `task_buzzer` se controla el buzzer generando una señal PWM de 1
kHz. Esta tarea recibe eventos para generar beeps cortos (de 35 ms para
@@ -716,7 +716,7 @@ observa en la figura 3.12 a continuación.
</div>
-#### 3.2.5 Tarea para luces indicadoras
+### 3.2.5 Tarea para luces indicadoras
En la tarea `task_leds` se controlan las luces indicadoras o LEDs (LD2, LD3)
permitiendo los modos: encendido, apagado, intermitente y un único pulso. Para
@@ -737,7 +737,7 @@ El modo intermitente se utiliza para cuando el calefactor está activo, indicand
visualmente el estado de operación. Cuando el calefactor esta inactivo las luces
permaneces apagadas.
-#### 3.2.6 Tarea para el menu
+### 3.2.6 Tarea para el menu
Esta tarea `task_menu`, gestiona la actualización del display LCD 16x2 según el
estado actual del sistema. Se implementa también una maquina de estados similar
@@ -813,7 +813,7 @@ en el display se muestra:
La comunicación con el LCD es asíncrona: las operaciones se encolan y se
procesan en cada tick de la tarea mediante `display_i2c_async_tick()`.
-#### 3.2.7 Tarea para control de temperatura
+### 3.2.7 Tarea para control de temperatura
En la tarea `task_temp_ctrl` se implementa un controlador proporcional, integral
y derivativo (PID) discreto para regular la temperatura. Se toma como señal de
@@ -844,7 +844,7 @@ trabajo del PWM que controla el calefactor a través de la variable compartida
por las tareas `shared_data`. Si el calefactor está deshabilitado, se fuerza el
ciclo de trabajo a 0%.
-#### 3.2.8 Tarea para sensor de temperatura
+### 3.2.8 Tarea para sensor de temperatura
La tarea `task_temp_sensor` gestiona la lectura asíncrona del sensor DS18B20.
Cada 1 segundo inicia una secuencia de comandos:
@@ -860,7 +860,7 @@ Cada 1 segundo inicia una secuencia de comandos:
Todas las operaciones se encolan y ejecutan mediante DMA, con callbacks que
indican la finalización de transmisión/recepción.
-#### 3.2.9 Tarea para módulo remoto
+### 3.2.9 Tarea para módulo remoto
En la tarea `task_remote` se administra la comunicación con el módulo ESP-01S a
través de USART3. Se implementa un protocolo propio basado en comandos de un
@@ -892,7 +892,7 @@ implementa un buffer circular similar al de recepción. En este buffer circular
se encolan los bytes que se desean enviar y mientras la cola no esté vacía, y
siempre que DMA haya terminado, se enviando los bytes.
-#### 3.2.10 Medición de tiempo de ejecución
+### 3.2.10 Medición de tiempo de ejecución
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: