Tutoriel Raspberry Pi
Module L298N : Contrôle de moteurs à courant continu


07 juillet 2019 • 7 • 4.9

Le Raspberry Pi est parfaitement adapté à de nombreux projets de robotique. Les moteurs sont largement utilisés dans ces types de projet. Dans ce tutoriel, nous allons voir comment contrôler jusqu'à deux moteurs à courant continu grâce au double pont H L298N.

Contrôler des moteurs CC avec un Raspberry Pi - Raspberry Lab

Il existe trois grandes catégories de moteurs :

Dans ce tutoriel, nous allons voir comment contrôler jusqu'à deux moteurs à courant continu grâce au double pont H L298N.
Avant de commencer, et pour bien comprendre comment le module fonctionne, voici une rapide présentation du pont H en électronique :

Information

Qu'est-ce qu'un pont en H en électronique ?

En électronique un pont en H est un circuit qui permet de faire passer le courant dans un sens ou dans l'autre à travers un dipôle. Ce genre de circuit est très utile pour choisir le sens de rotation d'un moteur. En effet, en inversant l'alimentation d'un moteur, celui-ci va changer de sens.

Schématiquement, voilà le principe de fonctionnement du pont H, qui résume l'explication ci-dessus.
A, B, C, D sont modélisés par des interrupteurs, dans la réalité, ce sont des transistors. Pour simplifier, un transistor est un interrupteur, de taille pouvant être nanoscopique, contrôlable par une impulsion électrique.

Schéma de fonctionnement d'un pont en H en électronique

Il suffit alors de contrôler les interrupteurs pour choisir le sens de rotation du moteur. C'est justement ce que fait le module L298N !

Prérequis

Pour contrôler des moteurs CC à l'aide d'un Raspberry Pi, il faut :

Une fois tous les éléments réunis, on peut passer au branchement.

Branchement du module

Voici pour commencer une vue du module L298N mettant en évidence ses entrées/sorties.

Module L298N avec entrées/sorties

Voici le branchement que je vous propose pour contrôler vos moteurs CC.


Schéma de branchement du module L289N sur Raspberry Pi 3 avec 2 moteurs
Schéma de branchement du module L289N sur Raspberry Pi 3 avec 1 moteur

Utilisation du module en Python

Maintenant que tout est branché correctement (ça fait pas mal de fils !), intéressons-nous au code. Le programme ci-dessous implémente les principales fonctions pour faire tourner dans un sens ou dans l'autre un moteur.
La commande du module est en fait très simple. Pour faire tourner le moteur 1 (resp. 2) dans un sens, on met IN1 sur 5V et IN2 sur 0V. Pour inverser le sens de rotation, il suffit d'inverser le 5V avec le 0V.

Gestion de la vitesse de rotation

Avant de terminer ce tutoriel, voyons comment contrôler la vitesse de nos moteurs. Pour faire varier la vitesse d'un moteur sans changer la tension d'entrée de ce dernier, on va "tricher" un peu. Plutôt que d'envoyer une tension continue au moteur (+VCC en permanence), on va délivrer une tension qui alterne entre +VCC et 0V.
On définit par rapport cyclique la division entre le temps haut et la période (temps haut + temps bas). Le rapport cyclique est donc une valeur comprise entre 0 et 1. Plus elle est proche de 1, plus le moteur tournera vite.

Schema explicatif rapport cyclique

Le moteur va donc être alimenté pendant un certain temps, donc se mettre à tourner, puis l'alimentation est coupée pendant un second temps. Grâce au principe d'inertie, le moteur n'a pas le temps de s'arrêter et va juste tourner de moins en moins vite.

En Python, l'objet PWM (Pulse Width Modulation) permet de faire varier le rapport cyclique de la sortie d'un GPIO. Appliqué à l'entrée Enable du moteur 1 par exemple, on gère la vitesse comme ceci :

La fréquence est à choisir en fonction du moteur utilisé. Essayer différentes valeurs pour trouver une valeur acceptable, c’est-à-dire une valeur pour laquelle le moteur ne fait pas d'à-coups (valeur de fréquence trop faible) mais tourne quand même sans faire trop de bruit (valeur de fréquence trop élevée).


Il ne reste plus qu'à utiliser tout ça pour divers projets de robotique !

A lire

Branchement caméra - présentation

Choisir et utiliser une caméra sur un Raspberry Pi


Branchement caméra - présentation

Obtenir la température avec une sonde DS18B20






Ce tutoriel vous a plu ?

starstarstarstarstar

4.9/5 | 11 votes




Commentaires

6 commentaires publiés.

gm, le 01/11/2020 à 18h16
Bonjour , je debute dans ce type d'activite. J'ai suivi scrupuleusement le montage et mis à part que je n'ai pas de jumper pour 'EN1' lorsque je branche ensemble le moins de la pile et le gnd du raspberry (hors tension) un temoin s'allume sur le raspberry est ce normal? merci d'avance pour votre aide et votre comprehension pour une question qui doit vous paraitre tres élémentaire
Raspberry Lab, le 02/11/2020 à 23h05
Bonsoir @gm,
j'imagine que le témoin qui s'allume sur le Raspberry Pi est le témoin rouge, qui correspond au témoin d'alimentation.

Deux choses :

  • Tant que les tensions cumulées des piles de dépasse pas 6V, aucun risque dans tous les cas (il y a peut être du courant qui rentre dans le Raspberry Pi, mais aucun soucis, on peut alimenter le Raspberry par les GPIO).

  • Si vous alimentez des gros moteurs (avec tension >6V), il sera judicieux d'utiliser un voltmètre pour mesurer la tension entre les bornes 5V et GND du module avant de les relier au Raspberry Pi, pour être sûr de ne pas envoyer du 30V au Raspberry Pi 😅



En espérant avoir répondu à vos interrogations,
Bonne continuation,
Raspberry Lab.
Simil27, le 20/09/2020 à 11h01
Pour les branchements des moteur comment on fait si on veut qu'il y ai 4 moteurs.
ghof , le 23/02/2020 à 23h16
Bonsoir
je veux connaitre est ce qu'on peut utiliser le module L298N pour varier un éclairage de 0 à 24 V et de courant 2 A car vous avez mentionnez ici qu'on peut utiliser ce module avec un moteur de 6 à 36 V et merci
Anthony, le 05/02/2020 à 13h34
Bonjour,

Auriez vous le code python svp pour activer les moteur, appeler la bibliothèque?

Anthony
Raspberry Lab, le 06/02/2020 à 15h55
Bonjour @Anthony,
Je n'ai pas bien compris la question...
Le code Python ci-dessus permet de faire tourner les moteurs, sans utilisation de bibliothèque, excepté GPIO.

Bonne journée,
RaspberryLab.


Commenter
Votre adresse mail ne sera pas visible sur le site.

Les commentaires sous soumis à vérification avant publication.