Samovar surveille les paramètres du processus et coupe le chauffage en cas d’urgence lorsque les mesures sortent des limites de sécurité. Tous les événements d’urgence sont enregistrés dans le journal et envoyés à l’application mobile et au site samovar-tool.ru. Cette page décrit la liste complète des scénarios d’urgence du firmware 7.00 et la réaction du contrôleur à chacun d’eux.
Comment fonctionne la protection d’urgence
Toutes les vérifications d’urgence sont regroupées dans le module alarm.h et appelées depuis la boucle principale du contrôleur par la fonction check_alarm(). Quand une vérification se déclenche, une raison d’arrêt d’urgence est générée et request_emergency_stop(reason) est appelée. La fonction coupe le chauffage, arrête les pompes, écrit la raison dans la mémoire non volatile et envoie une notification. La seule façon de sortir du mode d’urgence est de redémarrer le contrôleur.
Les messages d’urgence arrivent :
- sur l’écran principal de l’interface web ;
- dans les applications mobiles Android et iOS ;
- sur le site samovar-tool.ru ;
- dans le journal local sur la carte SD ou dans LittleFS.
Le type de message est ALARM_MSG pour les urgences et WARNING_MSG pour les avertissements. Les avertissements n’arrêtent pas le processus mais demandent l’attention de l’opérateur.
Limites de température
Les limites de température sont définies par des constantes dans le fichier Samovar_ini.h. Ces valeurs sont le seuil d’un arrêt d’urgence immédiat. Pour les seuils que l’utilisateur peut configurer (par exemple la température de fin de distillation), il existe des champs distincts dans les réglages.
MAX_STEAM_TEMP = 98,8 °C: la limite de température de la vapeur. Son dépassement déclenche un arrêt d’urgence avec la raison “Maximum steam temperature exceeded” (Température maximale de la vapeur dépassée).MAX_WATER_TEMP = 75 °C: la limite de température de l’eau de refroidissement. Son dépassement déclenche un arrêt d’urgence avec la raison “Maximum water temperature exceeded” (Température maximale de l’eau dépassée).ALARM_WATER_TEMP = 70 °C: la température critique de l’eau (un avertissement). Lorsqu’elle est atteinte, le contrôleur abaisse la tension du régulateur de puissance par paliers de 5 V par itération, avec une pause de 30 secondes entre les paliers. Si la baisse ne suffit pas et que la température continue de monter, l’urgenceMAX_WATER_TEMPse déclenche.MAX_ACP_TEMP = 75 °C: la température limite du TCA (la sonde dans le tube de mise à l’air de la colonne). Son dépassement déclenche un arrêt d’urgence.SamSetup.DistTemp(configurable, 99.9 °C par défaut) : la température à laquelle se terminent la distillation et le BC (le mode bouilleur-colonne). Lorsqu’elle est atteinte, le contrôleur essaie de terminer normalement le programme via la file de commandesSAMOVAR_POWER. Si la file est occupée, le contrôleur déclenche un arrêt d’urgence : mieux vaut passer par la voie d’urgence que de laisser le chauffage allumé jusqu’à ce que le bouilleur s’assèche.
Pression
Si un capteur de pression MPX5010DP est installé et qu’une valeur MaxPressureValue est définie dans les réglages (0 par défaut : la vérification est désactivée), le contrôleur surveille la pression dans la colonne. Lorsque le seuil est dépassé, un arrêt d’urgence se produit avec la raison “Maximum pressure exceeded!” (Pression maximale dépassée !). Dès que la pression descend de 5 % sous le seuil (hystérésis), l’état d’urgence est levé automatiquement.
Capteur d’engorgement
Si le réglage “Use reflux level sensor” (Utiliser le capteur de niveau de reflux) (UseHLS) est activé et que le capteur est branché sur la broche WHLS, le contrôleur surveille le niveau de reflux en tête de colonne. Si le capteur reste déclenché plus de WHLS_ALARM_TIME = 3 secondes :
- l’avertisseur sonore retentit et la notification “Flooding sensor triggered!” (Capteur d’engorgement déclenché !) est envoyée ;
- si un régulateur de puissance est utilisé, le contrôleur abaisse la tension d’un pas (3 % pour SEM AVR, 1 × PWR_FACTOR pour les autres régulateurs) ;
- la réaction suivante n’est possible qu’après 40 secondes : le processus réagit lentement, et il est inutile de baisser plus souvent.
Si le programme s’exécute en pré-engorgement (ligne de type C), le contrôleur mémorise la tension actuelle sous le nom prev_target_power_volt et, après TIME_C / 5 minutes, ramène la tension à la valeur mémorisée moins 0,5 pas. Si le capteur continue de se déclencher, le cycle de baisse se répète.
Débit d’eau
Si un capteur de débit d’eau est installé et que le réglage “Use water flow control” (Utiliser le contrôle du débit d’eau) (UseWS) est activé, le contrôleur surveille la circulation de l’eau dans tous les modes qui exigent un refroidissement. Si le débit d’eau est nul pendant WF_ALARM_COUNT cycles d’interrogation, request_emergency_stop est appelée avec la raison d’absence de débit. Cela protège la colonne et le TCA de la surchauffe si l’eau est coupée ou si la pompe tombe en panne.
Défaillance d’une sonde de température
Chaque sonde DS18B20 possède un compteur d’erreurs ErrCount, incrémenté à chaque échec de lecture (fil coupé, absence de réponse). La fonction optional_sensor_failed considère une sonde comme défaillante si les valeurs sortent de la plage 2,0 à 126,0 °C ou si les erreurs de lecture se répètent. En cas de défaillance :
- une notification du type “Steam sensor is not responding” (La sonde de vapeur ne répond pas) / “Boiler sensor is not responding” (La sonde du bouilleur ne répond pas) / “Water sensor is not responding” (La sonde d’eau ne répond pas) / “TCA sensor is not responding” (La sonde TCA ne répond pas) est envoyée, avec l’indication du mode ;
- un verrou d’urgence est enclenché : le chauffage reste coupé tant que la cause n’est pas éliminée ;
- la sortie de l’urgence se fait par un redémarrage du contrôleur.
De plus, en mode Rectification, le contrôleur vérifie que les sondes de vapeur et du bouilleur sont bien affectées (l’adresse n’est pas 0xFF). S’il n’y a aucune sonde sur le bus 1-Wire, le contrôleur essaie de couper normalement le chauffage via la file de commandes et, si la file est occupée, il passe en mode d’urgence.
Bouton d’arrêt d’urgence
Si la broche ALARM_BTN_PIN est définie dans les réglages de la carte (par défaut GPIO 35 sur l’ESP32 classique et GPIO 48 sur l’ESP32-S3), vous pouvez brancher un bouton d’arrêt d’urgence ou un détecteur de fuite d’eau fonctionnant par fermeture d’un contact. Le contact est tiré vers la tension d’alimentation ; lorsqu’il est mis à la masse (FALLING), une interruption se déclenche et une tâche distincte triggerEmergencyButton appelle request_emergency_stop avec la raison “Emergency shutdown: the emergency button was pressed” (Arrêt d’urgence : le bouton d’arrêt d’urgence a été actionné).
Particularités de la broche :
- sur l’ESP32 classique, les broches 34 à 39 sont des entrées uniquement, sans résistance de rappel interne, une résistance de rappel externe vers la tension d’alimentation est donc nécessaire ;
- sur l’ESP32-S3, la broche 48 possède une résistance de rappel interne, aucune résistance externe n’est donc nécessaire.
Le bouton d’arrêt d’urgence est désactivé par défaut : pour l’activer, décommentez #define USE_ALARM_BTN dans Samovar_pin.h ou définissez la broche via user_config_override.h. Après son déclenchement, la seule façon de sortir du mode d’urgence est de redémarrer le contrôleur.
Protection du régulateur de puissance
Si le réglage “Use regulator connection check” (Vérifier la connexion du régulateur) (CheckPower) est activé et que la communication avec le régulateur de puissance est perdue en cours de fonctionnement, le contrôleur coupe le chauffage en urgence. Cela protège dans le cas où le régulateur a cessé de répondre (liaison UART coupée, perte d’alimentation du régulateur) alors que le chauffage est resté allumé.
Chiens de garde des tâches
Les tâches FreeRTOS du contrôleur (la tâche du régulateur, la tâche de supervision SysTicker, le chien de garde de la pile) se surveillent mutuellement. Si l’une d’elles ne répond pas au-delà du délai autorisé :
- la tâche du régulateur ne s’est pas lancée : arrêt d’urgence “Regulator task is not running” (La tâche du régulateur ne tourne pas) ;
- la tâche du bouton d’arrêt d’urgence ne s’est pas lancée : arrêt d’urgence “Emergency button task is not running” (La tâche du bouton d’arrêt d’urgence ne tourne pas) ;
- pile restante d’une tâche critiquement basse : arrêt d’urgence “Critically low remaining task stack …” (Pile restante de la tâche critiquement basse …) ;
- la tâche de supervision SysTicker est bloquée : arrêt d’urgence “SysTicker supervision task has hung” (La tâche de supervision SysTicker s’est bloquée).
Raisons d’arrêt d’urgence
Lorsqu’une vérification d’urgence se déclenche, la raison est écrite dans la mémoire non volatile (latched_emergency_stop_reason) et peut être lue via l’interface web et l’API. Une fois la cause éliminée, l’opérateur lève le mode d’urgence en redémarrant le contrôleur.
Raisons typiques que voit l’opérateur :
- “Maximum steam / water / TCA temperature exceeded” (Température maximale de la vapeur / de l’eau / du TCA dépassée) ;
- “Maximum boiler temperature limit. Program completed.” (Limite de température maximale du bouilleur. Programme terminé.) (une fin normale) ;
- “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” (Pas de débit d’eau) ;
- “Power regulator is not responding” (Le régulateur de puissance ne répond pas) ;
- “Critical water temperature! Water supply error” (Température critique de l’eau ! Erreur d’alimentation en eau) (un avertissement, réduction progressive de la puissance).
Où trouver les réglages
- Limites de température :
MAX_STEAM_TEMP,MAX_WATER_TEMP,MAX_ACP_TEMP,ALARM_WATER_TEMPdansSamovar_ini.h. - Température de fin de distillation :
DistTempdans l’onglet “Main” (Principal) de la page des réglages. - Pression d’urgence :
MaxPressureValuedans l’onglet “Main”. - Capteur d’engorgement : le réglage “Use reflux level sensor” dans l’onglet “Main” et la broche WHLS dans
Samovar_pin.h. - Capteur de débit d’eau : le réglage “Use water flow control” (
UseWS) dans l’onglet “Other” (Autres). - Bouton d’arrêt d’urgence : la broche
ALARM_BTN_PINet le drapeauUSE_ALARM_BTNdansSamovar_pin.h. - Vérification du régulateur de puissance : le réglage “Use regulator connection check” (
CheckPower) dans l’onglet “Other”.
