Utiliser le L293D (Pont-H) pour contrôler 2 moteurs avec Arduino

L293D (Pont-H)

Qu’est-ce que le circuit intégré L293D

Le circuit intégré L293D est un contrôleur à 4 canaux capable de gérer des courants dans les deux sens jusqu’à 600 mA dans une large plage de tension allant de 4,5 V à 36 V. Il est spécialement conçu pour piloter des relais, des solénoïdes, des moteurs à courant continu, entre autres.

Ses dimensions compactes et son coût abordable en font un choix pratique à intégrer dans des projets avec Arduino et d’autres cartes de développement, offrant une solution efficace et économique pour le contrôle précis des moteurs et appareils similaires.

Le L293D est encapsulé dans un format connu sous le nom de DIP (Dual Inline Package), caractérisé par sa configuration rectangulaire comportant des broches des deux côtés de l’appareil.

Comment identifier les broches du L293D

L’identification correcte des broches du circuit intégré L293D est cruciale pour son bon fonctionnement. La première étape consiste à repérer l’encoche située à l’une de ses extrémités. La broche 1 est celle située à gauche. A partir de cette broche, la numérotation progresse dans le sens inverse des aiguilles d’une montre.

Quelles sont les fonctions des broches L293D ?

Activer les épingles :

1.2EN : active les canaux de contrôleur 1 et 2 (côté gauche) lorsque le code PIN est réglé sur HIGH.
3.4EN : Active les canaux de contrôleur 3 et 4 (côté droit) en réglant le code PIN sur l’état ÉLEVÉ.

Entrées du contrôleur :

1A, 2A, 3A, 4A : Elles correspondent aux entrées du contrôleur, utilisées pour recevoir les signaux de commande de l’Arduino.

Sorties du contrôleur :

1Y, 2Y, 3Y, 4Y : Ce sont les sorties du contrôleur vers les bornes du moteur.

Broches d’alimentation et de terre :

GND : Connexion à la terre et au dissipateur thermique.
VCC1 : Alimentation 5 V pour la logique interne.
VCC2 : Alimentation des moteurs, plage de 4,5 V à 36 V.

Matériel nécessaire pour piloter 2 moteurs avec Arduino

Pour ce projet, nous aurons besoin du matériel suivant :

1 Arduino Nano (ou Arduino Uno)
1 circuit intégré L293D
2 moteurs DC de 3 à 6 V
1 planche à pain
4 piles 1,5 V.
Câbles

Connexions physiques entre le L293D, l’Arduino et le moteur

Placez le circuit intégré L293D sur une planche à pain. Connectez la broche 1 (1,2EN) à la broche 10 de l’Arduino, puis reliez la broche 2 (1A) à la broche 3 de l’Arduino. Acheminez la broche 3 (1Y) vers l’une des bornes de l’un des moteurs et connectez les broches 4 et 5 au rail de masse (-) de la planche à pain. Reliez la broche 6 (2Y) à l’autre borne du moteur et reliez la broche 7 (2A) à la broche 5 de l’Arduino. Connectez la broche 8 (Vcc2) au pôle positif d’une alimentation 6V.

Ensuite, connectez la broche 9 (3.4EN) à la broche 11 de l’Arduino et la broche 10 (3A) à la broche 9 de l’Arduino. Acheminez la broche 11 (3Y) vers l’une des bornes de l’autre moteur et connectez les broches 12 et 13 au rail de masse de la planche à pain. Reliez la broche 14 (4Y) à l’autre borne du moteur et reliez la broche 15 (4A) à la broche 6 de l’Arduino. Connectez la broche 16 (Vcc1) à la broche 5V de l’Arduino.

Comment contrôler la rotation des deux moteurs en même temps

Les connexions effectuées attribuent les broches 3 et 5 de l’Arduino au contrôle de la rotation du moteur gauche, tandis que les broches 6 et 9 sont en charge du moteur droit. En manipulant l’état des broches entre LOW et HIGH, vous pouvez obtenir une rotation dans le même sens, dans le sens opposé ou maintenir l’une en marche pendant que l’autre s’arrête.

Ce niveau de contrôle sera essentiel pour notre prochain projet de véhicule autonome, où la manipulation des roues joue un rôle crucial dans la gestion de la direction.

Code pour faire tourner les deux moteurs vers l’avant

int leftA=3;
int leftB=5;
int rightA=6;
int rightB=9;
int enable12=10;
int enable34=11;
void setup() {
pinMode(leftA, OUTPUT);
pinMode(leftB, OUTPUT);
pinMode(rightA, OUTPUT);
pinMode(rightB, OUTPUT);
pinMode(enable12,OUTPUT);
pinMode(enable34,OUTPUT);
digitalWrite(leftA, LOW);
digitalWrite(leftB, LOW);
digitalWrite(rightA, LOW);
digitalWrite(rightB, LOW);
digitalWrite(enable12,HIGH);
digitalWrite(enable34,HIGH);
}
void loop() {
digitalWrite(leftA,LOW);
digitalWrite(leftB,HIGH);
digitalWrite(rightA,HIGH);
digitalWrite(rightB,LOW);}

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut