tdse-tf_3-02

Controlador PID para derretidor de miel con control local via botones y remoto via WiFi
Index Commits Files Refs Submodules README
commit 46474b8df29c81adb3d331a4e2b370957e8f4c7b
parent e4708e2bee244e7b3991486817e7fdacc33dea32
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Sun,  7 Jun 2026 15:39:56 -0300

Corregir niveles de titulos

Diffstat:
MMEMORIA.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 General
+## Índice
 
 - [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: