L’Arduino est incapable, seul, d’alimenter deux moteurs à courant continu. Nous devons donc passer par une carte de puissance, qui permettra de commander les deux moteurs dans les deux sens de rotation et à des vitesses pouvant varier entre 0 tr/min et la vitesse maximale du moteur.

Caractéristiques :

– Intensité MAX = 2A ;
– Tension d’alimentation : 5 à 30V

Câblage

–> Ne pas brancher directement l’alimentation électrique.
–> Souder les fils au moteur si ce n’est pas encore fait
–> Pendant les phases d’essais, nous n’utiliserons pas de pile 9V, mais je vous conseille d’utiliser une alimentation stabilisée.

 

Programmation

Conseil : Si vous mettez en place un robot, monté sur un châssis, je vous conseille de tester le programme en surélevant ce châssis, afin que les roues ne touchent pas le sol. Vérifier la rotation des roues, Il se peut qu’elle soit inversée. Dans ce cas inverser le câblage du ou des moteurs concernés.

 

Programme 1 : Faire tourner les moteurs à vitesse constante.

Ce programme permet de :
– Faire tourner les deux moteurs dans un sens pendant 2s ;
– Arrêter les moteurs pendant 1s ;
– Faire tourner les deux moteurs dans l’autre sens pendant 2s ;
– Arrêter les moteurs pendant 1s. 

// Moteur 1
int IN1 = 5;
int IN2 = 6;

// Moteur 2
int IN3 = 10;
int IN4 = 11;

void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

void loop() {

  // Marche Avant
  digitalWrite(IN1, 1);
  digitalWrite(IN2, 0);
  digitalWrite(IN3, 1);
  digitalWrite(IN4, 0);

  // Attente 2s
  delay(2000);

  // Arrêt des moteurs
  digitalWrite(IN1, 0);
  digitalWrite(IN2, 0);
  digitalWrite(IN3, 0);
  digitalWrite(IN4, 0);

  // Attente 1s
  delay(1000);

  // Marche arrière
  digitalWrite(IN1, 0);
  digitalWrite(IN2, 1);
  digitalWrite(IN3, 0);
  digitalWrite(IN4, 1);

  // Attente 2s
  delay(2000);

  // Arrêt des moteurs
  digitalWrite(IN1, 0);
  digitalWrite(IN2, 0);
  digitalWrite(IN3, 0);
  digitalWrite(IN4, 0);

  // Attente 1s
  delay(1000);
}
Moteur double sens - L298

 

Programme 2 : Faire tourner les moteurs à différentes vitesses.

Il est possible de faire varier la vitesse de rotation des moteurs. Il faut donc utiliser des sorties PWM.

La variation de vitesse du moteur est gérée par la commande analogwrite.
La valeur qui est donnée ici par défaut est « 100 ». Cette valeur peut varier entre 0 et 255.

– 0 représente l’arrêt du moteur
– 255 la vitesse maximale du moteur.

// Moteur 1
int IN1 = 5;
int IN2 = 6;

// Moteur 2
int IN3 = 10;
int IN4 = 11;

void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

void loop() {
  // Marche Avant
  analogWrite(IN1, 100);
  digitalWrite(IN2, 0);

  analogWrite(IN3, 100);
  digitalWrite(IN4, 0);

  // Attente 2s
  delay(2000);

  // Arrêt des moteurs
  digitalWrite(IN1, 0);
  digitalWrite(IN2, 0);
  digitalWrite(IN3, 0);
  digitalWrite(IN4, 0);

  // Attente 1s
  delay(1000);

  // Marche arrière
  digitalWrite(IN1, 0);
  analogWrite(IN2, 100);
  digitalWrite(IN3, 0);
  analogWrite(IN4, 100);

  // Attente 2s
  delay(2000);

  // Arrêt des moteurs
  digitalWrite(IN1, 0);
  digitalWrite(IN2, 0);
  digitalWrite(IN3, 0);
  digitalWrite(IN4, 0);

  // Attente 1s
  delay(1000);
}
Gérer vitesse rotation des moteurs - L298