IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Contrôle d’un moteur pas à pas avec Arduino via un DRV8825


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chercheur (postdoc)
    Inscrit en
    Août 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Chercheur (postdoc)

    Informations forums :
    Inscription : Août 2014
    Messages : 16
    Par défaut Contrôle d’un moteur pas à pas avec Arduino via un DRV8825
    Bonjour,

    Encore une petite question concernant Arduino, cette fois-ci un problème avec un moteur pas à pas. Dans mon projet je voudrais assez simplement contrôler ce type de moteur, en l’occurrence celui-ci : http://www.active-robots.com/3325-0-...er-with-5-18-1.

    Pour le module de contrôle, j’ai fait le choix d’un DRV8825 (https://www.pololu.com/product/2133) placé sur ce driver : https://www.gearbest.com/other-acces...hoCklsQAvD_BwE. Ce dernier a l’avantage de posséder directement un condensateur et trois pins externes pour le contrôle du micro-stepping. J’ai en effet besoin de mouvements précis avec un micro-stepping à 1/16 de pas minimum, ce que peux faire le DRV8825, et mon moteur aussi.

    J’utilise une alimentation de 12V pouvant délivrer 8.33A (le projet final comportera trois moteurs). J’ai réglé la limitation du courant, comme indiqué sur le site, grâce au potentiomètre intégré sur le module de manière à délivrer environ 1.5A (max 1.68A pour ce moteur). J’ai ensuite réglé les pins 1,2 et 3 sur bas, bas et haut (low, low et high ?) pour obtenir un micro-stepping a 1/16 (comme indiqué sur le site du fabricant du DRV8825). J’ai téléchargé la librairie que l’on peut trouver ici : https://github.com/laurb9/StepperDriver, et utilisé l’exemple BasicStepperDriver.ino ci-dessous.

    Le moteur tourne (hourra), mais il ne fait pas un tour complet comme il le devrait selon le code. J’ai beau chercher des pistes sur le net, je n’ai pas réussi à trouver ce que je dois changer.

    Merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    /*
     * Simple demo, should work with any driver board
     *
     * Connect STEP, DIR as indicated
     *
     * Copyright (C)2015-2017 Laurentiu Badea
     *
     * This file may be redistributed under the terms of the MIT license.
     * A copy of this license has been included with this distribution in the file LICENSE.
     */
    #include <Arduino.h>
    #include "BasicStepperDriver.h"
     
    // Motor steps per revolution. Most steppers are 200 steps or 1.8 degrees/step
    #define MOTOR_STEPS 200
    #define RPM 120
     
    // Since microstepping is set externally, make sure this matches the selected mode
    // If it doesn't, the motor will move at a different RPM than chosen
    // 1=full step, 2=half step etc.
    #define MICROSTEPS 16
     
    // All the wires needed for full functionality
    #define DIR 8
    #define STEP 9
    //Uncomment line to use enable/disable functionality
    #define ENABLE 13
     
    // 2-wire basic config, microstepping is hardwired on the driver
    //BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP);
     
    //Uncomment line to use enable/disable functionality
    BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP, ENABLE);
     
    void setup() {
        stepper.begin(RPM, MICROSTEPS);
    }
     
    void loop() {
     
        // energize coils - the motor will hold position
        stepper.enable();
     
        /*
         * Moving motor one full revolution using the degree notation
         */
        stepper.rotate(360);
     
        /*
         * Moving motor to original position using steps
         */
        stepper.move(-MOTOR_STEPS*MICROSTEPS);
     
        // pause and allow the motor to be moved by hand
        stepper.disable();
     
        delay(2000);
    }

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 282
    Par défaut
    Bonjour MatWix

    Le moteur, il a combien de pas par tour? Dans le code Arduino tu indiques 200, mais le lien vers le moteur ne dit rien (ou je n'ai pas vu ).
    Par contre le moteur a en plus un réducteur planetaire, d'un ratio de 52/11:1 ce qui fait que le moteur doit faire 5 tours et 2/11ème (soit environ 5.18 tours) pour que l'arbre en sortie en fasse 1.

    Bon si en cherchant le moteur sans le réducteur on trouve un pas de 1.8° soit 200 pas par tour. avec le reducteur cela donne donc 1036.36363636... pas par tour.
    Donc est-ce que avec le code ici, le moteur fait bien un tour (axe arrière), mais la sortie du réducteur uniquement 69.5° (axe principal)?

    Et vu que le reducteur apporte une incertitude (1.8°) d'angle suppérieur à un pas (0.35°) est-ce que le microstepping fait encore sens? (Tiré de cette page: https://www.phidgets.com/?tier=3&cat...=21&prodid=344 onglet Specifications, mais je ne suis pas certain de la signification exacte de Backlash Error)

    Un fois le réducteur prit en compte cela devrait être bon. Mais avec le ration non entier j'ai comme l'impression que la librairie risque de ne pas aimer.

    Delias

  3. #3
    Membre averti
    Homme Profil pro
    Chercheur (postdoc)
    Inscrit en
    Août 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Chercheur (postdoc)

    Informations forums :
    Inscription : Août 2014
    Messages : 16
    Par défaut
    Bonjour Delias,

    Merci beaucoup pour ton message. Je viens donc de découvrir un aspect des moteurs pas à pas que je n’avais pas bien compris : le réducteur planétaire. Le moteur est encore plus précis que je ne le pensais. Je n’ai pas non plus trouvé le nombre de pas par tour de mon moteur. Mais il est inscrit dessus 1.8°, 2.8V, 1.68A et 1:5.18. En voyant 1.8° j’ai pensé que mon moteur devait avoir 200 pas par tour. Je viens donc de multiplier 200 par 5.18, ce qui me donne 1036. Avec cette valeur à la place de 200, il me semble que mon moteur fait bien une rotation de 360°. Est-ce une rotation de 360° parfaite au vu du 2/11 ? Je ne sais pas, mais c’est peut-être ce que je peux faire de mieux non ? Ou alors existe-t-il une autre librairie ou une autre façon de faire ?

    Encore merci en tout cas

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 282
    Par défaut
    Bonjour

    Le réducteur planétaire c'est une option, et pas toujours utilisée.
    Le même moteur mais sans ce réducteur est disponible par ici: http://www.active-robots.com/3324-0-...arless-stepper
    Et d'ailleurs la recherche Google pointe vers plusieurs variantes avec pour chaque une un réducteur différent.

    L'avantage du réducteur c'est principalement un plus grand couple, des pas plus petits mais c'est aussi un inconvénient: l'ajout d'un jeu dû à la transmission. Alors en fonction de l'usage c'est avec ou sans. Et vu que tu voulais faire du micro stepping, j'ai comme un doute que le jeu soit acceptable pour ton usage.

    Oui ton moteur a apparemment bien 200 pas par tours (d'après les docs que l'on trouve), mais c'est sans le réducteur.

    Delias

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/01/2016, 12h49
  2. Réponses: 16
    Dernier message: 14/10/2014, 18h12
  3. Moteur pas à pas arduino
    Par pascalice dans le forum Arduino
    Réponses: 2
    Dernier message: 02/03/2014, 21h17
  4. Commande moteur pas à pas via port parallèle
    Par -N4w4k- dans le forum Robotique
    Réponses: 9
    Dernier message: 05/04/2012, 00h00
  5. [Débutant] programmation d´un moteur pas a pas sous matlab
    Par arthurdubois dans le forum MATLAB
    Réponses: 0
    Dernier message: 07/03/2012, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo