El Samovar vigila los parámetros del proceso y corta el calentamiento en caso de emergencia cuando las lecturas se salen de los límites seguros. Todos los eventos de emergencia se registran en el log y se envían a la aplicación móvil y al sitio web samovar-tool.ru. Esta página describe la lista completa de escenarios de emergencia del firmware 7.00 y la reacción del controlador a cada uno de ellos.
Cómo funciona la protección de emergencia
Todas las comprobaciones de emergencia están concentradas en el módulo alarm.h y las llama el bucle principal del controlador mediante la función check_alarm(). Cuando se activa cualquier comprobación, se genera un motivo de parada de emergencia y se llama a request_emergency_stop(reason). La función apaga el calentamiento, detiene las bombas, escribe el motivo en la memoria no volátil y envía una notificación. La única forma de salir del modo de emergencia es reiniciar el controlador.
Los mensajes de emergencia llegan:
- a la pantalla principal de la interfaz web;
- a las aplicaciones móviles para Android e iOS;
- al sitio web samovar-tool.ru;
- al log local en la tarjeta SD o en LittleFS.
El tipo de mensaje es ALARM_MSG para las emergencias y WARNING_MSG para las advertencias. Las advertencias no detienen el proceso, pero requieren la atención del operador.
Límites de temperatura
Los límites de temperatura se fijan mediante constantes en el archivo Samovar_ini.h. Estos valores son el umbral de una parada de emergencia inmediata. Para los umbrales que puede configurar el usuario (por ejemplo, la temperatura de fin de destilación) hay campos aparte en los ajustes.
MAX_STEAM_TEMP = 98,8 °C: el límite de temperatura del vapor. Superarlo provoca una parada de emergencia con el motivo “Maximum steam temperature exceeded” (Superada la temperatura máxima del vapor).MAX_WATER_TEMP = 75 °C: el límite de temperatura del agua de refrigeración. Superarlo provoca una parada de emergencia con el motivo “Maximum water temperature exceeded” (Superada la temperatura máxima del agua).ALARM_WATER_TEMP = 70 °C: la temperatura crítica del agua (una advertencia). Al alcanzarla, el controlador reduce la tensión del regulador de potencia en pasos de 5 V por iteración, con una pausa de 30 segundos entre pasos. Si la reducción no ayuda y la temperatura sigue subiendo, se activa la emergenciaMAX_WATER_TEMP.MAX_ACP_TEMP = 75 °C: la temperatura límite del TCA (el sensor en el tubo de comunicación con la atmósfera de la columna). Superarla provoca una parada de emergencia.SamSetup.DistTemp(configurable, 99,9 °C de forma predeterminada): la temperatura a la que terminan la destilación y el BC (el modo caldera-columna). Al alcanzarla, el controlador intenta terminar el programa con normalidad mediante la cola de órdenesSAMOVAR_POWER. Si la cola está ocupada, el controlador llama a una parada de emergencia: es mejor tomar el camino de la emergencia que dejar el calentamiento encendido hasta que la caldera se quede sin líquido.
Presión
Si hay instalado un sensor de presión MPX5010DP y en los ajustes se ha fijado un valor de MaxPressureValue (0 de forma predeterminada: la comprobación está desactivada), el controlador vigila la presión en la columna. Cuando se supera el umbral, se produce una parada de emergencia con el motivo “Maximum pressure exceeded!” (¡Superada la presión máxima!). Cuando la presión baja un 5 % por debajo del umbral (histéresis), el estado de emergencia se borra automáticamente.
Sensor de inundación
Si el ajuste “Use reflux level sensor” (Usar sensor de nivel de reflujo) (UseHLS) está activado y el sensor está conectado al pin WHLS, el controlador vigila el nivel de reflujo en la cabeza de la columna. Si el sensor permanece activado más de WHLS_ALARM_TIME = 3 segundos:
- suena el zumbador y se envía la notificación “Flooding sensor triggered!” (¡Sensor de inundación activado!);
- si se usa un regulador de potencia, el controlador reduce la tensión en un paso (3 % para SEM AVR, 1 × PWR_FACTOR para los demás reguladores);
- la siguiente reacción solo es posible pasados 40 segundos: el proceso responde despacio y no tiene sentido reducir con más frecuencia.
Si el programa se ejecuta en preinundación (línea de tipo C), el controlador memoriza la tensión actual como prev_target_power_volt y, pasados TIME_C / 5 minutos, devuelve la tensión al valor memorizado menos 0,5 paso. Si el sensor sigue activándose, el ciclo de reducción se repite.
Caudal de agua
Si hay instalado un sensor de caudal de agua y el ajuste “Use water flow control” (Usar control del caudal de agua) (UseWS) está activado, el controlador vigila que haya caudal de agua en todos los modos que requieren enfriamiento. Si el caudal de agua es cero durante WF_ALARM_COUNT ciclos de sondeo, se llama a request_emergency_stop con el motivo de falta de caudal. Esto protege la columna y el TCA del sobrecalentamiento si se corta el agua o falla la bomba.
Fallo de un sensor de temperatura
Cada sensor DS18B20 tiene un contador de errores ErrCount, que aumenta con los intentos de lectura fallidos (cable roto, sin respuesta). La función optional_sensor_failed considera que un sensor ha fallado si las lecturas están fuera del intervalo de 2,0 a 126,0 °C o si los errores de lectura se repiten. En caso de fallo:
- se envía una notificación del tipo “Steam sensor is not responding” (El sensor de vapor no responde) / “Boiler sensor is not responding” (El sensor de la caldera no responde) / “Water sensor is not responding” (El sensor de agua no responde) / “TCA sensor is not responding” (El sensor del TCA no responde), indicando el modo;
- se activa un bloqueo de emergencia: el calentamiento permanece apagado hasta que se elimina la causa;
- la salida de la emergencia es un reinicio del controlador.
Además, en el modo Rectification (Rectificación) el controlador comprueba que los sensores de vapor y de caldera estén asignados (que la dirección no sea 0xFF). Si no hay ni un solo sensor en el bus 1-Wire, el controlador intenta apagar el calentamiento con normalidad mediante la cola de órdenes y, si la cola está ocupada, pasa al modo de emergencia.
Botón de emergencia
Si el pin ALARM_BTN_PIN está definido en los ajustes de la placa (de forma predeterminada GPIO 35 en el ESP32 clásico y GPIO 48 en el ESP32-S3), puede conectar un botón de emergencia o un sensor de fugas de agua que funcione cerrando un contacto. El contacto está conectado a la tensión de alimentación mediante una resistencia pull-up; cuando se pone en cortocircuito con masa (FALLING), se dispara una interrupción y una tarea aparte, triggerEmergencyButton, llama a request_emergency_stop con el motivo “Emergency shutdown: the emergency button was pressed” (Apagado de emergencia: se pulsó el botón de emergencia).
Particularidades de los pines:
- en el ESP32 clásico, los pines 34–39 son solo de entrada y no tienen pull-up interno, por lo que se necesita una resistencia pull-up externa a la tensión de alimentación;
- en el ESP32-S3, el pin 48 tiene pull-up interno, así que no hace falta uno externo.
El botón de emergencia está desactivado de forma predeterminada: para activarlo, quite el comentario de #define USE_ALARM_BTN en Samovar_pin.h o fije el pin mediante user_config_override.h. Tras activarse, la única forma de salir del modo de emergencia es reiniciar el controlador.
Protección del regulador de potencia
Si el ajuste “Use regulator connection check” (Usar comprobación de la conexión del regulador) (CheckPower) está activado y se pierde la comunicación con el regulador de potencia durante el funcionamiento, el controlador corta el calentamiento en emergencia. Esto protege del caso en que el regulador ha dejado de responder (un enlace UART roto, pérdida de alimentación del regulador) mientras el calentamiento seguía conectado.
Watchdogs de las tareas
Las tareas FreeRTOS del controlador (la tarea del regulador, la tarea de supervisión SysTicker, el watchdog de pila) se vigilan entre sí. Si alguna de ellas no responde durante más del tiempo permitido:
- la tarea del regulador no se ha iniciado: parada de emergencia “Regulator task is not running” (La tarea del regulador no está en ejecución);
- la tarea del botón de emergencia no se ha iniciado: parada de emergencia “Emergency button task is not running” (La tarea del botón de emergencia no está en ejecución);
- pila restante críticamente baja en cualquier tarea: parada de emergencia “Critically low remaining task stack …” (Pila restante de la tarea críticamente baja …);
- la tarea de supervisión SysTicker se cuelga: parada de emergencia “SysTicker supervision task has hung” (La tarea de supervisión SysTicker se ha colgado).
Motivos de la parada de emergencia
Cuando se activa cualquier comprobación de emergencia, el motivo se escribe en la memoria no volátil (latched_emergency_stop_reason) y puede leerse a través de la interfaz web y de la API. Una vez eliminada la causa, el operador borra el modo de emergencia reiniciando el controlador.
Motivos típicos que ve el operador:
- “Maximum steam / water / TCA temperature exceeded”;
- “Maximum boiler temperature limit. Program completed.” (Límite máximo de temperatura de la caldera. Programa completado.) (una finalización normal);
- “Maximum pressure exceeded!”;
- “Steam sensor is not responding” / “Boiler sensor is not responding” / “Water sensor is not responding” / “TCA sensor is not responding”;
- “Emergency shutdown: the emergency button was pressed”;
- “No water flow” (Sin caudal de agua);
- “Power regulator is not responding” (El regulador de potencia no responde);
- “Critical water temperature! Water supply error” (¡Temperatura crítica del agua! Error en el suministro de agua) (una advertencia, reducción escalonada de la potencia).
Dónde encontrar los ajustes
- Límites de temperatura:
MAX_STEAM_TEMP,MAX_WATER_TEMP,MAX_ACP_TEMP,ALARM_WATER_TEMPenSamovar_ini.h. - Temperatura de fin de destilación:
DistTempen la pestaña “Main” (Principal) de la página de ajustes. - Presión de emergencia:
MaxPressureValueen la pestaña “Main”. - Sensor de inundación: el ajuste “Use reflux level sensor” en la pestaña “Main” y el pin WHLS en
Samovar_pin.h. - Sensor de caudal de agua: el ajuste “Use water flow control” (
UseWS) en la pestaña “Other” (Otros). - Botón de emergencia: el pin
ALARM_BTN_PINy la banderaUSE_ALARM_BTNenSamovar_pin.h. - Comprobación del regulador de potencia: el ajuste “Use regulator connection check” (
CheckPower) en la pestaña “Other”.
