Outils pour utilisateurs

Outils du site


wiki:tutoriels:arduino:moteur-pas-a-pas

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
wiki:tutoriels:arduino:moteur-pas-a-pas [2020/11/10 13:48]
damien.muti [Moteur unipolaire pas à pas 28BYJ-48]
wiki:tutoriels:arduino:moteur-pas-a-pas [2022/06/21 15:31] (Version actuelle)
damien.muti [Câblage]
Ligne 234: Ligne 234:
 Voir aussi la documentation d'Arduino : [[https://www.arduino.cc/en/Tutorial/LibraryExamples/StepperOneRevolution|Stepper One Revolution]]. Voir aussi la documentation d'Arduino : [[https://www.arduino.cc/en/Tutorial/LibraryExamples/StepperOneRevolution|Stepper One Revolution]].
  
 +
 +===== Moteur pas à pas 28BYJ-48 avec module de contrôle basé sur un UNL2003ARG =====
 +==== Matériel et tutoriels ====
 +
 +  * Gotronic : [[https://www.gotronic.fr/art-moteur-pas-a-pas-driver-stp01-23568.htm|Moteur pas-à-pas + driver STP01]]
 +
 +
 +
 +==== Câblage ====
 +
 +{{ :wiki:tutoriels:arduino:stepper-28byj48-arduino-wiring.png?600 |}}
 +
 +
 +====Programme Arduino====
 +Le programme de test consiste à effectuer des Aller et Retour de 360° ad vitam æternam. Le programme se trouve sur le site [[https://www.aranacorp.com/fr/pilotez-un-moteur-pas-a-pas-avec-arduino/| Anacorp]]. Téléchargeable ici : {{ :wiki:tutoriels:arduino:moteur_pas_a_pas_module_commande_ntours.zip |}}
 +
 +<code>
 +
 +///////////////// MOteur pas à pas 
 +#define IN1  11
 +#define IN2  10
 +#define IN3  9
 +#define IN4  8
 +int Steps = 0;
 +int Direction = 0;
 +int number_steps = 512; //= 2048/  : 512 pas correspond à un tour complet...
 +int unTour = 518; // valeur expérimentale
 +int nTours = 2;
 +
 +void setup()
 +{
 +  Serial.begin(9600);
 +  pinMode(IN1, OUTPUT);
 +  pinMode(IN2, OUTPUT);
 +  pinMode(IN3, OUTPUT);
 +  pinMode(IN4, OUTPUT);
 +  // delay(1000);
 +
 +  // calcul du nombre de pas relatif à nTours
 +  number_steps = nTours * unTour;
 +}
 +void loop()
 +{
 +  //1 rotation counter clockwise
 +  stepper(number_steps);
 +  delay(500);
 +  //1 rotation clockwise
 +  stepper(-number_steps);
 +  delay(500);
 +//  //Keep track of step number
 +//  for (int thisStep = 0; thisStep < number_steps; thisStep++) {
 +//    stepper(1);
 +//  }
 +//  delay(500);
 +//  for (int thisStep = number_steps; thisStep > 0; thisStep--) {
 +//    stepper(-1);
 +//  }
 +//  delay(500);
 +}
 +
 +
 +void stepper(double nbStep) {
 +  if (nbStep >= 0) {
 +    Direction = 1;
 +  } else {
 +    Direction = 0;
 +    nbStep = -nbStep;
 +  }
 +  for (int x = 0; x < nbStep * 8; x++) {
 +    switch (Steps) {
 +      case 0:
 +        digitalWrite(IN1, LOW);
 +        digitalWrite(IN2, LOW);
 +        digitalWrite(IN3, LOW);
 +        digitalWrite(IN4, HIGH);
 +        break;
 +      case 1:
 +        digitalWrite(IN1, LOW);
 +        digitalWrite(IN2, LOW);
 +        digitalWrite(IN3, HIGH);
 +        digitalWrite(IN4, HIGH);
 +        break;
 +      case 2:
 +        digitalWrite(IN1, LOW);
 +        digitalWrite(IN2, LOW);
 +        digitalWrite(IN3, HIGH);
 +        digitalWrite(IN4, LOW);
 +        break;
 +      case 3:
 +        digitalWrite(IN1, LOW);
 +        digitalWrite(IN2, HIGH);
 +        digitalWrite(IN3, HIGH);
 +        digitalWrite(IN4, LOW);
 +        break;
 +      case 4:
 +        digitalWrite(IN1, LOW);
 +        digitalWrite(IN2, HIGH);
 +        digitalWrite(IN3, LOW);
 +        digitalWrite(IN4, LOW);
 +        break;
 +      case 5:
 +        digitalWrite(IN1, HIGH);
 +        digitalWrite(IN2, HIGH);
 +        digitalWrite(IN3, LOW);
 +        digitalWrite(IN4, LOW);
 +        break;
 +      case 6:
 +        digitalWrite(IN1, HIGH);
 +        digitalWrite(IN2, LOW);
 +        digitalWrite(IN3, LOW);
 +        digitalWrite(IN4, LOW);
 +        break;
 +      case 7:
 +        digitalWrite(IN1, HIGH);
 +        digitalWrite(IN2, LOW);
 +        digitalWrite(IN3, LOW);
 +        digitalWrite(IN4, HIGH);
 +        break;
 +      default:
 +        digitalWrite(IN1, LOW);
 +        digitalWrite(IN2, LOW);
 +        digitalWrite(IN3, LOW);
 +        digitalWrite(IN4, LOW);
 +        break;
 +    }
 +    delayMicroseconds(1000);
 +    if (Direction == 1) {
 +      Steps++;
 +    }
 +    if (Direction == 0) {
 +      Steps--;
 +    }
 +    if (Steps > 7) {
 +      Steps = 0;
 +    }
 +    if (Steps < 0) {
 +      Steps = 7;
 +    }
 +  }
 +}
 +</code>
 +
 +
 +====Tutoriel ====
 +
 +  * https://www.aranacorp.com/fr/pilotez-un-moteur-pas-a-pas-avec-arduino/
 +  * https://www.youtube.com/watch?v=ThJ6nTEJG-U
 +
 +
 +
 +==== achat sur Amazon ====
 +https://www.amazon.fr/gp/product/B07VGV1XFT/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1
 ===== Références ===== ===== Références =====
 Sites : Sites :
Ligne 244: Ligne 396:
   * [[https://youtu.be/ThJ6nTEJG-U|U=RI ]]   * [[https://youtu.be/ThJ6nTEJG-U|U=RI ]]
   * [[https://youtu.be/IJ0WSn7Oj9s|Retro Geek]]   * [[https://youtu.be/IJ0WSn7Oj9s|Retro Geek]]
 +  * [[https://www.youtube.com/watch?v=nPx2PWKQ4RQ|Utilisation pratique du driver A4988 pour un moteur bipôlaire]]
wiki/tutoriels/arduino/moteur-pas-a-pas.1605012513.txt.gz · Dernière modification: 2020/11/10 13:48 de damien.muti