IGBT Story !
#11
Parce que tout est en dur dans ton code, faut vraiment que t'apprennes à faire du code plus flexible. Par ex là si tu veux changer la résolution du PWM ben faut changer la moitié du code à la main au ieu d'avoir juste à changer le tableau et une constante contenant la longueur du tableau.

Pourquoi 13 cases et non pas 12 pour le tableau ? parce que là 13 est divisble par quedal donc pour avoir 120° de déphasage tu vas galérer... et accessoirement ton sinus est pas vraiment un sinus à cause de ça.

Si si, c'est compatible, bon évidement le tableau de 13 arrange pas les choses, en supposant que tu passes à un tableau de 12 c'est très simple, ça:

Code :
int val_ph1 = timing_1[0][compteur] * load_pwm;
int val_ph2 = timing_1[1][compteur] * load_pwm;
int val_ph3 = timing_1[2][compteur] * load_pwm;

devient ça:

Code :
    byte arrayLength = 12;
Code :
int val_ph1 = timing_1[compteur] * load_pwm;
int val_ph2 = timing_1[(compteur + (arrayLength / 3)) % arrayLength] * load_pwm;
int val_ph3 = timing_1[(compteur + (2 * (arrayLength / 3))) % arrayLength] * load_pwm;

Et evidemment le triple tableau devient un tableau simple de 12 cases. Si tu veux opti un poil tu peux précalculer une seule fois (arrayLength / 3) et (2 * (arrayLength / 3)) avant loop() et tu les stockes dans deux constantes genre arrayLengthOneThird et arrayLengthTwoThird. Les modulos doivent être calculés à la volée vu qu'ils empêchent d'overflow donc les sors pas de la boucle.

Dans tous les cas pour être sûr que le déphasage soit de pile 120° il faut que la longueur du tableau soit un multiple de 3.

Accessoirement redéclarer les val_ph à chaque tour de boucle c'est moche et pas opti, tu devrais les déclarer en dehors de loop().

Enfin, tu devrais forcer les Pin...Ph complémentaires à 0 dans le if/else parce que là ils gardent juste la dernière valeur connue au changement de demi-alternance donc c'est moyen.

