Piloter des moteurs CC avec un Arduino et un L298N
Dans cet article, nous vous montrons comment contrôler deux moteurs CC avec un Arduino et un module L298N. Le module L298N est la solution la plus simple pour piloter deux moteurs pour un robot Arduino mobile.
Avec le module L298N, vous pouvez contrôler deux moteurs à courant continu indépendamment l'un de l'autre et dans les deux sens.
Vous pouvez également connecter quatre moteurs simultanément et les commander par paires. Le module L298N est composé d'un double pont en H et convient parfaitement pour les projets de robotique et les voitures télécommandées. Le module L298N permet également de contrôler un moteur pas à pas, mais cela ne sera pas abordé dans ce guide.
Composants nécessaires :
- Carte compatible Arduino UNO + câble USB
- 2 moteurs CC
- Au moins 4 câbles Dupont femelle-mâle
- Alimentation CC 5-12 V
Fonctionnement
Commande du module L298N
Vous connectez le premier moteur à OUT1 et OUT2, et le deuxième à OUT3 et OUT4. Pour faire tourner le premier moteur dans un sens, appliquez un signal HIGH sur IN1 et LOW sur IN2, ces broches correspondent à OUT1 et OUT2 en sortie. Pour inverser le sens, inversez les signaux. Le même principe s'applique pour le deuxième moteur.
Voici le détail de la commande pour deux moteurs :
| IN1 | IN2 | IN3 | IN4 | Direction |
| 0 | 0 | 0 | 0 | Arrêt |
| 1 | 0 | 1 | 0 | Avant |
| 0 | 1 | 0 | 1 | Arrière |
| 1 | 0 | 0 | 1 | Gauche |
| 0 | 1 | 1 | 0 | Droite |
Contrôle de la vitesse
Pour réguler la vitesse, le module dispose des broches ENA et ENB. Ces broches sont commandées par PWM et ajustent la rotation des moteurs en fonction de la durée des impulsions. Plus l'impulsion est large, plus le moteur tourne vite. La largeur d'impulsion exacte varie selon le moteur, même pour des modèles identiques – il faut donc expérimenter.
Alimentation électrique
Pour l'alimentation des microcontrôleurs, le module dispose d'une sortie 5V, qui est alimentée tant que le cavalier 12V est en place. Si la tension d'entrée dépasse 12V, vous devez retirer le cavalier 12V. Cela active l'alimentation du convertisseur de tension 5V intégré. Sur la borne 12V, vous pouvez appliquer une tension d'entrée de CC 7V à 35V.
Schéma de connexion
| L298N | Arduino |
| ENA | 10 |
| ENB | 5 |
| IN1 | 9 |
| IN2 | 8 |
| IN3 | 7 |
| IN4 | 6 |
La connexion de l'alimentation électrique peut être adaptée en fonction de la situation. Vous pouvez connecter le module soit à l'Arduino, soit séparément, soit à une alimentation électrique.
Afficher / masquer le code
// Connexions des moteurs
// Vous pouvez modifier librement l'affectation des broches ici
#define EnA 10
#define EnB 5
#define In1 9
#define In2 8
#define In3 7
#define In4 6
void setup() {
// Déclarer les broches comme sorties
pinMode(EnA, OUTPUT);
pinMode(EnB, OUTPUT);
pinMode(In1, OUTPUT);
pinMode(In2, OUTPUT);
pinMode(In3, OUTPUT);
pinMode(In4, OUTPUT);
}
void avancer() { // faire tourner les deux moteurs vers l'avant
// Activer le moteur A
digitalWrite(In1, HIGH);
digitalWrite(In2, LOW);
// Vitesse 150 sur un maximum de 255
analogWrite(EnA, 200);
// Activer le moteur B
digitalWrite(In3, HIGH);
digitalWrite(In4, LOW);
// Vitesse 150 sur un maximum de 255
analogWrite(EnB, 200);
delay(2000);
// Éteindre tous les moteurs
digitalWrite(In1, LOW);
digitalWrite(In2, LOW);
digitalWrite(In3, LOW);
digitalWrite(In4, LOW);
}
void loop() {
avancer();
delay(1000);
}