fbpixel
Étiquettes : ,
3.3
(17)

Le module L298N est une carte de développement basé sur le circuit intégré L298N permettant le pilotage de moteur à courant continu ou d’un moteur pas-à-pas. Nous avons déjà vu l’utilisation du pont en H. Il peut être trouvé sous forme de module pratique à utiliser avec des performances différentes selon les composants utilisés. Nous allons voir dans ce tutoriel l’utilisation du module L298N avec un microcontrôleur Arduino.

Matériel

  • Ordinateur
  • Arduino UNO (ou autre microcontrôleur)
  • Câble USB A Mâle/B Mâle
  • Module L298N

Principe de fonctionnement

Le module L298N est basé sur le circuit intégré du même nom. Le circuit L298N est un double pont en H permettant de modifier la direction et l’intensité de la tension au borne de deux charges électriques.
Les caractéristiques du module L298N sont:

  • Pilotage de moteur de tension nominale de 5 à 35V
  • 2A courant maximum (peak)
  • Tension 5V acceptées sur les broches Input

N.B.: le module L298N possèdent un régulateur de tension 78M05 calibré pour délivrer 5V 500mA

Schéma de câblage

Le module L298N est alimenté par une source de tension externe. Chaque demi-pont nécessite 3 broches de sortie d’un microcontrôleur.

  • GND masse du circuit intégré relié à la masse du microcontrôleur et à la masse de l’alimentation
  • ENA enable du moteur M1 reliée à la broche 2
  • Input1 direction avant du moteur M1 reliée à la broche 3
  • Input2 direction arrière du moteur M1 reliée à la broche 5
  • ENB enable du moteur M2 reliée à la broche 4
  • Input3 direction avant du moteur M2 reliée à la broche 6
  • Input4 direction arrière du moteur M2 reliée à la broche 9

Sur certains modèles de ce module, il est possible de rajouter deux jumpers pour connecter directement les broches enable (ENA et ENB) au 5V. Ceci permet de toujours activer le pont en H et d’économiser deux sorties du microcontrôleur

Code de gestion du module L298N

Pour utiliser le module L298N, il faut activer le demi pont en H en appliquant une tension 5V sur la broche EN. Puis, il faut envoyer un signal PWM sur la broche Avant(Input1/4) ou Arrière(Input2/3) pour piloter la direction et la vitesse de rotation. Les sens de rotation Avant ou Arrière dépendent du sens du branchement du moteur.

//Constants
#define nbL298N 2

//Parameters
const int enaL298NPin[2] = {2, 4};
const int fwdL298NPin[2] = {3, 5};
const int bwdL298NPin[2] = {6, 9};

//Variables
int Power = 200;


void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init DCmotor
  for (int i = 0; i < nbL298N; i++) {
    pinMode(fwdL298NPin[i], OUTPUT);
    pinMode(bwdL298NPin[i], OUTPUT);
    pinMode(enaL298NPin[i], OUTPUT);
  }
}

void loop() {
  testL298N();
}

void testL298N() { /* function testL298N */
  ////Scenario to test H-Bridge
  //Forward
  for (int i = 0; i < nbL298N; i++) {
    digitalWrite(enaL298NPin[i], HIGH);
    analogWrite(bwdL298NPin[i], 0);
    for (int j = 0; j <= Power; j = j + 10) {
      analogWrite(fwdL298NPin[i], j);
      delay(20);
    }
    for (int j = Power; j >= 0; j = j - 10) {
      analogWrite(fwdL298NPin[i], j);
      delay(20);
    }
    delay(2000);
  }
  //Backward
  for (int i = 0; i < nbL298N; i++) {
    digitalWrite(enaL298NPin[i], HIGH);
    analogWrite(fwdL298NPin[i], 0);
    for (int j = 0; j <= Power; j = j + 10) {
      analogWrite(bwdL298NPin[i], j);
      delay(20);
    }
    for (int j = Power; j >= 0; j = j - 10) {
      analogWrite(bwdL298NPin[i], j);
      delay(20);
    }
    delay(2000);
  }
}

Résultat

Une fois le code téléversé, vous devriez voir les moteurs tourner dans un sens puis dans l’autre.

Applications

  • Piloter la vitesse et le sens de rotation de deux moteurs CC ou d’un moteur pas-à-pas

Sources

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

How useful was this post?

Click on a star to rate it!

Average rating 3.3 / 5. Vote count: 17

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?