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/06 18:53]
damien.muti [Code 2 : tour complet et sens inverse - mesure de la période]
wiki:tutoriels:arduino:moteur-pas-a-pas [2022/06/21 15:31] (Version actuelle)
damien.muti [Câblage]
Ligne 40: Ligne 40:
   * [[https://components101.com/sites/default/files/component_datasheet/28byj48-step-motor-datasheet.pdf|sur le web : 28BYJ-48]]   * [[https://components101.com/sites/default/files/component_datasheet/28byj48-step-motor-datasheet.pdf|sur le web : 28BYJ-48]]
   * {{ :wiki:tutoriels:arduino:28byj48-step-motor-datasheet.pdf |En local : 28BYJ-48}}   * {{ :wiki:tutoriels:arduino:28byj48-step-motor-datasheet.pdf |En local : 28BYJ-48}}
 +
 +{{ :wiki:tutoriels:arduino:fiche_technique_moteur_pas_a_pas.png?400 |}}
 +
  
 Il est à noter que le couple de rotation de ce moteur est de **34.3mN.m** (à 120Hz). Il est à noter que le couple de rotation de ce moteur est de **34.3mN.m** (à 120Hz).
Ligne 52: Ligne 55:
 {{ :wiki:tutoriels:arduino-capteurs:pins_unl2004_1.png?400 |}} {{ :wiki:tutoriels:arduino-capteurs:pins_unl2004_1.png?400 |}}
  
-==== Précaution d'emploi ====+==== Précaution d'emploi (À vérifier) ====
 La datasheet du moteur 28BYJ-48 donne : La datasheet du moteur 28BYJ-48 donne :
   * Speed Variation Ratio (rapport de variation de vitesse) : 1/64    * Speed Variation Ratio (rapport de variation de vitesse) : 1/64 
Ligne 70: Ligne 73:
  
 Une expérience montre qu'avec le moteur 28BYJ-48 le paramètre //rpm// fixé à 200 entraîne une période de rotation T=9600ms, soit 2048 pas effectués en 9,600s. Ceci implique, par proportionnalité un rpm (nombre de pas par minute) de 12800. On remarque que cette valeur (12800) est 64 fois plus importante que le //rpm// fixé initialement comme paramètre d'entrée de la fonction myStepper.setSpeed(). On retrouve le rapport (1/64) précisé dans la datasheet concernant le "Speed Variation Ratio". Une expérience montre qu'avec le moteur 28BYJ-48 le paramètre //rpm// fixé à 200 entraîne une période de rotation T=9600ms, soit 2048 pas effectués en 9,600s. Ceci implique, par proportionnalité un rpm (nombre de pas par minute) de 12800. On remarque que cette valeur (12800) est 64 fois plus importante que le //rpm// fixé initialement comme paramètre d'entrée de la fonction myStepper.setSpeed(). On retrouve le rapport (1/64) précisé dans la datasheet concernant le "Speed Variation Ratio".
 +
 +A VOIR: Le facteur 64 peut aussi venir du paramètre stepsPerRevolution fixé lors de l'instanciation de la classe Stepper, au tout début du programme (voir Code2 ci-après). 
  
 En pratique cela signifie que, si //rpm// est le paramètre d'entrée de la méthode myStepper.setSpeed(), le nombre de coup par minute effectué par le système (arduino+moteur) est:  En pratique cela signifie que, si //rpm// est le paramètre d'entrée de la méthode myStepper.setSpeed(), le nombre de coup par minute effectué par le système (arduino+moteur) est: 
Ligne 159: Ligne 164:
  
 Le code Arduino est le suivant : {{ :wiki:tutoriels:arduino:stepper_speedcontrol_1.ino.zip |}} Le code Arduino est le suivant : {{ :wiki:tutoriels:arduino:stepper_speedcontrol_1.ino.zip |}}
 +
 +Une vidéo de test est disponible sur ce lien Youtube : [[https://youtu.be/qvqsy-rCk5o|Arduino - Moteur pas à pas 28BYJ-48 - Réglage de la vitesse de rotation]]
  
 ===== Code 2 : tour complet et sens inverse - mesure de la période ===== ===== Code 2 : tour complet et sens inverse - mesure de la période =====
Ligne 227: 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 237: 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.1604685193.txt.gz · Dernière modification: 2020/11/06 18:53 de damien.muti