Piloter un moteur pas à pas avec un module L298 – Arduino

Nous allons ici piloter un moteur pas à pas (stepper motor) à l’aide d’un driver L298.

Le moteur utilisé sera le 14HS11-1004S :

Ce moteur est un moteur pas à pas bipolaire. Il possède 2 bobines (du coup, il y a 4 fils).

Les moteurs pas à pas bipolaires nécessitent un double pont en H pour les entraîner; un pont en H pour chaque bobine.

Le document technique du moteur est disponible ici : 14HS11-1004S


Caractéristiques du moteur :

  • Nombre de pas : 200
  • Angle par pas : 1,8°
  • Alimentation : 3,5 – 5V
  • Courant/phase : 1 A
  • Dimensions de l’axe : Ø5 x 23 mm
  • Dimensions : 35 x 35 x 29 mm
  • Poids : 120 g

Lors des essais, il ne faut bien respecter une tension d’alimentation à 5V max. Si une tension trop élevée est envoyé, le moteur et le driver risque de monter en trop haute température.

Câblage :
Attention, il ne faut pas prendre en compte les couleurs en sortie du moteur sur ce schéma, mais la couleur des liens !

Code :

Ce programme permet d’effectuer un tour dans un sens, puis un tour dans l’autre sens :

#include <Stepper.h>

// Définir le nombre de pas par tour
int NbrPas = 200; 


Stepper MonMoteur(NbrPas, 8, 9, 10, 11);

void setup() {
  // Vitesse à 60 tours/min
  MonMoteur.setSpeed(60);
 
  Serial.begin(9600);
}

void loop() {
  // Faire un tour dans un sens
  Serial.println("Sens 1");
  MonMoteur.step(NbrPas);
  delay(500);

  // Faire un tour dans l'autre sens
  Serial.println("Sens 2");
  MonMoteur.step(-NbrPas);
  delay(500);
}

 

Ce programme permet de faire des tours dans le sens positif. Chaque pas sera comptabilisé dans la variable NombreDePas :

#include <Stepper.h>

// Définir le nombre de pas par tour
int NbrPas = 200; 


Stepper MonMoteur(NbrPas, 8, 9, 10, 11);

void setup() {
  // Vitesse à 60 tours/min
  MonMoteur.setSpeed(60);
  Serial.begin(9600);
  int NombreDePas;
}

void loop() 
{
  // Faire un pas tous les 500ms
  MonMoteur.step(1);
  Serial.print("Pas :");
  Serial.println(NombreDePas);
  NombreDePas++;
  delay(500);
}

 


3 commentaires

  1. Bonjour, merci pour ta page d’explication, c’est très clair.
    Je me demande si on ne peut contrôler l’état du moteur (marché /arrêt) ainsi que la direction de rotation avec uniquement 2 fils entre l’arduino et le L298…. si on a plusieurs moteurs pas à pas les sorties de l’arduino sont vite fait utilisées.
    Au final, on pourrait avoir (j’indique S1 et S2 les sorties sur l’arduino) :

    S1=0, S2=0 –> moteur à l’arrêt
    S1=1, S2=0 –> rotation clockwise
    S1=0, S2=1 –> rotation counterclockwise
    S1=1, S2=1 –> config non utilisée

    Est il possible de le réaliser avec le L298 ?
    Si pas possible, comment pourrait on mettre en place un tel contrôle ?
    Merci

    1. Ici j’utilise un moteur pas à pas bipolaire… Pour le faire fonctionner, il est impératif de disposer de deux ponts en H, un pour chaque bobine.

  2. Salut Mat, pourrais-tu poster une image de ton montage IRL, car lorsque je réalise le montage décrit, mon moteur ne tourne pas du tout, même pas un blocage, il est complètement a l’arrêt. Ce que je trouve bizarre étant donne que j’avais reussi a le faire fonction il y a de cela 2-3 mois, mais lorsque j’ai voulu le refaire fonctionner, aucun signe, je ne me souvient en plus plus des branchement que j’avais effectuer et c’est pourquoi je me reporte a ton tutoriel ( très complet d’ailleurs 🙂 ) pour essayer de faire fonctionner de nouveau mon moteur mais je n’y arrive toujours pas je ne pense pas que ce soit ton ou les programmes que j’utilise qui cause ce mal fonctionnement. As-tu mis des cavaliers ? Si oui, les 3( au total 6 broches) ou seulement les 2 situé a coté de la ou se branche les câbles a relier a l’arduino ? Il me semble que j’avais 3 cavalier au total .

    En attente de ta réponse ,
    Merci

Rejoignez la conversation

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.