Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Arduino] programmation vitesse moteur CC

    29 août 2017 à 0:21:52

    Bonjour à tous,

    J'ai réalisé un premier code avec un arduino uno et le shield motor arduino V1.

    J'utilise un moto-reducteur miniature 6V et mon but est de programmer une maquette de manège. Je souhaite un balancement le plus fidèle à la réalité. 

    Mon principal problème est que la vitesse mini du motoreducteur est encore trop rapide. En PWM, rien ne se passe quand je mets la vitesse de 0 à 50 (sur l’échelle des 255). Il me semble qu'il s'agit de l'inertie du moteur.

    N'y a t'il pas une autre façon de programmer et un autre modèle de carte électronique qui permettrai de ralentir considérablement les moteurs CC.

    Pour information, je ne compte pas changer de moteur, des moteurs de base plus lent sont trop gros pour réaliser les maquettes.

    Voici le résultat obtenu.

    https://youtu.be/-M6VUSJKN7M

    Soyez également indulgent pour le code qui est très brouillon, mais ça vous donne une idée :

    #include <AFMotor.h>
    
    AF_DCMotor moteur1(1);
    AF_DCMotor moteur2(2);
    
    int VminD ;
    int VmaxD ;
    int Vmin ;
    int Vmax ;
    
    void setup(){
      moteur1.run(RELEASE);
      moteur2.run(RELEASE);
      VminD =60 ;
      VmaxD =150 ;
      Vmin = 40 ;
      Vmax = 200 ;
    }
    
    
    void loop(){
    
    
    //depart
    
    for (int i=VminD; i<=VmaxD; i++) { 
      moteur1.run(FORWARD);
      moteur1.setSpeed(i);
      delay(1); 
      }
    for (int i=VminD; i<=VmaxD; i++) {   
      moteur1.run(FORWARD);
      moteur1.setSpeed(VmaxD+VminD-i);
      delay(1); 
      }
    
    
    for (int a=1; a<=7; a++){
    
    for (int i=VminD; i<=VmaxD; i++) { 
      moteur1.run(BACKWARD);
      moteur1.setSpeed(i);
      delay(a+a); 
      }
    for (int i=VminD; i<=VmaxD; i++) {   
      moteur1.run(BACKWARD);
      moteur1.setSpeed(VmaxD+VminD-i);
      delay(a+a); 
      }
    
    for (int i=VminD; i<=VmaxD; i++) {   
      moteur1.run(FORWARD);
      moteur1.setSpeed(i);
      delay(a+a+1); 
      }
    for (int i=VminD; i<=VmaxD; i++) {  
      moteur1.run(FORWARD);
      moteur1.setSpeed(VmaxD+VminD-i);
      delay(a+a+1); 
      }}
    
    for (int t=0; t<=3; t++) {
    for (int i=VminD; i<=VmaxD; i++) { 
      moteur1.run(BACKWARD);
      moteur1.setSpeed(i);
      delay(15); 
      }
    for (int i=VminD; i<=VmaxD; i++) {   
      moteur1.run(BACKWARD);
      moteur1.setSpeed(VmaxD+VminD-i);
      delay(15); 
      }
    
    for (int i=VminD; i<=VmaxD; i++) {   
      moteur1.run(FORWARD);
      moteur1.setSpeed(i);
      delay(15); 
      }
    for (int i=VminD; i<=VmaxD; i++) {  
      moteur1.run(FORWARD);
      moteur1.setSpeed(VmaxD+VminD-i);
      delay(15); 
      }
    }
    
    
      for (int a=1; a<=7; a++){
    
    for (int i=VminD; i<=VmaxD; i++) { 
      moteur1.run(BACKWARD);
      moteur1.setSpeed(i);
      delay(16-a-a); 
      }
    for (int i=VminD; i<=VmaxD; i++) {   
      moteur1.run(BACKWARD);
      moteur1.setSpeed(VmaxD+VminD-i);
      delay(16-a-a); 
      }
    
    for (int i=VminD; i<=VmaxD; i++) {   
      moteur1.run(FORWARD);
      moteur1.setSpeed(i);
      delay(16-1-a-a); 
      }
    for (int i=VminD; i<=VmaxD; i++) {  
      moteur1.run(FORWARD);
      moteur1.setSpeed(VmaxD+VminD-i);
      delay(16-1-a-a); 
      }}
    moteur1.run(RELEASE);
    delay(10000);
    }

    Merci d'avance pour votre aide !

    • Partager sur Facebook
    • Partager sur Twitter
      29 août 2017 à 21:33:28

      Je ne pense pas pouvoir t'apporter une réponse/solution mais peut être une autre piste.

      Le moteur doit il être forcément en hauteur pour faire le mouvement ? Peut-être qu'avec un autre mécanisme tu peux diminuer la "vitesse" ?  (un engrenage par exemple)

      -
      Edité par adricorse 29 août 2017 à 21:37:27

      • Partager sur Facebook
      • Partager sur Twitter
        15 septembre 2017 à 16:15:08

        je viens de voir le message, merci.

        J'y avait pensé, mais cela complexifie énormément le mécanisme. J'ai peut être trouvé un moteur un peu plus lent :)

        • Partager sur Facebook
        • Partager sur Twitter
          16 septembre 2017 à 0:10:29

          Diminue la tension d'alimentation (à ce que je sache ton moteur tourne encore à vide et si c'est vrai cela va changer quand il aura une charge). Ou ajoute une resistance en serie avec ton moteur (ce qui va diminuer le courant qui va circuler et donc : ralentir le moteur)

          -
          Edité par pkem 16 septembre 2017 à 0:12:45

          • Partager sur Facebook
          • Partager sur Twitter
            26 septembre 2017 à 12:07:07

            Merci, pkem. Je pensais que le fait de modifier la vitesse directement dans le programme était similaire, du coup on peut additionner les deux leviers? Je vais tester de ce pas :D
            • Partager sur Facebook
            • Partager sur Twitter
              1 octobre 2017 à 15:47:25

              ok, on attend le retour !
              • Partager sur Facebook
              • Partager sur Twitter
                13 décembre 2017 à 18:18:10

                Bonjour, désolé pour le retard... le point si dessus ne fonctionnait pas, il n'y avait plus assez de couple. Par contre, j'ai réussi à trouver des motoreducteur encore plus lent, donc problème résolu.

                Merci.

                • Partager sur Facebook
                • Partager sur Twitter
                  30 décembre 2017 à 17:59:53

                  Fantaisyland-maquette foraine a écrit:

                  Bonjour, désolé pour le retard... le point si dessus ne fonctionnait pas, il n'y avait plus assez de couple. Par contre, j'ai réussi à trouver des motoreducteur encore plus lent, donc problème résolu.

                  Merci.


                  Pourrais-je savoir quel moteur vous avez trouvé? J'ai un projet sur le feu qui nécessite un moteur lent, et le plus silencieux possible.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  [Arduino] programmation vitesse moteur CC

                  × 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