Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Utilisation du PW de la seconde sonde dans les actions
#21
Le code à modifier dans Temperature.ino. 
A partir de la ligne 41, ajout d'une initialisation a haute valeur négative et ajout de la boucle conditionnelle pour canal 0, il faut changer comme ci-dessous jusqu'à : } else if (Source_Temp[canal] == "tempExt" ...
Code :
  for (int canal = 0; canal < 4; canal++) {
    temperature_brute = -12700; // HP

    if (Source_Temp[canal] == "tempInt") {
      if (canal == 0) { // debut modif HP
        TemperatureValide[canal] = 5;
        temperature[canal] = PuissanceS_T-PuissanceI_T;
      } else {     
        temperature_brute = temperDs18B20[canal];
        if (temperature_brute < -50 || temperature_brute > 150) {  //Invalide. Pas de capteur ou parfois mauvaise réponse
          if (TemperatureValide[canal] > 0) {
            TemperatureValide[canal] = TemperatureValide[canal] - 1;  // Perte éventuels de quelques mesures
          } else {
            StockMessage("Mesure Température invalide ou pas de capteur DS18B20, canal : " + String(canal));  //Trop de pertes
            temperature[canal] = temperature_brute;
            tempInterneOK = false;
          }
        } else {
          TemperatureValide[canal] = 5;
          temperature[canal] = temperature_brute;
        }
      } // fin modif HP

Ensuite, ligne 870 de JS_Acceuil.h, changer la ligne: if (tempValue > -100) {
par: if (tempValue > -10000) {
pour assurer l'affichage

et la ligne 873: T_html += `<div class='item_temp_nom ce'>${nom}</div><div class='item_temp_val ce'>${Temper}°C</div>`;
par: T_html += `<div class='item_temp_nom ce'>${nom}</div><div class='item_temp_val ce'>${Temper} W</div>`;
pour afficher W à la place de oC.

Il faut déclarer une pin pour l'entrée des température  et mettre le nom de la puissance dans le canal de température 0.

Attention ça marche parce qu'il n'y a pas de sonde de température interne en même temps (et donc la variable Nb_DS18B20, reste à 0 et ça ne donne pas d'erreur de lecture). Sinon, si on veut aussi une sonde de température interne il faut modifier le code. Pas plus de 10kW non plus, mais c'est facile de mettre plus.

Edit: je vois aussi qu'il y a une limitation sur les valeurs de temperatures max / min, elles ont un max de 100 pour valider les actions. Il faut donc passer la puissance en 1/10 ou 1/100W pour rester dans cette limite, si nécessaire. Je teste si la puissance est en dessous de 100W et ça marche bien avec une valeur de 100oC. Mais ça ne marche plus si je met 120oC comme consigne. Il est aussi possible d'avoir des erreur en mesurant au dela de 3276W car il y a une conversion en int16_t de la temperature (puissance) *10. Je suis bon, mon CE fait 1600W.
Répondre

#22
Bonsoir H3rv3,
Merci beaucoup pour cette piste. Je vais voir ce que j'arrive à faire, étant donné que j'ai une sonde de température reliée à mon ballon.
Bonne soirée
Routeur RMS (Juin 2025)
1 ESP32
1 Triac (résistance ECS)
1 SSR DA 2 voies (Chargeur batterie / Onduleur)
1 SSR DD (Commande thermodynamique)
PV 2400w + 3 micro-onduleurs 
Batterie 36V 320Ah
Chargeur 1500w commandé par PWM 
Onduleur Soyo Source GTN 1000 limiter

Répondre



Atteindre :


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

Moteur MyBB, © 2002-2026 Melroy van den Berg.