Utilisation d'un pilote de moteur L298N pour contrôler un moteur pas à pas à 4 fils
Dans ce tutoriel, nous allons explorer comment contrôler un moteur pas à pas 4 fils en utilisant le pilote de moteur L298N en conjonction avec un Arduino. Le L298N est un pilote à double pont en H polyvalent qui nous permet de contrôler efficacement le sens et la vitesse des moteurs pas à pas. À la fin de ce guide, vous disposerez d'une configuration fonctionnelle capable de faire tourner le moteur pas à pas dans les deux sens et de contrôler sa vitesse à l'aide d'un potentiomètre.


Pour vous aider à mieux comprendre le processus, je vous recommande de regarder la vidéo associée, qui présente une démonstration visuelle du câblage et du codage (dans la vidéo à 01:30).
Le matériel expliqué
Le pilote de moteur L298N est conçu pour contrôler des moteurs en vous permettant de les faire tourner dans les deux sens. Il utilise une configuration en pont en H, ce qui lui permet d'inverser la polarité de la tension appliquée au moteur et donc de changer son sens de rotation. Ce pilote peut supporter une tension d'alimentation allant jusqu'à 46 V et un courant continu de 2 A par canal, ce qui le rend adapté à de nombreuses applications.
Dans notre configuration, nous utiliserons quatre broches de commande pour piloter le moteur pas à pas. Les broches principales sontENAetENB, qui doit être réglé sur HIGH (5 V) pour activer le driver. Les brochesIN1,IN2,IN3, etIN4contrôlera les états des enroulements du moteur, lui permettant d'effectuer un pas dans la direction souhaitée.
Détails de la fiche technique
| Fabricant | STMicroelectronics |
|---|---|
| Numéro de pièce | L298N |
| Tension logique/E/S | 5 V |
| Tension d'alimentation | 5-46 V (VS) |
| Courant de sortie (par canal) | 2 A max par canal (en continu) |
| Courant de crête (par canal) | 3 A max |
| Recommandations de fréquence PWM | 1 kHz à 20 kHz |
| Seuils logiques d'entrée | 0,8 V (bas), 2,0 V (haut) |
| Chute de tension / RDS(on)/ saturation | 1,5 V max |
| Limites thermiques | 150 °C maximum |
| Paquet | DIP-15 |
| Notes / variantes | Disponible également en versions plates (L298P) |
- Assurer
ENAetENBsont connectés à 5 V pour un fonctionnement correct. - Utilisez un dissipateur thermique adéquat pour les applications à courant élevé afin d'éviter la surchauffe.
- Assurez une masse commune entre l'Arduino et le pilote de moteur.
- Faites attention à la polarité des connexions pour éviter d'endommager le moteur ou le contrôleur.
- Installez des condensateurs de découplage près des broches d'alimentation pour filtrer les parasites.
- Ajustez la fréquence PWM en fonction des spécifications du moteur pour des performances optimales.
Instructions de câblage

