ecriture en "dur" des tableaux TOTAL ET ON
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
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
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] > 0 && 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 = 0; p < pair_count; p++) {
int start = (p * 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 = 0; j < total; j++) {
bool already_used = false;
for (int p = 0; p < pair_count; p++) {
int start = (p * total) / pair_count;
if (j == start || j == 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(0, 11); // 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