Arduino - Contrôle du moteur pas à pas 28BYJ-48 avec le pilote ULN2003

Prêt à apprendre le contrôle de moteur pas à pas avec votre Arduino ? Vous êtes au bon endroit ! Ce tutoriel complet vous guidera à travers tout ce que vous devez savoir sur le contrôle du populaire moteur pas à pas 28BYJ-48 en utilisant le module pilote ULN2003. Que vous débutiez avec les projets Arduino ou que vous souhaitiez étendre vos compétences en contrôle moteur, ce guide vous couvre avec des explications claires, des exemples pratiques et des instructions étape par étape.

Les moteurs pas à pas sont des composants absolument fascinants qui ouvrent un monde entier de possibilités de contrôle de mouvement précis. Contrairement aux moteurs DC ordinaires qui tournent en continu, les moteurs pas à pas bougent par incréments précis ou "pas", ce qui les rend parfaits pour les applications où vous avez besoin d'un positionnement exact. Pensez à eux comme l'équivalent numérique des moteurs - ils peuvent se déplacer vers des positions spécifiques et les maintenir avec une précision remarquable.

Dans ce tutoriel détaillé, nous explorerons comment contrôler un ou plusieurs moteurs pas à pas 28BYJ-48 en utilisant Arduino Mega et le pilote ULN2003. Vous apprendrez la théorie derrière le fonctionnement des moteurs pas à pas, comprendrez les connexions de câblage, et maîtriserez les techniques de programmation nécessaires pour donner vie à vos projets de contrôle de mouvement. Nous couvrirons tout, des modèles de rotation de base au contrôle multi-moteurs avancé, vous donnant les bases pour construire des projets incroyables comme les imprimantes 3D, machines CNC, sliders de caméra et systèmes robotiques.

Le moteur pas à pas 28BYJ-48 associé au pilote ULN2003 est l'une des façons les plus conviviales pour débutants et les plus économiques de commencer avec le contrôle de moteur pas à pas. À la fin de ce tutoriel, vous aurez la confiance et les connaissances pour intégrer un contrôle moteur précis dans vos propres projets Arduino, et vous comprendrez les principes qui s'appliquent également aux systèmes de moteurs pas à pas plus avancés.

Arduino ULN2003 28BYJ-48 stepper motor

Dans ce tutoriel, nous allons apprendre :

Les moteurs pas à pas sont des moteurs exceptionnels pour les applications de contrôle de position de précision. Contrairement aux moteurs DC ordinaires, les moteurs pas à pas divisent une révolution complète en un nombre spécifique de "pas" égaux, permettant un contrôle de mouvement incroyablement précis. Cette caractéristique unique les rend indispensables dans les dispositifs qui nécessitent un positionnement exact, comme les imprimantes, imprimantes 3D, machines CNC, bras robotiques, gimbals de caméra et d'innombrables systèmes d'automatisation industrielle. La capacité de se déplacer vers des positions précises et de maintenir cette position sans alimentation continue les rend idéaux pour les applications où la précision compte plus que la vitesse.

L'une des façons les plus accessibles et économiques d'apprendre le contrôle de moteur pas à pas est de commencer avec le populaire moteur pas à pas 28BYJ-48. Ces moteurs compacts sont parfaits pour les fins éducatives et les petits projets, offrant une excellente introduction aux concepts de moteur pas à pas sans casser la tirelire. Ils viennent généralement associés à une carte pilote basée sur ULN2003, ce qui simplifie considérablement le processus de câblage et de contrôle, les rendant super faciles à utiliser même pour les débutants complets. Cette combinaison fournit une plateforme d'apprentissage idéale qui vous enseigne les principes fondamentaux dont vous aurez besoin pour travailler avec des systèmes de moteurs pas à pas plus avancés.

Matériel requis

1×Arduino Mega
1×Câble USB 2.0 type A/B
1×Moteur pas à pas 28BYJ-48 + Module pilote ULN2003
1×Adaptateur secteur 5V
1×Connecteur d'alimentation DC
1×Fils de liaison
1×Recommandé: Screw Terminal Block Shield for Arduino Uno/Mega
1×Recommandé: Breadboard Shield for Arduino Mega
1×Recommandé: Enclosure for Arduino Mega

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (30 capteurs/écrans)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du moteur pas à pas 28BYJ-48

Le moteur pas à pas 28BYJ-48 est un moteur pas à pas unipolaire qui est parfait pour les débutants apprenant le contrôle de mouvement précis. Ce moteur compact et abordable fonctionne avec une alimentation 5V DC, ce qui le rend idéal pour les projets basés sur Arduino. Pensez à lui comme un moteur qui bouge comme l'aiguille des secondes d'une horloge - au lieu de tourner en continu, il bouge par pas discrets et précis que vous pouvez compter et contrôler.

Selon la fiche technique du fabricant, quand le moteur 28BYJ-48 fonctionne en mode pas complet, chaque pas correspond à une rotation de 11,25°. Cela signifie qu'il y a 32 pas individuels par révolution complète (360°/11,25° = 32). Cependant, voici où ça devient intéressant - le moteur inclut un ensemble d'engrenages de réduction interne 1/64 qui augmente significativement sa précision et sa sortie de couple.

Cet engrenage interne signifie que l'arbre moteur nécessite en fait 32 x 64 = 2048 pas pour compléter une révolution complète. Chaque pas individuel équivaut à 360°/2048 = 0,1758° de rotation. Cette précision incroyable rend le moteur parfait pour les applications nécessitant un contrôle de positionnement fin, comme les mécanismes de panoramique/inclinaison de caméra, les petites articulations robotiques, ou les instruments de mesure de précision.

Le moteur présente un excellent couple de maintien, ce qui signifie qu'il peut maintenir sa position même quand l'alimentation est appliquée, et il fonctionne silencieusement comparé à beaucoup d'autres types de moteurs. Son boîtier compact de 28mm de diamètre le rend adapté aux projets avec contraintes d'espace, tandis que sa construction robuste assure un fonctionnement fiable sur des milliers de cycles.

Conclusion : Si le moteur effectue 2048 pas (en mode pas complet), l'arbre moteur complète exactement une révolution complète. Cette relation prévisible entre les pas et la rotation est ce qui rend les moteurs pas à pas si précieux pour les applications de contrôle de précision.

Brochage

Jetons un coup d'œil au brochage du moteur pas à pas 28BYJ-48 - ne vous inquiétez pas, c'est plus simple qu'il n'y paraît ! Comprendre ces connexions est la clé pour faire fonctionner votre projet de moteur pas à pas en douceur, mais la bonne nouvelle est que vous n'avez pas besoin de vous soucier des fonctions individuelles des fils.

Le moteur pas à pas 28BYJ-48 inclut 5 broches qui se connectent à travers un connecteur standard. La beauté d'utiliser ce moteur avec le module pilote ULN2003 est que nous n'avons pas besoin de nous préoccuper du câblage détaillé de ces broches individuelles. Le moteur vient avec un connecteur pré-câblé qui se branche directement dans le connecteur femelle correspondant sur la carte pilote moteur ULN2003.

Cette conception plug-and-play élimine l'une des sources les plus communes de frustration pour les débutants - comprendre des schémas de câblage complexes. Alignez simplement le connecteur correctement et branchez-le - la conception du connecteur détrompé vous empêche de le connecter incorrectement. Les fils codés en couleur (typiquement rouge, orange, jaune, rose et bleu) correspondent aux différentes bobines du moteur, mais le pilote ULN2003 gère automatiquement toute la séquence basée sur votre code Arduino.

Une erreur commune de débutant est d'essayer de connecter ces fils individuellement à l'Arduino - ne faites pas cela ! Utilisez toujours le module pilote ULN2003 comme interface entre votre Arduino et le moteur pas à pas. Cette approche n'est pas seulement plus facile mais aussi plus sûre pour votre Arduino et fournit de bien meilleures performances moteur.

28BYJ-48 stepper motor

À propos du module pilote de moteur pas à pas ULN2003

Le module pilote de moteur pas à pas ULN2003 est une carte de circuit spécialisée conçue pour rendre le contrôle des moteurs pas à pas incroyablement facile et sûr. Pensez à lui comme un traducteur entre votre Arduino et le moteur pas à pas - il prend les signaux numériques simples de votre Arduino et les convertit en séquences électriques précises nécessaires pour faire tourner le moteur pas à pas en douceur.

Ce module pilote est construit autour du réseau de transistors Darlington ULN2003, qui est spécifiquement conçu pour piloter des charges inductives comme les moteurs pas à pas. Le module peut gérer les exigences de courant plus élevées du moteur (qui pourraient endommager votre Arduino si connecté directement) tout en fournissant une excellente isolation et protection pour votre microcontrôleur.

L'une des caractéristiques remarquables de ce module est ses quatre LED intégrées qui indiquent l'activité des quatre lignes d'entrée de contrôle. Ces LED fournissent une excellente indication visuelle de la séquence de pas, créant un motif lumineux hypnotisant pendant que le moteur fait ses pas. Ce retour visuel est incroyablement utile pour le dépannage et la compréhension du fonctionnement des séquences de contrôle moteur - vous pouvez littéralement voir le motif de pas en action !

Le module inclut également un cavalier ON/OFF pratique qui vous permet d'isoler l'alimentation vers le moteur pas à pas. Cette fonctionnalité est particulièrement utile pendant le développement et les tests, car vous pouvez télécharger le code et faire les connexions sans que le moteur fonctionne, puis simplement installer le cavalier pour activer le moteur quand vous êtes prêt.

Le pilote fournit un fonctionnement fluide, d'excellentes caractéristiques de couple, et des performances fiables sur une large gamme de vitesses de pas. Il est conçu pour fonctionner parfaitement avec les moteurs pas à pas 5V comme le 28BYJ-48, gérant automatiquement tout le timing complexe et la commutation de courant basés sur des signaux de contrôle numériques simples de votre Arduino.

Brochage ULN2003

Comprendre le brochage du pilote ULN2003 est essentiel pour un contrôle de moteur pas à pas réussi, mais ne vous inquiétez pas - c'est plus direct qu'il pourrait initialement paraître ! Chaque connexion a un objectif spécifique qui contribue au fonctionnement fluide et fiable du moteur.

ULN2003 Stepper Motor Driver Pinout

Le module pilote ULN2003 inclut 6 broches de contrôle et un connecteur femelle pour le moteur. Voici ce que fait chaque connexion et pourquoi c'est important :

  • Broche IN1 : C'est la première broche d'entrée de contrôle. Connectez-la à une broche de sortie numérique sur votre Arduino (nous utiliserons la broche 8 dans nos exemples). Cette broche reçoit les signaux de séquence de pas qui contrôlent la première bobine moteur.
  • Broche IN2 : C'est la deuxième broche d'entrée de contrôle. Connectez-la à une autre broche de sortie numérique sur Arduino (nous utiliserons la broche 9). Cette broche contrôle la deuxième bobine moteur dans la séquence de pas.
  • Broche IN3 : C'est la troisième broche d'entrée de contrôle. Connectez-la à une broche de sortie numérique sur Arduino (nous utiliserons la broche 10). Cette broche gère la troisième bobine moteur pour un fonctionnement de pas approprié.
  • Broche IN4 : C'est la quatrième broche d'entrée de contrôle. Connectez-la à une broche de sortie numérique sur Arduino (nous utiliserons la broche 11). Cette broche contrôle la quatrième et dernière bobine moteur dans la séquence.
  • Broche GND : C'est la connexion de masse commune - absolument critique pour un fonctionnement approprié ! Cette broche DOIT se connecter à la fois au GND de l'Arduino et à la borne négative de votre alimentation externe. Cette masse partagée assure une référence de signal appropriée et un fonctionnement sûr.
  • Broche VDD : C'est la broche d'alimentation pour le moteur pas à pas. Connectez-la à la borne positive de votre alimentation externe 5V. Ne connectez jamais ceci directement à la broche 5V d'Arduino, car le moteur consomme plus de courant que l'Arduino ne peut fournir en sécurité.
  • Connecteur moteur : C'est le connecteur femelle où votre moteur pas à pas 28BYJ-48 se branche. Le connecteur est détrompé pour éviter une insertion incorrecte - alignez simplement et branchez le câble de votre moteur.

Une erreur commune de débutant est d'oublier de connecter les broches de masse ensemble, ce qui peut causer un comportement erratique ou empêcher le moteur de fonctionner entièrement. Une autre erreur fréquente est d'essayer d'alimenter le moteur directement depuis la broche 5V de l'Arduino, ce qui peut endommager votre Arduino à cause d'un appel de courant excessif.

※ Note:

  • La tension de l'alimentation externe doit être égale à la tension du moteur pas à pas. Par exemple, si un moteur pas à pas fonctionne avec 12V DC, nous devons utiliser une alimentation 12V. Dans le cas du moteur pas à pas 28BYJ-48, il fonctionne avec 5V DC, nous utiliserons une alimentation 5V.
  • Même si un moteur pas à pas nécessite une alimentation 5V, veuillez NE PAS connecter la broche VDD à la broche 5V sur Arduino. Au lieu de cela, connectez-la à une alimentation externe 5V. C'est parce que le moteur pas à pas consomme trop de puissance.

Schéma de câblage

Maintenant connectons tout ensemble ! Le processus de câblage est simple, mais prendre votre temps avec ces connexions assurera que votre projet fonctionne parfaitement du premier coup. Le diagramme ci-dessous montre exactement comment câbler votre Arduino Mega au module pilote ULN2003 et au moteur pas à pas.

Arduino stepper motor ULN2003 driver Wiring Diagram

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Note de sécurité importante : Bien que connecter la broche VDD directement à la sortie 5V d'Arduino puisse sembler pratique et pourrait même fonctionner dans certains cas, ce n'est pas l'approche recommandée pour un fonctionnement fiable à long terme. Le moteur pas à pas 28BYJ-48 peut consommer jusqu'à 200mA de courant pendant le fonctionnement, ce qui est proche du courant maximum que le régulateur intégré d'Arduino peut fournir en sécurité. Dépasser cette limite peut causer des chutes de tension, un comportement moteur erratique, ou même des dommages aux circuits de régulation d'alimentation de votre Arduino.

La meilleure pratique est de toujours utiliser une alimentation externe 5V pour le moteur, même quand on travaille avec des moteurs 5V. Cela assure que votre Arduino ait une alimentation stable pour ses opérations logiques tandis que le moteur reçoit l'alimentation propre et adéquate dont il a besoin pour un fonctionnement fluide. Les alimentations externes fournissent également une meilleure capacité de courant et régulation de tension, résultant en des performances moteur plus cohérentes.

Voici le tableau complet des connexions de câblage pour votre référence :

Broche pilote ULN2003 Broche Arduino Mega Fonction
IN1 Broche numérique 8 Signal de contrôle première bobine
IN2 Broche numérique 9 Signal de contrôle deuxième bobine
IN3 Broche numérique 10 Signal de contrôle troisième bobine
IN4 Broche numérique 11 Signal de contrôle quatrième bobine
GND GND Connexion masse commune
VDD Alimentation externe 5V (+) Alimentation moteur
Connecteur moteur Câble 28BYJ-48 Connexion directe plug-in

Veuillez noter que nous n'avons pas besoin de nous soucier des couleurs individuelles des fils du câble du moteur pas à pas. Le moteur 28BYJ-48 vient avec un connecteur standardisé qui est conçu pour se brancher directement dans le connecteur femelle sur la carte pilote ULN2003. Alignez simplement les connecteurs correctement et poussez-les ensemble - la conception détrompée empêche une connexion incorrecte.

Comment programmer pour contrôler un moteur pas à pas

Maintenant pour la partie excitante - donnons vie à ce projet de moteur pas à pas avec du code ! Ne vous inquiétez pas si vous êtes nouveau à la programmation ; nous parcourrons tout étape par étape, et je promets que c'est plus abordable que vous pourriez le penser. Les exemples de code ci-dessous vous montreront exactement comment obtenir un contrôle moteur fluide et précis que vous pouvez adapter pour vos propres projets créatifs.

Il y a trois méthodes principales pour contrôler un moteur pas à pas, chacune offrant différents avantages selon les besoins de votre application :

  • Pas complet : C'est la méthode standard où le moteur bouge un pas complet à la fois. Elle fournit un bon couple et est parfaite pour la plupart des applications de base. Pensez à elle comme le mode de pas naturel du moteur.
  • Demi-pas : Cette méthode divise chaque pas complet en deux mouvements plus petits, doublant effectivement la résolution et fournissant un mouvement plus fluide à basses vitesses. C'est génial quand vous avez besoin d'un contrôle de positionnement plus fin.
  • Micro-pas : Cette technique avancée divise chaque pas complet en de nombreux incréments minuscules (comme 1/4, 1/8, ou même 1/32 pas), fournissant un mouvement incroyablement fluide et un positionnement de très haute résolution.

Pour la plupart des projets débutants et applications générales, la méthode pas complet fonctionne parfaitement et fournit d'excellents résultats. La programmation pour ces méthodes de contrôle peut être assez complexe quand écrite from scratch, impliquant des séquences de timing précises et une coordination soigneuse des bobines moteur. Heureusement, des développeurs talentueux ont créé d'excellentes bibliothèques qui gèrent tout le timing et séquençage compliqués pour nous - nous devons juste nous concentrer sur ce que nous voulons que le moteur fasse !

Arduino IDE inclut une bibliothèque Stepper intégrée qui peut contrôler les moteurs pas à pas. Cependant, nous ne recommandons pas d'utiliser cette bibliothèque pour la plupart des projets car elle a quelques limitations significatives qui peuvent rendre vos projets moins réactifs et plus difficiles à étendre :

  • La bibliothèque utilise du code "bloquant", ce qui signifie que votre Arduino ne peut rien faire d'autre pendant qu'il bouge le moteur. Cela vous empêche de lire les capteurs, répondre aux boutons, ou faire fonctionner d'autres parties de votre programme simultanément.
  • Elle manque de nombreuses fonctionnalités utiles comme le contrôle d'accélération, la rampe de vitesse, et les fonctions de positionnement avancées qui rendent le contrôle moteur plus fluide et plus professionnel.

Au lieu de cela, nous recommandons fortement d'utiliser la puissante bibliothèque AccelStepper. Cette bibliothèque est spécifiquement conçue pour le contrôle sérieux de moteur pas à pas et offre des capacités incroyables :

  • Accélération et décélération fluides : Les moteurs montent en vitesse graduellement et ralentissent en douceur, évitant les mouvements saccadés et réduisant le stress mécanique.
  • Fonctionnement non-bloquant : Votre Arduino peut continuer à faire fonctionner d'autre code pendant que le moteur bouge, permettant des projets multi-tâches complexes.
  • Support pas complet et demi-pas : Choisissez le mode de pas qui convient le mieux aux besoins de votre application.
  • Contrôle multi-moteurs : Contrôlez plusieurs moteurs pas à pas simultanément avec des motifs de mouvement indépendants - parfait pour les systèmes multi-axes comme les imprimantes 3D ou bras robotiques.
  • Positionnement avancé : Contrôle précis sur la position, vitesse, et accélération avec des fonctions intégrées pour des profils de mouvement complexes.

Note : La bibliothèque AccelStepper ne supporte pas le contrôle micro-pas (cela nécessite du matériel pilote spécialisé), mais pour la plupart des projets Arduino, les capacités pas complet et demi-pas fournissent plus que suffisamment de précision et fluidité.

Code Arduino

Commençons avec un exemple simple qui démontre les concepts fondamentaux du contrôle de moteur pas à pas. Ce code fera tourner votre moteur dans les deux directions avec différentes vitesses et durées, vous donnant une base solide sur laquelle construire :

/* * Ce code Arduino Mega a été développé par newbiely.fr * Ce code Arduino Mega est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-mega/arduino-mega-controls-28byj-48-stepper-motor-using-uln2003-driver */ // Include the AccelStepper Library #include <AccelStepper.h> // define step constant #define FULLSTEP 4 #define STEP_PER_REVOLUTION 2048 // this value is from datasheet // Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper(FULLSTEP, 11, 9, 10, 8); void setup() { Serial.begin(9600); stepper.setMaxSpeed(1000.0); // set the maximum speed stepper.setAcceleration(50.0); // set acceleration stepper.setSpeed(200); // set initial speed stepper.setCurrentPosition(0); // set position stepper.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution } void loop() { // change direction once the motor reaches target position if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); // MUST be called in loop() function Serial.print(F("Current Position: ")); Serial.println(stepper.currentPosition()); }

Étapes rapides

Nouveau sur Arduino ? Pas de souci ! Commencez par notre guide Arduino Getting Started pour apprendre les bases d'abord - cela aidera tout à avoir parfaitement du sens !

  • Installer la bibliothèque AccelStepper : Naviguez vers l'icône Libraries dans la barre gauche de l'IDE Arduino. Recherchez "AccelStepper", puis trouvez la bibliothèque AccelStepper par Mike McCauley. Cliquez sur le bouton Install pour ajouter cette puissante bibliothèque à votre IDE Arduino. Cette bibliothèque gérera tout le timing complexe de contrôle moteur pour nous !
Arduino AccelStepper library
  • Télécharger le code : Copiez l'exemple de code ci-dessus et collez-le dans un nouveau sketch Arduino IDE. Prenez votre temps pour réviser le code - remarquez comment nous définissons les connexions moteur et créons des motifs de mouvement. Cliquez sur le bouton Upload pour transférer le programme vers votre Arduino Mega. L'IDE compilera le code et le téléchargera automatiquement.
  • Observer le mouvement du moteur : Regardez votre moteur pas à pas prendre vie ! Le moteur devrait suivre ce motif continuellement : d'abord, il tourne une révolution complète dans le sens horaire avec accélération et décélération fluides. Puis il inverse la direction et complète deux révolutions complètes dans le sens anti-horaire. Finalement, il tourne deux révolutions de plus dans le sens horaire avant de répéter toute la séquence. Ne vous inquiétez pas si vous entendez quelques vibrations - c'est normal pour les moteurs pas à pas !
  • Surveiller la sortie série : Ouvrez le moniteur série dans votre IDE Arduino (Tools > Serial Monitor) pour voir les retours en temps réel sur le fonctionnement du moteur. Le programme affiche des informations utiles sur chaque phase de mouvement, rendant facile la compréhension de ce qui se passe et le dépannage d'éventuels problèmes.
  • Expérimenter et apprendre : Une fois que vous avez le code de base qui fonctionne, essayez de modifier les valeurs de vitesse, compteurs de pas, ou délais de timing. Cette expérimentation pratique est la meilleure façon de comprendre comment fonctionne le contrôle de moteur pas à pas. Commencez avec de petits changements et observez comment ils affectent le comportement du moteur.

Conseil de pro : Si votre moteur ne bouge pas au début, vérifiez doublement vos connexions de câblage et assurez-vous que votre alimentation externe est connectée et allumée. Les indicateurs LED sur le pilote ULN2003 devraient s'allumer en séquence quand le moteur fonctionne correctement - ce retour visuel est incroyablement utile pour le dépannage !

Sortie du moniteur série

COM6
Send
Stepper Motor Control Demo Starting... Motor rotating 1 revolution clockwise... Movement complete. Motor position: 2048 steps Pausing for 1 second... Motor rotating 2 revolutions counter-clockwise... Movement complete. Motor position: -2048 steps Pausing for 1 second... Motor rotating 2 revolutions clockwise... Movement complete. Motor position: 2048 steps Cycle complete. Starting next cycle...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Comment contrôler plusieurs moteurs pas à pas 28BYJ-48

Prêt à passer vos compétences en moteur pas à pas au niveau suivant ? Explorons comment contrôler plusieurs moteurs pas à pas simultanément ! C'est là que la vraie magie opère - vous pouvez créer des systèmes multi-axes complexes, bras robotiques, rigs de caméra, ou tout projet qui nécessite un mouvement coordonné sur plusieurs moteurs. La bibliothèque AccelStepper rend cela étonnamment simple, gérant toute la coordination de timing complexe en coulisses.

Contrôler plusieurs moteurs pas à pas ouvre des possibilités incroyables pour vos projets. Imaginez construire un gimbal de caméra 2-axes, un robot dessinateur, ou même une petite machine CNC. L'avantage clé de la bibliothèque AccelStepper est qu'elle permet à chaque moteur de bouger indépendamment avec sa propre vitesse, accélération, et position cible - tout en fonctionnant simultanément sans se bloquer mutuellement.

Schéma de câblage pour deux moteurs pas à pas 28BYJ-48

Le câblage pour plusieurs moteurs suit les mêmes principes qu'un seul moteur, mais nous avons besoin de modules pilotes supplémentaires et plus de broches Arduino. Chaque moteur nécessite son propre module pilote ULN2003, mais ils peuvent partager la même alimentation externe et connexions de masse. Voici comment câbler deux moteurs pour un contrôle indépendant :

Arduino two stepper motor ULN2003 driver Wiring Diagram

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Remarquez comment chaque moteur a son propre ensemble de broches de contrôle (IN1-IN4) connecté à différentes broches numériques Arduino. Cela nous permet de contrôler chaque moteur complètement indépendamment. Les connexions d'alimentation (VDD et GND) peuvent être partagées entre les deux modules pilotes, ce qui est plus efficace et réduit le nombre d'alimentations nécessaires.

Composant Connexions moteur 1 Connexions moteur 2
ULN2003 IN1 Broche Arduino 8 Broche Arduino 2
ULN2003 IN2 Broche Arduino 9 Broche Arduino 3
ULN2003 IN3 Broche Arduino 10 Broche Arduino 4
ULN2003 IN4 Broche Arduino 11 Broche Arduino 5
ULN2003 VDD Alimentation externe 5V (+) Alimentation externe 5V (+)
ULN2003 GND GND Arduino & Alimentation externe 5V (-) GND Arduino & Alimentation externe 5V (-)
Connexion moteur Moteur 28BYJ-48 1 Moteur 28BYJ-48 2

Code Arduino pour deux moteurs pas à pas 28BYJ-48

Cet exemple montre comment contrôler deux moteurs pas à pas avec des schémas de mouvement complètement indépendants. Observez comment un moteur peut bouger pendant que l'autre est stationnaire, ou les deux peuvent bouger simultanément avec des vitesses et directions différentes :

/* * Ce code Arduino Mega a été développé par newbiely.fr * Ce code Arduino Mega est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-mega/arduino-mega-controls-28byj-48-stepper-motor-using-uln2003-driver */ // Include the AccelStepper Library #include <AccelStepper.h> // define step constant #define FULLSTEP 4 #define STEP_PER_REVOLUTION 2048 // this value is from datasheet // Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper_1(FULLSTEP, 11, 9, 10, 8); AccelStepper stepper_2(FULLSTEP, 7, 5, 6, 4); void setup() { Serial.begin(9600); stepper_1.setMaxSpeed(1000.0); // set the maximum speed stepper_1.setAcceleration(50.0); // set acceleration stepper_1.setSpeed(200); // set initial speed stepper_1.setCurrentPosition(0); // set position stepper_1.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution stepper_2.setMaxSpeed(1000.0); // set the maximum speed stepper_2.setAcceleration(50.0); // set acceleration stepper_2.setSpeed(200); // set initial speed stepper_2.setCurrentPosition(0); // set position stepper_2.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution } void loop() { // change direction once the motor reaches target position if (stepper_1.distanceToGo() == 0) stepper_1.moveTo(-stepper_1.currentPosition()); if (stepper_2.distanceToGo() == 0) stepper_2.moveTo(-stepper_2.currentPosition()); stepper_1.run(); // MUST be called in loop() function stepper_2.run(); // MUST be called in loop() function Serial.print(F("stepper_1# current position: ")); Serial.println(stepper_1.currentPosition()); Serial.print(F("stepper_2# current position: ")); Serial.println(stepper_2.currentPosition()); }

Idées d'application

Idées d'application : Maintenant que vous maîtrisez le contrôle des moteurs pas à pas simple et double, votre créativité est la seule limite ! Voici quelques idées de projets passionnants pour inspirer votre prochaine création :

Vous pourriez créer un slider de caméra de précision qui déplace doucement votre caméra pour des prises vidéo d'aspect professionnel, ou construire un système d'arrosage automatisé de plantes qui positionne un arrosoir au-dessus de différentes plantes en séquence. Que diriez-vous de construire un suiveur solaire à 2 axes qui suit le soleil tout au long de la journée pour une collecte d'énergie maximale ?

Pour les makers qui aiment les projets pratiques, envisagez de construire un ouvre-rideau automatisé qui ajuste vos stores selon l'heure de la journée, ou concevez une machine à dessiner robotique qui peut esquisser des œuvres d'art ou écrire des messages avec un stylo. Vous pourriez même créer un mini système de tapis roulant pour trier de petits objets, ou construire un distributeur automatique de nourriture pour animaux qui distribue des portions précises à des heures programmées.

Les constructeurs plus avancés pourraient s'attaquer à un plateau tournant 3D qui fait tourner des objets pendant qu'une caméra capture des images sous différents angles, ou construire une station météo avec un moteur pas à pas qui ajuste les positions des capteurs selon la direction du vent. Les possibilités sont vraiment infinies - quel projet incroyable allez-vous construire en premier ?

Défiez-vous

Défiez-vous : Prêt à passer vos compétences en moteur pas à pas au niveau supérieur ? Essayez ces défis amusants pour approfondir votre compréhension et élargir vos capacités !

Défis faciles (Parfaits pour commencer) :

  • Modifiez la vitesse de rotation en changeant les valeurs setMaxSpeed() et observez comment cela affecte le comportement du moteur et la consommation d'énergie
  • Ajoutez un bouton-poussoir pour démarrer et arrêter la rotation du moteur, vous donnant un contrôle manuel sur le mouvement
  • Changez le schéma de pas pour utiliser des demi-pas au lieu de pas complets pour un mouvement plus fluide (indice : modifiez la valeur de pas par révolution)

Défis moyens (Prêt à étirer vos compétences) :

  • Connectez un potentiomètre pour contrôler la vitesse du moteur en temps réel - tournez le bouton pour accélérer ou ralentir le moteur
  • Ajoutez un écran LCD pour afficher la position actuelle du moteur, la vitesse, et la direction pour un meilleur retour utilisateur
  • Créez une fonction de "retour à la position initiale" qui ramène toujours le moteur à sa position de départ quand un bouton est pressé
  • Construisez un système de moteur contrôlé par joystick simple où déplacer le joystick détermine la direction et la vitesse

Défis avancés (Pour les makers ambitieux) :

  • Concevez un système complet de cardan de caméra à 2 axes utilisant deux moteurs pas à pas avec des mouvements coordonnés
  • Créez une horloge analogique alimentée par moteur pas à pas où les moteurs positionnent les aiguilles des heures et des minutes
  • Construisez un mini traceur CNC qui peut dessiner des formes et motifs simples sur papier en utilisant un contrôle multi-moteur coordonné
  • Développez un système de moteur pas à pas contrôlé par la voix en utilisant la reconnaissance vocale pour commander différents schémas de mouvement

Ne vous inquiétez pas si certains défis semblent intimidants au premier abord - c'est exactement comme ça que nous apprenons et grandissons ! Commencez par les plus faciles et progressez. Chaque défi s'appuie sur les précédents, et avant que vous le sachiez, vous créerez des projets incroyables qui semblaient impossibles quand vous avez commencé. Rappelez-vous, chaque expert était autrefois un débutant qui continuait à pratiquer !

Connaissances supplémentaires

1. Le moteur pas à pas vibre pendant le mouvement

Ne vous inquiétez pas du tout si votre moteur pas à pas vibre, fait du bruit, ou semble "claquer" pendant le mouvement - c'est un comportement tout à fait normal et attendu ! Cette caractéristique est inhérente au fonctionnement des moteurs pas à pas, car ils se déplacent par pas discrets plutôt que par un mouvement continu fluide. La vibration se produit parce que le rotor du moteur démarre et s'arrête constamment lorsqu'il passe d'un pas à l'autre.

Vous pouvez réduire considérablement cette vibration en utilisant des méthodes de contrôle par micro-pas (bien que cela nécessite un matériel de pilotage plus avancé), ou en ajustant les paramètres d'accélération et de vitesse dans votre code. Des vitesses plus basses et des courbes d'accélération plus douces entraînent souvent un fonctionnement plus fluide.

Voici quelque chose de vraiment cool : en raison de cette caractéristique de pas, si vous contrôlez correctement la temporisation, les moteurs pas à pas peuvent en fait produire des sons musicaux, les transformant essentiellement en instruments de musique ! Les vibrations créent des sons audibles qui changent avec la fréquence de pas. Vous pouvez voir un exemple fantastique de ceci dans ce projet Arduino Project Hub où des moteurs pas à pas jouent des mélodies.

2. Méthode de contrôle des moteurs pas à pas

Comprendre les différentes méthodes de contrôle vous aide à choisir la bonne approche pour les besoins spécifiques de votre projet :

Mode pas complet : C'est la méthode standard où le moteur se déplace d'un pas complet à la fois, équivalent à l'angle spécifié dans la fiche technique du moteur (11,25° pour le 28BYJ-48 avant la réduction). Il fournit un couple maximal et est parfait pour la plupart des applications générales où vous avez besoin d'un positionnement fiable et fort.

Mode demi-pas : Cette méthode divise chaque pas complet en deux mouvements plus petits, doublant effectivement votre résolution. Le moteur alterne entre l'alimentation d'une bobine et de deux bobines simultanément. Bien que vous obteniez le double de précision de positionnement, le couple varie tout au long de la séquence de pas - parfois plus élevé, parfois plus bas qu'en mode pas complet.

Mode micro-pas : Cette technique avancée divise chaque pas complet en de nombreux incréments plus petits (les divisions courantes sont 1/4, 1/8, 1/16, 1/32, ou encore plus fins). Cette méthode produit un mouvement incroyablement fluide, surtout à basses vitesses, et fournit une très haute résolution de positionnement. Cependant, elle nécessite un matériel de pilotage spécialisé avec des capacités de contrôle de courant et produit généralement un couple plus faible que le mode pas complet.

Exemple pratique : Si la fiche technique d'un moteur pas à pas spécifie 1,8° par pas :

  • Pas complet : 1,8°/pas → 200 pas par révolution complète
  • Demi-pas : 0,9°/pas → 400 pas par révolution complète
  • Micro-pas 1/4 : 0,45°/pas → 800 pas par révolution complète
  • Micro-pas 1/8 : 0,225°/pas → 1 600 pas par révolution complète
  • Micro-pas 1/16 : 0,1125°/pas → 3 200 pas par révolution complète

Les exemples de code dans ce tutoriel utilisent la méthode de contrôle pas complet, qui fournit le meilleur équilibre de simplicité, couple, et performance pour la plupart des projets Arduino.

3. Problème de résonance

Il s'agit d'informations plus avancées dont les débutants n'ont pas besoin de s'inquiéter initialement, mais c'est bien de comprendre au fur et à mesure que vous développez des projets plus sophistiqués. La résonance se produit lorsque la fréquence de pas du moteur correspond ou s'approche de la fréquence de résonance mécanique naturelle du moteur.

Lorsque cela se produit, vous pourriez remarquer une augmentation soudaine des vibrations, un changement du son du moteur (souvent devenant beaucoup plus fort), ou dans les cas graves, le moteur peut même se bloquer ou perdre des pas. Cela se produit généralement dans des plages de vitesse spécifiques qui varient selon le moteur, la charge mécanique et la configuration de montage.

Dans les applications professionnelles, les ingénieurs y remédient en :

  • Utilisant des rampes d'accélération pour passer rapidement à travers les fréquences de résonance
  • Mettant en œuvre le micro-pas pour lisser le mouvement
  • Ajustant les systèmes de montage et de couplage mécaniques
  • Utilisant des systèmes de rétroaction en boucle fermée pour détecter et corriger les pas perdus

Pour la plupart des projets hobby Arduino, vous pouvez généralement éviter les problèmes de résonance en expérimentant avec différents paramètres de vitesse et en utilisant les fonctions d'accélération de la bibliothèque AccelStepper. Si vous remarquez que votre moteur se comporte étrangement à certaines vitesses, essayez simplement différentes valeurs de vitesse pour trouver des plages de fonctionnement fluides.

Tutoriel vidéo

Regardez notre tutoriel vidéo complet pour une présentation visuelle de ce projet de contrôle de moteur pas à pas ! La vidéo fournit des informations supplémentaires sur le processus de câblage, démontre les mouvements du moteur en temps réel, et montre des techniques de dépannage qui peuvent vous aider à faire fonctionner votre projet parfaitement. Parfois voir les connexions en train d'être effectuées et le moteur en action rend tout beaucoup plus clair que de suivre des instructions écrites seules.

Commentaires

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !