• Post category:Uno
  • Commentaires de la publication :6 commentaires
  • Dernière modification de la publication :mars 13, 2022
  • Temps de lecture :1 min read

Moteur PAP + Driver TB6600 commandé par 2 boutons avec un Arduino (Exemple pour une rotonde en modélisme train) *

 

 

    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

Version IDE :

 

 

 

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);
}

 


 

Cet article a 6 commentaires

  1. Pairault Mickael

    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

    1. steven

      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,

  2. PAIRAULT Mickael

    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

  3. Pairault

    Bonjour, serait ce possible d avoir le code sans l interrupteur fin de course. Merci

  4. yves

    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

  5. Eric

    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

Laisser un commentaire