Bonjour !
Mon projet est de commander simultanément 2 vérins électriques grâce à une carte Arduino Uno. Pour cela je me suis procuré un motorshield Deek-Robot et une alimentation 24 V.
Mon code est le suivant :
const int moteurDirectionPinA = 12;
const int moteurVitessePinA = 3;
const int moteurFreinPinA = 9;
const int moteurDirectionPinB =6;
const int moteurVitessePinB =7;
const int moteurFreinPinB =11;
int k=0;
void setup() {
Serial.begin(9600);
// configuration du canal A
pinMode(moteurDirectionPinA, OUTPUT); // Broche arduino réservé pour le sens du moteur A
pinMode(moteurFreinPinA, OUTPUT); //Broche arduino réservée pour le freinage du moteur A
pinMode(moteurDirectionPinB, OUTPUT); // Broche arduino réservé pour le sens du moteur B
pinMode(moteurFreinPinB, OUTPUT); //Broche arduino réservée pour le freinage du moteur B
Sortie_verinA();
Rentree_verinB();
}
void loop() {
while (k<3) {
delay(10000); //attente de 1 secondes
ArretA();
ArretB();
delay(1000);
Rentree_verinA();
Sortie_verinB();
delay(10000); //attente de 1 secondes
ArretA();
delay(1000);
Sortie_verinA();
Rentree_verinB();
k=k+1;
}
}
//MOTEUR A//
void Rentree_verinA () {
Serial.println("Rentree_verin1");
digitalWrite(moteurDirectionPinA, HIGH); // le moteur A tourne dans le sens normal
digitalWrite(moteurFreinPinA, LOW); //desactivation du frein moteur A
analogWrite(moteurVitessePinA, 255); //vitesse maximale pour le moteur A
}
void Sortie_verinA () {
Serial.println("Sortie_verin1");
digitalWrite(moteurDirectionPinA, LOW); // le moteur A tourne dans le sens inverse
digitalWrite(moteurFreinPinA, LOW); //desactivation du frein moteur A
analogWrite(moteurVitessePinA, 255); //vitesse maximale pour le moteur A
}
void ArretA () {
Serial.println("\tArret1");
digitalWrite(moteurDirectionPinA, LOW);
digitalWrite(moteurFreinPinA, LOW);
analogWrite(moteurVitessePinA, 0);
}
// MOTEUR B//
void Rentree_verinB () {
Serial.println("Rentree_verin1");
digitalWrite(moteurDirectionPinB, HIGH); // le moteur B tourne dans le sens normal
digitalWrite(moteurFreinPinB, LOW); //desactivation du frein moteur B
analogWrite(moteurVitessePinB, 255); //vitesse maximale pour le moteur B
}
void Sortie_verinB () {
Serial.println("Sortie_verin1");
digitalWrite(moteurDirectionPinB, LOW); // le moteur B tourne dans le sens inverse
digitalWrite(moteurFreinPinB, LOW); //desactivation du frein moteur B
analogWrite(moteurVitessePinB, 255); //vitesse maximale pour le moteur B
}
void ArretB () {
Serial.println("\tArret1");
digitalWrite(moteurDirectionPinB, LOW);
digitalWrite(moteurFreinPinB, LOW);
analogWrite(moteurVitessePinB, 0);
}
En l'état seul le moteur A tourne et il réalise bien 3 aller-retours comme demandé dans le programme. La diode en sortie du motorshield ne s'allume que du côté A :
Mon multimètre indique qu'aucune tension ne passe du côté B
Est-ce un problème de câblage ?

