Bonjour, je m'appelle Paul et je suis un élève de PSI.
Mon TIPE consiste à asservir une grue suivant le modèle de Energy Vault en simplifiant grandement. Je dispose d'un banc réalisant un mouvement de translation horizontal, piloté par une carte Arduino UNO.
Ensuite, j'ai utilisé le montage suivant pour le mouvement de levage d'un poids fictif ( Source : Pilotez un moteur CC avec Arduino • AranaCorp ).
Mais en voulant piloter les 2 moteurs en même temps, je rencontre un problème de montage.
Je dispose du code suivant :
// C++ code
//
// Constantes
const int enableBridge1 = 8;
const int MotorForward1 = 10;
const int MotorReverse1 = 12;
const int enableBridge2 = 2;
const int MotorForward2 = 3;
const int MotorReverse2 = 5;
// Variables
int Power = 100; //Motor velocity between 0 and 255
void setup(){
pinMode(MotorForward1,OUTPUT);
pinMode(MotorReverse1,OUTPUT);
pinMode(enableBridge1,OUTPUT);
pinMode(MotorForward2,OUTPUT);
pinMode(MotorReverse2,OUTPUT);
pinMode(enableBridge2,OUTPUT);
}
void loop(){
digitalWrite(enableBridge1,HIGH); // Active pont en H
digitalWrite(enableBridge2,HIGH); // Active pont en H
// Fait tourner le moteur 1 dans le sens direct pendant 5 secondes
analogWrite(MotorForward1,Power);
analogWrite(MotorReverse1,0);
delay(5000);
//Arrête le moteur 1 pendant 3 secondes
analogWrite(MotorForward1,0);
analogWrite(MotorReverse1,0);
digitalWrite(enableBridge1,LOW);
delay(3000);
// Fait tourner le moteur 2 dans le sens direct pendant 5 secondes
analogWrite(MotorForward2,0);
analogWrite(MotorReverse2,Power);
delay(5000);
//Arrête le moteur pendant 2 secondes
analogWrite(MotorForward2,0);
analogWrite(MotorReverse2,0);
digitalWrite(enableBridge2,LOW);
delay(2000);
// Fait tourner le moteur 2 dans le sens indirect pendant 5 secondes
analogWrite(MotorForward2,0);
analogWrite(MotorReverse2,Power);
delay(4000);
//Arrête le moteur pendant 2 secondes
analogWrite(MotorForward2,0);
analogWrite(MotorReverse2,0);
digitalWrite(enableBridge2,LOW);
delay(2000);
// Fait tourner le moteur 1 dans le sens indirect pendant 5 secondes
analogWrite(MotorForward1,0);
analogWrite(MotorReverse1,Power);
delay(4000);
//Arrête le moteur pendant 2 secondes
analogWrite(MotorForward2,0);
analogWrite(MotorReverse2,0);
digitalWrite(enableBridge2,LOW);
delay(2000);
// Fait tourner le moteur 2 dans le sens direct pendant 5 secondes
analogWrite(MotorForward2,0);
analogWrite(MotorReverse2,Power);
delay(5000);
//Arrête le moteur pendant 2 secondes
analogWrite(MotorForward2,0);
analogWrite(MotorReverse2,0);
digitalWrite(enableBridge2,LOW);
delay(2000);
// Fait tourner le moteur 2 dans le sens indirect pendant 5 secondes
analogWrite(MotorForward2,0);
analogWrite(MotorReverse2,Power);
delay(4000);
//Arrête le moteur 2 pendant 2 secondes
analogWrite(MotorForward2,0);
analogWrite(MotorReverse2,0);
digitalWrite(enableBridge2,LOW);
delay(2000);
}
Mon but est de répéter ce mouvement ( ou de faire l'inverse) :
J'ai fait des recherches sur comment commander 2 moteurs simultanément et j'ai trouvé qu'il fallait un pont L298N, que j'ai acheté ( ainsi que des platines d'essai ).
J'ai pensé à l'utilisation de capteurs dans le montage mais ça serait rajouter des difficultés supplémentaires vu l'état des choses, ou même de boucle for/while.
Comment est-ce-que je pourrais réaliser un bon montage avec le pont L298N ?
(Et corriger le programme s'il n'est pas bon)
Je retourne au labo du lycée mardi et mercredi.
PS : Je n'ai pas pu insérer le lien menant au site d'Energy Vault car je suis un nouvel utilisateur