> >

logo Arduino Utiliser un L293D pour moteur DC avec une Arduino

Si vous voulez contrôler un moteur à courant continu de faible puissance (max 0,6 A) dans les deux sens de rotation et faire de la variation de vitesse le shield moteur L293D est une bonne solution. L'interface moteur est équipée d'un circuit intégré L293D permettant de piloter deux moteurs à courant continu en inversant la vitesse de rotation ou pour réduire ou accélrer la vitesse du moteur. Voyons en détail les possibilités de ce module avec l'utilisation d'une interface Arduino.


1. Inversion du sens de rotation d'un moteur à courant continu
2. Inversion du sens de rotation avec Shield L293D
3. Variation de vitesse d'un moteur à courant continu (DC)
4. Projet simplifié : Porte de poulailler

Arduino 1. Inversion du sens de rotation d'un moteur à courant continu :

La problématique de l'inversion du sens de rotation du moteur à courant continu est qu'elle nécessite inverser le sens de la tension d'alimentation aux bornes directes du moteur.
Mais comment peut-on inverser l'alimentation d'un moteur de façon automatique et simple ?

Pour commander un moteur à courant continu dans les deux sens de rotation il suffit d'inverser le sens de son alimentation aux bornes du moteur.
Alimentation normale du moteur
Alimentation normale du moteur
Inversion de l'alimentation du moteur
Inversion de l'alimentation du moteur


Une solution est d'utiliser des relais permettant d'obtenir l'inversion, cette option est envisageable mais présente 3 inconvénients :
  • Le premier est que cette solution nécessite 4 relais pour inverser l'alimentation du moteur.
  • Le second est qu'il n'est pas possible de faire de la variation de vitesse avec les relais.

Le montage ci-contre permet de commander dans les deux sens de rotation un moteur à courant continu, on l'appelle le pont en H.
Pourquoi ce nom, tout simplement par la forme du circuit de commande en forme de lettre H (relais+moteur).
Pont en H avec relais
Origine du nom pont en H

Le montage fonctionne de la manière suivante :
• Pour être à l'arrêt il faut que tous les relais soient ouverts.
• Pour le sens de marche normal il faut fermer les relais K1 et K4.
• Pour le sens inverse il faut fermer les relais K2 et K3.
Commande moteur courant continu avec relais
Inversion du sens de rotation du moteur à courant continu avec relais
Attention !! Une mauvaise gestion des relais peut provoquer un court-circuit de l'alimentation , si les relais K1 et K2 sont fermés en même temps ou les relais K3 et K4.

Afin de faciliter la commande d'un moteur à courant continu (sens et vitesse) je vais utiliser un module contenant le composant L293D : Mini 4-Channel Motor Drive Shield L293D.

Le module est équipé d'un circuit intégré L293D. Ce dispositif permet de piloter 2 moteurs à courant courant continu dans les deux sens de rotation et pour faire de la variation de vitesse.
Cette interface accepte une tension d'alimentation allant de 4,5V à 25V et une intensité maximale par moteur de 0,6A (600mA).
Il est équipé de diodes de roue libres (anti retour) permettant de protéger les transistors servant à la commande du ou des moteurs.
Shield moteur à courant continu L293D
Module pour deux moteurs à courant continu L293D.

Le circuit intégré L293D permet la commande de deux moteurs, il est équipé de 16 broches.
Circuit intégré L293D
Circuit intégré L293D.
Broches du circuit intégré L293D
Broches du CI L293D
Il est équipé d'un pont en H permettant l'inversion de sens de rotation du moteur n°1 avec les bornes IN1, IN2 et IN3, IN4 pour le moteur n°2.
Des bornes EN1 et EN2 permettent de recevoir les informations de vitesse pour réaliser une la variation de vitesse des moteurs n°1 et n°2.
Il faut au préalable enlever les cavaliers présents sur les les bornes EN1 et EN2 pour faire de la variation de vitesse et les raccorder à des bornes PWM d'une Arduino.
Schémas pour raccorder les moteurs
Schéma de raccordement des moteurs

Repérage borniers du Shield moteur DC L293D
Borniers du module L293D.

Datasheet du circuit intégré L293D :

Le shield motor intégre un circuit intégré L293D, vous trouverez ci-dessous le L293D Datasheet complet téléchargeable au format pdf :


Arduino 2. Inversion du sens de rotation avec Shield L293D :

Nous avons vu dans le chapitre précédent que le module L293D permettait d'inverser le sens de marche du moteur à courant continu.
Comment utiliser le Shield moteur L293D, le câbler au moteur, le raccorder à l'Arduino pour inverser le sens de rotation du moteur DC ?
Quel programme doit-on écrire dans l'Arduino pour provoquer cette inversion de rotation du moteur à courant continu ?

comment programmer et raccorder un Shield motor L293D ?

    2.1. Matériel nécessaire :

Pour l'étude je vais utiliser divers matériel et composants, vous pouvez les retrouver sur la boutique partenaire vs-elec.fr.
• Une Arduino Mega (la version Uno suffira mais j'utilise ce que j'ai déjà) et son câble USB.
• Un module L293D (Mini 4-Channel Motor Drive Shield L293D).
• Des conducteurs pour plaque d'essai ou fils de prototypage (mâle/mâle, mâle/femelle, femelle/femelle).
• Un moteur à courant continu récupéré dans une vieille imprimante à jet d'encre HP.
• Une pile 9V pour l'alimentation.
• Un adaptateur de Pile 9V.
• Une platine d'expérimentation ou plaque d'essai breadboard (Optionnel).
Matériel nécessaire pour réaliser l'inversion du sens de rotation du moteur
Matériel nécessaire pour l'expérimentation.


    2.2. Câblage du L293D pour l'inversion du sens de rotation :

Pour commander le moteur dans les deux sens de marche (normal et inverse) seulement les bornes (VIN, GND, A+, A-, VCC, IN1 et IN2) du module L293D seront utilisés.

Vue de dessus du L293D - Repérage des bornes pour l'inversion :

Repérage des bornes utilisées sur le L293D pour inverser la rotation moteur DC
L293D : Bornes utilisées pour faire l'inversion du sens de rotation du moteur


Schéma électrique du L293D pour l'inversion du sens :

Le schéma électrique ci-dessous présente les différentes bornes de câblage du module L293D et le moteur à courant continu repéré M1.
Schéma du circuit intégré L293D pour un seul moteur
L293D : Schéma électrique pour un seul moteur

Schéma de raccordement pour le câblage du L293D et de l'Arduino :

Pour les schémas de raccordement j'utilise une carte Arduino Mega, mais le principe reste le même avec tout autre version.
Pour le câblage, j'ai besoin de 8 conducteurs y compris l'adaptateur pour la pile 9V. J'utilise 3 couleurs du Rouge et Noir pour les différentes polarités (alimentations 5V, 9V et GND, sens rotation moteur) et deux conducteurs marrons pour la commande du moteur dans les deux sens.
Plan de raccordement de l'Arduino du CI L293D et du moteur
Plan de raccordement électrique


Programme de l'Arduino :

Le code ci-dessous est à taper dans le logiciel Arduino.exe.
Le programme permet de réaliser indéfiniment le cycle suivant :
• Le moteur tourne pendant 3 secondes dans le sens normal.
• Le moteur s'arrête pendant 3 secondes.
• Le moteur tourne pendant 3 secondes dans le sens inverse.

int Moteur_sens1 = 4; // Pin 4 Arduino vers broche A+ du L293D
int Moteur_sens2 = 5; // Pin 5 Arduino vers broche A- du L293D
void setup() {
// On définit les bornes 4 et 5 de l'Arduino en sorties digitales
pinMode(Moteur_sens1, OUTPUT); // Pin 4 Arduino en sortie digitale
pinMode(Moteur_sens2, OUTPUT); // Pin 5 Arduino en sortie digitale
}
void loop() {
// Le moteur tourne dans le sens normal
digitalWrite(Moteur_sens1, HIGH); // Activation de la broche A+ du L293D
digitalWrite(Moteur_sens2, LOW); // Désactivation de la broche A- du L293D
delay( 3000 ); // Attendre 3 secondes
// Le moteur est à l'arrêt
digitalWrite(Moteur_sens1, LOW); // Désactivation de la broche A+ du L293D
digitalWrite(Moteur_sens2, LOW); // Désactivation de la broche A- du L293D
delay( 3000 ); // Attendre 3 secondes
// Le moteur tourne dans le sens inverse
digitalWrite(Moteur_sens1, LOW); // Désactivation de la broche A+ du L293D
digitalWrite(Moteur_sens2, HIGH); // Activation de la broche A- du L293D
delay( 3000 ); // Attendre 3 secondes
// Le moteur est à l'arrêt
digitalWrite(Moteur_sens1, LOW); // Désactivation de la broche A+ du L293D
digitalWrite(Moteur_sens2, LOW); // Désactivation de la broche A- du L293D
delay( 3000 ); // Attendre 3 secondes
}
Grafcet de l'inversion du sens de rotation du moteur à partir du L293D
Grafcet de l'inversion du sens de rotation du moteur à partir du L293D

À partir de cette expérience, nous maîtrisons la commande dans les deux sens de marche du moteur à courant continu.
La prochaine étape si on veut gagner en précision de déplacement d'un objet va être de réaliser une variation de vitesse, pour augmenter ⬆️ ou diminuer ⬇️ la vitesse de rotation du moteur à courant continu.


Arduino 3. Variation de vitesse d'un moteur à courant continu (DC) :

Maintenant que vous savez inverser le fonctionnement du moteur à courant continu. Il peut vous être nécessaire de faire de la variation de vitesse pour gagner en précision lors du déplacement d'un objet. Le module moteur L293D propose cette possibilité vous permettant d'accélérer et de décélerer le moteur.
Comment câbler le Shield motor L293D et l'Arduino pour réaliser cette variation de vitesse ?
Quelle programme faut-il créer pour obtenir la variation de vitesse moteur à courant continu ?

    3.1. Matériel nécessaire :

Pour cette partie nous aurons besoin d'utiliser quasiment le même matériel que pour l'inversion du sens de marche du moteur, seuls quelques conducteurs supplémentaires seront à prévoir.
• Une Arduino et son câble USB.
• Un module L293D (Mini 4-Channel Motor Drive Shield L293D).
• Des conducteurs pour plaque d'essai ou fils de prototypage (mâle/mâle, mâle/femelle, femelle/femelle).
• Un moteur à courant continu.
• Une pile 9V pour l'alimentation.
• Un adaptateur de Pile 9V.
• Un potentiomètre permettant de faire varier la résistance.
• Une platine d'expérimentation ou plaque d'essai breadboard.
Matériel nécessaire pour faire varier la vitesse du moteur à courant continu
Matériel nécessaire pour l'expérimentation.




    3.2. Câblage du L293D pour la variation de vitesse :

Pour commander la vitesse de rotation du moteur, on utilisera la borne EN1 qui permettra d'augmenter ⬆️ ou de diminuer ⬇️ la vitesse du moteur quand elle sera reliée à une borne PWM de l'Arduino.
Pour avoir accès à cette borne et la relier à l'Arduino, il faut au préalable enlever le cavalier qui était présent, ce qui permettra de gérer la vitesse du moteur.

Vue de dessus du L293D - Repérage des bornes pour la vitesse :

Repérage des bornes utilisées sur le L293D pour la variation de vitesse
L293D : Bornes utilisées pour faire la variation de vitesse du moteur

Arduino 4. Projet simplifié : Porte de poulailler :

    4.1. Présentation :

Mon projet est de réaliser une porte automatique pour un poulailler.
Pour cela il faudra ouvrir et fermer une porte coulissante.
Dans cette partie de l'étude, je ne traiterai pas la détection porte ouverte ou porte fermée. Dans un premier temps j'utiliserai un temporisation correspondant au temps nécessaire à l'ouverture ou la fermeture de la porte.
J'utilise comme actionneur le moteur d'imprimante (courant continu) et le mécanisme du chariot permettant le déplacement des cartouches d'encres.


moteur courant continu c2162-60006
Moteur à courant continu C2162-60006
Imprimante HP démontée
Chariot de déplacement des cartouches de l'imprimante.
Ce moteur sera commandé dans les deux sens de rotation mais avec une tension d'alimentation de 12V correspondant à la tension d'une batterie.
Même si le fabricant indique que la tension d'alimentation du moteur doit être comprise entre 19 à 24V, des tensions inférieures permettront largement de faire tourner le moteur et de déplacer le chariot en translation.
Pour ne pas décapiter la poule, il faudra également une variation de vitesse, permettant de diminuer la vitesse de déplacement de la porte.
L'utilisation du circuit intégré L293D plutôt que des relais est intéressante car le shield moteur permet de faire diminuer la vitesse grâce à ses deux bornes 1 et 9 (PWM).


Si vous aimez les articles, n'hésitez pas à faire vos achats sur Amazon via ce lien, ils me permettront de recevoir une commission grâce au programme Partenaires Amazon EU.