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 e0bd1819493085c2c62cc0bf6b31b35fedec8769
parent 892c739c9af018840a689585cda3e7b31edfc668
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Wed, 22 Jul 2026 23:58:27 -0300

Agregar imágenes de las placas perforadas

Diffstat:
MMEMORIA.md | 77++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
Aimg/vista_inf_placa_sin_modulos.jpg | 0
Aimg/vista_sup_placa_con_modulos.jpg | 0
Aimg/vista_sup_placa_sin_modulos.jpg | 0
4 files changed, 48 insertions(+), 29 deletions(-)
diff --git a/MEMORIA.md b/MEMORIA.md
@@ -383,6 +383,25 @@ placa y al conector IDC.
     <p><em>Figura 3.4: Placa perforada principal.</em></p>
 </div>
 
+A continuación en las figuras 3.5, 3.6 y 3.7 se muestran imágenes de las placas
+armadas en placa perforada experimental, como se indico previamente en las
+figuras 3.3 y 3.4.
+
+<div align="center">
+    <img src="img/vista_sup_placa_con_modulos.jpg" style="padding: 10px;" width="600">
+    <p align="center"><em>Figura 3.5: Vista superior de placas con modulos en los zócalos.</em></p>
+</div>
+
+<div align="center">
+    <img src="img/vista_sup_placa_sin_modulos.jpg" style="padding: 10px;" width="600">
+    <p align="center"><em>Figura 3.6: Vista superior de placas sin modulos en los zócalos.</em></p>
+</div>
+
+<div align="center">
+    <img src="img/vista_inf_placa_sin_modulos.jpg" style="padding: 10px;" width="600">
+    <p align="center"><em>Figura 3.7: Vista inferior de placas sin modulos en los zócalos.</em></p>
+</div>
+
 ### 3.1.1. Placa NUCLEO
 
 Como bien se mencionó, el trabajo se desarrolló utilizando la placa NUCLEO, esta
@@ -399,13 +418,13 @@ particular los periféricos que se utilizaron son los siguientes:
 - GPIO: Botones (PC13, PA10, PB5, PB4), LEDs (PA5, PB10).
 - DMA: Acceso directo a memoria para reducir uso de CPU.
 
-A continuación, en la figura 3.5 se muestra una imagen de los pines utilizados
+A continuación, en la figura 3.8 se muestra una imagen de los pines utilizados
 del microcontrolador. Luego en la tabla 3.1 se muestran los nombres asignados y
 las funciones para los que fueron utilizados.
 
 <div align="center">
     <img src="img/stm32_pinout_view.png" style="padding: 10px" align=center width="500px">
-    <p><em>Figura 3.5: Pines utilizados de microcontrolador STM32F103RBT6.</em></p>
+    <p><em>Figura 3.8: Pines utilizados de microcontrolador STM32F103RBT6.</em></p>
 </div>
 
 | Pin  | Etiqueta  | Función                        |
@@ -493,7 +512,7 @@ mA y 250 mA, con picos de corriente durante la transmisión Wi-Fi de hasta 430 m
 a 3,3 V, y dado que la corriente maxima suministrada por el regulador de la
 placa NUCLEO es de 500 mA, se decidió utilizar un regulador externo de 3,3 V, el
 AIC1117-33PT, montado sobre la misma placa perforada principal, suministrada por
-los 12 V de la fuente de tension externa.
+los 12 V de la fuente de tensión externa.
 
 El firmware del modulo es ajeno al trabajo, pero se desarrollo de todas formas
 utilizando PlatformIO y el framework Arduino. El firmware se desarrolló para que
@@ -525,22 +544,22 @@ temperatura considerablemente. Para solucionar esto se implementó un driver par
 controlar el MOSFET con una señal PWM de mayor tensión, en particular 12 V de la
 fuente externa. El driver utiliza un transistor TBJ 2N3904 actuando como llave
 controlador por la señal PWM de la placa NUCLEO, como se puede ver en el
-esquemático de la figura 3.6.
+esquemático de la figura 3.9.
 
 <div align="center">
     <img src="img/npn_inv_mosfet_driver.png" style="padding: 10px" align=center width="700px">
-    <p><em>Figura 3.6: Driver para el MOSFET que controla el calefactor.</em></p>
+    <p><em>Figura 3.9: Driver para el MOSFET que controla el calefactor.</em></p>
 </div>
 
 Este circuito es simple de implementar, pero invierte la señal PWM como se
