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
Vous devez être connecté pour poster un commentaire.