Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Dernière révision Les deux révisions suivantes | ||
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:30] damien.muti [Câblage] |
||
---|---|---|---|
Ligne 40: | Ligne 40: | ||
* [[https:// | * [[https:// | ||
* {{ : | * {{ : | ||
+ | |||
+ | {{ : | ||
+ | |||
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: | ||
{{ : | {{ : | ||
- | ==== Précaution d' | + | ==== Précaution d' |
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' | Une expérience montre qu' | ||
+ | |||
+ | A VOIR: Le facteur 64 peut aussi venir du paramètre stepsPerRevolution fixé lors de l' | ||
En pratique cela signifie que, si //rpm// est le paramètre d' | En pratique cela signifie que, si //rpm// est le paramètre d' | ||
Ligne 159: | Ligne 164: | ||
Le code Arduino est le suivant : {{ : | Le code Arduino est le suivant : {{ : | ||
+ | |||
+ | Une vidéo de test est disponible sur ce lien Youtube : [[https:// | ||
===== 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' | Voir aussi la documentation d' | ||
+ | |||
+ | ===== Moteur pas à pas 28BYJ-48 avec module de contrôle basé sur un UNL2003ARG ===== | ||
+ | ==== Matériel et tutoriels ==== | ||
+ | |||
+ | * Gotronic : [[https:// | ||
+ | |||
+ | |||
+ | |||
+ | ==== Câblage ==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ====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:// | ||
+ | |||
+ | < | ||
+ | |||
+ | ///////////////// | ||
+ | #define IN1 11 | ||
+ | #define IN2 10 | ||
+ | #define IN3 9 | ||
+ | #define IN4 8 | ||
+ | int Steps = 0; | ||
+ | int Direction = 0; | ||
+ | int number_steps = 512; //= 2048/ | ||
+ | int unTour = 518; // valeur expérimentale | ||
+ | int nTours = 2; | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | Serial.begin(9600); | ||
+ | pinMode(IN1, | ||
+ | pinMode(IN2, | ||
+ | pinMode(IN3, | ||
+ | pinMode(IN4, | ||
+ | // 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; | ||
+ | // stepper(1); | ||
+ | // } | ||
+ | // delay(500); | ||
+ | // for (int thisStep = number_steps; | ||
+ | // 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, | ||
+ | digitalWrite(IN2, | ||
+ | digitalWrite(IN3, | ||
+ | digitalWrite(IN4, | ||
+ | break; | ||
+ | case 1: | ||
+ | digitalWrite(IN1, | ||
+ | digitalWrite(IN2, | ||
+ | digitalWrite(IN3, | ||
+ | digitalWrite(IN4, | ||
+ | break; | ||
+ | case 2: | ||
+ | digitalWrite(IN1, | ||
+ | digitalWrite(IN2, | ||
+ | digitalWrite(IN3, | ||
+ | digitalWrite(IN4, | ||
+ | break; | ||
+ | case 3: | ||
+ | digitalWrite(IN1, | ||
+ | digitalWrite(IN2, | ||
+ | digitalWrite(IN3, | ||
+ | digitalWrite(IN4, | ||
+ | break; | ||
+ | case 4: | ||
+ | digitalWrite(IN1, | ||
+ | digitalWrite(IN2, | ||
+ | digitalWrite(IN3, | ||
+ | digitalWrite(IN4, | ||
+ | break; | ||
+ | case 5: | ||
+ | digitalWrite(IN1, | ||
+ | digitalWrite(IN2, | ||
+ | digitalWrite(IN3, | ||
+ | digitalWrite(IN4, | ||
+ | break; | ||
+ | case 6: | ||
+ | digitalWrite(IN1, | ||
+ | digitalWrite(IN2, | ||
+ | digitalWrite(IN3, | ||
+ | digitalWrite(IN4, | ||
+ | break; | ||
+ | case 7: | ||
+ | digitalWrite(IN1, | ||
+ | digitalWrite(IN2, | ||
+ | digitalWrite(IN3, | ||
+ | digitalWrite(IN4, | ||
+ | break; | ||
+ | default: | ||
+ | digitalWrite(IN1, | ||
+ | digitalWrite(IN2, | ||
+ | digitalWrite(IN3, | ||
+ | digitalWrite(IN4, | ||
+ | break; | ||
+ | } | ||
+ | delayMicroseconds(1000); | ||
+ | if (Direction == 1) { | ||
+ | Steps++; | ||
+ | } | ||
+ | if (Direction == 0) { | ||
+ | Steps--; | ||
+ | } | ||
+ | if (Steps > 7) { | ||
+ | Steps = 0; | ||
+ | } | ||
+ | if (Steps < 0) { | ||
+ | Steps = 7; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====Tutoriel ==== | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | |||
+ | |||
+ | ==== achat sur Amazon ==== | ||
+ | https:// | ||
===== Références ===== | ===== Références ===== | ||
Sites : | Sites : | ||
Ligne 237: | Ligne 397: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// |