Prérequis :
Matériel :
- 1 x Carte Arduino Uno
- 1 x Driver TB6600
- 2 x Boutons
- 1 x Fin de course
- 1 x Alimentation 12v
- 1 x Moteur PAP bipolaire
- Fils de connexion
- 1 x Breadboard
Vidéo de démonstration :
Schéma de câblage :
Code :
#define dirPin 2
#define stepPin 3
#define boutonhoraire 4
#define boutonantihoraire 5
#define enabledmotor 6
#define capteurinit 7
int vitessemoteurinit = 4000; //Vitesse du moteur pendant initialisation
int vitessemoteur = 4000; //Vitesse du moteur
int angle = 15; //Angle de rotation souhaité par impulsion sur le bouton
int positioncible = (3200/(360/angle)); // Calcul du nombre d'impulsion à effectuer par rapport à l'angle demandé sachant que 3200 = 1 tour
void setup() {
Serial.begin(9600);
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
pinMode(enabledmotor, OUTPUT);
pinMode(boutonhoraire, INPUT_PULLUP);
pinMode(boutonantihoraire, INPUT_PULLUP);
pinMode(capteurinit, INPUT_PULLUP);
positioninit();
}
void loop() {
int etatboutonhoraire = digitalRead(boutonhoraire);
if (etatboutonhoraire == LOW){
digitalWrite(dirPin, LOW);
digitalWrite(enabledmotor, LOW);
for (int rotation=0; rotation <= positioncible; rotation++){
digitalWrite(stepPin, HIGH);
delayMicroseconds(vitessemoteur);
digitalWrite(stepPin, LOW);
delayMicroseconds(vitessemoteur);
}
etatboutonhoraire = digitalRead(boutonhoraire);
while(etatboutonhoraire == LOW){
etatboutonhoraire = digitalRead(boutonhoraire);
}
digitalWrite(enabledmotor, HIGH);
}
int etatboutonantihoraire = digitalRead(boutonantihoraire);
if (etatboutonantihoraire == LOW){
digitalWrite(dirPin, HIGH);
digitalWrite(enabledmotor, LOW);
for (int rotation=0; rotation <= positioncible; rotation++){
digitalWrite(stepPin, HIGH);
delayMicroseconds(vitessemoteur);
digitalWrite(stepPin, LOW);
delayMicroseconds(vitessemoteur);
}
etatboutonantihoraire = digitalRead(boutonantihoraire);
while(etatboutonantihoraire == LOW){
etatboutonantihoraire = digitalRead(boutonantihoraire);
}
digitalWrite(enabledmotor, HIGH);
}
}
void positioninit(){
int etatcapteurinit = digitalRead(capteurinit);
digitalWrite(dirPin, HIGH);
digitalWrite(enabledmotor, LOW);
while (etatcapteurinit == HIGH){
digitalWrite(stepPin, HIGH);
delayMicroseconds(vitessemoteurinit);
digitalWrite(stepPin, LOW);
delayMicroseconds(vitessemoteurinit);
etatcapteurinit = digitalRead(capteurinit);
}
digitalWrite(enabledmotor, HIGH);
}
Nombre de vues: 4 244
Bonjour, j ai essayer de reproduire votre montage, mais sans succes, Doit je supprimer le code concernant le contacteur fin de course si je ne l utiise pas. Pour ce qui est des branchements sur PUL-, DIR- et ENA – je vois pas comment les brancher. Pour le code dois je modifier en quoique ce soit certaine valeur. Merci
Bonjout
Effectivement, si vous ne disposez pas du fin course le montage ne marchera pas, car il a été codé avec .
Par contre le moteur devrait au moins tourner au début. Avez-vous bien disposé les petits switchs sur la carte ?
Cordialement,
le moteur tourne effectivement, je doit donc supprimer la dernier parti du code. Les petits switch sont off on off et off off on
merci
Bonjour, serait ce possible d avoir le code sans l interrupteur fin de course. Merci
Bonjour , j ai telecharge un prog similaire pour un pont tournant de rotonde mais lorsque je televerse il y a des messages d erreur , que je ne sais pas du tout reparer, Si je vous envois le code pourriez vous y remedier ?
si j utilise votre prog est il possible de remplacer le moteur pap par un 288Y 48 et son controleur sans avoir a réecrir les codes ; merci d avance Yves
Bonjour,
J’ai parcouru votre tuto avec intéret, mais je ne suis pas un expert dans le domaine.
Je rencontre un message d’erreur et ne sais pas a quoi cela ressemble.
Pouvez vous m’aider ?
Merci