Arduino Mega - Moteur pas à pas et interrupteur de fin de course

Prêt à apprendre comment contrôler des moteurs pas à pas avec des interrupteurs de fin de course ? Vous êtes au bon endroit ! Ce tutoriel complet pour Arduino Mega vous guidera à travers tout ce que vous devez savoir sur la combinaison de ces deux composants essentiels pour un contrôle de mouvement précis dans vos projets.

Que vous construisiez une imprimante 3D, une machine CNC, un bras robotique ou un système de porte automatisée, comprendre comment utiliser les interrupteurs de fin de course avec les moteurs pas à pas est une compétence cruciale qui ouvre d'innombrables possibilités. Les interrupteurs de fin de course agissent comme les "yeux" de votre système mécanique, indiquant à votre Arduino Mega quand les pièces mobiles ont atteint des positions spécifiques, tandis que les moteurs pas à pas fournissent le mouvement précis et contrôlé qui rend l'automatisation possible.

Dans ce guide pratique, nous explorerons trois scénarios pratiques que vous rencontrerez dans des projets du monde réel : arrêter un moteur pas à pas instantanément lorsqu'il atteint une limite, le faire automatiquement changer de direction, et créer un système qui change de direction basé sur deux interrupteurs de fin de course différents. Ces techniques sont la fondation de nombreux systèmes automatisés, des simples actionneurs linéaires aux machines complexes multi-axes.

À la fin de ce tutoriel, vous aurez la confiance d'intégrer le contrôle Arduino Mega moteur pas à pas interrupteur de fin de course dans vos propres projets, et vous comprendrez la logique de programmation derrière les systèmes d'automatisation professionnels. Plongeons-nous et apportons un contrôle de mouvement intelligent à vos projets Arduino Mega - je promets que c'est plus simple que vous ne le pensez !

Matériel requis

1×Arduino Mega
1×Câble USB 2.0 type A/B
1×Interrupteur de fin de course (KW12-3)
1×Interrupteur de fin de course (V-156-1C25)
1×Moteur pas à pas Nema 17
1×Module pilote moteur L298N
1×Adaptateur secteur 12V
1×Prise 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 et de l'interrupteur de fin de course

Les moteurs pas à pas et les interrupteurs de fin de course forment un partenariat parfait dans les projets d'automatisation, travaillant ensemble pour créer des systèmes de mouvement précis et contrôlés qui savent exactement où ils se trouvent et quand s'arrêter. Pensez à cette combinaison comme le cerveau et le système sensoriel de l'automatisation mécanique - le moteur pas à pas fournit un mouvement précis tandis que l'interrupteur de fin de course fournit un retour de position.

Un moteur pas à pas est un moteur DC sans balais qui divise une rotation complète en un grand nombre d'étapes discrètes (généralement 200 étapes par révolution pour les moteurs NEMA 17). Cela signifie que vous pouvez contrôler la rotation avec une précision incroyable - jusqu'à 1,8 degré par étape ! Contrairement aux moteurs DC classiques qui tournent en continu, les moteurs pas à pas se déplacent par incréments exacts, ce qui les rend idéaux pour les applications où vous devez savoir exactement jusqu'où quelque chose s'est déplacé. Ils sont couramment utilisés dans les imprimantes 3D, les machines CNC, les cardans de caméra et les systèmes robotiques car ils peuvent maintenir leur position même lorsque l'alimentation est coupée et ne nécessitent pas de capteurs de retour pour un positionnement de base.

Les interrupteurs de fin de course sont des interrupteurs mécaniques qui détectent quand un objet en mouvement a atteint une position spécifique ou une limite. Ils agissent comme des dispositifs de sécurité et des capteurs de position, disant à votre Arduino Mega "Hé, nous avons atteint la fin de course !" ou "La pièce mobile est maintenant à la position d'origine." La plupart des interrupteurs de fin de course sont normalement ouverts (NO), ce qui signifie qu'ils complètent le circuit lorsqu'ils sont pressés, bien que certains soient normalement fermés (NC). Ils sont incroyablement fiables, peuvent gérer de forts courants et fonctionnent dans des environnements difficiles - c'est pourquoi vous les trouvez dans tout, des ouvre-portes de garage aux machines industrielles.

Quand vous combinez le contrôle Arduino Mega moteur pas à pas et interrupteur de fin de course, vous créez des systèmes de mouvement intelligents qui peuvent se déplacer avec précision et connaître leurs limites. Cette combinaison est essentielle pour créer des actionneurs linéaires, des mécanismes coulissants automatisés, des articulations robotiques avec des plages définies, et tout système qui doit se déplacer entre des positions spécifiques de manière sûre et précise.

Si vous ne connaissez pas le moteur pas à pas et l'interrupteur de fin de course (brochage, fonctionnement, programmation...), apprenez-les dans les tutoriels suivants :

Schéma de câblage

Jetons un coup d'œil à la configuration de câblage - ne vous inquiétez pas, c'est plus simple qu'il n'y paraît au premier regard ! Comprendre ces connexions est essentiel pour faire fonctionner correctement votre projet moteur pas à pas interrupteur de fin de course. Ce tutoriel couvre deux configurations de câblage différentes : une pour une configuration à un seul interrupteur de fin de course et une autre pour un système à double interrupteur de fin de course.

Ce tutoriel fournit les codes Arduino Mega pour deux cas : Un moteur pas à pas + un interrupteur de fin de course, Un moteur pas à pas + deux interrupteurs de fin de course.

  • Schéma de câblage entre le moteur pas à pas et un interrupteur de fin de course
Schéma de câblage Arduino Mega moteur pas à pas et interrupteur de fin de course

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

Broche du composant Broche Arduino Mega
Moteur pas à pas (via L298N) IN1 Pin 5
Moteur pas à pas (via L298N) IN2 Pin 4
Moteur pas à pas (via L298N) IN3 Pin 3
Moteur pas à pas (via L298N) IN4 Pin 2
Signal interrupteur de fin de course Pin A0
GND interrupteur de fin de course GND
L298N VCC 5V
L298N GND GND
L298N 12V Alimentation externe 12V
  • Schéma de câblage entre le moteur pas à pas et deux interrupteurs de fin de course
Schéma de câblage Arduino Mega moteur pas à pas et deux interrupteurs de fin de course

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

Broche du composant Broche Arduino Mega
Moteur pas à pas (via L298N) IN1 Pin 5
Moteur pas à pas (via L298N) IN2 Pin 4
Moteur pas à pas (via L298N) IN3 Pin 3
Moteur pas à pas (via L298N) IN4 Pin 2
Signal interrupteur de fin de course 1 Pin A0
Signal interrupteur de fin de course 2 Pin A1
GND interrupteurs de fin de course 1 & 2 GND
L298N VCC 5V
L298N GND GND
L298N 12V Alimentation externe 12V

Note importante de sécurité : Assurez-vous de connecter correctement l'alimentation externe 12V au module pilote L298N. Le moteur pas à pas nécessite plus de courant que l'Arduino Mega ne peut fournir directement, c'est pourquoi nous utilisons le pilote L298N. Vérifiez toujours vos connexions d'alimentation avant d'appliquer l'alimentation pour éviter d'endommager vos composants.

※ Note:

Selon le moteur pas à pas, la connexion de câblage entre le moteur pas à pas et le L298N peut être différente. Veuillez regarder attentivement ce tutoriel Arduino Mega - Moteur pas à pas pour voir comment connecter le moteur pas à pas au pilote moteur L298N.

Code Arduino Mega - Arrêter le moteur pas à pas par un interrupteur de fin de course

Maintenant pour la partie excitante - donnons vie à ce projet avec du code ! Ne vous inquiétez pas si vous débutez en programmation de moteurs pas à pas ou si vous travaillez avec des interrupteurs de fin de course ; nous allons tout parcourir étape par étape. La beauté de cette approche est qu'une fois que vous comprenez les concepts de base, vous pouvez les appliquer à toutes sortes de projets d'automatisation.

Il existe plusieurs façons de faire s'arrêter un moteur pas à pas, et comprendre la différence est important pour vos projets :

  • Appeler la fonction stepper.stop() : Cette méthode n'arrête pas le moteur pas à pas immédiatement mais le décélère progressivement jusqu'à l'arrêt. C'est plus doux pour le système mécanique et fournit un fonctionnement plus fluide.
  • NE PAS appeler la fonction stepper.run() : Cette méthode arrête le moteur pas à pas immédiatement en ne envoyant simplement pas d'impulsions de pas. Cela fournit un arrêt instantané mais peut être plus brusque.

Pour les applications d'interrupteurs de fin de course, l'arrêt immédiat est généralement préféré car il fournit un positionnement précis et empêche le moteur de dépasser la position de l'interrupteur de fin de course. Le code ci-dessous démontre comment faire tourner un moteur pas à pas en continu et l'arrêter instantanément lorsqu'un interrupteur de fin de course est déclenché.

/* * 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-stepper-motor-and-limit-switch */ #include <ezButton.h> #include <AccelStepper.h> #define MAX_POSITION 0x7FFFFFFF // maximum of position we can set (long type) ezButton limitSwitch(A0); // create ezButton object that attach to pin A0; AccelStepper stepper(AccelStepper::FULL4WIRE, 5, 4, 3, 2); bool isStopped = false; void setup() { Serial.begin(9600); limitSwitch.setDebounceTime(50); // set debounce time to 50 milliseconds stepper.setMaxSpeed(500.0); // set the maximum speed stepper.setAcceleration(50.0); // set acceleration stepper.setSpeed(100); // set initial speed stepper.setCurrentPosition(0); // set position stepper.moveTo(MAX_POSITION); } void loop() { limitSwitch.loop(); // MUST call the loop() function first if (limitSwitch.isPressed()) { Serial.println(F("The limit switch: TOUCHED")); isStopped = true; } if (isStopped == false) { // without this part, the move will stop after reaching maximum position if (stepper.distanceToGo() == 0) { // if motor moved to the maximum position stepper.setCurrentPosition(0); // reset position to 0 stepper.moveTo(MAX_POSITION); // move the motor to maximum position again } stepper.run(); // MUST be called in loop() function } else { // without calling stepper.run() function, motor stops immediately // NOTE: stepper.stop() function does NOT stops motor immediately Serial.println(F("The stepper motor is STOPPED")); } }

Étapes rapides

Nouveau sur Arduino ? Pas de problème ! Commencez par notre guide Arduino Mega Getting Started pour apprendre d'abord les bases.

  • Connectez votre matériel : Câblez votre Arduino Mega, pilote moteur L298N, moteur pas à pas et interrupteur de fin de course selon le schéma de câblage ci-dessus. Prenez votre temps pour cette étape - vérifier les connexions maintenant vous évitera du temps de dépannage plus tard !
  • Configurez l'IDE Arduino Mega : Connectez votre Arduino Mega à votre PC via le câble USB, puis ouvrez l'IDE Arduino Mega et sélectionnez la bonne carte (Arduino Mega) et le bon port COM. Si vous n'êtes pas sûr du port, vérifiez le Gestionnaire de périphériques sur Windows ou les Informations système sur Mac.
  • Installez les bibliothèques requises : Naviguez vers l'icône Libraries dans la barre de gauche de l'IDE Arduino Mega. Nous aurons besoin de deux bibliothèques essentielles pour ce projet - ne vous inquiétez pas, les installer est super facile !
  • Installez la bibliothèque ezButton : Recherchez "ezButton", puis trouvez la bibliothèque button par ArduinoGetStarted.com. Cliquez sur le bouton Install pour ajouter cette bibliothèque utile qui rend le travail avec les boutons et interrupteurs beaucoup plus simple.
Bibliothèque button Arduino Mega
  • Installez la bibliothèque AccelStepper : Recherchez "AccelStepper", puis trouvez la bibliothèque AccelStepper par Mike McCauley. Cliquez sur Install pour ajouter cette bibliothèque puissante qui rend le contrôle de moteur pas à pas beaucoup plus gérable que l'utilisation de commandes digitalWrite de base.
Bibliothèque AccelStepper Arduino Mega
  • Téléchargez le code : Copiez le code ci-dessus et collez-le dans l'IDE Arduino Mega. Cliquez sur le bouton Upload pour transférer le programme vers votre Arduino. Vous verrez quelques lumières clignotantes sur l'Arduino Mega pendant le téléchargement - c'est parfaitement normal !
  • Testez le système : Si votre câblage est correct, vous verrez le moteur commencer à tourner dans le sens horaire. Le moteur pas à pas continuera à tourner jusqu'à ce que vous interagissiez avec lui.
  • Déclenchez l'interrupteur de fin de course : Appuyez doucement ou touchez l'interrupteur de fin de course. Vous devriez voir le moteur s'arrêter immédiatement ! Cette réponse instantanée est exactement ce que vous voulez pour un contrôle de position précis.
  • Surveillez les résultats : Ouvrez le Moniteur série (Outils > Moniteur série) pour voir le retour en temps réel de ce qui se passe. L'Arduino Mega vous dira quand l'interrupteur de fin de course est pressé et confirmera que le moteur s'est arrêté.

Conseil de pro : Si votre moteur ne bouge pas ou bouge dans la mauvaise direction, essayez d'échanger deux des fils du moteur pas à pas sur les connexions L298N. Le câblage des moteurs pas à pas peut varier selon le fabricant, donc ne vous inquiétez pas si vous devez expérimenter un peu pour obtenir le bon résultat !

Sortie du Moniteur série

COM6
Send
The limit switch: TOUCHED The stepper motor is STOPPED The stepper motor is STOPPED The stepper motor is STOPPED The stepper motor is STOPPED The limit switch: UNTOUCHED Motor spinning clockwise... Motor spinning clockwise... The limit switch: TOUCHED The stepper motor is STOPPED
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Explication du code

Lisez l'explication ligne par ligne dans les lignes de commentaires du code !

Code Arduino Mega - Changer la direction du moteur pas à pas par un interrupteur de fin de course

Ce prochain exemple vous montre comment créer un système plus sophistiqué où le moteur pas à pas inverse automatiquement sa direction quand il frappe un interrupteur de fin de course. C'est incroyablement utile pour créer des systèmes oscillants, des mouvements automatiques d'aller-retour, ou des systèmes de sécurité qui reculent quand ils rencontrent des obstacles.

La beauté de cette approche est qu'elle crée un système autonome qui peut fonctionner indéfiniment, changeant de direction chaque fois que l'interrupteur de fin de course est activé. Cette technique est couramment utilisée dans les systèmes de rideaux automatisés, les mécanismes de portes coulissantes et les actionneurs linéaires qui doivent se déplacer entre deux positions.

/* * 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-stepper-motor-and-limit-switch */ #include <ezButton.h> #include <AccelStepper.h> #define DIRECTION_CCW -1 #define DIRECTION_CW 1 #define MAX_POSITION 0x7FFFFFFF // maximum of position we can set (long type) ezButton limitSwitch(A0); // create ezButton object that attach to pin A0; AccelStepper stepper(AccelStepper::FULL4WIRE, 5, 4, 3, 2); int direction = DIRECTION_CW; long targetPos = 0; void setup() { Serial.begin(9600); limitSwitch.setDebounceTime(50); // set debounce time to 50 milliseconds stepper.setMaxSpeed(500.0); // set the maximum speed stepper.setAcceleration(50.0); // set acceleration stepper.setSpeed(100); // set initial speed stepper.setCurrentPosition(0); // set position targetPos = direction * MAX_POSITION; stepper.moveTo(targetPos); } void loop() { limitSwitch.loop(); // MUST call the loop() function first if (limitSwitch.isPressed()) { Serial.println(F("The limit switch: TOUCHED")); direction *= -1; // change direction Serial.print(F("The direction -> ")); if (direction == DIRECTION_CW) Serial.println(F("CLOCKWISE")); else Serial.println(F("ANTI-CLOCKWISE")); targetPos = direction * MAX_POSITION; stepper.setCurrentPosition(0); // set position stepper.moveTo(targetPos); } // without this part, the move will stop after reaching maximum position if (stepper.distanceToGo() == 0) { // if motor moved to the maximum position stepper.setCurrentPosition(0); // reset position to 0 stepper.moveTo(targetPos); // move the motor to maximum position again } stepper.run(); // MUST be called in loop() function }

Étapes rapides

  • Préparez votre système : Assurez-vous d'avoir la même configuration matérielle de l'exemple précédent - Arduino Mega, pilote L298N, moteur pas à pas et interrupteur de fin de course tous connectés selon notre schéma de câblage.
  • Téléchargez le nouveau code : Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino Mega. Cliquez sur le bouton Upload pour transférer ce nouveau programme vers votre Arduino. La beauté d'Arduino Mega est la facilité avec laquelle il est possible d'essayer différents programmes avec le même matériel !
  • Observez le mouvement initial : Si votre câblage est correct, vous verrez le moteur commencer à tourner dans le sens horaire. C'est la direction de démarrage par défaut définie dans le code.
  • Testez le changement de direction : Touchez ou appuyez sur l'interrupteur de fin de course et regardez ce qui se passe. Vous devriez voir le moteur pas à pas changer immédiatement vers une rotation anti-horaire (sens inverse). Ce changement de direction devrait être fluide et immédiat.
  • Testez le fonctionnement continu : Touchez l'interrupteur de fin de course à nouveau, et vous verrez le moteur revenir à la rotation horaire. Le système continuera ce motif d'aller-retour chaque fois que l'interrupteur de fin de course est activé.
  • Surveillez le système : Gardez le Moniteur série ouvert pour voir les mises à jour en temps réel sur les changements de direction. Ce retour vous aide à comprendre exactement quand le système détecte l'interrupteur de fin de course et change de direction.
  • Expérimentez avec le positionnement : Essayez de placer l'interrupteur de fin de course à différentes positions pour voir comment cela affecte la distance de déplacement du moteur. Cela vous aidera à comprendre comment positionner les interrupteurs de fin de course dans vos propres projets.

Conseil de pro : Ce type d'inversion de direction automatique est parfait pour créer des mouvements de type pendule ou des systèmes qui doivent balayer d'avant en arrière. Vous pouvez ajuster la vitesse du moteur dans le code pour rendre le mouvement plus rapide ou plus lent selon votre application !

Sortie du Moniteur série

COM6
Send
Motor spinning clockwise... Motor spinning clockwise... The limit switch: TOUCHED The direction -> ANTI-CLOCKWISE Motor spinning anti-clockwise... Motor spinning anti-clockwise... The limit switch: TOUCHED The direction -> CLOCKWISE Motor spinning clockwise...
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code Arduino Mega - Changer la direction du moteur pas à pas par deux interrupteurs de fin de course

Explorons maintenant la configuration la plus sophistiquée - utiliser deux interrupteurs de fin de course pour créer un système entièrement automatisé avec des limites définies ! Cette configuration est la fondation de nombreux systèmes d'automatisation professionnels, incluant les imprimantes 3D, les machines CNC et les systèmes robotiques qui doivent opérer dans des limites spécifiques.

Avec deux interrupteurs de fin de course, vous pouvez créer un système qui change automatiquement de direction quand il atteint l'une ou l'autre extrémité de sa plage de déplacement. Cela crée un mouvement d'aller-retour complètement autonome qui est parfait pour des applications comme les portes coulissantes automatisées, les systèmes de convoyeurs, ou tout mécanisme qui doit se déplacer entre deux positions spécifiques de façon répétée.

/* * 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-stepper-motor-and-limit-switch */ #include <ezButton.h> #include <AccelStepper.h> #define DIRECTION_CCW -1 #define DIRECTION_CW 1 #define STATE_CHANGE_DIR 1 #define STATE_MOVE 2 #define STATE_MOVING 3 #define MAX_POSITION 0x7FFFFFFF // maximum of position we can set (long type) ezButton limitSwitch_1(A0); // create ezButton object that attach to pin A0; ezButton limitSwitch_2(A1); // create ezButton object that attach to pin A1; AccelStepper stepper(AccelStepper::FULL4WIRE, 5, 4, 3, 2); int stepperState = STATE_MOVE; int direction = DIRECTION_CW; long targetPos = 0; void setup() { Serial.begin(9600); limitSwitch_1.setDebounceTime(50); // set debounce time to 50 milliseconds limitSwitch_2.setDebounceTime(50); // set debounce time to 50 milliseconds stepper.setMaxSpeed(500.0); // set the maximum speed stepper.setAcceleration(50.0); // set acceleration stepper.setSpeed(100); // set initial speed stepper.setCurrentPosition(0); // set position } void loop() { limitSwitch_1.loop(); // MUST call the loop() function first limitSwitch_2.loop(); // MUST call the loop() function first if (limitSwitch_1.isPressed()) { stepperState = STATE_CHANGE_DIR; Serial.println(F("The limit switch 1: TOUCHED")); } if (limitSwitch_2.isPressed()) { stepperState = STATE_CHANGE_DIR; Serial.println(F("The limit switch 2: TOUCHED")); } switch (stepperState) { case STATE_CHANGE_DIR: direction *= -1; // change direction Serial.print(F("The direction -> ")); if (direction == DIRECTION_CW) Serial.println(F("CLOCKWISE")); else Serial.println(F("ANTI-CLOCKWISE")); stepperState = STATE_MOVE; // after changing direction, go to the next state to move the motor break; case STATE_MOVE: targetPos = direction * MAX_POSITION; stepper.setCurrentPosition(0); // set position stepper.moveTo(targetPos); stepperState = STATE_MOVING; // after moving, go to the next state to keep the motor moving infinity break; case STATE_MOVING: // without this state, the move will stop after reaching maximum position if (stepper.distanceToGo() == 0) { // if motor moved to the maximum position stepper.setCurrentPosition(0); // reset position to 0 stepper.moveTo(targetPos); // move the motor to maximum position again } break; } stepper.run(); // MUST be called in loop() function }

Étapes rapides

  • Mettez à jour votre câblage : Suivez le schéma de câblage à deux interrupteurs de fin de course montré plus tôt dans ce tutoriel. Vous ajouterez un second interrupteur de fin de course sur la broche 6 tout en gardant le premier sur la broche 7. Prenez votre temps avec les connexions - avoir deux interrupteurs signifie que la double vérification est encore plus importante !
  • Positionnez vos interrupteurs de fin de course : Placez les deux interrupteurs de fin de course aux extrémités opposées du chemin de déplacement de votre moteur. Pensez à eux comme les "limites" de votre système - quand la pièce mobile frappe l'un ou l'autre interrupteur, elle devrait inverser sa direction.
  • Téléchargez le code à deux interrupteurs : Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino Mega. Cliquez sur Upload pour transférer ce programme amélioré vers votre Arduino. Ce code est conçu pour gérer intelligemment les entrées des deux interrupteurs de fin de course.
  • Testez le fonctionnement initial : Si votre câblage est correct, vous verrez le moteur commencer à tourner dans le sens horaire, tout comme dans nos exemples précédents. Le moteur continuera dans cette direction jusqu'à ce qu'il rencontre le premier interrupteur de fin de course.
  • Déclenchez l'interrupteur de fin de course 1 : Quand vous touchez ou activez l'interrupteur de fin de course 1 (connecté à la broche 6), vous devriez voir le moteur pas à pas changer immédiatement vers une rotation anti-horaire. Le système sait maintenant qu'il a frappé une limite et doit inverser sa direction.
  • Déclenchez l'interrupteur de fin de course 2 : Comme le moteur tourne dans la direction opposée, activez l'interrupteur de fin de course 2 (connecté à la broche 7). Le moteur devrait maintenant revenir à la rotation horaire, créant un cycle complet.
  • Observez le fonctionnement automatique : Une fois que vous avez testé les deux interrupteurs, vous pouvez laisser le système fonctionner automatiquement. S'il est correctement positionné, le mécanisme mobile voyagera d'avant en arrière entre les deux interrupteurs de fin de course, créant une oscillation fluide et contrôlée.
  • Ajustez finement le positionnement : Ajustez la position physique de vos interrupteurs de fin de course pour changer la distance de déplacement. Cela vous permet de personnaliser la plage de mouvement pour votre application spécifique.

Conseil de pro : Cette configuration à deux interrupteurs de fin de course est incroyablement polyvalente ! Vous pouvez l'utiliser pour créer tout, des stores automatisés aux systèmes de slider de caméra. La clé est de positionner les interrupteurs exactement aux bons endroits pour votre plage de mouvement souhaitée !

Sortie du Moniteur série

COM6
Send
Motor spinning clockwise... Motor spinning clockwise... The limit switch 1: TOUCHED The direction -> ANTI-CLOCKWISE Motor spinning anti-clockwise... Motor spinning anti-clockwise... The limit switch 2: TOUCHED The direction -> CLOCKWISE Motor spinning clockwise... Motor spinning clockwise... The limit switch 1: TOUCHED The direction -> ANTI-CLOCKWISE
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Idées d'application

Applications de projet : Maintenant que vous maîtrisez le contrôle Arduino Mega moteur pas à pas interrupteur de fin de course, votre créativité est votre seule limite ! Voici quelques idées de projets excitants pour vous lancer :

Vous pourriez créer un système de porte coulissante automatisée qui s'ouvre et se ferme basé sur l'entrée de capteurs, avec des interrupteurs de fin de course s'assurant qu'elle ne dépasse jamais et n'endommage pas le mécanisme. Construisez un slider de caméra pour des prises de vue vidéo fluides et professionnelles qui voyage automatiquement entre deux positions pour la photographie time-lapse. Installez un actionneur linéaire pour ouvrir des fenêtres, ajuster des panneaux solaires, ou contrôler des systèmes de ventilation dans les serres.

Considérez développer un contrôleur de rideaux ou stores automatisé qui répond aux capteurs de lumière et aux horaires programmés, avec des interrupteurs de fin de course empêchant le moteur de fonctionner quand les rideaux atteignent leurs positions complètement ouvertes ou fermées. Vous pourriez même construire un axe de CNC simple ou d'imprimante 3D en utilisant ces techniques comme fondation pour des systèmes multi-axes plus complexes.

Pour des projets plus avancés, essayez de construire une articulation de bras robotique avec des limites de mouvement définies, un système de tri automatisé qui déplace des objets d'avant en arrière entre les stations de traitement, ou un dispositif de mesure de précision qui peut revenir à des positions exactes de façon répétée. La combinaison de la précision du moteur pas à pas et du retour de l'interrupteur de fin de course rend tous ces projets réalisables avec les compétences que vous venez d'apprendre !

Défiez-vous

Défiez-vous : Prêt à porter vos compétences en moteur pas à pas et interrupteur de fin de course au niveau supérieur ? Essayez ces défis amusants pour élargir vos connaissances et construire des systèmes plus sophistiqués !

Défis faciles (Parfait pour les débutants) :

  • Modifiez la vitesse du moteur en changeant la valeur setMaxSpeed() - essayez de le rendre plus lent pour les applications délicates ou plus rapide pour un positionnement rapide
  • Ajoutez des indicateurs LED qui s'allument quand chaque interrupteur de fin de course est activé, vous donnant un retour visuel sur l'état du système
  • Changez le délai entre les changements de direction en ajoutant une pause quand un interrupteur de fin de course est déclenché

Défis moyens (Prêt à combiner les concepts) :

  • Ajoutez un bouton poussoir qui permet un contrôle manuel pour outrepasser le comportement automatique de l'interrupteur de fin de course
  • Incorporez un écran LCD pour montrer la direction actuelle, l'état de l'interrupteur et le compte des pas
  • Créez un système qui compte combien de fois il a voyagé entre les interrupteurs de fin de course et s'arrête après un nombre prédéterminé de cycles
  • Ajoutez l'accélération et la décélération pour faire accélérer et ralentir le moteur graduellement au lieu de démarrer et s'arrêter brusquement

Défis avancés (Il est temps de devenir créatif) :

  • Construisez un système de positionnement linéaire complet où vous pouvez commander au moteur de se déplacer vers des positions spécifiques entre les deux interrupteurs de fin de course
  • Créez une séquence de "homing" qui trouve les deux interrupteurs de fin de course au démarrage et se déplace ensuite vers une position centrale
  • Développez un système qui varie sa distance de déplacement basée sur l'entrée d'un potentiomètre ou d'un autre capteur
  • Concevez un système multi-axes utilisant plusieurs moteurs pas à pas et paires d'interrupteurs de fin de course travaillant ensemble

Défi niveau expert :

  • Construisez un système de contrôle de style CNC complet avec des commandes similaires au G-code qui peut positionner le moteur à des endroits précis dans les limites des interrupteurs de fin de course

Commencez avec les défis faciles et progressez - ne vous inquiétez pas si vous restez bloqué, c'est comme ça qu'on apprend ! Chaque défi vous enseignera de nouveaux concepts de programmation et vous aidera à comprendre comment fonctionnent les systèmes d'automatisation professionnels. Que construirez-vous en premier ?

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 !