SOMMAIRE ►
Motor Control Shield L293D Arduino. Jetons un coup d’œil à une extension très utile pour la carte Arduino Uno ou Mega, et examinons le schéma de connexion des servomoteurs, des moteurs pas à pas et des moteurs cc à cette carte. Vous pouvez également jeter un coup d’œil aux commandes utilisées dans la bibliothèque AFMotor.h, et essayer différents croquis pour contrôler les moteurs pas à pas et les moteurs CC sur l’Arduino.
Pour cette activité, nous aurons besoin:
- Arduino Uno / Arduino Mega
- motor shield L293D
- moteurs CC et servomoteurs
- moteur pas à pas
- fils de connexion
- librairie AFMotor.h
Matériel supplémentaire sur ce sujet:
Fonctionnement du shield L293D Arduino pinout, datasheet

Lors de la connexion de servo et de moteurs à l’Arduino via le L239D, différents ports sont utilisés auxquels d’autres périphériques ne peuvent être connectés. Par exemple, les ports numériques 9 et 10 sont utilisés pour les servos, et les ports 3 à 8 et 12 sont utilisés pour les moteurs pas à pas et les moteurs. Si vous voulez connecter autre chose, utilisez les ports 2 et 13 et les entrées analogiques, peuvent être utilisés comme sorties numériques.
Caractéristiques du Motor Shield L293D Arduino
- ncessite la bibliothèque AFMotor.h (télécharger la bibliothèque);
- possibilité de connecter 2 servomoteurs sur 5 volts;
- possibilité de connecter 2 moteurs pas à pas de 6 à 12 volts;
- connexion de jusqu’à 4 moteurs avec sens de rotation réversible;
- broches pour connecter l’alimentation externe des moteurs;
- motor Shield pour Arduino compatible avec les cartes Uno et Mega.
Comment brancher motor shield L293D Arduino Uno
Le motor shield l239d se connecte à l’Arduino très facilement – il est monté sur la carte UNO directement sur le dessus. Notez que sans une alimentation externe connectée à la Motor Shield, la logique et les moteurs fonctionneront sur 5 volts, ce qui n’est pas toujours suffisant. Par conséquent, la vitesse des moteurs à courant continu sera sensiblement différente lorsque la carte Arduino est connectée à l’ordinateur et à l’alimentation électrique.

Notez que même si vous avez réglé les moteurs pour qu’ils tournent à la même vitesse dans l’esquisse, ils peuvent en réalité tourner à des vitesses différentes – cela dépend de la vitesse du moteur lui-même, de la qualité de la boîte de vitesses et des roues. Après avoir connecté les moteurs à courant continu comme dans le schéma ci-dessus, chargez le programme suivant pour tester le fonctionnement du module avec un circuit intégré L293D.
Programme Arduino piloter moteurs cc avec L293D shield
#include "AFMotor.h" AF_DCMotor motor1(1); // création de l'objet "motor1" AF_DCMotor motor2(2); // création de l'objet "motor2" void setup() { motor1.setSpeed(255); motor1.run(RELEASE); motor2.setSpeed(255); motor2.run(RELEASE); } void loop() { motor1.run(FORWARD); motor2.run(FORWARD); motor1.setSpeed(255); motor2.setSpeed(255); delay(2000); // attend 2000 ms motor1.run(RELEASE); motor2.run(RELEASE); motor1.run(BACKWARD); motor2.run(BACKWARD); motor1.setSpeed(255); motor2.setSpeed(255); delay(2000); // attend 2000 ms motor1.run(RELEASE); motor2.run(RELEASE); }
Explication du code pour controleur moteurs avec L293D Arduino:
- chaque moteur cc doit avoir son propre nom unique AF_DCMotor motor1(1);
- la vitesse maximale des moteurs du programme est de 255.

La bibliothèque standard Servo.h est utilisée pour contrôler le servo Arduino, les servos eux-mêmes sont connectés aux sorties numériques 9 et 10 via des broches sur le bord de la carte. Seuls deux servos et deux moteurs pas à pas peuvent être connectés à la l239d. Le premier moteur pas à pas est connecté aux bornes M1 et M2 et le second aux bornes M3 et M4. Le schéma de câblage des moteurs vers le Motor Shield L293D est présenté ci-dessous.
Programme Arduino piloter servomoteurs avec L293D shield
#include "Servo.h" Servo servo; // création de l'objet "servo" void setup() { servo.attach(9); // attache le servo au pin spécifié } void loop() { servo.write(0); // demande au servo de se déplacer à cette position delay(1000); // attend 1000 ms entre changement de position servo.write(90); // demande au servo de se déplacer à cette position delay(1000); // attend 1000 ms entre changement de position servo.write(180); // demande au servo de se déplacer à cette position delay(1000); // attend 1000 ms entre changement de position }
Explication du code pour controleur servomoteurs L293D Arduino:
- la commande servo.attach(9); lie le servo à la sortie numérique 9 de l’Arduino;
- dans la fonction void loop() nous faisons tourner le servo-moteur de 0-90-180 degrés.

Compatible avec les carte Uno et Mega, le shield se place directement sur la carte Arduino. Les moteurs pas-à-pas sont branchés sur les borniers M1 à M4. Pour piloter les moteurs pas-à-pas nous allons utiliser la classe AF_Stepper dont les fonctions à connaitre sont: motor.setSpeed(vitesse) pour régler la vitesse et motor.step(nombre de pas, direction, algorithme) pour tourner d’un nombre de pas dans un sens ou dans l’autre.
Programme Arduino piloter moteur pas à pas L293D shield
#include "AFMotor.h" AF_Stepper stepper(48, 1); void setup() { } void loop() { for (byte i = 0; i <= 48; i++) { stepper.step(1, FORWARD, DOUBLE); delay(30); } for (byte i = 48; i >= 0; i--) { stepper.step(1, BACKWARD, DOUBLE); delay(30); } }
Conclusion. Le microcontrôleur Arduino permet à tout programmeur novice de construire des dispositifs et des projets d’automatisation complexes. L’utilisation de la Motor Shield peut être un complément utile à de nombreux projets Arduino, car elle vous permet de connecter simultanément 2 servo, 2 moteurs pas à pas et jusqu’à 4 moteurs à courant continu.








Bonjour, est il possible de piloter un moteur pas à pas 28BYJ-48 avec le shield L293D sachant que ce moteur a 5 fils
cordialement.