Comprendre le composant L293D

Le composant L293D est un pont de puissance composé de plusieurs transistors et relais qui permet d’activer la rotation d’un moteur. Ce composant se trouve facilement sur Ebay et ne coûte pas très cher.

Le L293D est un double pont-H, ce qui signifie qu’il est possible de l’utiliser pour commander quatre moteurs distincts (dans un seul sens) grâce à ses 4 canaux.
Il est également possible de constituer deux pont-h afin de piloter deux moteurs distincts, dans les deux sens et indépendamment l’un de l’autre.

Il est important de noter que le L293D peut délivrer au maximum 600mA, veuillez donc choisir vos moteurs en conséquence.

Si vous avez besoin de plus d’informations, n’hésitez pas à consulter la documentation technique du composant L293D disponible ici.

Caractéristiques techniques du L293D

Voici les caractéristiques techniques du composant L293D:

  • Nbre de pont-H: 2
  • Courant Max Régime continu: 600mA (x2)
  • Courant de pointeMax < 2ms: 1200mA
  • VS Max Alim moteur: 36v
  • VSS Max Alim logique: 7v
  • Nbre de Broches: 16 DIP
  • Perte de tension: 1.3v

Branchement du L293D

Le schéma suivant détaille les différentes broches du composant L293D:

 

l293d pins

  1. Enable1: permet d’envoyer (ou pas) la tension sur les sorties du moteur via OUTPUT1 et OUTPUT2 et commande l’activation/désactivation du premier Pont-H. Si ENABLE1 = GND, le pont-H est déconnecté et le moteur ne fonctionne pas. Si ENABLE1 = VSS, le pont-H est connecté aux sorties et le moteur fonctionne dans un sens ou l’autre ou pas en fonction des tensions appliquée sur INPUT1 & INPUT2.
  2. Input1: avec Input 2, sont les broches de commande du Pont-H Output1/Output2. Il sera directement brancher à votre Arduino pour commander le sens du courant entre Output 1 et Output 2.
  3. Ouput1: avec Output 2, sera branché directement sur le moteur.
  4. GND: qui doit être raccorder à la masse de la source d’alimentation de puissance VS et à la masse de la source d’alimentation de la logique “VSS” (donc GND Arduino).
  5. Ouput2: avec Output 1, sera branché directement sur le moteur.
  6. Input2: avec Input 1, sont les broches de commande du Pont-H Output1/Output2. Il sera directement brancher à votre Arduino pour commander le sens du courant entre Output 1 et Output 2.
  7. VS: Alimentation de puissance des moteurs.
  8. Enable2: commande l’activation du second pont-H constitué de Output3/Output4
  9. Input3: avec Input 4, sont les broches de commande du Pont-H Output3/Output4. Il sera directement brancher à votre Arduino pour commander le sens du courant entre Output 3 et Output 4.
  10. Ouput3: avec Output 4, sera branché directement sur le moteur.
  11. GND
  12. GND
  13. Ouput4: avec Output 3, sera branché directement sur le moteur.
  14. Input4: avec Input 3, sont les broches de commande du Pont-H Output3/Output4. Il sera directement brancher à votre Arduino pour commander le sens du courant entre Output 3 et Output 4.
  15. VSS: Alimentation de la logique de commande (5V). A raccorder à la borne +5V de votre Arduino.

Veuillez noter que les pins Enable1 et Enable2  permettent moduler la vitesse du moteur en utilisant des broches PWM de votre Arduino. Si vous ne souhaitez pas moduler la vitesse du moteur DC, ilvous suffit de brancher Enable1 sur la broche VSS de votre Arduino.

Fonctionnement du L293D

Le tableau suivant vous permettra de faire fonctionner votre moteur DC en utilisant le composant L293D:

L293D Commands

Utilisation du L293D avec Arduino et 2 moteurs DC

Avec un seul pont L293D et un arduino on va être capable de piloter 2 moteurs à courant continu indépendamment l’un de l’autre. Si la puissance de vos moteurs est faible vous pourrez même utiliser le 5V en sortie de votre arduino pour alimenter vos moteurs DC.

Brochage du L293D avec 2 moteurs sous Arduino

L293D arduino motor

Schéma pour brancher 2 moteurs à un arduino

Arduino DC Motor

Code Arduino pour contrôler 2 moteurs

Source code    
int motor1_enablePin = 11; //pwm
int motor1_in1Pin = 13;
int motor1_in2Pin = 12;
 
int motor2_enablePin = 10; //pwm
int motor2_in1Pin = 8;
int motor2_in2Pin = 7;
 
void setup()
{
  //on initialise les pins du moteur 1
  pinMode(motor1_in1Pin, OUTPUT);
  pinMode(motor1_in2Pin, OUTPUT);
  pinMode(motor1_enablePin, OUTPUT);
 
  //on initialise les pins du moteur 2
  pinMode(motor2_in1Pin, OUTPUT);
  pinMode(motor2_in2Pin, OUTPUT);
  pinMode(motor2_enablePin, OUTPUT);
 
}
 
void loop()
{
 
  SetMotor2(175, true);
  SetMotor1(255, false);
 
}
 
//Fonction qui set le moteur1
void SetMotor1(int speed, boolean reverse)
{
  analogWrite(motor1_enablePin, speed);
  digitalWrite(motor1_in1Pin, ! reverse);
  digitalWrite(motor1_in2Pin, reverse);
}
 
//Fonction qui set le moteur2
void SetMotor2(int speed, boolean reverse)
{
  analogWrite(motor2_enablePin, speed);
  digitalWrite(motor2_in1Pin, ! reverse);
  digitalWrite(motor2_in2Pin, reverse);
}

 

Laisser un commentaire

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