-observar en la figura 3.7 a continuación. Existen versiones del circuito que
-agregan un circuito inversor implementado con otro transistor, pero en este caso
+observar en la figura 3.10 a continuación. Existe la posibilidad de agregar una
+etapa adicional inversora, implementado con otro transistor, pero en este caso
 no es necesario ya que se puede invertir la polaridad de la señal PWM desde el
 firmware de la placa NUCLEO.
 
 <div align="center">
     <img src="img/npn_inv_mosfet_driver_plot.png" style="padding: 10px" align=center width="700px">
-    <p><em>Figura 3.7: Simulación del driver para el MOSFET que controla el calefactor.</em></p>
+    <p><em>Figura 3.10: Simulación del driver para el MOSFET que controla el calefactor.</em></p>
 </div>
 
 El calefactor del derretidor de miel se modeló como una carga resistiva pura,
@@ -556,13 +575,13 @@ que se obtienen mejores resultados con entre 30 mA y 45 mA de corriente.
 
 Para suministrar esta corriente y evitar sobrecargar el regulador de la placa
 NUCLEO, se implementó un circuito driver para alimentar al LED con la fuente de
-tension de 12 V externa, controlando solo el estado del led mediante una pequeña
+tensión de 12 V externa, controlando solo el estado del led mediante una pequeña
 corriente subintrada por la placa NUCLEO. El circuito resultante se muestra en
-la figura 3.8 a continuación.
+la figura 3.11 a continuación.
 
 <div align="center">
     <img src="img/npn_led_driver.png" style="padding: 10px" align=center width="550px">
-    <p><em>Figura 3.8: Driver para las luces indicadoras.</em></p>
+    <p><em>Figura 3.11: Driver para las luces indicadoras.</em></p>
 </div>
 
 El resistor RC se elige de manera tal que la corriente sobre el LED sea de
@@ -598,14 +617,14 @@ 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
 rol que cumplen: actuador, sensor o lógica del sistema.
 
-A continuación en la figura 3.9 se muestra un diagrama de bloques de las tareas
-del sistema y como interactúan entre ellas. La interacción puede ser a traves de
+A continuación en la figura 3.12 se muestra un diagrama de bloques de las tareas
+del sistema y como interactúan entre ellas. La interacción puede ser a través de
 eventos o mediante la estructura global compartida `shared_data`.
 
 
 <div align="center">
     <img src="img/diagrama_de_bloques_firmware_nucleo_TA134.png" style="padding: 10px" align=center width="650px">
-    <p><em>Figura 3.9: Diagrama de bloques firmware del sistema.</em></p>
+    <p><em>Figura 3.12: Diagrama de bloques firmware del sistema.</em></p>
 </div>
 
 <!--
@@ -650,14 +669,14 @@ estados o lógica correspondiente, si no hay ticks pendientes no hace nada.
 Las tareas se comunican entre sí mediante dos mecanismos: eventos, a través de
 buffers circulares con una interfaz dedicada para cada tarea; o mediante la
 estructura global compartida `shared_data`. Que mecanismo utiliza cada tarea se
-puede observar en la figura 3.9, en la cual las flechas con lineas punteadas
+puede observar en la figura 3.12, 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
 
 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
+estados principal. A continuación en la figura 3.13 se muestra un diagrama de
 estados de la maquina que implementa la tarea. Este diagrama es una versión
 simplificada de la lógica que se implementa en la tarea, ya que no se muestran
 los eventos que se envían a otras tareas, pero sirve para mostrar como se cambia
@@ -665,7 +684,7 @@ la funcionalidad de los botones de acuerdo al estado.
 
 <div align="center">
     <img src="img/system_statechart.png" style="padding: 10px" align=center width="800px">
-    <p><em>Figura 3.10: Diagrama de estados de tarea central. Version simplificada.</em></p>
+    <p><em>Figura 3.13: Diagrama de estados de tarea central. Version simplificada.</em></p>
 </div>
 
 Se tienen los siguientes estados:
@@ -695,20 +714,20 @@ Además en esta tarea se gestiona:
 ### 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
+para cada uno de los botones. En la figura 3.14 a continuación se muestra un
 diagrama de estados de la maquina.
 
 <div align="center">
     <img src="img/button_statechart.png" style="padding: 10px" align=center width="700px">