Concernant le timer vu que tu utilises analogueWrite ça simplifie 2-3 trucs (mais attention aux effets de bords de mélanger ton code avec le PWM de analogueWrite, t'as intérêt à vérifier à l'oscillo que le signal est correct, surtout si tu augmentes la fréquence parce qu'à un moment donné ça va aliaser...).

La valeur du timer est simplement liée à la longueur du tableau et la fréquence voulue et peut être calculée dès le départ avec un truc du genre: unsigned long timerDelay = (1000000 / freq) / (2 * arrayLength); avec byte freq = 50; pour 50Hz par ex. (nb: le timer est en µs).

Par ailleurs je remplacerais if (compteur == 13) par if (compteur >= 13) et vu que t'as censé avoir la constante tu devrais même utiliser if (compteur >= arrayLength). >= évite d'avoir le compteur qui par en cacahuète si jamais il saute le 13 (par ex à cause d'une erreur dans le code suite à une modif, ou même glitch de l'arduino, ça c'est déjà vu sur PC alors un arduino dans un milieu pollué d'IEM j'imagine pas...).
Congratulations !!! You've just created a temporal loophole... Mon site | Mon forum
Répondre


Messages dans ce sujet
IGBT Story ! - par OrOoX - 2020-05-01 19:01:02
RE: IGBT Story ! - par neob - 2020-05-01 19:06:42
RE: IGBT Story ! - par OrOoX - 2020-05-01 19:08:50
RE: IGBT Story ! - par Kissagogo27 - 2020-05-01 19:46:39
RE: IGBT Story ! - par OrOoX - 2020-05-01 20:18:19
RE: IGBT Story ! - par BiduleOhm - 2020-05-01 21:17:22
RE: IGBT Story ! - par OrOoX - 2020-05-01 21:42:51
RE: IGBT Story ! - par OrOoX - 2020-05-03 14:36:14
RE: IGBT Story ! - par BiduleOhm - 2020-05-03 14:53:46
RE: IGBT Story ! - par OrOoX - 2020-05-03 15:11:49
RE: IGBT Story ! - par BiduleOhm - 2020-05-03 17:00:24
RE: IGBT Story ! - par OrOoX - 2020-05-03 18:02:14
RE: IGBT Story ! - par BiduleOhm - 2020-05-03 18:48:37
RE: IGBT Story ! - par OrOoX - 2020-05-03 20:03:27
RE: IGBT Story ! - par Kissagogo27 - 2020-05-03 20:20:34
RE: IGBT Story ! - par BiduleOhm - 2020-05-03 20:30:09
RE: IGBT Story ! - par OrOoX - 2020-05-03 20:43:30
RE: IGBT Story ! - par BiduleOhm - 2020-05-03 20:53:46
RE: IGBT Story ! - par OrOoX - 2020-05-03 21:11:26
RE: IGBT Story ! - par OrOoX - 2020-05-04 11:11:59
RE: IGBT Story ! - par OrOoX - 2020-05-04 13:54:42
RE: IGBT Story ! - par BiduleOhm - 2020-05-04 14:22:32
RE: IGBT Story ! - par OrOoX - 2020-05-04 14:59:21
RE: IGBT Story ! - par BiduleOhm - 2020-05-04 18:34:16
RE: IGBT Story ! - par OrOoX - 2020-05-11 08:23:38
RE: IGBT Story ! - par OrOoX - 2020-05-04 18:56:29
RE: IGBT Story ! - par BiduleOhm - 2020-05-04 20:50:53
RE: IGBT Story ! - par OrOoX - 2020-05-04 20:58:31
RE: IGBT Story ! - par BiduleOhm - 2020-05-04 21:13:45
RE: IGBT Story ! - par Kissagogo27 - 2020-05-04 22:25:35
RE: IGBT Story ! - par BiduleOhm - 2020-05-04 23:08:55
RE: IGBT Story ! - par OrOoX - 2020-05-05 07:48:29
RE: IGBT Story ! - par Kissagogo27 - 2020-05-05 09:06:56
RE: IGBT Story ! - par BiduleOhm - 2020-05-05 14:49:49
RE: IGBT Story ! - par Kissagogo27 - 2020-05-05 18:50:22
RE: IGBT Story ! - par OrOoX - 2020-05-05 19:05:25
RE: IGBT Story ! - par Kissagogo27 - 2020-05-05 20:35:58
RE: IGBT Story ! - par OrOoX - 2020-05-06 16:58:52
RE: IGBT Story ! - par BiduleOhm - 2020-05-06 17:15:58
RE: IGBT Story ! - par OrOoX - 2020-05-06 17:39:21
RE: IGBT Story ! - par BiduleOhm - 2020-05-06 18:16:19
RE: IGBT Story ! - par OrOoX - 2020-05-06 18:46:53
RE: IGBT Story ! - par BiduleOhm - 2020-05-06 18:52:40
RE: IGBT Story ! - par OrOoX - 2020-05-06 20:14:50
RE: IGBT Story ! - par Sk_rmouche - 2020-05-07 07:20:55
RE: IGBT Story ! - par OrOoX - 2020-05-10 13:01:46
RE: IGBT Story ! - par Kissagogo27 - 2020-05-10 13:23:11
RE: IGBT Story ! - par OrOoX - 2020-05-10 13:34:09
RE: IGBT Story ! - par Kissagogo27 - 2020-05-10 14:51:57
RE: IGBT Story ! - par OrOoX - 2020-05-10 15:22:44
RE: IGBT Story ! - par BiduleOhm - 2020-05-10 23:57:55
RE: IGBT Story ! - par Kissagogo27 - 2020-05-11 10:58:35
RE: IGBT Story ! - par OrOoX - 2020-05-11 11:10:32
RE: IGBT Story ! - par BiduleOhm - 2020-05-11 14:09:08
RE: IGBT Story ! - par OrOoX - 2020-05-11 14:30:22
RE: IGBT Story ! - par BiduleOhm - 2020-05-11 17:08:00
RE: IGBT Story ! - par OrOoX - 2020-05-11 17:56:08
RE: IGBT Story ! - par BiduleOhm - 2020-05-11 18:46:16
RE: IGBT Story ! - par OrOoX - 2020-05-11 20:44:16
RE: IGBT Story ! - par Kissagogo27 - 2020-05-11 21:21:35
RE: IGBT Story ! - par BiduleOhm - 2020-05-11 21:38:36
RE: IGBT Story ! - par Kissagogo27 - 2020-05-11 21:48:31
RE: IGBT Story ! - par OrOoX - 2020-05-11 21:48:59
RE: IGBT Story ! - par Kissagogo27 - 2020-05-11 22:10:00
RE: IGBT Story ! - par BiduleOhm - 2020-05-12 00:49:33
RE: IGBT Story ! - par OrOoX - 2020-05-12 07:48:19
RE: IGBT Story ! - par BiduleOhm - 2020-05-12 15:41:30
RE: IGBT Story ! - par OrOoX - 2020-05-12 15:52:46
RE: IGBT Story ! - par BiduleOhm - 2020-05-12 16:22:25
RE: IGBT Story ! - par Kissagogo27 - 2020-05-13 09:43:48
RE: IGBT Story ! - par OrOoX - 2020-05-14 12:20:43
RE: IGBT Story ! - par BiduleOhm - 2020-05-14 15:19:13
RE: IGBT Story ! - par OrOoX - 2020-05-14 15:47:45
RE: IGBT Story ! - par Kissagogo27 - 2020-05-14 21:16:44