Partage
  • Partager sur Facebook
  • Partager sur Twitter

arduino Pont en H MOSFET

    16 juin 2015 à 16:03:57

    Salut à tous;

    afin de  mouvoir le moteur à courant continu dans le deux sens. j'utilise un Pont en H basé sur des MOSFET 12V, 10A.

    les composants de  Pont H est tel que: les deux mosfet de haut sont de type P-Channel, les deux autres sont de type N-Channel. la commande se fait par une carte arduino uno alimentée en 5V

    j'ai choisi les composants suivants:

    P-Channel :le mosfet  IRL5602S

    N-channel: le mosfet IRL3303

    N-channel: le mosfet BS170  petit mosfet utilisé comme gate driver mosfet

    Resistance de 10 Kohm

    un Capcitor polarisé de 100 nF pour le découplage

    lorsque je simule le montage  sous ISIS, j'obtient les résultats suivants ( voir fig). je pense qu'il y a  des erreurs  et je sais pas comment les résoudre. je veux que la tension aux bornes de moteur soit prés de 12 V.

    j'ai un peu de soucis concernant le choix de composant s'ils sont bien choisis ou non ?

    Aussi quand je veux calculer la résistance Rg en se basant sur la formule

    Vgs(t) = (1 - exp(-t/Taux)).Vcc avec Vcc = 5V tension de commande de la grille; Taux=Rg.Ciss (Ciss déterminé d'après le datasheet)

    après un calcul on obtient Rg= -t/ ( Ciss x Ln(1-Vgs(t)/Vcc)) . le problème est que je sais pas déterminer le temps t et le Vgs(t) je les trouves dans le datasheet? et je savoir est ce que la fréquence de découpage fd est celle la fréquence de PWM ou non.

      je suis débutant en électronique et j'ai besoin de vos aides.

    Si quelqu'un peut m'aider je serai vraiment reconnaissant et merci d'avance.

    voilà le résultats obtenus après une simulation sur ISIS

    Cordialement;


    • Partager sur Facebook
    • Partager sur Twitter
      16 juin 2015 à 19:11:26

      Il n'est pas très correct ton pont en H ;)

      Tu as des MOSFET à l'envers (Q1 et Q4), des résistances pas au bon endroit, des résistances qui manquent, des signaux dans le vide (ENA), des signaux en court circuit (ENB)...

      Normalement, tu devrais avoir ceci :

      A noter que le signa IS et ses 4 résistances ne sont utile que pour faire une mesure du courant.

      Tu peux très bien supprimer ces résistances et connecter directement IS sur GND.


      Pour la commande, c'est assez simple :

      - A = B = HIGH ou LOW => freinage

      - A = LOW, B = HIGH => le moteur tourne dans un sens

      - A = HIGH , B = LOW => le moteur tourne dans l'autre sens

      Après, suivant les PWM que tu appliques, tu peux tourner plus ou moins vite.

      -
      Edité par lorrio 16 juin 2015 à 19:17:27

      • Partager sur Facebook
      • Partager sur Twitter
        16 juin 2015 à 19:24:15

        Salut;

        merci pour  votre réponse Lorrio; j’apprécie vraiment ça mais je veux savoir les fautes et quelle est la différence entre les deux montages

        j'ai mal compris votre montage en fait , c'est clair que les PIN M1 et M2 pour les bornes de moteur, ceux CDE_A et CDE_B pour la connexions avec arduino mais I_S ça sert à quoi (pour le signal PWM non ?? ) ainsi les résistances R1, R2, R3 et R4 à quoi servent ?

        merci encore une fois pour votre intervention et j'éspère vous m'expliquez un peu le fonctionnement et comment choisir les résistance Rg et merci d'avance ;)

        cordialement

        -
        Edité par danystar 16 juin 2015 à 19:25:27

        • Partager sur Facebook
        • Partager sur Twitter
          16 juin 2015 à 19:42:07

          Salut;

          merci Lorrio j'ai pas vu votre explication :euh:, c'est plus claire maintenant "bravo", juste une question est ce que je peux mettre deux pins juste à côté de R8 et R9 pour le signal PWM et à quoi servent les résistances R13 et R14 et leurs valeurs comment les choisir ?

          revenons à mon montage comment je peux régler Q1 et Q4  et est ce le transitor sont bien choisis ( moteur 12 V 10 A) mecri enormement pour votre aide.

          • Partager sur Facebook
          • Partager sur Twitter
            16 juin 2015 à 20:32:08

            Alors, comme je l'ai ajouté peu de temps après : R1 à R4 serve à faire une mesure de courant optionnelle.

            Si tu ne veux pas mesurer le courant, tu peux tout simplement les remplacer par un fil.


            A quoi sert R13 et R14 ? Bonne question... à pas grand chose (voir même à rien)... tu peux les supprimer.

            Faut dire que j'ai pris la première image qui ressemble globalement à un pont en H sans savoir si celui-ci était vraiment parfait.


            Tu peux aussi remplacer les transistors 2N2222 par tes BS170 et ainsi supprimer les résistances R5 et R6 qui ne sont pas très utile sur la Gate de petits MOS tel que les BS170.


            Un MOSFET a un Rsdon qui qui définie comment il va chauffer.

            La chauffe du MOSFET est : P = Rsdon * I²

            Avec un Vgs de 4.5V, le IRL3303 a un Rdson de 0.04 ohm maxi donc il va chauffer de P = 0.04 * 10² = 4 Watt.

            La coefficient thermique RoJA est de 62°C/W donc ton transistor va s'élever de 62*4= 248°C.

            Clairement, il va cramer en une fraction de seconde...

            Il te faut impérativement le monter sur un gros dissipateur thermique ou envisager un MOSFET avec un Rsdon bien plus faible.


            Avec un tel ampérage, il est préférable d'utiliser de gros MOS (genre des TO-247).

            Sauf que les gros transistors ont une capacité de Gate bien plus importante donc utiliser l'arduino pour les piloter est une mauvaise idée (capa de gate élecé + arduino = temps de commutation lent = beaucoup plus de chauffe).

            Il est donc préférable d'utiliser des drivers de MOS entre les MOS et l'arduino.

            Tu pourrais par exemple utiliser un IR2183

            -
            Edité par lorrio 16 juin 2015 à 20:33:51

            • Partager sur Facebook
            • Partager sur Twitter
              16 juin 2015 à 21:47:05

              Salut;

              Merci pour ta réponse encore une fois, en fait la bibliothèque arduino ne dispose pas d'un tel driver (IR2183) il y a IR2112 qui peut être utilisé mais je sais vraiment l'utiliser, et encore s'il est full driver ou non? ( c'est pour cela j'ai utiliser le MOS BS170 pour cette raison " minimiser le temps de commutation"). juste une demande concernant le brochage de IR2112 avec les N-mosfet et s'ily a un montage ou figure explicatif ça sera beaucoup plus mieux et merci beaucoup?

              • Partager sur Facebook
              • Partager sur Twitter
                16 juin 2015 à 23:25:20

                Ce que soit un IR2183, un IR2112 ou autre, ça reste des driver de demi pont en H.

                Ils permettent de driver 2 MOSFET canal N pour former un demi pont en H.

                Si tu veux former un pont en H complet, il t'en faut donc 2.

                Regarde la doc de l'IR2112, tu as un schéma typique en première page.

                Il te suffit de reproduire ce schéma et connecter les 2 fils TO_LOAD d'un coté du moteur.

                Et faire un copié/collé pour l'autre coté du moteur.


                Concernant les connexions sur la gauche du schéma, c'est assez simple :

                VDD : sur la pin 5V de l'arrduino

                HIN: sur une pin PWM (cette pin servira au contrôle du MOS du haut)

                SD: sur la pin GND de l'arduino (ou sur un pin I/O de si tu veux pouvoir contrôler le Shutdown mais ce n'est pas obligatoire)

                LIN: sur une pin PWM (cette pin servira au contrôle du MOS du bas)

                VSS: sur la pin GND de l'arduino et sur la borne - de ton alim 12V

                VCC: sur la borne + de ton alim 12V

                • Partager sur Facebook
                • Partager sur Twitter
                  17 juin 2015 à 0:03:30

                  d'accord je vais essayer ça et merci pour votre intervention c'est vraiment intéressant "bravo", j'espère bien que vous allez m'aider non ;).  merci beaucoup en tous cas.

                  cordialement;

                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 juin 2015 à 1:05:44

                    Bonsoir;

                    voici le montage avec IR2112, je vois pas les pin de VDD et VSS ? sur le composant, pouvez vous vérifier avec moi si je fais des erreurs ?  et concernant le programme comment je peux l'écrire ? merci pour votre intervention.

                    -
                    Edité par danystar 17 juin 2015 à 1:34:41

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 juin 2015 à 8:13:07

                      C'est ISIS qui fait ça en n'affichant pas les pin VSS et VDD...

                      On peut supposer qu'il les connecte directement sur GND et +5V (ou du moins, on l'espère).

                      Mais ton montage n'est pas bon, ce n'est pas comme ça que je t'ai présenté la chose :

                      lorrio a écrit:

                      Il te suffit de reproduire ce schéma et connecter les 2 fils TO_LOAD d'un coté du moteur.

                      Dans ton cas, les 2 fils TO_LOAD d'un driver vont de part et d'autre du moteur alors que je t'ai dis de les relier ensemble d'un même coté.

                      Tu as aussi un problème sur C2 et C4 :  dans le schéma d'appli, on voit qu'elles sont connecté à la pin VS mais aussi au fil TO_LOAD.

                      Les valeurs de R1 à R4 sont aussi incorrect (tu perds toute l'utilité du driver en utilisant des 10k), prends plutôt des 10 ohm.

                      Il te faut aussi connecter les pins SD à un I/O de l'arduino (c'est préférable puisque tu as relier le HIN du premier driver au LIN du second et vise versa).


                      Pour le programme, il faut que PWM1 et PWM2 soient en opposition de phase (quand l'un est HIGH, l'autre doit être LOW et vise versa).

                      Ensuite, il te faut tout simplement appliquer un PWM sur ces 2 signaux.

                      - avec un PWM de 5% (mieux vaut éviter d'atteindre 0%, le IR2112 n'aimera pas), le moteur sera presque à fond dans un sens

                      - avec un PWM de 50%, le moteur sera à l'arrêt mais ton sistème consommera quand même un peu de courrant donc mieux vaut le désacter grâce à la pin SD.

                      - avec un PWM de 95% (mieux vaut éviter d'atteindre 100%, le IR2112 n'aimera pas), le moteur sera presque à fond dans l'autre sens

                      Pour le reste, c'est proportionnel.

                      -
                      Edité par lorrio 17 juin 2015 à 8:15:29

                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 juin 2015 à 11:24:53

                        Bonjour;

                        merci pour ta réponse Lorrio, je viens avec le montage corrigé (vérifie SVP s'il y des erreurs)

                        je fais aussi un petit programme sur Arduino mais il ne marche pas (il y a quelque chose qui cloche en fait et je le trouve pas)

                        je sais pas pourquoi Q1 et Q2 ne marche pas (pas des petits carreaux rouges ou bleus) ?

                        voici le code sous Arduino uno 

                        int PWM1 = 5;
                        int PWM2 = 6;
                        int IN1 = 3;
                        int IN2 = 4;

                        void setup () {
                          pinMode(PWM1, OUTPUT);
                          pinMode(PWM2, OUTPUT);
                          pinMode(IN1, OUTPUT);
                          pinMode(IN2, OUTPUT);
                        }

                        void loop() {
                          digitalWrite(PWM1, HIGH);
                          digitalWrite(PWM2, LOW);
                          analogWrite(IN1,200);
                          for(int i=5; i<125; i++)
                          {
                            analogWrite(IN1, i);
                           
                          }
                          delay(500);
                         
                          digitalWrite(PWM1, LOW);
                          digitalWrite(PWM2, HIGH);
                          analogWrite(IN2,200);
                          for(int i=126; i<255; i++)
                          {
                            analogWrite(IN2, i);
                           
                          }
                          delay(500);
                         
                          digitalWrite(PWM1, LOW);
                          digitalWrite(PWM2, LOW);
                        }
                         

                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 juin 2015 à 11:34:22

                          En même temps, il n'y a pas de carré sur ton 12V donc on peut supposer que c'est normal qu'il n'y en ai pas sur Q1 et Q2.

                          As tu bien une alim 12V dans ton schéma ???

                          ==========

                          En tout cas, je t'ai bien précisé qu'il faut impérativement un PWM entre 5% et 95% sur PWM1 et PWM2 :

                          lorrio a écrit:

                          - avec un PWM de 5% (mieux vaut éviter d'atteindre 0%, le IR2112 n'aimera pas), le moteur sera presque à fond dans un sens

                          - avec un PWM de 95% (mieux vaut éviter d'atteindre 100%, le IR2112 n'aimera pas), le moteur sera presque à fond dans l'autre sens

                          Pour fermer le MOSFET du haut (Q1, Q2), le driver IR2112 se sert de la capacité de boost (C2, C4) qui ne se recharge que lorsque les MOSFET du bas est fermé (Q3, Q4).

                          Il est donc impossible de fermer Q1 ou Q2 sans que Q3 et Q4 n'est été préalablement fermé.

                          Il est aussi impossible de maintenant Q1 et Q2 fermé puisque les capacité de boost se décharge progressivement.

                          C'est pour cette raison que je t'ai bien précisé que le PWM devrait être de 5 à 95% et qu'il ne fallait pas utiliser 0%, 100%.

                          Dans ton code, tu fais des digitalWrite donc ce n'est pas du PWM mais du numérique, ce qui revient à faire soit du 0%, soit du 100%...

                          Donc oui, ça ne marche pas...

                          -
                          Edité par lorrio 17 juin 2015 à 11:39:31

                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 juin 2015 à 12:00:41

                            Merci beaucoup, mais je comprend pas:euh:où mettre l'alimentation ? et qu'est ce que je dois écrire dans le code ça vraiment me fatigue, je suis triste je n'arrive pas encore à le mettre en marche :'(
                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 juin 2015 à 12:56:06

                              Là, je n'en sais strictement rien, je ne connais pas ISIS.

                              Je vois que tu as mis des petits triangle bleu avec écris 12V ---, est-ce vraiment une alimentation ou simplement une sonde d'un scope ?

                              Il faudrait aussi t'assurer que ISIS a bien connecté le VDD des IR2112 sur le +5V de l'arduino.

                              Et enfin, il faut mettre à jour ton code de façon à avoir :

                              • Un signal PWM en opposition de phase sur PWM1 et PWM2
                              • Un signal LOW sur IN1 et IN2
                              • Partager sur Facebook
                              • Partager sur Twitter
                                17 juin 2015 à 14:51:29

                                Salut;

                                les petits triangles sont des  tensions 12 V en continu;

                                encore une fois je modifie un peu le programme et ça marche un peu mais il stop en indiquant des erreurs.

                                voici le montage avec les erreurs:

                                int PWM1 = 5;
                                int PWM2 = 6;
                                int IN1 = 3;
                                int IN2 = 4;

                                void setup () {
                                  pinMode(PWM1, OUTPUT);
                                  pinMode(PWM2, OUTPUT);
                                  pinMode(IN1, OUTPUT);
                                  pinMode(IN2, OUTPUT);
                                }
                                int newSpeed = 0;

                                void loop() {
                                  digitalWrite(IN1, HIGH);
                                  digitalWrite(IN2, LOW);
                                  for(int i=5; i<225; i++)
                                  {
                                    newSpeed += i;
                                    analogWrite(PWM1, newSpeed);
                                   
                                  }
                                  delay(5000);
                                 
                                  digitalWrite(IN1, LOW);
                                  digitalWrite(IN2, HIGH);
                                  for(int j=0; j>-255; j--)
                                  {
                                     newSpeed -= j;
                                    analogWrite(PWM2,newSpeed);
                                   
                                  }
                                  delay(5000);
                                 
                                  digitalWrite(IN1, LOW);
                                  digitalWrite(IN2, LOW);
                                }

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  17 juin 2015 à 15:51:19

                                  digitalWrite(IN1, HIGH);
                                  digitalWrite(IN2, LOW);

                                  En faisant ça, tu actives le driver de droite et désactive le driver de gauche donc ça ne marche pas.

                                  Il te faut impérativement que les 2 drivers soient activé.

                                  ========

                                  for(int i=5; i<225; i++)
                                  {
                                      newSpeed += i;
                                      analogWrite(PWM1, newSpeed);
                                     
                                  }

                                  Là, je ne vois même pas ce que tu essayes de faire.

                                  Il n'y a aucun delays dans ta boucle donc celle-ci va s'exécuter en une fraction de seconde et c'est uniquement le dernier analogWrite qui sera effectif.

                                  Du coup, cela revient à faire un analogWrite de 5+6+7+8+9+...+223+224 = 25200 et qui est donc clairement hors spécification puisque l'analogWrite de l'arduino ne supporte qu'une valeur entre 0 et 4095.

                                  ========

                                  Et tu n'as toujours pas d'opposition de phase sur tes PWM.

                                  Si l'arduino n'est pas capable de faire un PWM en opposition de phase, tu peux utiliser une porte inverseuse pour générer PWM2 à partir de PWM1.

                                  ========

                                  A la limite, essayes ce code avant de casser ton schéma pour ajouter la porte inverseuse :

                                  void loop() {
                                  
                                      // Activation des 2 drivers
                                      digitalWrite(IN1, LOW);
                                      digitalWrite(IN2, LOW);
                                  
                                      // Emulation d'un PWM à 75% en opposition de phase ; Periode=400us => Frequence=2.5kHz
                                      while (1) {
                                  
                                          // Pendant 100us (1/4 du temps) : PWM1=LOW, PWM2=HIGH
                                          digitalWrite(PWM1, LOW);
                                          digitalWrite(PWM2, HIGH);
                                          delayMicroseconds(100);
                                  
                                          // Pendant 300us (3/4 du temps) : PWM1=HIGH, PWM2=LOW
                                          digitalWrite(PWM2, LOW);
                                          digitalWrite(PWM1, HIGH);
                                          delayMicroseconds(300);
                                  
                                      }
                                  
                                  }
                                  



                                  -
                                  Edité par lorrio 17 juin 2015 à 15:59:47

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    17 juin 2015 à 19:02:30

                                    Salut; 

                                    merci vraiment beaucoup pour ton aide j'apprécie ça, vous êtes le seul qui m'a permis d'avancer un peu, mais malheureusement j'ai essayé tous et ça me fatigue vraiment je sais pas d'où viennent les erreurs du montage ou du code. j'ai essayé de mettre un inverseur mais je sais pas est ce que ce correct ou non.

                                    voilà qu'est ce que ça donne

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      17 juin 2015 à 19:27:30

                                      Pourquoi as tu connecté IN1 sur la gauche de R1 ???

                                      Si tu utilises une porte inverseuse pour générer PWM2, alors PWM ne doit pas être relié à l'arduino !

                                      L'arduino a alors 2 fils :

                                      • IN1 : qui contrôle l'activation (mettre LOW pour activer les drivers)
                                      • PWM : qui contrôle la vitesse

                                      Post ton nouveau schéma ainsi que le code que tu utlises avec celui-ci.

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        17 juin 2015 à 20:06:40

                                        D'accord, je te fatigue beaucoup, pardonnez-moi.

                                        voici le schéma avec le code

                                        int PWM1 = 5;
                                        int IN1 = 3;


                                        void setup () {
                                          pinMode(PWM1, OUTPUT);
                                          pinMode(PWM2, OUTPUT);
                                          pinMode(IN1, OUTPUT);
                                          pinMode(IN2, OUTPUT);
                                        }

                                        void loop() {
                                         
                                            // Activation des 2 drivers
                                            digitalWrite(IN1, LOW);
                                          
                                            // Emulation d'un PWM à 75% en opposition de phase ; Periode=400us => Frequence=2.5kHz
                                            while (1) {
                                         
                                                // Pendant 100us (1/4 du temps) : PWM1=LOW, PWM2=HIGH
                                                digitalWrite(PWM1, LOW);
                                                delayMicroseconds(100);
                                         
                                                // Pendant 300us (3/4 du temps) : PWM1=HIGH, PWM2=LOW
                                                digitalWrite(PWM1, HIGH);
                                                delayMicroseconds(300);
                                         
                                            }
                                         
                                        }
                                         

                                        je doute sur le code, le problème est que je comprend pas beaucoup la programmation, j’essaie de m'améliorer mais j'ai pas beaucoup de temps je dois réaliser ce montage, il me reste encore une seule journée.

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          17 juin 2015 à 21:04:58

                                          Je doute fort que ce programme compile...

                                          Comment la ligne pinMode(PWM2, OUTPUT); pourrait-elle compiler sachant que la variable PWM2 n'existe pas ?

                                          Et sinon, je te repose encore la même question : Pourquoi as un petit triangle bleu IN1 sur la gauche de R1 ???


                                          J'ai l'impression que tu fonces tête baisser sans prendre le temps de comprendre ce que tu fais.

                                          Cela peut paraitre une bonne idée pour respecter un planning mais il est fort possible que ça ne mène à rien.

                                          Je te conseille donc de prendre le temps de réfléchir, de revoir un peu quelques bases et de trouver un tuto qui explique le fonctionnement d'un pont en H avec des drivers de MOS.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            4 avril 2018 à 5:19:38

                                            Bonjour..désolé je m'éloigne un peu..mais j'aimerais savoir si je peux utiliser un moteur DC comme moteur pas à pas..si oui pourrais-je avoir le circuit..
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              4 avril 2018 à 8:22:22

                                              Non, un moteur DC n'est pas un moteur pas à pas.

                                              Impossible de faire une rotation très précise avec un moteur DC, à moins d'y ajouter un gros système d'asservissement.

                                              Que souhaites tu faire exactement ?

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                23 avril 2018 à 19:28:39

                                                Bonjour,

                                                Je me demande si le montage utilisé est très sain. En effet, imaginons un PWM à 75%. le moteur devrait donc être à mi-vitesse dans une direction, disons rotation horaire.

                                                Quand le PWM est à l'état haut, le moteur est commandé à pleine vitesse sens horaire, et quand le PWM est à l'état bas il est commandé à pleine vitesse sens anti-horaire (alors que par inertie il tourne bien dans l'autre sens). Cela ne va pas chauffer et consommer un gros courant? Ne vaut-il mieux pas un montage qui laisse le moteur commandé à pleine vitesse la moitié du temps et non commandé l'autre moitié du temps?

                                                Merci d'avance à qui prendra la peine de me répondre!

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  23 avril 2018 à 20:01:16

                                                  Les ponts en H ont toujours été utilisée pour de la commande moteur et le seront encore pendant longtemps.

                                                  Cela n'a jamais posé de problème, le coté très inductif du moteur supporte ça très bien.

                                                  Comme tu le dit, à l'état HIGH, le moteur est commandé dans un sens, le courant circule dans un sens, et le moteur agit en temps que récepteur (il consomme de l'énergie).

                                                  A l'état LOW, la tension est inversée mais le coté très inductif du moteur fait que le courant ne s'inverse pas tout de suite mais descend progressivement, le moteur est alors en mode générateur (il rend une partie de l'énergie qu'il a consommé auparavant).

                                                  Et bien sûre, bien avant que le courant n'est le temps de s'annuler, le PWM revient à l'état HIGH, le moteur se remet à consommer de l'énergie et le courant remonte.

                                                  Bref, aucun problème à utiliser un pont en H ;)

                                                  Si jamais le moteur n'était pas assez inductif, on peut aussi rajouter une grosse self en série qui va lisser le courant.

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    23 avril 2018 à 21:24:00

                                                    lorrio a écrit:

                                                    Les ponts en H ont toujours été utilisée pour de la commande moteur et le seront encore pendant longtemps.

                                                    Cela n'a jamais posé de problème, le coté très inductif du moteur supporte ça très bien.

                                                    Comme tu le dit, à l'état HIGH, le moteur est commandé dans un sens, le courant circule dans un sens, et le moteur agit en temps que récepteur (il consomme de l'énergie).

                                                    A l'état LOW, la tension est inversée mais le coté très inductif du moteur fait que le courant ne s'inverse pas tout de suite mais descend progressivement, le moteur est alors en mode générateur (il rend une partie de l'énergie qu'il a consommé auparavant).

                                                    Et bien sûre, bien avant que le courant n'est le temps de s'annuler, le PWM revient à l'état HIGH, le moteur se remet à consommer de l'énergie et le courant remonte.

                                                    Bref, aucun problème à utiliser un pont en H ;)

                                                    Si jamais le moteur n'était pas assez inductif, on peut aussi rajouter une grosse self en série qui va lisser le courant.


                                                    Merci c'est limpide!
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      11 septembre 2020 à 9:33:29

                                                      Slt.stp tu peut m'expliquer à quoi ça sert la capacité et diode dans le schéma de driver ir2112
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        12 septembre 2020 à 17:26:20

                                                        Je suppose que tu veux parler de D1 et C2 dans le shéma du haut.

                                                        Il s'agit de la diode et condensateur de boost permettant de commander le MOSFET du haut.

                                                        Pour être fermé, un MOSFETa besoin d'une tension Vgs de 12V.

                                                        Dans le cas d'un moteur 60V, le pilotage du MOSFET du bas est assez simple car son point S étant relié au GND, il suffit d'injecter 12V sur le G.

                                                        Mais pour le MOSFET du haut, c'est beaucoup plus complexe car le point S est flottant et varie entre 0V (quand le MOSFET du bas est passant) et 60V (quand le MOSFET du haut est passant).

                                                        Du coup, pour fermer le MOSFET du haut, il faudrait avoir un potentiel de 72V disponible à injecter sur le G afin de le fermer.

                                                        Hors, ce 72V est plus haut que l'alimentation générale du montage, c'est problématique...

                                                        La solution consiste donc à utiliser ce montage de diode et capa de boost.

                                                        Quand le MOSFET du bas est fermé, le condensateur se charge à 12V au travers de la diode.

                                                        Quand le MOSFET du bas s'ouvre, le condensateur reste chargé et peut servir comme tension de référence pour le pilotage du MOSFET du haut.

                                                        En effet, même si le G du MOSFET du haut augmente au fure et à mesure que le MOSFET se ferme, le condensateur reste 12V au dessus de ce point.

                                                        Au final, quand le MOSFET sera complètement fermé et qu'il y aura 60V sur le G flottant, il y aura 72V au sommet du condensateur, ce qui servira à maintenir le MOSFET fermé.

                                                        Sans ce condensateur, impossible de piloter le MOSFET du haut.

                                                        Et sans avoir au préalable fermer le MOSFET du bas, impossible de charger le condensateur et donc impossible de fermer le MOSFET du haut.

                                                        Il est impératif de maintenir un PWM de sorte que le MOSFET du bas se ferme de temps en temps pour permettre de recharger le condensateur.

                                                        Même si ce temps de charge peu être court, il est obligatoire.

                                                        Tu trouveras pleins d'explications plus détaillée en cherchant "bootstrap capacitor" sur google.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        arduino Pont en H MOSFET

                                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                        • Editeur
                                                        • Markdown