-    <p><em>Figura 3.11: Diagrama de estados para botones.</em></p>
+    <p><em>Figura 3.14: Diagrama de estados para botones.</em></p>
 </div>
 
 Al detectar una pulsación válida (flanco ascendente o descendente confirmado) se
-envía un evento a `task_system` y, aunque no se muestra en la figura 3.11, se
+envía un evento a `task_system` y, aunque no se muestra en la figura 3.14, se
 envían eventos directamente a `task_buzzer` para que inmediatamente luego de
 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.
+la figura 3.12.
 
 ### 3.2.4. Tarea para el buzzer
 
@@ -719,11 +738,11 @@ calefactor).
 
 Para controlar el buzzer se implementa una maquina de estados con los estados
 `ST_BUZ_XX_OFF` y `ST_BUZ_XX_ON` con auto-apagado por timeout, tal como se
-observa en la figura 3.12 a continuación.
+observa en la figura 3.15 a continuación.
 
 <div align="center">
     <img src="img/buzzer_statechart.png" style="padding: 10px" align=center width="600px">
-    <p><em>Figura 3.12: Diagrama de estados de buzzer.</em></p>
+    <p><em>Figura 3.15: Diagrama de estados de buzzer.</em></p>
 </div>
 
 ### 3.2.5. Tarea para luces indicadoras
@@ -731,7 +750,7 @@ observa en la figura 3.12 a continuación.
 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
 esto se implementa la maquina de estados cuyo diagrama de estados se muestra en
-la figura 3.13 a continuación, con los siguientes estados:
+la figura 3.16 a continuación, con los siguientes estados:
 
 - `ST_LED_XX_OFF`: LED apagado.
 - `ST_LED_XX_ON`: LED encendido fijo.
@@ -740,7 +759,7 @@ la figura 3.13 a continuación, con los siguientes estados:
 
 <div align="center">
     <img src="img/led_statechart.png" style="padding: 10px" align=center width="800px">
-    <p><em>Figura 3.13: Diagrama de estados de luces indicadoras.</em></p>
+    <p><em>Figura 3.16: Diagrama de estados de luces indicadoras.</em></p>
 </div>
 
 El modo intermitente se utiliza para cuando el calefactor está activo, indicando
@@ -753,11 +772,11 @@ La 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
 a la implementada para el sistema, con estados similares, de manera tal que cada
 estado del sistema tiene su correspondiente estado del menú y cada estado del
-menú define su contenido del display. En la figura 3.14 se muestran diferentes
+menú define su contenido del display. En la figura 3.17 se muestran diferentes
 contenidos del display para diferentes estados.
 
 Por ejemplo en estado reposo (estado del sistema `ST_SYS_IDLE`) con el
-calefactor apagado y un timer programado, como se muestra en la figura 3.14(b),
+calefactor apagado y un timer programado, como se muestra en la figura 3.17(b),
 en la primer linea se muestra el estado del calefactor ("Off"), y en la segunda
 linea el estado del timer ("[P]" si activo, "   ", si no), la temperatura
 actual, la temperatura deseada (entre paréntesis) y la unidad de la temperatura.
@@ -816,7 +835,7 @@ actual, la temperatura deseada (entre paréntesis) y la unidad de la temperatura
 
 </table>
 
-<em>Figura 3.14: Interfaces mostradas en el display LCD 16x2.</em>
+<em>Figura 3.17: Interfaces mostradas en el display LCD 16x2.</em>
 </div>
 
 La comunicación con el LCD es asíncrona: las operaciones se encolan y se
@@ -919,7 +938,7 @@ siempre que DMA haya terminado, se enviando los bytes.
 
 </table>
 
-<p><em>Figura 3.15: Pagina web del modulo remoto. Esquema de colores adaptado al
+<p><em>Figura 3.18: Pagina web del modulo remoto. Esquema de colores adaptado al
 dispositivo.</em></p>
 
 </div>
diff --git a/img/vista_inf_placa_sin_modulos.jpg b/img/vista_inf_placa_sin_modulos.jpg
Binary files differ.
diff --git a/img/vista_sup_placa_con_modulos.jpg b/img/vista_sup_placa_con_modulos.jpg
Binary files differ.
diff --git a/img/vista_sup_placa_sin_modulos.jpg b/img/vista_sup_placa_sin_modulos.jpg
Binary files differ.