Utilisation d’un moteur pas-à-pas

Aujourd’hui, suite à de nombreuses questions à propos de l’utilisation des drivers pas-à-pas, nous allons réaliser une mise en pratique d’un driver de Pololu avec un moteur pas à pas.

Pour la réalisation nous aurons besoin de :

Materiel

Soudure des connecteurs et réglage du courant

Il faut dans un premier temps souder les deux connecteurs sur le driver pour l’utiliser avec la plaque de connexion rapide. Soudez les deux connecteurs de telle sorte que le potentiomètre de réglage reste accessible lorsque le driver sera inséré sur la plaque de connexion rapide.

Il est nécessaire de régler le courant en fonction de votre moteur pas-à-pas, ici pour notre moteur il faut régler le courant sur 0,7 A (on règle généralement le courant à 70% du courant de bobine –  ici 1A). Chaque driver possède son propre système de réglage du courant, vous devez vous reporter à la fiche technique pour faire ce réglage. Certains drivers se configurent à l’aide de dip-switches, d’autres avec un potentiomètre (comme ici), etc.

Il faut alimenter le driver à partir de la carte Arduino pour procéder au réglage du courant :

  • VCC de l’Arduino sur VDD du driver
  • GND de l’Arduino sur le GND du driver

Vous devez utiliser un multimètre pour régler le courant à l’aide du potentiomètre de réglage, la formule de conversion est la suivante :

Vref = 8 x Imax x Rcs [avec Rcs = 0,068 Ω (formule disponible dans la fiche technique du driver)]
Vref: 0,3808 V

Vous devez mesurer la tension sur le potentiomètre à 0,38 V environ pour obtenir un courant de 0,7 A (la masse du multimètre étant reliée sur le GND de la carte Arduino). Vous pouvez mettre directement la pointe de touche sur le tournevis pour faciliter le réglage.

reglage courant
reglage tournevis

Brochage des différents éléments

Vous devez réaliser le montage suivant pour tester le fonctionnement du moteur, il s’agit du montage minimal pour faire fonctionner le moteur.

La broche DIR (direction) est raccordée sur l’entrée D4 de la carte Arduino et la broche STEP (cadencement) sur la broche D5.
La broche DIR permet de choisir la direction et le moteur avant d’un ”pas” à chaque impulsion sur la broche STEP.

montage ok debut

Programmation Arduino

Nous allons réaliser un programme Arduino très simple pour faire tourner le moteur d’un tour dans un sens puis dans l’autre sens.

int tempo=1; // Cette valeur détermine la vitesse du moteur, 1 = rapide, 100 = lent

void setup() {
    pinMode(4, OUTPUT); // On initialise les broches D4 et D5 en sorties
    pinMode(5, OUTPUT);
}

void loop() {
    delay(1000);

    digitalWrite(4, HIGH); // On met la broche DIR à l'état haut
    for (int i=0; i <= 200; i++){
        digitalWrite(5, LOW);
        delay(tempo); // On envoie 200 impulsions pour faire tourner le moteur de 200 pas dans un sens
        digitalWrite(5, HIGH); // La valeur de tempo determine le temps entre 2 impulsions en ms
        delay(tempo);
    }

    delay(1000);

    digitalWrite(4, LOW); // On met la broche DIR à l'état bas pour changer de sens
    for (int i=0; i <= 200; i++){
        digitalWrite(5, LOW);
        delay(tempo); // On envoie 200 impulsions pour faire tourner le moteur dans l'autre sens
        digitalWrite(5, HIGH); // La valeur de tempo determine le temps entre 2 impulsions en ms
        delay(tempo);
    }

}

Vous pouvez vous référer à cet article pour installer et utiliser le logiciel Arduino si nécessaire.

Après avoir téléversé le programme et mis en marche l’alimentation du moteur, il devrait tourner dans un sens sur 1 tour et dans l’autre sens.

Ajout d’un bouton-pousssoir et d’un potentiomètre de réglage

Il est généralement nécessaire de contrôler le moteur pas-à-pas en vitesse et marche/arrêt selon l’application, l’exemple suivant permet d’ajouter ces deux fonctions.
Nous utiliserons les éléments suivants pour faciliter le raccordement :

 

Nous allons raccorder le potentiomètre sur l’entrée A0 et le bouton-poussoir sur l’entrée D6.

1] Vous devez échanger la broche noire avec la broche rouge sur le module bouton-poussoir pour correspondre avec le Shield bornier.

inversion polarité

2] Raccordez le potentiomètre et le bouton poussoir.

3] Faîtes un pont entre le VCC de gauche et le VCC de droite pour alimenter la partie droite du Shield.

Vous devez ensuite téléverser le programme Arduino suivant :

int tempo=1;
int tourne=0;
int vitesse=1;

void setup() {
    pinMode(6, INPUT);
    pinMode(4, OUTPUT); // Broches 4 et 5 en sorties et broche 6 en entrée
    pinMode(5, OUTPUT);
    digitalWrite(4, HIGH);  // On choisit un sens de rotation
}

void loop() {
    int capteur = digitalRead(6); // On lit la valeur du bouton-poussoir
    vitesse = analogRead(A0); // On lit la valeur du potentiomètre
    tempo = map(vitesse, 0, 1023, 1, 100); // On convertit la valeur du potentiomètre en vitesse

    if (capteur == HIGH) {
        tourne = !tourne;           // On permute entre marche/arrêt lorsque l'on appuie sur le bouton-poussoir 
        delay (500);
    }

    if (tourne == HIGH) {
        digitalWrite(5, LOW);
        delay(tempo);                  //On fait tourner le moteur avec la vitesse suivant le potentiomètre
        digitalWrite(5, HIGH);
        delay(tempo);
     }

}

Adaptation à votre projet

Ce tutoriel est valable avec la plupart des cartes de commande et des moteurs pas-à-pas. Il faut choisir le driver en fonction du moteur, on travaille généralement à 70% du courant.

Exemple d’autres drivers :

 

Exemple d’autres moteurs :

Le brochage est à adapter en fonction du moteur et du driver, toutes les informations de raccordement sont disponibles dans les onglets fiches techniques.

Le programme Arduino inclus dans ce tutoriel est très simple et peut facilement être adapté à votre utilisation, des nombreuses librairies plus complexes sont disponibles si nécessaire.

5 Commentaires
  • Léandre
    Publié à 19:20h, 18 janvier

    Pouvez-vous m’aidez, ca ne fonctionne pas, mon moteur ne tourne pas sur les tests 1 et 2, il fonctionne en temps normal comme l’arduino.

  • Yohann
    Publié à 16:18h, 06 février

    Bonjour, je ne comprends pas votre question, pouvez vous me faire un mail sur sav@gotronic.fr pour comprendre votre problème ? Merci, bonne journée.

  • Yohann
    Publié à 13:17h, 06 juin

    Bonjour, vous utilisez le même moteur que dans l’exemple ? Votre moteur vibre ou pas du tout ? Le câblage du moteur peut être différent suivant le modèle. Bonne journée.

  • fred
    Publié à 13:52h, 31 juillet

    Bonjour, comment avez-vous déterminez que 1 ms = 1 pas ?
    “delay(tempo); // On envoie 200 impulsions pour faire tourner le moteur de 200 pas dans un sens”
    Bonne journée !

  • Yohann
    Publié à 10:02h, 12 août

    Bonjour, le 1ms correspond au délais entre deux pas, plus le delay est long, plus le moteur va lentement. Je reste à votre disposition par mail si vous le souhaitez à l’adresse sav@gotronic.fr. Merci, bonne journée.

Laisser un commentaire