01-11-2024, 09:15 PM
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.
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
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;
}
}
}
}
}
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