Passer au contenu principal Passer à la recherche Passer à la navigation principale
Menu

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

Ignorer la galerie de produits
Pilote de moteur L298N avec double pont en H Pilote de moteur L298N avec double pont en H – Image 2

Note moyenne de 4.95 sur 5 étoiles

(28)
Pilote de moteur L298N avec double pont en H
RBS10092

Disponible immédiatement

Prix régulier : A partir de 2,49 €
20
yourDroid UNO R3 carte de développement ATMEGA328P-PU compatible arduino yourDroid UNO R3 carte de développement ATMEGA328P-PU compatible arduino – Image 2

Note moyenne de 5 sur 5 étoiles

(6)
yourDroid UNO R3 carte de développement ATMEGA328P-PU compatible arduino
RBS14165

Disponible immédiatement

Prix de vente : A partir de 10,12 € Prix régulier : 12,65 €
Câbles jumper 40 broches femelle-mâle 20 cm

Note moyenne de 4.87 sur 5 étoiles

(30)
Câbles jumper 40 broches femelle-mâle 20 cm
RBS10038

Actuellement non disponible

Prix régulier : A partir de 1,09 €
Roue de robot / voiture avec moteur réducteur 1:48

Note moyenne de 4.43 sur 5 étoiles

(7)
Roue de robot / voiture avec moteur réducteur 1:48
RBS10407

Disponible immédiatement

Prix régulier : A partir de 1,49 €

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
0000Arrêt
1010Avant
0101Arrière
1001Gauche
0110Droite


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
ENA10
ENB5
IN19
IN28
IN37
IN46


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.

cliquez sur les images pour agrandir

1. Connexion avec alimentation électrique commune

2. Connexion avec alimentation séparée

3. Exemple avec potentiomètre

Avec ce montage, Vous pouvez contrôler la vitesse du moteur avec un potentiomètre. Voici le code Arduino avec potentiomètre

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);
}