Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arduino - proteus - Pont H et Mosfet

Sujet résolu
    26 janvier 2014 à 14:46:07

    Bonjour et pour commencer bonne année.

    Je vous présente mon problème. Mon but est de faire tourner un moteur dans les deux sens. 

    Alors j'ai mes 4 mosfet, mon potentiomètre, mon interrupteur pour inverser le sens de rotation du moteur mon moteur et mon programme.

    J'ai tout quoi  :) 

    Mais j'ai un problème, d’après mes voltmètres j'ai bien une tension de 0 V sur mes deux mosfet et une autre de 5 v sur les deux autres, mais ceux ci ne laisse passer que environ 1,18V alors que mon alimention et une 12 V.

    Je vous donne mon schéma proteus et mon programme. Pour que celui ci soit plus lisible j'ai retirer les 4 DEL et les 4 resistances.

    Je l'admet ce n'est pas très propre ahah 

    http://hpics.li/fbc673a

    http://hpics.li/937b2aa

    Je vous remercie déjà par avance, Arnaud.

    -
    Edité par arnaud15 26 janvier 2014 à 14:48:50

    • Partager sur Facebook
    • Partager sur Twitter
      26 janvier 2014 à 18:51:14

      il faut que tu révises le fonctionnement d'un MOSFET ;)
      • Partager sur Facebook
      • Partager sur Twitter
        26 janvier 2014 à 19:52:45

        Pour être passant, un MOSFET canal N a besoin d'une tension Vgs supérieur à 0.

        D'après la doc des IRF530, il faut une tension Vgs d'au moins 4V.

        Pour les deux MOSFET du bas, le potentiel S est à la masse, ce qu'il signifie qu'il faut appliquer au moins 4V sur la Gate pour le fermer.

        Chose que ton arduino n'a aucun mal à fournir puisqu'il est alimenter en 5V.

        Par contre, il va y avoir un gros problème pour les 2 MOSFET du haut.

        En effet, lorsqu'ils commencent à se fermer, le potentiel S monte progressivement à 12V.

        Donc pour poursuivre la fermeture, il faudrait que le potentiel G monte à 12+4 = 16V.

        Chose que ton aruino est incapable de faire puisqu'il ne délivre qu'au plus 5V.

        Donc le potentiel S des MOSFET du haut ne peut pas monter au dessus de 5-4 = 1V.

        Par conséquent, la tension au borne de ton moteur se limite à 1V.

        =====

        Donc 2 solutions :

        - soit tu achètes un driver de pont en H qui est prévu pour ce genre de chose

        - soit tu utilises des MOSFET canal P pour les transistors du haut.

        • Partager sur Facebook
        • Partager sur Twitter
          27 janvier 2014 à 16:54:23

          lorrio a écrit:

          =====

          Donc 2 solutions :

          - soit tu achètes un driver de pont en H qui est prévu pour ce genre de chose

          - soit tu utilises des MOSFET canal P pour les transistors du haut.

          Je viens d'utiliser t'as deuxième solution, et j'ai mis 2 mosfet IRF9530. Et ça marche impeccable, merci pour ton aide, cela m'as permis d'avancer dans mon projet et comprendre mes erreurs avec tes explications. 

          -
          Edité par arnaud15 27 janvier 2014 à 17:04:36

          • Partager sur Facebook
          • Partager sur Twitter
            27 janvier 2014 à 18:25:00

            Fais tout de même attention avec des MOSFET canal P !!!

            Ce type de MOSFET permet de contourner le problème mais ils demandent un peu d'adaptation.

            En effet, ces MOSFET sont prévu pour être commandés avec des tension négative.

            Vu que c'est des tensions négatives, il te faut leur envoyer une tension inférieur à 12V.

            Ce qui en soit est bien plus simple que d'envoyer une tension supérieur à 12V comme c'était le cas avec un MOSFET canal N.

            Par contre, ton  micro donne soit 0V, soit 5V.

            Le MOSFET P verra soit 0-12 = -12V, soit 5-12 = -7V.

            Bref, dans les 2 cas, il reçoit une tension négative ; jamais une tension nulle !

            Donc il se pourrait que ton MOSFET soit toujours fermé, ce qui pourrait occasionner de gros dégâts si tu fermes aussi les MOSFET du bas !!!

            • Partager sur Facebook
            • Partager sur Twitter
              27 janvier 2014 à 18:36:22

              Alors as tu une idée pour mon mosfet canal P? sachant que mon moteur ne dépassera pas 5A
              • Partager sur Facebook
              • Partager sur Twitter
                27 janvier 2014 à 19:28:44

                En faite, si j'étais toi, je ne me serais pas orienté vers cette solution.

                Pour commander un MOSFET canal N monté en "high side" sur du 12V, il te faut envoyer une tension 12V / 17V.

                Pour commander un MOSFET canal P monté en "high side" sur du 12V, il te faut envoyer une tension 12V / 7V.

                Comme tu peux le voir, un MOSFET canal P n'a pas besoin d'avoir un tension supérieure à la tension d'alimentation du circuit.

                C'est donc bien plus simple de l'utiliser mais il faut quand même faire une petite adaptation.

                L'autre problème que tu ne va pas tardé à découvrir, c'est les pertes par commutation.

                Un MOSFET possède une capacitance d'entrée qu'il ne faut pas négliger.

                Au fur et à mesure que cette capacitance se charge, le MOSFET est de plus en plus passant.

                Sauf que pendant qu'il est à moitié passant, c'est lui qui va encaisser la moitié de la tension d'alim du circuit donc il va chauffer.

                Pour éviter ce problème, on cherche à charger cette capacitancele plus rapidement possible.

                Généralement, cela consiste à balancer un courant très fort (quelques ampères) sur le MOSFET pendant un temps très court (quelques nano secondes).

                Le problème, c'est que ton arduino est incapable de sortir une telle intensité, même pendant un instant très court.

                Du coup, il va charger le MOSFET lentement, ce qui va le faire chauffer beaucoup plus que la normale.

                =====

                Bref, tout ça pour dire que tu devrais utiliser un driver de MOSFET et non ton arduino directement.

                Ces petits chip proposent de régler ces 2 problèmes :

                - ils sont capable de pulser quelques ampères pendant un temps très court (ce qui permet de charger rapidement la capacitance du MOSFET)

                - ils sont capable de générer (à l'aide d'un condensateur externe) un tension supérieur à la tension d'alim (ce qui permet d'utiliser des MOSFET canal N)

                =====

                Donc voila, ça, c'était la théorie.

                Concernant la pratique, je te conseille de te renseigner sur les drivers "high side / low side" ou "half bridge" (il t'en faudra deux pour faire un pont en H communément appelé "full bridge")

                -
                Edité par lorrio 27 janvier 2014 à 19:31:45

                • Partager sur Facebook
                • Partager sur Twitter
                  30 janvier 2014 à 17:28:09

                  Oui, mais je ne veux pas de Driver, j'ai vu avec un prof que m'a solution pouvait être bonne, donc je ne pense pas changer. Mais merci pour ton aide :D
                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 janvier 2014 à 18:28:15

                    pour driver le canal P "high side", tu peux faire un tirage de la grille au potentiel du drain (vérifie si ton transistor le supporte) et, avec l'arduino, soit tu impose 0V soit tu mets ta sortie en haute impédance (et la ligne est alors tirée au potentiel du drain). A cause de la capacité de grille, ça ne permet pas de commuter très vite (surtout si il faut driver beaucoup de courant), mais, pour une commande en tout ou rien, ça fait le boulot.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    64kB de mémoire, c'est tout ce dont j'ai besoin
                      30 janvier 2014 à 18:49:27

                      Oui, c'est une solution que je n'ai pas osé proposer :-°

                      Un pont en H, c'est pour faire de la commande en vitesse en appliquant des PWM à 20kHz minimum.

                      Donc mettre une résistance de pull up sur un tel système, c'est même pas la peine d'y pensé.

                      Mais c'est vrai que ça peut marché si il se sert de son pont en mode tout ou rien : AVANCER/OFF/RECULER (sans y appliquer de PWM).

                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 janvier 2014 à 19:26:04

                        bah, tant que les gates du PMOS et du NMOS sont pas reliées ensemble...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 janvier 2014 à 20:16:36

                          Mon projet fonctionne avec un PWM :)

                          Je voulais aussi savoir, imaginons un autre moteur avec juste un mosfet. Je veux le faire tourner juste pendant un certains temps, et que cela ne se répète plus. Celui ci sera actionné par un capteur de distance. J'arrive a la faire tourner normal, mais il ne s'arrete pas... Si vous avez une idée ;)

                          -
                          Edité par arnaud15 30 janvier 2014 à 21:15:38

                          • Partager sur Facebook
                          • Partager sur Twitter
                            30 janvier 2014 à 21:37:50

                            c'est peut être jouable quand même (ça fait chauffer les transistors, mais ça peut être acceptable).

                            • Quelle est la tension max du montage ? 12V
                            • Quelle intensité supporte une pin d'un arduino ?
                            • Quelle est l'intensité max dans ton moteur en régime continu ? (généralement, tu as l'intensité max quand ton moteur est en blocage, si il est possible que le moteur se bloque) Imax
                            • Quelle est la capacité de la grille de ton PMOS ? C
                            • A quelle température ambiante ton système doit-il fonctionner ?
                            • Quelle est la résistance thermique du boitier de ton transistor ?

                            tu calcules la résistance R mini pour que ton arduino puisse driver le PMOS sans griller, multipliée par la capacité de ta grille, sa te donne la base de temps pour le blocage du transistor. Grosso modo, tu fais 12V Imax 5 * RC, ça te donne l'énergie à dissiper par cycle de PWM (le calcul est volontairement pessimiste). Tu as la résistance thermique (de la jonction à l'air libre) de ton transistor dans sa datasheet, et la température max de sa jonction, tu peux en déduire la fréquence max de ta PWM.

                            • Partager sur Facebook
                            • Partager sur Twitter
                            64kB de mémoire, c'est tout ce dont j'ai besoin

                            Arduino - proteus - Pont H et Mosfet

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown