{"id":4188,"date":"2025-09-22T15:28:46","date_gmt":"2025-09-22T14:28:46","guid":{"rendered":"https:\/\/workboot.fr\/ciela\/?page_id=4188"},"modified":"2025-09-23T18:20:28","modified_gmt":"2025-09-23T17:20:28","slug":"moteurs-pas-a-pas","status":"publish","type":"page","link":"https:\/\/workboot.fr\/ciela\/moteurs-pas-a-pas\/","title":{"rendered":"Moteurs Pas \u00e0 Pas"},"content":{"rendered":"\n<nav aria-label=\"Table des mati\u00e8res\" class=\"wp-block-table-of-contents\"><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/moteurs-pas-a-pas\/#le-moteur-pas-a-pas-28byj-48-5v-stepper-motor\">Le moteur Pas \u00e0 Pas 28BYJ-48 \u2013 5V Stepper Motor<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/moteurs-pas-a-pas\/#l-amplificateur-ou-driver-uln2003\">L&rsquo;amplificateur ou DRIVER ULN2003<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/moteurs-pas-a-pas\/#on-cable-notre-moteur-avec-le-driver-uln2003\">On c\u00e2ble notre moteur avec le driver ULN2003<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/moteurs-pas-a-pas\/#version-1-simple-pas-par-pas\">Version 1: simple Pas par Pas<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/moteurs-pas-a-pas\/#version-2-mode-pas-complet-full-step-plus-de-couple\">Version 2: Mode Pas Complet (Full-Step) &#8211; Plus de couple<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/moteurs-pas-a-pas\/#version-3-pas-et-demi-pas\">Version 3: Pas et demi Pas<\/a><\/li><\/ol><\/nav>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"le-moteur-pas-a-pas-28byj-48-5v-stepper-motor\">Le moteur Pas \u00e0 Pas 28BYJ-48 \u2013 5V Stepper Motor<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ce moteur poss\u00e8de un r\u00e9ducteur 1\/64  avec des engrenages. pour qu&rsquo;il fasse un tour complet il faut 2048 pas.<\/p>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/09\/MOTPASAPAS.pdf\" type=\"application\/pdf\" style=\"width:100%;height:600px\" aria-label=\"Contenu embarqu\u00e9 MOTPASAPAS.\"><\/object><a id=\"wp-block-file--media-26547527-fb56-41ac-92c9-9dfe756d8996\" href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/09\/MOTPASAPAS.pdf\">MOTPASAPAS<\/a><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/09\/MOTPASAPAS.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-26547527-fb56-41ac-92c9-9dfe756d8996\">T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"l-amplificateur-ou-driver-uln2003\">L&rsquo;amplificateur ou DRIVER ULN2003<\/h2>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/09\/uln2003a.pdf\" type=\"application\/pdf\" style=\"width:100%;height:600px\" aria-label=\"Contenu embarqu\u00e9 uln2003a.\"><\/object><a id=\"wp-block-file--media-ff0a449b-5468-4dce-8eff-c282db78a2e9\" href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/09\/uln2003a.pdf\">uln2003a<\/a><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/09\/uln2003a.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-ff0a449b-5468-4dce-8eff-c282db78a2e9\">T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"on-cable-notre-moteur-avec-le-driver-uln2003\">On c\u00e2ble notre moteur avec le driver ULN2003<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pour donner plus d&rsquo;\u00e9nergie au bobines du moteur on utilise un ULN2003 (il peut \u00eatre aliment\u00e9 en +12V plus de p\u00eache !  ou un 5 V externe) mais par souci de simplifier les manipulations on va utiliser le 5V fournit par l&rsquo;USB , mais \u00e7a n&rsquo;est pas recommand\u00e9 dans un projet s\u00e9rieux. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>9<\/strong> de l&rsquo;arduino UNO sur IN1 (phase 1)<\/li>\n\n\n\n<li><strong>10<\/strong> de l&rsquo;arduino UNO sur IN2 (phase 2)<\/li>\n\n\n\n<li><strong>11<\/strong> de l&rsquo;arduino UNO sur IN3 (phase 3)<\/li>\n\n\n\n<li><strong>12<\/strong> de l&rsquo;arduino UNO sur IN4 (phase 4)<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/09\/PP1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"2950\" height=\"2647\" src=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/09\/PP1.png\" alt=\"\" class=\"wp-image-4218\" style=\"aspect-ratio:1.1144817401470632;width:576px;height:auto\"\/><\/a><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"version-1-simple-pas-par-pas\">Version 1: simple Pas par Pas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Code pour faire tourner dans le sens des aiguilles d&rsquo;une montre Pas par Pas<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Broches de l'Arduino connect\u00e9es au driver ULN2003\n#define IN1 9\n#define IN2 10\n#define IN3 11\n#define IN4 12\n\n\/\/ S\u00e9quence de pas pour faire tourner le moteur (mode \"wave drive\")\n\/\/ Cette s\u00e9quence active une bobine \u00e0 la fois\nint sequence[4][4] = {\n  {1, 0, 0, 0},  \/\/ \u00c9tape 1: Active la bobine 1\n  {0, 1, 0, 0},  \/\/ \u00c9tape 2: Active la bobine 2\n  {0, 0, 1, 0},  \/\/ \u00c9tape 3: Active la bobine 3\n  {0, 0, 0, 1}   \/\/ \u00c9tape 4: Active la bobine 4\n};\n\n\/\/ Temps d'attente entre chaque pas (en millisecondes)\n\/\/ R\u00e9duisez cette valeur pour augmenter la vitesse\nint delai = 10;\n\nvoid setup() {\n  \/\/ Configure les broches en sortie\n  pinMode(IN1, OUTPUT);\n  pinMode(IN2, OUTPUT);\n  pinMode(IN3, OUTPUT);\n  pinMode(IN4, OUTPUT);\n  \n  \/\/ Initialise le port s\u00e9rie pour le d\u00e9bogage\n  Serial.begin(9600);\n  Serial.println(\"Moteur pas \u00e0 pas 28BYJ-48 - Rotation horaire\");\n}\n\nvoid appliquerEtape(int etape) {\n  \/\/ Applique la configuration de l'\u00e9tape courante aux broches\n  digitalWrite(IN1, sequence[etape][0]);\n  digitalWrite(IN2, sequence[etape][1]);\n  digitalWrite(IN3, sequence[etape][2]);\n  digitalWrite(IN4, sequence[etape][3]);\n  \n  \/\/ Affiche l'\u00e9tape en cours sur le moniteur s\u00e9rie\n  Serial.print(\"\u00c9tape \");\n  Serial.println(etape + 1);\n}\n\nvoid loop() {\n  \/\/ Parcours les 4 \u00e9tapes de la s\u00e9quence dans l'ordre (sens horaire)\n  for(int etape = 0; etape &lt; 4; etape++) {\n    appliquerEtape(etape);\n    delay(delai);\n  }\n  \n  \/\/ Apr\u00e8s 100 tours, on marque une pause pour voir ce qui se passe\n  static unsigned long compteurPas = 0;\n  compteurPas++;\n  \n  if(compteurPas % 400 == 0) {  \/\/ Environ 1\/5 de tour\n    Serial.println(\"--- Pause de 2 secondes ---\");\n    delay(2000);\n  }\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"version-2-mode-pas-complet-full-step-plus-de-couple\">Version 2: Mode Pas Complet (Full-Step) &#8211; Plus de couple<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Broches de l'Arduino connect\u00e9es au driver ULN2003\n#define IN1 9\n#define IN2 10\n#define IN3 11\n#define IN4 12\n\n\/\/ S\u00e9quence FULL-STEP (4 \u00e9tapes) - Deux bobines activ\u00e9es simultan\u00e9ment\n\/\/ Plus de couple, moins fluide\nint sequenceFullStep[4][4] = {\n  {1, 1, 0, 0},  \/\/ \u00c9tape 1: Bobines 1 et 2 activ\u00e9es\n  {0, 1, 1, 0},  \/\/ \u00c9tape 2: Bobines 2 et 3 activ\u00e9es\n  {0, 0, 1, 1},  \/\/ \u00c9tape 3: Bobines 3 et 4 activ\u00e9es\n  {1, 0, 0, 1}   \/\/ \u00c9tape 4: Bobines 4 et 1 activ\u00e9es\n};\n\nint delai = 10;\nbool sensHoraire = true;  \/\/ true = horaire, false = anti-horaire\n\nvoid setup() {\n  pinMode(IN1, OUTPUT);\n  pinMode(IN2, OUTPUT);\n  pinMode(IN3, OUTPUT);\n  pinMode(IN4, OUTPUT);\n  \n  Serial.begin(9600);\n  Serial.println(\"Mode FULL-STEP - Deux bobines activ\u00e9es\");\n  Serial.println(\"Plus de couple, moins fluide\");\n}\n\nvoid appliquerEtape(int etape) {\n  digitalWrite(IN1, sequenceFullStep[etape][0]);\n  digitalWrite(IN2, sequenceFullStep[etape][1]);\n  digitalWrite(IN3, sequenceFullStep[etape][2]);\n  digitalWrite(IN4, sequenceFullStep[etape][3]);\n  \n  Serial.print(\"\u00c9tape \");\n  Serial.print(etape + 1);\n  Serial.print(\" : Bobines \");\n  if(sequenceFullStep[etape][0]) Serial.print(\"1 \");\n  if(sequenceFullStep[etape][1]) Serial.print(\"2 \");\n  if(sequenceFullStep[etape][2]) Serial.print(\"3 \");\n  if(sequenceFullStep[etape][3]) Serial.print(\"4 \");\n  Serial.println(\"actives\");\n}\n\nvoid loop() {\n  if(sensHoraire) {\n    \/\/ Sens horaire\n    for(int etape = 0; etape &lt; 4; etape++) {\n      appliquerEtape(etape);\n      delay(delai);\n    }\n  } else {\n    \/\/ Sens anti-horaire\n    for(int etape = 3; etape >= 0; etape--) {\n      appliquerEtape(etape);\n      delay(delai);\n    }\n  }\n  \n  \/\/ Changement de sens apr\u00e8s 100 cycles\n  static int compteur = 0;\n  compteur++;\n  if(compteur >= 100) {\n    compteur = 0;\n    sensHoraire = !sensHoraire;\n    Serial.println(sensHoraire ? \"\u2192 Sens HORAIRE\" : \"\u2190 Sens ANTI-HORAIRE\");\n    delay(1000);\n  }\n}\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"version-3-pas-et-demi-pas\">Version 3: Pas et demi Pas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mode Demi-Pas (Half-Step) &#8211; Plus fluide<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Broches de l'Arduino connect\u00e9es au driver ULN2003\n#define IN1 9\n#define IN2 10\n#define IN3 11\n#define IN4 12\n\n\/\/ S\u00e9quence HALF-STEP (8 \u00e9tapes) - Alternance 1 et 2 bobines\n\/\/ Plus fluide, plus de pr\u00e9cision (double la r\u00e9solution)\nint sequenceHalfStep[8][4] = {\n  {1, 0, 0, 0},  \/\/ \u00c9tape 1: Bobine 1 seule\n  {1, 1, 0, 0},  \/\/ \u00c9tape 2: Bobines 1 et 2\n  {0, 1, 0, 0},  \/\/ \u00c9tape 3: Bobine 2 seule\n  {0, 1, 1, 0},  \/\/ \u00c9tape 4: Bobines 2 et 3\n  {0, 0, 1, 0},  \/\/ \u00c9tape 5: Bobine 3 seule\n  {0, 0, 1, 1},  \/\/ \u00c9tape 6: Bobines 3 et 4\n  {0, 0, 0, 1},  \/\/ \u00c9tape 7: Bobine 4 seule\n  {1, 0, 0, 1}   \/\/ \u00c9tape 8: Bobines 4 et 1\n};\n\nint delai = 10;\nbool sensHoraire = true;\n\nvoid setup() {\n  pinMode(IN1, OUTPUT);\n  pinMode(IN2, OUTPUT);\n  pinMode(IN3, OUTPUT);\n  pinMode(IN4, OUTPUT);\n  \n  Serial.begin(9600);\n  Serial.println(\"Mode HALF-STEP - 8 \u00e9tapes par cycle\");\n  Serial.println(\"Plus fluide, plus de pr\u00e9cision\");\n}\n\nvoid appliquerEtape(int etape) {\n  digitalWrite(IN1, sequenceHalfStep[etape][0]);\n  digitalWrite(IN2, sequenceHalfStep[etape][1]);\n  digitalWrite(IN3, sequenceHalfStep[etape][2]);\n  digitalWrite(IN4, sequenceHalfStep[etape][3]);\n  \n  Serial.print(\"\u00c9tape \");\n  Serial.print(etape + 1);\n  Serial.print(\" : \");\n  \n  \/\/ Compte le nombre de bobines activ\u00e9es\n  int bobinesActives = 0;\n  if(sequenceHalfStep[etape][0]) bobinesActives++;\n  if(sequenceHalfStep[etape][1]) bobinesActives++;\n  if(sequenceHalfStep[etape][2]) bobinesActives++;\n  if(sequenceHalfStep[etape][3]) bobinesActives++;\n  \n  Serial.print(bobinesActives);\n  Serial.println(\" bobine(s) active(s)\");\n}\n\nvoid loop() {\n  if(sensHoraire) {\n    \/\/ Sens horaire\n    for(int etape = 0; etape &lt; 8; etape++) {\n      appliquerEtape(etape);\n      delay(delai);\n    }\n  } else {\n    \/\/ Sens anti-horaire\n    for(int etape = 7; etape >= 0; etape--) {\n      appliquerEtape(etape);\n      delay(delai);\n    }\n  }\n  \n  \/\/ Changement de sens apr\u00e8s 50 cycles\n  static int compteur = 0;\n  compteur++;\n  if(compteur >= 50) {\n    compteur = 0;\n    sensHoraire = !sensHoraire;\n    Serial.println(sensHoraire ? \"\u2192 Sens HORAIRE\" : \"\u2190 Sens ANTI-HORAIRE\");\n    delay(1000);\n  }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il existe une libraire Stepper.h disponible mais on ne sait pas comment cela fonctionne.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;Stepper.h>\n\/\/ 32 pas par tour, reducteur de 1\/64... Donc 32*64 pas pour 1 tour.\nint NbPas = 2048;\n\/\/pour un moteur de 200 pas par tour et brancher sur les broches 6, 9, 10 et 11\nStepper moteur(NbPas, 9, 11, 10, 6);\nvoid setup()\n{\n  moteur.setSpeed(10); \n}\n\nvoid loop()\n{\n\/\/Faire un tour = 2048 pas dans le sens 1\n  moteur.step(2048);\n  delay(2000);\n\/\/Faire un tour = 2048 pas dans le sens 2\n  moteur.step(-2048);\n  delay(2000);\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Le moteur Pas \u00e0 Pas 28BYJ-48 \u2013 5V Stepper Motor Ce moteur poss\u00e8de un r\u00e9ducteur 1\/64 avec des engrenages. pour qu&rsquo;il fasse un tour complet il faut 2048 pas. L&rsquo;amplificateur ou DRIVER ULN2003 On c\u00e2ble notre moteur avec le driver ULN2003 Pour donner plus d&rsquo;\u00e9nergie au bobines du moteur on utilise un ULN2003 (il peut [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-4188","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/workboot.fr\/ciela\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"Le moteur Pas \u00e0 Pas 28BYJ-48 \u2013 5V Stepper Motor Ce moteur poss\u00e8de un r\u00e9ducteur 1\/64 avec des engrenages. pour qu&rsquo;il fasse un tour complet il faut 2048 pas. L&rsquo;amplificateur ou DRIVER ULN2003 On c\u00e2ble notre moteur avec le driver ULN2003 Pour donner plus d&rsquo;\u00e9nergie au bobines du moteur on utilise un ULN2003 (il peut\u2026","_links":{"self":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/4188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/comments?post=4188"}],"version-history":[{"count":22,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/4188\/revisions"}],"predecessor-version":[{"id":4239,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/4188\/revisions\/4239"}],"wp:attachment":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/media?parent=4188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}