Note de ce sujet :
  • Moyenne : 5 (1 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
condition d'hystérésis sur la température
#5
(19-11-2024, 10:16 PM)marcos83 a écrit :
(04-11-2024, 09:08 PM)F6AAM a écrit : Bonsoir André et Bonsoir à tous,

J'ai eu besoin d'une hystérésis sur la condition de température et je propose cette solution :

J'avais déjà rajouté une hystérésis sur des versions 6.xx mais voici la solution que je viens d'implanter sur la version 12.06

Le principe :
pour déclencher une hystérésis je programme par exemple une condition de température  >= 20° ET une condition de température <= 18° dans la page Actions.
Evidemment dans l'état actuel du code cela produit un résultat qui est toujours faux car la température ne pourra jamais être en même temps <= 18° ET >= 20°
Par contre après ajout des lignes de code suivantes, celui-ci détecte cette condition et bascule en mode hystérésis dont la valeur est dans cet exemple 20° - 18° = 2°

voici le code :

dans le fichier Actions.h
ajouter à la ligne 62 : 

int Tseuil = 2000; 

dans le fichier Actions.cpp
modifier le code comme suit à partir de la ligne 185

      /*

      if (Temperature > -100) {
        if (Tinf[i] <= 1000 && int(Temperature * 10.0) > Tinf[i]) { ConditionsOk = false; }
        if (Tsup[i] <= 1000 && int(Temperature * 10.0) < Tsup[i]) { ConditionsOk = false; }
      }
      */
     
      if (Temperature > -100) {     
              if (Tinf[i] <= 1000 && Tsup[i] <= 1000 && Tinf[i] < Tsup[i]) { // on applique une hystérésis dont les valeurs sont Tinf et Tsup
               
                if (Temperature * 10.0 > Tinf[i] && Temperature * 10.0 > Tsup[i]) Tseuil = Tinf[i];
               
                if (Temperature * 10.0 < Tinf[i] && Temperature  * 10.0 < Tsup[i]) Tseuil = Tsup[i];
                     
                if (Temperature * 10.0 > Tseuil) { ConditionsOk = false; }
              }
              else {
                if (Tinf[i] <= 1000 && int(Temperature * 10.0) > Tinf[i]) { ConditionsOk = false; }
                if (Tsup[i] <= 1000 && int(Temperature * 10.0) < Tsup[i]) { ConditionsOk = false; }
              }
      }

J'ai laissé en commentaire le code d'origine.

Voilà c'est tout ce qu'il y a à faire.

Si André pense que c'est utile il pourra peut-être rajouter cette hystérésis sur la température dans la version 13

Cdlt F6AAM Jean-Claude

Bonsoir JC. 
Est-ce que ce code fonctionne sur la version 8.07 ? Jusqu’à présent je ne fonctionnais qu’avec le triac direct vers le CE mais j’ai augmenté ma prod solaire et j’ai fait des modifs.  J’ai installé le triac en série avec 4 ssr dont un vers le CE et les autres vers des radiateurs. Mon idée c’est de stopper le ssr du CE lorsqu’il est dans une plage de T°. Lorsque le CE a atteint la T° maxi par exemple 59 (sans utiliser le thermostat mécanique qui est à 62°) j’envoie le triac vers un des radiateurs selon une programmation mais sans que le CE soit de nouveau alimenté (effet yoyo). J’ai essayé avec la page actions de programmer une tranche de T° afin que entre 50 et 59° le CE ne soit pas alimenté et que le triac envoie dans les radiateurs selon des créneaux horaires mais la page action ne semble pas faite pour ça ou bien Je n’ai pas réussi à trouver la bonne combinaison, merci d’avance.
Marcos

Bonjour Marcos, je vous réponds ce soir !
Routeur Solaire V12.6 Modifié pour 2 modules JSY-194-MT (affichage puissances onduleurs)
Ballon 1800W commandé par Triac + relais fil pilote mode ECO radiateurs
1 ESP32 déporté pour mesure température extérieure.
1 onduleur SMA 1050Wc - 1 onduleur SOLAX Hybride 6200Wc - 2 Batteries de 5.8 kWh 
 

Répondre


Messages dans ce sujet
RE: condition d'hystérésis sur la température - par F6AAM - 20-11-2024, 02:06 PM

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)