Pour câbler le pilote de moteur L298N à l'Arduino et au moteur pas à pas, commencez par brancher l'alimentation. Connectez leVINbroche sur le L298N à votre source d'alimentation 12 V. Ensuite, connectez leGNDbroche sur le L298N à la masse de votre alimentation et aussi à la masse de l'Arduino
Maintenant, pour les broches de commande, connectezENAsur la broche 2 de l'Arduino etENBà la broche 3. Ensuite, connectezIN1à la broche 8,IN2vers la broche 9,IN3à la broche 10, etIN4À la broche 11 de l'Arduino. Enfin, connectez les fils du moteur pas à pas aux bornes de sortie du L298N. Assurez-vous que les deux paires de fils du moteur sont correctement connectées aux sorties.
Exemples de code et guide pas à pas
Dans le code, nous incluons d'abord leStepper.hBibliothèque pour simplifier le contrôle du moteur pas à pas. Nous définissons le nombre total de pas par révolution, ce qui est crucial pour un mouvement précis. Les identifiants clés dans le code incluentstepsPerRevolution, qui définit le nombre de pas nécessaires pour une rotation complète, etmyStepper, qui initialise l'objet stepper avec les broches spécifiées.
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // initialize the stepper libraryCet extrait initialise le moteur pas à pas avec les broches appropriées. Dans lesetup()Dans la fonction, nous réglons la vitesse du moteur et activons le driver en mettant les broches 2 et 3 à HIGH.
void setup() {
myStepper.setSpeed(300); // set the speed at 60 rpm
pinMode(2,OUTPUT); // for EN1
digitalWrite(2,HIGH); // enable EN1
pinMode(3,OUTPUT); // for EN2
digitalWrite(3,HIGH); // enable EN2
}Dans leloop()La fonction fait effectuer au moteur une révolution dans le sens horaire, puis dans le sens antihoraire, avec un délai entre les deux. Cela vous permet d'observer le fonctionnement du moteur.
void loop() {
myStepper.step(stepsPerRevolution); // step one revolution in one direction
delay(500); // wait half a second
myStepper.step(-stepsPerRevolution); // step one revolution in the other direction
delay(500); // wait half a second
}Cet extrait montre comment contrôler le moteur pour qu'il tourne dans les deux sens. Le code complet est fourni ci-dessous dans l'article pour votre référence.
Démonstration / À quoi s'attendre
Une fois que tout est correctement câblé et que le code est téléchargé, vous devriez voir le moteur pas à pas effectuer une révolution complète dans un sens, puis une révolution complète dans le sens inverse. De plus, si vous intégrez le potentiomètre pour le contrôle de la vitesse, le fait de le régler modifiera la vitesse de rotation du moteur. Faites attention au courant du moteur ; à mesure que vous augmentez la vitesse, le moteur peut absorber davantage de courant, ce qui peut entraîner une surchauffe s'il n'est pas correctement géré (dans la vidéo à 09:45).
Si le moteur ne tourne pas comme prévu, vérifiez le câblage pour vous assurer que toutes les connexions sont bien fixées et correctement orientées. Vérifiez également que la tension d'alimentation est appropriée pour votre moteur pas à pas.
Horodatages vidéo
- 00:00- Introduction
- 01:30- Explication du câblage
- 05:00- Aperçu du code
- 09:45- Démonstration de la commande du moteur
/*
Stepper Motor Control - one revolution
This program drives a unipolar or bipolar stepper motor.
The motor is attached to digital pins 8 - 11 of the Arduino.
The motor should revolve one revolution in one direction, then
one revolution in the other direction.
Created 11 Mar. 2007
Modified 30 Nov. 2009
by Tom Igoe
Modified by Ahmad S. for Robojax.com
on May 19, 2018 at 19:31, in Ajax, Ontario, Canada
*/
#include <Stepper.h>
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
// set the speed at 60 rpm:
myStepper.setSpeed(300);
// initialize the serial port:
Serial.begin(9600);
// L298N for Robojax.com
pinMode(2,OUTPUT);// for EN1
digitalWrite(2,HIGH);// enable EN1
pinMode(3,OUTPUT);// for EN1
digitalWrite(3,HIGH); // enable EN2
}
void loop() {
// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
// L298N for Robojax.com
// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
}
/*
Stepper Motor Control - one step at a time
This program drives a unipolar or bipolar stepper motor.
The motor is attached to digital pins 8 - 11 of the Arduino.
The motor will step one step at a time, very slowly. You can use this to
test that you've got the four wires of your stepper wired to the correct
pins. If wired correctly, all steps should be in the same direction.
Use this also to count the number of steps per revolution of your motor,
if you don't know it. Then plug that number into the oneRevolution
example to see if you got it right.
Created 30 Nov. 2009
by Tom Igoe
Modified by Ahmad S. for Robojax.com
on May 19, 2018 at 19:31, in Ajax, Ontario, Canada
*/
#include <Stepper.h>
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
int stepCount = 0; // number of steps the motor has taken
void setup() {
// initialize the serial port:
Serial.begin(9600);
// L298N for Robojax.com
pinMode(2,OUTPUT);// for EN1
digitalWrite(2,HIGH);// enable EN1
pinMode(3,OUTPUT);// for EN1
digitalWrite(3,HIGH); // enable EN2
}
void loop() {
// step one step:
// L298N for Robojax.com
myStepper.step(-1);
Serial.print("steps:");
Serial.println(stepCount);
stepCount++;
delay(200);
}
Ce dont vous pourriez avoir besoin
-
Amazon
-
Amazon
Ressources et références
Aucune ressource pour le moment.
Fichiers📁
Aucun fichier disponible.