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)
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 :
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
};
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;
Merci André
,
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

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