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: 2 107
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