Partage
  • Partager sur Facebook
  • Partager sur Twitter

Commander un moteur avec DigitalWrite()

Sujet résolu
    5 juillet 2013 à 13:20:22

    Bonjour,  

    Il s'agit d'une question très certainement idiote sur le fonctionnement d'un transistor.

    Afin de tester le pilotage d'un moteur 9V avec Arduino, j'ai réalisé un montage assez simple reliant Arduino, une LED, un moteur, pile 9V (pour le moteur) , transistor, diode.

    Ma question est très bête :


    Pour allumer la LED la commande est        digitalWrite(led , LOW ) ;
    Pour allumer le moteur la commande est   digitalWrite(motor , HIGH );

    Mon code: 

    const int motor=6;
    const int led=4;
    
    
    void setup()
    {
      pinMode(motor, OUTPUT);
      pinMode(led_1,OUTPUT);
    }
    
    void loop()
    {
    digitalWrite(led, LOW) ;     // Allume la LED  
    digitalWrite(motor, HIGH) ;  // allume le moteur 
    delay(3000) ; 
    digitalWrite(led, HIGH );   // eteint la LED
    analogWrite(motor, LOW );   // Etient le moteur.
    delay(1000) ; 
     
    }

    Est-ce que cela est normal ? Ou il y a un problème dans le montage qui explique ce fonctionnement contraire ?
    Si normal, comment faire si je souhaite que le moteur et la LED soit piloter par la même Pin arduino et qu'ils aient le même comportement ? (LED ON -> Moteur ON).

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      5 juillet 2013 à 16:07:17

      Qu'il s'agisse d'un moteur ou d'une led c'est hight pour allumer (Hight=état haut) et low pour éteindre (low=état bas). Sur ceux bonne chance :-)
      • Partager sur Facebook
      • Partager sur Twitter
        5 juillet 2013 à 16:16:11

        Ta LED est reliée sur le 5V. Pour l'alumer, il faut donc mettre un 0V sur la pin du micro (car si tu mets 5V des 2 cotés, alors il y a une tension null à ces bornes).

        Par contre, ton moteur est relié au GND. DOnc tu l'allumes en mettant un 5V.

        Inverser la commande du moteur demanderait d'utiliser un transistor PNP, ce qui n'est pas forcément très pratique.

        Par contre, pour inverser la commande de la led : c'est tout simple :

        1. Tu changes la led de sens

        2. Au lieux de brancher l'autre coté sur 5V, tu branches l'autre coté sur GND.

        • Partager sur Facebook
        • Partager sur Twitter
          5 juillet 2013 à 16:36:32

          Super!  Merci beaucoup pour ces réponses précises.

          C'est beaucoup plus clair pour moi maintenant.

          Je vais effectivement relier la LED au GND  -> au moins ce sera la commane HIGH pour tous et ce sera plus simple.

          • Partager sur Facebook
          • Partager sur Twitter
            5 juillet 2013 à 20:47:02

            SI je peux me permettre, afin de ne pas trop faire souffrir ton transistors, tu devrais mettre une petite résistance entre la base et le micro.

            En théorie, un transistor a une tension de 0.6 V entre la base et l'émetteur tout en amplifiant par 200 le courant de la base.

            Si ton miucro donne 5V, la résistance doit encaisser 4.4V.

            Avec un moteur de 1A, le transistor a besoin de 1/200 = 5mA à sa base.

            U = R*I <=> R = U / I = 4.4 / ( 5 / 1000 ) = 1k.

            Bref, une petite résistance de 1k ne ferait pas de mal ;)

            • Partager sur Facebook
            • Partager sur Twitter
              5 juillet 2013 à 23:40:16

              lorrio a écrit:

              En théorie, un transistor a une tension de 0.6 V entre la base et l'émetteur tout en amplifiant par 200 le courant de la base.

              Ca faut voir dans la datasheet...
              • Partager sur Facebook
              • Partager sur Twitter

              Retrouvez moi sur mon blog et ma chaine Youtube !

                5 juillet 2013 à 23:55:18

                C'était juste pour donner une idée.

                Mais vu que c'est pour utiliser le transistor en tout ou rien, une méthode empirique marchera très bien.

                -----

                Tu testes avec une résistance de 1k,

                -> Si le moteur n'atteint pas sa vitesse max : diminue la résistance

                -> Si le moteur atteint sa vitesse max : augmente la résistance.

                Le but étant de trouver la résistance la plus grande qui permette la vitesse max.

                Bien sur, pas besoin d'etre précis à l'ohm pret, quelques essais suffisent (exemple : 100 omh, 300ohm, 680ohm, 1k, 3.3k, 6.8k 10k)

                • Partager sur Facebook
                • Partager sur Twitter

                Commander un moteur avec DigitalWrite()

                × 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