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 03f011d98b0bfecba86aacd41eabecd49cc17ba3
parent d037b49aa69a244fb8c24bd7feabfbaf5718f786
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Tue,  2 Jun 2026 17:17:49 -0300

Actualizar sección 3: placa NUCLEO y sensor DS18B20

Diffstat:
MMEMORIA.md | 130+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 110 insertions(+), 20 deletions(-)
diff --git a/MEMORIA.md b/MEMORIA.md
@@ -313,49 +313,139 @@ módulo central y luego todos los demás módulos se conectan a este.
 
 ## 3.1 Hardware del sistema
 
-Para la implementación del trabajo se utilizaron dos placas perforadas para unir
-los componentes, y estas placas conectadas a través de un cable IDC de 20 hilos,
-con sus respectivos conectores, tal como se ve en la figura 3.2.
+El trabajo se divide en dos placas perforadas experimentales. Estas placas
+perforadas se utilizan para unir los módulos, evitando utilizar cables. Las
+placas perforadas se conectan entre si a través de un cable IDC de 20 hilos, tal
+como se ve en la figura 3.2.
 
 <div align="center">
     <img src="img/conexion_placas_perforadas_TA134.png" style="padding: 10px;" width="700">
     <p align="center"><em>Figura 3.2: Conexión placas perforadas</em></p>
 </div>
 
-La primer placa se muestra en la figura 3.2 y hace de adaptador de los pines de
-la placa NUCLEO a cable con conector IDC de 2x10.
+La primer placa perforada se muestra en la figura 3.3 y hace de adaptador de los
+pines de la placa NUCLEO a cable con conector IDC de 2x10.
 
 <div align="center">
     <img src="img/stm32_nucleo_expansion_board_cropped.png" style="padding: 10px;" width="600">
-    <p align="center"><em>Figura 3.2: Placa perforada adaptador NUCLEO a conector IDC 2x10</em></p>
+    <p align="center"><em>Figura 3.3: Placa perforada adaptador NUCLEO a conector IDC 2x10</em></p>
 </div>
 
-La segunda placa perforada se utilizo para unir todos los módulos del sistema,
-tal como el modulo de acceso remoto, los conectores para el sensor de
+La segunda placa perforada se utilizo para unir todos los módulos restantes del
+sistema, como el modulo de acceso remoto, la bornera para el sensor de
 temperatura, las luces indicadoras, los botones, el portapilas para almacenar la
-pila CR2032, etc. A continuación en la figura 3.2 se muestra una vista de como
-se conectan los módulos dentro de la placa y el conector IDC.
+pila CR2032, entre otros. A continuación en la figura 3.3 se muestra una vista
+de como se conectan los módulos dentro de la placa y al conector IDC.
 
 <div align="center">
-    <img style="padding: 10px" align=center src="img/main_perf_board.png" width="400px">
-    <p><em>Figura 3.3: Placa perforada principal</em></p>
+    <img src="img/main_perf_board.png" style="padding: 10px" align=center width="400px">
+    <p><em>Figura 3.4: Placa perforada principal</em></p>
 </div>
 
-### 3.1.1 Placa NUCLEO-F103RB
+### 3.1.1 Placa NUCLEO
 
-El trabajo se desarrolló sobre la placa NUCLEO-F103RB de STM, con procesador ARM
-Cortex-M3 operando a 64 MHz. Se utilizaron los siguientes periféricos:
+Como bien se mencionó, el trabajo se desarrolló utilizando la placa NUCLEO
+F103RB de STM, esta placa utiliza el procesador STM32F103RBT6 configurado para
+operar a 64 MHz, ya que esta frecuencia es la que mejor se adapta a los
+periféricos utilizados. En particular los periféricos que se utilizaron son los
+siguientes:
 
-- I2C1: Display LCD 16x2.
-- USART1: Sensor DS18B20 (modo half-duplex, manejo de baudrate dinámico).
+- I2C1: Conexion con display LCD 16x2.
+- USART1: Sensor DS18B20 (modo half-duplex, emulacion de protocolo OneWire).
 - USART3: Módulo ESP-01S.
 - TIM1_CH1: Salida PWM para control del MOSFET (PA8).
 - TIM3_CH1: Salida PWM para buzzer (PA6).
 - RTC: Reloj de tiempo real.
 - GPIO: Botones (PC13, PA10, PB5, PB4), LEDs (PA5, PB10).
+- DMA: Acceso directo a memoria para reducir uso de CPU.
 
-El microcontrolador se alimenta a través del USB (ST-Link) o por el pin de 5V
-externos. Los 5V externos provienen de un regulador LM7505 el cual recibe
-alimentación de una fuente de 12V externa.
+A continuación, en la figura 3.4 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.4: Placa perforada principal</em></p>
+</div>
+
+| Pin  | Etiqueta  | Función                        |
+| :--- | :-------- | :----------------------------- |
+| PA5  | LD2       | LED verde de la placa NUCLEO   |
+| PA6  | TIM3_CH1  | Salida PWM buzzer              |
+| PA8  | TIM1_CH1  | Salida PWM control temperatura |
+| PA9  | USART1_TX | DS18B20                        |
+| PC13 | BTN_A     | Botón A                        |
+| PA10 | BTN_B     | Botón B                        |
+| PB4  | BTN_D     | Botón D                        |
+| PB5  | BTN_C     | Botón C                        |
+| PB6  | I2C1_SCL  | Linea SCL bus I2C              |
+| PB7  | I2C1_SDA  | Linea SDA bus I2C              |
+| PB10 | LD3       | LED azul                       |
+| PC10 | USART3_TX | ESP-01S Linea TX               |
+| PC11 | USART3_RX | ESP-01S Linea RX               |
+
+<p align="center"><em>Tabla 3.1: Pinout del sistema</em></p>
+
+La placa NUCLEO se puede alimentar a través del USB (ST-Link) o por el pin de 5V
+externo. Los 5V externos provienen de un regulador LM7505 el cual recibe
+alimentación de una fuente de 12V externa. Para seleccionar que tipo de
+alimentación se desea utilizar se debe ajustar la posicion del jumper JP5 en la
+placa NUCLEO, tal como lo indica 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
+
+El sensor DS18B20 se conectó al USART1 en modo half-duplex, utilizando una sola
+linea del periférico. De esta forma se puede aprovechar el periférico emulando
+el protocolo OneWire. Este protocolo requiere temporización y niveles
+específicos, tal como se indica en el manual del sensor DS18B20.[^2]
+
+Para emular el protocolo OneWire utilizando el periférico USART, se cambian
+dinámicamente la tasa en baudios (baud rate) de transmisión. Para enviar una
+señal de reset se requiere de como mínimo 480 μs, por lo que enviando un byte a
+9600 baudios por segundo de tasa de transmisión, con los respectivos bits de
+inicio y fin (resultando en total 10 bits) se tiene un período de
+aproximadamente $1.04ms$:
+
+$$T_{bit} = \frac{1}{9600\ \frac{\text{baud}}{s}} \approx 104 \mu s \Rightarrow
+\boxed{T_{byte} \approx 1.04ms}$$
+
+En cambio tomando 96000 baudios por segundo de tasa de transmisión, se tiene un
+período de bit, y de byte, de aproximadamente $10.4\mu s$ y $104\mu s$,
+respectivamente.
+
+$$T_{bit} = \frac{1}{96000\ \frac{\text{baud}}{s}} \approx 10.4 \mu s \Rightarrow
+\boxed{T_{byte} \approx 104\mu s}$$
+
+Teniendo estas dos tasas de transmisión enviando el byte hexadecimal 0xF0
+(equivalente al numero binario 11110000) a 9600 baudios por segundo, se logra
+un pulso lo suficientemente parecido al reset de OneWire. Para transmitir datos,
+se utiliza la tasa más rápida, de 96000 baudios, y se envía cada bit
+de datos en un byte, es decir si se desea enviar un byte de datos, se deben
+enviar 8 bytes en la transmisión, un byte por cada dato. Se transmite el byte
+0xFF para representar un bit lógico 1 y el byte 0x00 para representar un bit
+lógico 0. Al transmitir el byte 0xFF, la línea permanece en nivel alto
+durante casi toda la trama, excepto por el bit de inicio, que es siempre bajo,
+lo que genera un pulso bajo corto, compatible con la escritura de un bit lógico
+1 en OneWire. Por otro lado, al transmitir el byte 0x00, la línea permanece en
+nivel bajo durante casi toda la trama, a excepción del bit de fin, que es
+siempre 1, esto produce un pulso bajo de mayor duración, similar al requerido
+para transmitir un bit lógico 0.
+
+Por lo tanto se utiliza la tasa de 9600 baudios únicamente para aproximar el
+pulso de reset, el cual posee una duración considerablemente mayor y es
+necesario para comenzar al comunicación con el sensor, y la tasa de 96000
+baudios para transmitir datos, ya que se generar intervalos temporales
+compatibles con los slots de tiempo definidos por el protocolo OneWire.
+
+Y abrochando aún más el periférico USART se realizaron las operaciones de
+forma no bloqueante mediante acceso directo a memoria (DMA) de esta forma se
+reduce aun más el tiempo de bloqueo del ejecutor cíclico y de uso de la CPU.
+
+[^2]: Analog Devices, "DS18B20 - Programmable Resolution 1-Wire Digital
+    Thermometer," Rev. 6, ago. 2019. [En linea]. Disponible en:
+    https://www.analog.com/media/en/technical-documentation/data-sheets/ds18b20.pdf