F1ATB forum
probleme mutisinus - Version imprimable

+- F1ATB forum (https://f1atb.fr/forum_f1atb)
+-- Forum : Forum de F1ATB (https://f1atb.fr/forum_f1atb/forum-3.html)
+--- Forum : Routeur Photovoltaïque (https://f1atb.fr/forum_f1atb/forum-4.html)
+--- Sujet : probleme mutisinus (/thread-686.html)

Pages : 1 2


probleme mutisinus - 59jag - 01-11-2024

Bonjour,

Encore bravo pour votre routeur.

Voulant rajouter un sortie DAC a l esp pour piloter un chargeur de batterie LFP avec votre routeur je me suis plongée dans votre code .

je regarde la partie multisinus , ou il y a le calcul pour remplir les 2 tableaux tabPulseSinusTotal[I] et tabPulseSinusOn[I] normalement pour éviter les composantes continues il faut le couple de valeur soit paire ou impaire, mais  pas impaire et pair.
Code :
//Tableau Longueur Pulse et Longueur Trame pour Multi-Sinus de 0 à 100%
  float erreur;
  float vrai;
  float target;
  for (int I = 0; I < 101; I++) {
    tabPulseSinusTotal[I] = -1;
    tabPulseSinusOn[I] = -1;
    target = float(I) / 100.0;
    for (int T = 20; T < 101; T++) {
      for (int N = 0; N <= T; N++) {
        if (T % 2 == 1 || N % 2 == 0) {  // Valeurs impair du total ou pulses pairs pour éviter courant continu
          vrai = float(N) / float(T);
          erreur = abs(vrai - target);
          if (erreur < 0.004) {
            tabPulseSinusTotal[I] = T;
            tabPulseSinusOn[I] = N;
            N = 101;
            T = 101;
          }
        }
      }
    }
  }
faudrai il pas remplacer  if (T % 2 == 1 || N % 2 == 0) {    par   if ((T % 2) ^ (N % 2) == 0){
pour etre sur j ai fait une simulation avec  (T % 2 == 1 || N % 2 == 0) ca donne ceci dans les tableaux

I  T N   N/T TARGET Resultat

0 20 0 0.000 0.00 ok
1 73 1 0.014 0.01 ok
2 43 1 0.023 0.02 ok
3 31 1 0.032 0.03 ok
4 23 1 0.043 0.04 ok
5 21 1 0.048 0.05 ok
6 32 2 0.062 0.06 ok
7 28 2 0.071 0.07 ok
8 24 2 0.083 0.08 ok
9 22 2 0.091 0.09 ok
10 20 2 0.100 0.10 ok
11 27 3 0.111 0.11 ok
12 25 3 0.120 0.12 ok
13 23 3 0.130 0.13 ok
14 21 3 0.143 0.14 ok
15 26 4 0.154 0.15 ok
16 25 4 0.160 0.16 bad
17 23 4 0.174 0.17 bad
18 22 4 0.182 0.18 ok
19 21 4 0.190 0.19 bad
20 20 4 0.200 0.20 ok
21 29 6 0.207 0.21 bad
22 23 5 0.217 0.22 ok
23 26 6 0.231 0.23 ok
24 21 5 0.238 0.24 ok
25 24 6 0.250 0.25 ok
26 23 6 0.261 0.26 bad
27 22 6 0.273 0.27 ok
28 25 7 0.280 0.28 ok
29 31 9 0.290 0.29 ok
30 20 6 0.300 0.30 ok
31 26 8 0.308 0.31 ok
32 25 8 0.320 0.32 bad
33 21 7 0.333 0.33 ok
34 35 12 0.343 0.34 bad
35 23 8 0.348 0.35 bad
36 22 8 0.364 0.36 ok
37 27 10 0.370 0.37 bad
38 21 8 0.381 0.38 bad
39 23 9 0.391 0.39 ok
40 20 8 0.400 0.40 ok
41 27 11 0.407 0.41 ok
42 24 10 0.417 0.42 ok
43 21 9 0.429 0.43 ok
44 25 11 0.440 0.44 ok
45 29 13 0.448 0.45 ok
46 26 12 0.462 0.46 ok
47 30 14 0.467 0.47 ok
48 21 10 0.476 0.48 bad
49 37 18 0.486 0.49 bad
50 20 10 0.500 0.50 ok
51 37 19 0.514 0.51 ok
52 21 11 0.524 0.52 ok
53 30 16 0.533 0.53 ok
54 26 14 0.538 0.54 ok
55 29 16 0.552 0.55 bad
56 25 14 0.560 0.56 bad
57 21 12 0.571 0.57 bad
58 24 14 0.583 0.58 ok
59 27 16 0.593 0.59 bad
60 20 12 0.600 0.60 ok
61 23 14 0.609 0.61 bad
62 21 13 0.619 0.62 ok
63 27 17 0.630 0.63 ok
64 22 14 0.636 0.64 ok
65 23 15 0.652 0.65 ok
66 35 23 0.657 0.66 ok
67 21 14 0.667 0.67 bad
68 25 17 0.680 0.68 ok
69 26 18 0.692 0.69 ok
70 20 14 0.700 0.70 ok
71 31 22 0.710 0.71 bad
72 25 18 0.720 0.72 bad
73 22 16 0.727 0.73 ok
74 23 17 0.739 0.74 ok
75 24 18 0.750 0.75 ok
76 21 16 0.762 0.76 bad
77 26 20 0.769 0.77 ok
78 23 18 0.783 0.78 bad
79 29 23 0.793 0.79 ok
80 20 16 0.800 0.80 ok
81 21 17 0.810 0.81 ok
82 22 18 0.818 0.82 ok
83 23 19 0.826 0.83 ok
84 25 21 0.840 0.84 ok
85 26 22 0.846 0.85 ok
86 21 18 0.857 0.86 bad
87 23 20 0.870 0.87 bad
88 25 22 0.880 0.88 bad
89 27 24 0.889 0.89 bad
90 20 18 0.900 0.90 ok
91 22 20 0.909 0.91 ok
92 24 22 0.917 0.92 ok
93 28 26 0.929 0.93 ok
94 32 30 0.937 0.94 ok
95 21 20 0.952 0.95 bad
96 23 22 0.957 0.96 bad
97 31 30 0.968 0.97 bad
98 43 42 0.977 0.98 bad
99 73 72 0.986 0.99 bad
100 20 20 1.000 1.00 ok

avec if ((T % 2) ^ (N % 2) == 0)

I  T N   N/T TARGET Resultat
0 20 0 0.000 0.00 ok

1 73 1 0.014 0.01 ok
2 43 1 0.023 0.02 ok
3 31 1 0.032 0.03 ok
4 23 1 0.043 0.04 ok
5 21 1 0.048 0.05 ok
6 32 2 0.062 0.06 ok
7 28 2 0.071 0.07 ok
8 24 2 0.083 0.08 ok
9 22 2 0.091 0.09 ok
10 20 2 0.100 0.10 ok
11 27 3 0.111 0.11 ok
12 25 3 0.120 0.12 ok
13 23 3 0.130 0.13 ok
14 21 3 0.143 0.14 ok
15 26 4 0.154 0.15 ok
16 31 5 0.161 0.16 ok
17 24 4 0.167 0.17 ok
18 22 4 0.182 0.18 ok
19 32 6 0.187 0.19 ok
20 20 4 0.200 0.20 ok
21 33 7 0.212 0.21 ok
22 23 5 0.217 0.22 ok
23 26 6 0.231 0.23 ok
24 21 5 0.238 0.24 ok
25 24 6 0.250 0.25 ok
26 27 7 0.259 0.26 ok
27 22 6 0.273 0.27 ok
28 25 7 0.280 0.28 ok
29 31 9 0.290 0.29 ok
30 20 6 0.300 0.30 ok
31 26 8 0.308 0.31 ok
32 41 13 0.317 0.32 ok
33 21 7 0.333 0.33 ok
34 64 22 0.344 0.34 ok
35 34 12 0.353 0.35 ok
36 22 8 0.364 0.36 ok
37 35 13 0.371 0.37 ok
38 29 11 0.379 0.38 ok
39 23 9 0.391 0.39 ok
40 20 8 0.400 0.40 ok
41 27 11 0.407 0.41 ok
42 24 10 0.417 0.42 ok
43 21 9 0.429 0.43 ok
44 25 11 0.440 0.44 ok
45 29 13 0.448 0.45 ok
46 26 12 0.462 0.46 ok
47 30 14 0.467 0.47 ok
48 23 11 0.478 0.48 ok
49 39 19 0.487 0.49 ok
50 20 10 0.500 0.50 ok
51 37 19 0.514 0.51 ok
52 21 11 0.524 0.52 ok
53 30 16 0.533 0.53 ok
54 26 14 0.538 0.54 ok
55 31 17 0.548 0.55 ok
56 32 18 0.562 0.56 ok
57 28 16 0.571 0.57 ok
58 24 14 0.583 0.58 ok
59 29 17 0.586 0.59 ok
60 20 12 0.600 0.60 ok
61 31 19 0.613 0.61 ok
62 21 13 0.619 0.62 ok
63 27 17 0.630 0.63 ok
64 22 14 0.636 0.64 ok
65 23 15 0.652 0.65 ok
66 35 23 0.657 0.66 ok
67 24 16 0.667 0.67 ok
68 25 17 0.680 0.68 ok
69 26 18 0.692 0.69 ok
70 20 14 0.700 0.70 ok
71 41 29 0.707 0.71 ok
72 36 26 0.722 0.72 ok
73 22 16 0.727 0.73 ok
74 23 17 0.739 0.74 ok
75 24 18 0.750 0.75 ok
76 25 19 0.760 0.76 ok
77 26 20 0.769 0.77 ok
78 27 21 0.778 0.78 ok
79 29 23 0.793 0.79 ok
80 20 16 0.800 0.80 ok
81 21 17 0.810 0.81 ok
82 22 18 0.818 0.82 ok
83 23 19 0.826 0.83 ok
84 25 21 0.840 0.84 ok
85 26 22 0.846 0.85 ok
86 28 24 0.857 0.86 ok
87 30 26 0.867 0.87 ok
88 33 29 0.879 0.88 ok
89 36 32 0.889 0.89 ok
90 20 18 0.900 0.90 ok
91 22 20 0.909 0.91 ok
92 24 22 0.917 0.92 ok
93 28 26 0.929 0.93 ok
94 32 30 0.937 0.94 ok
95 38 36 0.947 0.95 ok
96 46 44 0.957 0.96 ok
97 59 57 0.966 0.97 ok
98 84 82 0.976 0.98 ok
99 -1 -1 1.000 0.99 ok
100 20 20 1.000 1.00 ok


seul 99 ne donne pas de resultat.

voila j espere ne pas avoir dit trop de conneries



RE: probleme mutisinus - F1ATB - 02-11-2024

Je ne vois pas quel est votre critère pour dire bad ou ok.
André


RE: probleme mutisinus - 59jag - 02-11-2024

(02-11-2024, 06:58 AM)F1ATB a écrit : Je ne vois pas quel est votre critère pour dire bad ou ok.
André
si j ai bien compris la logique du programme 

par exemple a l' itération 16 de la boucle  qui donne (16 25 4 0.160 0.16 bad  )
on a 4 demi alternances ON sur un total de 25 , si on considère la première alternance est  positive  la 4eme est alors négative et la 25eme positive, et on recommence le cycle  avec une positive .
or on veux éviter les composantes continues donc lorsque tabPulseSinusOn est paire faut un total pair  et de même quand c est impaire faut un tolal impaire.

sinon ca marche très bien comme ca j ai aucun parasites.


RE: probleme mutisinus - gerapi - 02-11-2024

(02-11-2024, 11:49 AM)59jag a écrit :
(02-11-2024, 06:58 AM)F1ATB a écrit : Je ne vois pas quel est votre critère pour dire bad ou ok.
André
si j ai bien compris la logique du programme 

par exemple a l' itération 16 de la boucle  qui donne (16 25 4 0.160 0.16 bad  )
on a 4 demi alternances ON sur un total de 25 , si on considère la première alternance est  positive  la 4eme est alors négative et la 25eme positive, et on recommence le cycle  avec une positive .
or on veux éviter les composantes continues donc lorsque tabPulseSinusOn est paire faut un total pair  et de même quand c est impaire faut un tolal impaire.

sinon ca marche très bien comme ca j ai aucun parasites.

bonjour,
chez moi ce mode fait scintiller la lampe led de mon bureau
j'ai un triac, c'est peut-être différent avec un ssr


RE: probleme mutisinus - Lolo69 - 02-11-2024

Non c est normal en mode multi ou train de sinus que ce soit SSR ou triac. Sur une lampe ca fair scintiller / clignoter. Pour une résistance de chauffe ce n est pas important.

Sur une lampe c est dimmer en decoupe de sinus obligatoire, mais je doute que l objectif final du routeur solaire est d envoyer les watts en surproduction dans une lampe, il n y aurait vraiment aucun intérêt.

Si ta lampe qui scintille n’est pas pilotée par le routeur , c est effectivement le routeur en decoupe de sinus qui génère beaucoup d harmoniques sur le réseau. Avec un SSR tu n’aurais pas ce soucis


Sinon de mes observations j ai 2 routeurs l un avec un SSR et l un avec un dimmer.
Un pour le chauffe eau et quand l eau est chaude l’autre pilote un convecteur d’appoint.
Vu ma faible capacité de production (4 panneaux) je n’ai jamais assez de puissance pour envoyer sur les 2 en meme temps !

Pour des raisons expliquées dans un autre topic je pilote les 2 en multisinus et pour le coup le SSR , qui est zero crossing est plus efficace que le dimmer ( qui est par définition Non Zero Crossing)

Cela n enleve rien au fait qu en decoupe sinus le dimmer est redoutablement efficace en régulation ( mais induit d’importantes vibrations sur les résistances)


RE: probleme mutisinus - gerapi - 02-11-2024

je n'ai pas été assez explicite
le triac pilote un cumulus 2000 W
la lampe led qui scintille n'a rien à voir avec le routeur, c'est la lampe de mon bureau


RE: probleme mutisinus - Lolo69 - 02-11-2024

Oui c est ce que j ai compris en 2 temps d ou la mise à jour de mon post. Le scintillement est due aux harmoniques generees sur le réseau électrique par le découpage de la sinusoide (coupure rapide aux moments ou la tension n est pas à zero volts


RE: probleme mutisinus - H3rv3 - 15-11-2024

(02-11-2024, 11:49 AM)59jag a écrit :
(02-11-2024, 06:58 AM)F1ATB a écrit : Je ne vois pas quel est votre critère pour dire bad ou ok.
André
si j ai bien compris la logique du programme 

par exemple a l' itération 16 de la boucle  qui donne (16 25 4 0.160 0.16 bad  )
on a 4 demi alternances ON sur un total de 25 , si on considère la première alternance est  positive  la 4eme est alors négative et la 25eme positive, et on recommence le cycle  avec une positive .
or on veux éviter les composantes continues donc lorsque tabPulseSinusOn est paire faut un total pair  et de même quand c est impaire faut un tolal impaire.

sinon ca marche très bien comme ca j ai aucun parasites.

Interessant. Mais je pense que le code d'André est bon.

1. La condition de neutralité est bonne pour toutes les combinations où il y a un nombre d'alternances complètes (c'est à dire N est pair).
2. Dans le cas où le total est impair, le cycle suivant recommence sur un alternance differente (dans votre exemple de l'itération 16, le cycle suivant repart sur une demi alternance négative) et donc il faut un nombre de demi alternances impair pour garder la neutralité. Donc, la condition de neutralité est bonne pour tous les T impairs (avec N pair c'est la condition 1 ci-dessus, avec N impair c'est cette explication 2).
3. Le seul cas qui n'est pas bon c'est T pair et N impair. Dans ce cas on démarerait toujours sur la même alternance créant un surplus de demi alternance de ce signe.

La condition de la boucle (T impair OU N pair), comme codé par André est donc bonne. 
La votre évite aussi les combinaisons T pair-N impair et donc elle est bonne aussi (mias elle donne 1 pour 0.99 Smile ).

Cdlt.


RE: probleme mutisinus - 59jag - 16-11-2024

(15-11-2024, 09:52 AM)H3rv3 a écrit : Interessant. Mais je pense que le code d'André est bon.

1. La condition de neutralité est bonne pour toutes les combinations où il y a un nombre d'alternances complètes (c'est à dire N est pair).
2. Dans le cas où le total est impair, le cycle suivant recommence sur un alternance differente (dans votre exemple de l'itération 16, le cycle suivant repart sur une demi alternance négative) et donc il faut un nombre de demi alternances impair pour garder la neutralité. Donc, la condition de neutralité est bonne pour tous les T impairs (avec N pair c'est la condition 1 ci-dessus, avec N impair c'est cette explication 2).
3. Le seul cas qui n'est pas bon c'est T pair et N impair. Dans ce cas on démarerait toujours sur la même alternance créant un surplus de demi alternance de ce signe.

La condition de la boucle (T impair OU N pair), comme codé par André est donc bonne. 
La votre évite aussi les combinaisons T pair-N impair et donc elle est bonne aussi (mias elle donne 1 pour 0.99 Smile ).

Cdlt.
Bonjour.
je parle d'éviter d avoir 2 alternances du même signe a la suite.
par exemple avec T impair et N pair comme l itération 16 ou T pair et N impair .
en gros pour ne pas avoir  2 alternances du même signe a la suite  il faut T+N pair.
ex avec T=5 et N=2


   


RE: probleme mutisinus - H3rv3 - 16-11-2024

Bonjour,

Citation :je parle d'éviter d avoir 2 alternances du même signe a la suite.
OK, mais ce n'est pas la même chose que de ne pas avoir de composante continue. 
Une alternance complète n'a pas de composante continue. On a seulement besoin de s'assurer qu'on ne démarre pas sur la même alternance si le nombre de demi alternances actives est impair.
Citation :pour ne pas avoir  2 alternances du même signe a la suite  il faut T+N pair.
Visiblement pas une condition sufisante et nécessaire. Dans le cas de l'exemple T=5 et N=2, on démarre bien sur une alternance diferente mais 5+2=7 est impair.

Je ne vois toujours pas pourquoi André devrait changer le code.

Cdlt.