Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Multisinus le paradoxe
#31
Bonjour. Je vous apporte mon témoignage après avoir testé la version de lolo69. Je rappelle que les optimisations qu'il a apporté ont pour but d'améliorer la régulation.

Je dois dire que j'ai été agréablement surpris par l'amélioration de la régulation, les courbes sont quasiment lisses, le linky reste à 0 je n'ai donc quasiment rien consommé et surtout c'est bien plus efficace, on se rapproche vraiment du mode découpe sinus sans les inconvénients du bruit de la résistance du cumulus car il est devenu quasiment silencieux, mes lampes à leds ne scintillent plus et la barre de progression du Triac en % est stable et ne varie donc plus autant qu'elle pouvait le faire avant malgré une réactivité de 10.

Un grand bravo et merci à lolo69 pour ces optimisations !
 
Voici donc les courbes sur la journée d'hier, les 4 premières sont pour un réglage Seuil PW -50, réactivité 8.

Et les 4 suivantes avec un réglage Seuil PW -22, réactivité 10.


Pièces jointes Miniature(s)
                       
       
Routeur v15.09, mesures Shelly EM + sonde de température DS18B20
Triac Robodyn 24A/600V avec radiateur externe
Réglages réactivité 5, seuil de déclenchement -50, multi sinus
3 panneaux photovoltaïques Sunology Play 405W
Cumulus 200L 2200W méca 62°
Répondre

#32
ecriture en "dur" des tableaux TOTAL ET ON
Code :
// LBE ancien tableau int8_t tabPulseSinusOn[101];
//LBE ancien tableau int8_t tabPulseSinusTotal[101];
const uint8_t tabPulseSinusTotal[101] = {
3,99,51,33,25,21,33,28,25,11,20,9,25,23,7,27,25,12,11,32,5,19,9,13,25,8,31,11,43,31,20,13,25,15,53,40,25,27,21,31,10,29,24,35,25,40,26,17,50,51,4,51,25,17,52,40,25,60,24,61,10,31,21,27,25,40,53,33,25,29,20,31,25,33,54,8,25,61,27,33,5,21,17,24,25,27,28,30,25,18,20,33,25,57,51,40,25,33,51,99,6
};
const uint8_t tabPulseSinusOn[101] = {
0,1,1,1,1,1,2,2,2,1,2,1,3,3,1,4,4,2,2,6,1,4,2,3,6,2,8,3,12,9,6,4,8,5,18,14,9,10,8,12,4,12,10,15,11,18,12,8,24,25,2,26,13,9,28,22,14,34,14,36,6,19,13,17,16,26,35,22,17,20,14,22,18,24,40,6,19,47,21,26,4,17,14,20,21,23,24,26,22,16,18,30,23,53,48,38,24,32,50,98,6
};

Repartirion régulière des ON sur toutes la sequence avec priorité de 2 On consecutifs si un ON tout seul on le place des qu'on peut dans la trame
Tempoaleatoire  non bloquante dans la trame de quelques microsecondes pour eviter les sequences trop repetitives et donc réduire les harmoniques, cela peut faire perdre des ON mais ca peut en faire gagner aussi puisque on a pas de synchro d execution avec le 50hz qui peut de toute façon fluctuer legerement aussi
Code PHP :
        // lbe debut REPARTITION DES ON

if (Gpio[i] > && PulseTotal[i] > 0) {
  int on_count PulseOn[i];
  int total PulseTotal[i];
  int pos PulseComptage[i];

  int pair_count on_count 2;
  int reste on_count 2;
  bool is_on false;

  // Répartition des paires ON (2 cycles consécutifs)
  for (int p 0pair_countp++) {
    int start = (total) / pair_count;
    if (pos == start || pos == start 1) {
      is_on true;
      break;
    }
  }

  // Placement du dernier ON si impair, dans une position libre
  if (!is_on && reste == 1) {
    for (int j 0totalj++) {
      bool already_used false;
      for (int p 0pair_countp++) {
        int start = (total) / pair_count;
        if (== start || == start 1) {
          already_used true;
          break;
        }
      }
      if (!already_used) {
        if (pos == j) {
          is_on true;
        }
        break;
      }
    }
  }

  digitalWrite(Gpio[i], is_on OutOn[i] : OutOff[i]);

  PulseComptage[i]++;
  if (PulseComptage[i] >= total) {
    PulseComptage[i] = 0;
   // Délai aléatoire non bloquant entre 0 et 10 µs pour decaler temporellement la sequence suivante pour reduire les harmoniques du secteur
   uint32_t delayStart micros();
   uint32_t randomDelay random(011); // 0 à 10 inclus
   while (micros() - delayStart randomDelay) {
     // boucle active non bloquante
   }


  }
}




//finde la repartition    


Résultat en courbe de puissance et conso Enedis dès que le soleil reviendra, les essais d'aujourd'hui semblent très prometteurs....

Seuil -10 réactivité 21
   
Répondre

#33
Lolo 69, je vais implanter votre tableau dans la version15.11.
Le message d'hier est il la bonne version?
Par hasard auriez-vous ces tables à l'horizontal séparé par une virgule. Sinon, je me débrouillerai.

André
Répondre

#34
@André
Voir mon post précédent dans ce fil
Les 2 tableaux sont déjà rentrés à la mode C++

Les combinaisons marchent très bien.
Pour la répartition sur la séquence ,mon idée de faire des groupes de 2 ON consécutifs semble moins bien fonctionner que la répartition régulière, je vous tiendrais au courant si le soleil veut revenir…
Répondre

#35
@Lolo69 pour info je suis en train de tester tes réglages avec la version que tu m'as envoyé à savoir Seuil PW à -10 et réactivité à 20 et ça fonctionne impec. C'est dingue du coup la différence de réactivité !

@André, si j'ai bien compris vous allez proposer ce nouveau mode de régulation dans la prochaine version 15.11 ?
Routeur v15.09, mesures Shelly EM + sonde de température DS18B20
Triac Robodyn 24A/600V avec radiateur externe
Réglages réactivité 5, seuil de déclenchement -50, multi sinus
3 panneaux photovoltaïques Sunology Play 405W
Cumulus 200L 2200W méca 62°
Répondre

#36
@clyon44, oui je vais mettre la séquence de Lolo69 en V15.11
Répondre

#37
(16-10-2025, 01:26 PM)clyon44 a écrit : @Lolo69 pour info je suis en train de tester tes réglages avec la version que tu m'as envoyé à savoir Seuil PW à -10 et réactivité à 20 et ça fonctionne impec. C'est dingue du coup la différence de réactivité !

@André, si j'ai bien compris vous allez proposer ce nouveau mode de régulation dans la prochaine version 15.11 ?

tu nous referas un retour avec des courbes de puissance et des comptages, de mon coté je fais pas mal de tests d'un jour à l'autre donc difficile de vous envoyer des courbes, pour l instant ce que je peux dire c est que la version 2ON successif est moins performante que les ON solitaires uniformément répartis.
Répondre

#38
Bonjour,

  pas mal la répartition, 

  Je propose ma table de répartition (un peu plus de précision dans les ratios), => ça a peu d'importance quand on ajoute des temps aléatoires dans les séquences ;-) 
  pour 0% = 0/2    pour 100% 2/2
  pour 1% = 1/61  pour  99%  60/61 
  toutes les combinaisons respectent bien (total impair) ou (qt de ON pair)

Code :
uint8_t tabPulseSinusTotal[101]= { 2, 
  61,43,33,25,40,33,57,37,11,20,  55,25,23,57,40,25,53,61,21, 5, 
  19,59,61,25, 8,23,37,25,31,20,  29,47,61,59,40,25,27,29,59, 5, 
  61,19,51,59,40,37,17,25,51, 4,  51,25,17,37,40,59,51,19,61, 5, 
  59,29,27,25,40,59,61,47,29,20,  31,25,37,23, 8,25,61,59,19, 5, 
  21,61,53,25,40,57,23,25,55,20,  11,37,57,33,40,25,33,43,61, 2
};
 
uint8_t tabPulseSinusOn[101]  =  { 0, 
   1, 1, 1, 1, 2, 2, 4, 3, 1, 2,   6, 3, 3, 8, 6, 4, 9,11, 4, 1, 
   4,13,14, 6, 2, 6,10, 7, 9, 6,   9,15,20,20,14, 9,10,11,23, 2, 
  25, 8,22,26,18,17, 8,12,25, 2,  26,13, 9,20,22,33,29,11,36, 3, 
  36,18,17,16,26,39,41,32,20,14,  22,18,27,17, 6,19,47,46,15, 4, 
  17,50,44,21,34,49,20,22,49,18,  10,34,53,31,38,24,32,42,60, 2
};
 j'ai limité les séquences à 610ms comme ta table, ça a peu d'importance vu que les périodes passantes/bloquées sont relativement bien répartie, on peut les couper a peu près l'importe quand, l'impact restera limité
sur l'image attachée d'une séquence de 2 secondes (200 demi alternances) sans changement du % d'ouverture (temps a l'horizontale)
en haut c'est ouverture a 0% (que du jaune : toutes les demi alternances sont bloquées)
en bas c'est 100%, toutes les alternances passe (en rouge les positives / en bleu les négatives)



  + une proposition pour corriger un tout petit bug :
quand on change de % d'ouverture, si PulseTotal du nouveau % est inférieur à PulseComptage du précédent %, on a une valeur qui n'est pas attendue ...

juste ajouter une ligne pour 'contrôler' la situation :

Code :
  int pos = PulseComptage[i];
  if (pos >= total) {pos = 0;  PulseComptage[i] =0;} // redémarre a début du cycle si le comptage dépasse le max de la séquence
    
  int pair_count = on_count / 2;


Pièces jointes Miniature(s)
   
Merci André Smile ,
Routeur V15.09b (since V2.01) / 1xESP32 (IP fixe) / Source UxI / 5 actions
Panneaux 1680Wc
1 Triac : ECS 2000W
1 SSR (multi) : ECS 1800W
1 SSR (On-Off) : Circulateur plancher chauffant eau 50W
1 SSR (multi) : circuit d'eau 1500W
1 SSR (multi) : Ultime 2000W
Répondre

#39
Bravo à tous, je suis littéralement impressionné par le travail de la communauté! j'aurais bien aimé pouvoir y participer. En tout cas j'ai hâte de tester la version 15.11 avec le mode demi-sinus ^^
Répondre

#40
Belle contribution en effet.
Répondre



Atteindre :


Utilisateur(s) parcourant ce sujet :
PhDV61, 4 visiteur(s)

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