Messages : 3,423
Sujets : 19
Inscription : 2019-10-29
Oui je suis d'accord mais si ça "temporise" le démarrage c'est plus 50A que l'IGBT va se prendre pendant 1 seconde mais peut être 40
voir moins et mine de rien ça change le résultat.
J'ai continué l'autopsie du schneider cette aprème, bah y'a du taff pour espérer le remettre en route, y'a de la casse autour du mosfet
qui a pété, résistances HS, driver mosfet HS, transistor HS, c'est remonté mine de rien ... Mais pas impossible
T'as un problème, t'veux un ban ?
Messages : 2,731
Sujets : 4
Inscription : 2019-10-29
Ben vu qu'en général le failure mode c'est le court-circuit y'a beaucoup d'autres trucs qui partent avec au passage... sauf si le design est prévu pour avec des fusibles, TVS, etc...
Messages : 3,423
Sujets : 19
Inscription : 2019-10-29
2020-05-06 20:14:50
(Modification du message : 2020-05-06 20:15:13 par OrOoX.)
J'espère juste que ça c'est arrêté au driver sinon c'est moche si le cpu à bouffé ... Après c'est poubelle x)
( une patte a carrément fondu sur le driver )
T'as un problème, t'veux un ban ?
Messages : 2,011
Sujets : 11
Inscription : 2019-10-30
Oui j'ai déjà vu ces modules mais ils ne sont pas strictement nécessaires. Si tu démarres le compresseur en partant de 0 de toute façon il y aura une pointe de courant à fréquence réduite, c'est normal ce sont les caractéristiques des enroulements et c'est pris en compte dans tout les " bons " variateurs.
Messages : 3,423
Sujets : 19
Inscription : 2019-10-29
Bon bon bon ... L'arduino m'embête et j'arrive pas à trouver pourquoi ... J'ai fais un tableau avec les temps pré-enregistré pour une
fréquence fixe, dans le doute j'ai même rajouté les valeurs LOW et HIGH et ça me fait de la merde sur les signaux ...
Avec un code simple et des delaymicroseconds() j'ai bien des signaux carrés mais là ...
20200510_135325.jpg (Taille : 481.43 Ko / Téléchargements : 2)
Avec en code : ( c'est le complet donc des trucs désactivés temporairement )
Surement un truc con mais je vois pas là ...
T'as un problème, t'veux un ban ?
Messages : 2,067
Sujets : 0
Inscription : 2019-10-30
un PWM c'est le rapport entre état haut et état bas là on dirait que le rapport cyclique est fixé en fréquence variable ...
surement du au temps de descente H>L de ton étage .. hyper long ..
Messages : 3,423
Sujets : 19
Inscription : 2019-10-29
Bah c'est fixé par le tableau oui, 1ère valeur = OFF, 2ème = ON, etc ... Pour un temps précis, donc à chaque période il allume ou éteint
la sortie pendant le temps indiqué, du coup ça devrait pas faire ça ... La monté est bonne mais pas la descente :/
Compliqué de faire autrement que en faisant du maintien nan ?
T'as un problème, t'veux un ban ?
Messages : 2,067
Sujets : 0
Inscription : 2019-10-30
tu devrais observer a F plus faible des front bien raides ... câblage volant, transistors mal polarisés voir en saturation ..
Messages : 3,423
Sujets : 19
Inscription : 2019-10-29
2020-05-10 15:22:44
(Modification du message : 2020-05-10 17:01:37 par OrOoX.)
C'est en effet le cas mais avant j'étais en fils volants aussi et ça fonctionnait sans problème, je pouvais monter à 12Khz et avoir des signaux
carrés mais là 200Hz le truc est déjà en panique.
Genre là : TCCR0B = TCCR0B & 0b11111000 | 0x01; //Timer 0 (PWM pins 5 & 6) + coef_frequence = 50
Bah le résultat est dégoulasse et pourtant je suis que à 747hz ...
20200510_162848.jpg (Taille : 468.64 Ko / Téléchargements : 3)
Edit : Hum, surement une piste ... https://forum.arduino.cc/index.php?topic=76213.0 ( Post #3 )
Ca expliquerait pourquoi le PWM fonctionne à haute fréquence mais pas la méthode manuelle.
Edit 2 : Effectivement ça marche beaucoup mieux avec PORTD ^= _BV(PIND3);
Edit 3 : Et hop avec un ptit :
Code : if (switch_pola_ph1 == 0)
{
PORTD = (etat_ph1 << PD3);
etat_ph1 = !etat_ph1;
}
else {
etat_ph1 = !etat_ph1;
PORTD = (etat_ph1 << PD4);
}
20200510_175850.jpg (Taille : 503.65 Ko / Téléchargements : 3)
Du coup merci Kissa pour les pistes
T'as un problème, t'veux un ban ?
Messages : 2,731
Sujets : 4
Inscription : 2019-10-29
Spa comme si j'avais recommandé de manipuler directement le port une page plus haut...
NB: ton if/else est bizarre, intuitivement je dirais qu'un truc cloche et qu'il peut être grandement optimisé mais c'est juste une intuition, je peux me tromper.
Messages : 3,423
Sujets : 19
Inscription : 2019-10-29
(2020-05-04 18:34:16)BiduleOhm a écrit : Perso je manipulerais directement le port vu que c'est plus rapide mais des digitalWrite() marchent aussi, oui.
Oui oui, mais ou pas dans ce cas précis ... Toutes les méthodes étaient utilisées dans les différents exemples donc moi
je préfère tester par moi même pour voir le résultat final et éliminer le reste pour pas y revenir
( et accessoirement essayer le plus simple avant de jouer avec ce genre de code )
Tu parle de quel if/else ? celui des ports ou des timers ? Celui des timers est pas fini et encore bugué.
T'as un problème, t'veux un ban ?
Messages : 2,067
Sujets : 0
Inscription : 2019-10-30
2020-05-11 10:58:35
(Modification du message : 2020-05-11 11:00:43 par Kissagogo27.)
Boole kwa tjrs Boole met un et en utilisant les "complémentaires" A A etc etc
PortD( switch_pola_ph1 << (PD3.etat_ph1 + PD4. etat_ph1) ) ça doit donner un truc équivalent sans if then ..
mais comme je pige keud a ce langage là c hot de t'expliquer
Messages : 3,423
Sujets : 19
Inscription : 2019-10-29
2020-05-11 11:10:32
(Modification du message : 2020-05-11 11:11:02 par OrOoX.)
Ca peut pas marcher ton truc Kissa, le switch_pola c'est quand on passe de l'alternance positive à négative donc avec ce code
ça ne ferait pas le tour du tableau ( la valeur change quand le compteur arrive à 23 )
T'as un problème, t'veux un ban ?
Messages : 2,731
Sujets : 4
Inscription : 2019-10-29
(2020-05-11 08:23:38)OrOoX a écrit : Tu parle de quel if/else ? celui des ports ou des timers ? Celui des timers est pas fini et encore bugué.
Le dernier que t'as posté.
Si switch pola était un mask et que tu manipules le port direct avec du binaire il doit y avoir moyen d'opti la logique à mort...
Messages : 3,423
Sujets : 19
Inscription : 2019-10-29
Justement je comprend pas ce que tu veux optimiser, l'alternance ON/OFF du port est gérer par :
Code : PORTD = (etat_ph1 << PD3);
etat_ph1 = !etat_ph1;
Le code suivant fonctionne aussi et permet de supprimer la ligne etat_ph1 mais soit le port resté allumé ou éteint
en fonction de l'alternance de switch_pola, d'où le rajout de la ligne pour contrer le problème.
Le problème vient du fait que le port est normalement à l'état LOW, du coup quand j'arrive dessus il le passe à HIGH
et me bouffe donc la première période, faudrait que je colle un if juste pour ça ...
Elle fait également office de sécurité entre le positif et négatif vu qu'ils utilisent tous les deux la même variable.
Code : PORTD ^= _BV(PIND3);
J'ai l'impression que vous vous dites que switch_pola sert à passer la sortie de l'état BAS à HAUT et vis versa mais nan, il sert
à passer du Pin 3 à 4 en gardant le même code et les mêmes timing.
T'as un problème, t'veux un ban ?
Messages : 2,731
Sujets : 4
Inscription : 2019-10-29
Non non, je sais bien que switch_pola sert à changer de pin, c'est pour ça que je parlais d'un mask.
Et en passant tu devrais avoir une sécu hardware qui empêche d'avoir les 2 ON en même temps, parce qu'une sécu software c'est bien mais ça peut planter et dans ce cas les sorties sont à un étant indéfini.
Messages : 3,423
Sujets : 19
Inscription : 2019-10-29
Jouer avec des masques et autres ça dépasse mes connaissances après, c'est le dark side de l'arduino haha
Comment tu veux faire une sécu hardware la dessus ? A part couper l'alim en cas de problème je vois pas car si effectivement
il y a un problème avec l'arduino, ça veut dire que tu peux pas du tout te baser sur elle pour la sécu.
T'as un problème, t'veux un ban ?
Messages : 2,731
Sujets : 4
Inscription : 2019-10-29
T'as juste à utiliser quelques portes logiques, j'ai pas cherché mais c'est pas bien compliqué.
Maintenant que j'y pense tu devrais avoir une sortie qui sort les demi alternances et une autre qui sort la polarité, ça simplifie le code et la logique hardware de sécurité est inhérente au design (la sortie de polarité ne peut pas être high et low en même temps) et est très simple (un inverseur et 2 portes AND par phase).
Messages : 3,423
Sujets : 19
Inscription : 2019-10-29
Ca protègera effectivement d'une activation des deux pins en même temps mais c'est ça n'empêche en rien au programme de planter
et de laisser le pin à ON et d'engendrer les dégats qui vont avec derrière ... Les fabricants ne mettent pas ce type de sécurité sur leurs
cartes c'est qu'il doit y avoir une raison.
A mon sens si tu veux vraiment jouer la sécurité, faut coller 2 arduino en parallèle, une qui injecte et régule et une autre qui lit les signaux
comme un encodeur et si le programme voit une dérive il coupe l'alimentation DC mais même comme ça il peut y avoir des dégâts avec les condos.
T'as un problème, t'veux un ban ?
Messages : 2,067
Sujets : 0
Inscription : 2019-10-30
ou un watchdog
|