Site icon AranaCorp

Utilisation d’un module L298N avec Arduino

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

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:

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.

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

Sources

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

Quitter la version mobile