Contrôleur de moteur L293

 

circuits-diy.com-H Bridge Motor Driver Circuit L293D

 

IN1 à IN4 indique quel moteur et la direction
EN1 et EN2 indique la puissance (=vitesse), valeur de 0 à 255. Compte tenu de l’inertie, il est possible que la valeur de départ doivent être supérieure à 100.

On peut utiliser VCC et GND pour alimenter un Arduino.  VCC donne 5V avec le CI 7805 qui est sur la carte.  Maximum de 12V pour alimenter la carte.

 

 

//Exemple

//Pin de contrôle moteur/direction
int in1 = 10; //moteur a
int in2 = 11; // moteur a
int in3 = 12; // moteur b
int in4 = 13; // moteur b

/*
L= Low= 0 / H = High = 1
in1 in2 Le moteur a…
L H Tourne à droite
H L Tourne à gauche
H H Stop
L L Arrêt

in3 in4 Le moteur b…
L H Tourne à droite
H L Tourne à gauche
H H Stop
L L Arrêt

*/

// Pin de lecture de potentiomètre
int vres1 = A1;
int vres2 = A2;

// Les « Enable » qui permettent de contrôler la vitesse
int ena = 9;
int enb = 6;

// Variables pour les valeurs des potentiomètres
int valp1 = 0;
int valp2 = 0;

void setup() {

pinMode(ena, OUTPUT);
pinMode(enb, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(vres1, INPUT);
pinMode(vres2, INPUT);
}

void loop() {

// Lecture des potentiomètres
valp1 = analogRead(vres1);
valp2 = analogRead(vres2);

// Les 2 moteurs avancent avec la valeur de P1 pendant 3 sec.

moteur(valp1, LOW, HIGH, valp1, LOW, HIGH);

delay(3000);

// Les moteurs sont stoppés
moteur(valp1, LOW, LOW, valp1, LOW, LOW);

// Attente de 2 sec avant la nouvelle direction
delay(2000);

// Les 2 moteurs reculent avec la valeur de P2 pendant 3 sec.
moteur(valp1, HIGH, LOW, valp1, HIGH, LOW);
delay(3000);

// Les moteurs sont stoppés
moteur(valp1, LOW, LOW, valp1, LOW, LOW);
// Attente de 2 sec avant la nouvelle direction
delay(2000);

}

// Fonction de mise en marche des moteurs
void moteur(int valma, int i1,int i2,int valmb,int i3,int i4){

//Avant de mettre en fonction les moteurs on indique ce que l’on veut faire

digitalWrite(in1, i1);
digitalWrite(in2, i2);
digitalWrite(in3, i3);
digitalWrite(in4, i4);

//Mise en marche des moteurs à la vitesse déterminée par les potentiomètres

analogWrite(ena, valma);
analogWrite(enb, valmb);

}

Le code exemple en .txt :  TestL293