Exercice

Vous pouvez également utiliser un driver L298N pour piloter un moteur à courant continu (ce driver peut également contrôler un moteur pas-à-pas), le montage est alors le suivant :

Le programme est alors le suivant :

1
//Ports de commande du moteur A
2
int motorA1 = 9; //In2
3
int motorA2 = 8; //In1
4
int enableA = 10; //ENA
5
6
//Ports de commande du moteur B
7
int motorB1 = 7; //In3
8
int motorB2 = 6; //Int4
9
int enableB = 5; //ENB
10
11
// Vitesse du moteur
12
int state = 0;
13
14
void setup() {
15
16
    pinMode(motorA1, OUTPUT);
17
    pinMode(motorA2, OUTPUT);
18
    pinMode(enableA, OUTPUT);
19
    pinMode(motorB1, OUTPUT);
20
    pinMode(motorB2, OUTPUT);
21
    pinMode(enableB, OUTPUT);
22
  
23
    Serial.begin(9600);
24
}
25
 
26
void loop() {
27
    if (Serial.available() > 0)
28
    {
29
      // Lecture de l'entier passé au port série
30
      state = Serial.parseInt();
31
32
      if (state > 0) // avant
33
      {
34
        digitalWrite(motorA1, HIGH); 
35
        digitalWrite(motorA2, LOW);
36
        digitalWrite(motorB1, HIGH); 
37
        digitalWrite(motorB2, LOW);
38
        Serial.print("Avant ");
39
        Serial.println(state);
40
      }
41
      else if (state < 0) // arrière
42
      {
43
        digitalWrite(motorA1, LOW); 
44
        digitalWrite(motorA2, HIGH);
45
        digitalWrite(motorB1, LOW); 
46
        digitalWrite(motorB2, HIGH);
47
        Serial.print("Arrière ");
48
        Serial.println(state);
49
      }
50
      else // Stop (freinage)
51
      {
52
        digitalWrite(motorA1, HIGH); 
53
        digitalWrite(motorA2, HIGH);
54
        digitalWrite(motorB1, HIGH); 
55
        digitalWrite(motorB2, HIGH);
56
        Serial.println("Stop");
57
      }
58
59
      // Vitesse du mouvement
60
      analogWrite(enablePin, abs(state));
61
    }
62
    delay(100);
63
}

Question 1 : En vous aidant d'internet, déterminez la puissance maximale des moteurs pouvant être piloté par ce driver

Solution

Le driver L298N supporte une tension d'entrée de 5 à 35V et un courant de pointe de 2A, pour une puissance de 20W en continu.

Ce composant possède un excellent rapport qualité/prix, puisqu'il ne coûte que quelques euros.

Soyez toujours vigilant sur vos choix de drivers, ils doivent être adaptés aux moteurs et à leur usage surtout selon ces critères :

  • tension admissible
  • courant de pointe
  • puissance moyenne

Question 2 : A quoi sert la pièce noire dotée d'ailettes directement vissée sur le pont H L298N ?

Solution

Il s'agit d'un dissipateur thermique, car la succession des commutations opérées par les transistors ou mosfets du pont H produit des arcs électriques qui induisent un réchauffement important du composant qu'il faut nécessairement dissiper pour garantir son intégrité. Ces commutations sont notamment nécessaires pour faire varier la tension aux bornes du moteur par le biais de la MLI ou du PWM. Ce type de commande de moteur est donc par nature énergivore et réduit significativement le rendement des circuits qui l'utilisent en raison de fortes pertes par effet joule. C'est pourquoi, il est parfois plus intéressant de faire varier la vitesse d'un moteur par transmission mécanique que par variation électrique.

Question 3 : Réalisez le montage, téléversez le code et constatez le fonctionnement

Solution

Si tout fonctionne correctement, vous pourrez en entrant des variables comprises entre -255 et +255 dans le moniteur série faire aller les deux moteurs dans un sens ou dans un autre avec une vitesse proportionnelle à la valeur positive ou négative que vous aurez rentrée (+/-255=max, +/-1=min).

Si vous observez un disfonctionnement :

  • vérifiez l'alimentation électrique
  • vérifiez que les broches de la carte Arduino sont reliées au bonnes broches du L298N
  • intervertissez les broches des moteurs si vous observez des rotations inversées par rapport à vos attentes
  • changez le L298N si rien ne se passe