ไม่สามารถเล่นวิดีโอนี้
ขออภัยในความไม่สะดวก

Arduino et moteurs pas-à-pas : découverte de la bibliothèque AccelStepper.

แชร์
ฝัง
  • เผยแพร่เมื่อ 15 ส.ค. 2024
  • Découvrez la puissance et la flexibilité de la bibliothèque AccelStepper pour Arduino dans cette vidéo explicative. Nous dévoilons un code pratique mettant en lumière les fonctions essentielles de cette bibliothèque. Vous apprendrez comment piloter efficacement des moteurs pas à pas avec divers drivers comme le DM860 ou DM582. Plongez au cœur de l'accélération, de la vitesse et de la précision des moteurs pas à pas !
    Sommaire :
    00:00 Introduction de la vidéo sur AccelStepper
    01:34 Test du code réalisé avec AccelStepper
    04:22 Explication du code et, en particulier, des fonctions de la bibliothèque AccelStepper.
    09:52 Conclusion concernant la bibliothèque AccelStepper.
    10:53 Fiche technique.
    Lien pour le code :
    www.redohm.fr/...
    📘 Introduction à AccelStepper :
    La bibliothèque AccelStepper pour Arduino est un outil puissant pour piloter les moteurs pas à pas. Elle offre une flexibilité accrue par rapport aux solutions de base et permet des contrôles plus sophistiqués.
    🌟 Avantages :
    Gestion des accélérations : Permet une montée et une descente en vitesse douce, ce qui protège le moteur et les mécanismes associés.
    Compatibilité étendue : Convient pour de nombreux types de drivers, y compris le DM860, DM582, et tout autre driver avec une connectique similaire.
    Contrôle précis : Contrôle de la position avec une précision au pas près, ainsi qu'une gestion avancée de la vitesse.
    ❗ Inconvénients :
    Courbe d'apprentissage : Pour les débutants, AccelStepper peut s'avérer plus complexe que certaines bibliothèques de base. Néanmoins, elle a l'avantage de gérer automatiquement le train d'impulsions, simplifiant considérablement le code.
    🔧 Fonctions d'AccelStepper Expliquées :
    🔶setMaxSpeed(): Cette fonction détermine la vitesse maximale à laquelle le moteur pas à pas peut tourner. Elle est essentielle pour garantir que le moteur ne tente pas d'opérer au-delà de ses capacités ou des limites définies pour un projet spécifique.
    🔶setAcceleration(): Elle permet de régler la vitesse d'accélération du moteur. En d'autres termes, cela détermine comment le moteur accélère depuis l'arrêt jusqu'à sa vitesse maximale. C'est utile pour garantir des mouvements fluides et éviter les saccades ou les surcharges.
    🔶moveTo(): Cette fonction donne l'ordre au moteur de se déplacer vers une position spécifique, mesurée en pas par rapport à sa position actuelle. C'est la base du contrôle positionnel des moteurs pas à pas.
    🔶currentPosition(): Comme son nom l'indique, elle renvoie la position actuelle du moteur en termes de pas. C'est essentiel pour connaître où se trouve le moteur à un moment donné.
    🔶run(): C'est la fonction qui fait effectivement tourner le moteur. Elle doit être appelée répétitivement pour déplacer le moteur. Elle vérifie la position actuelle du moteur et décide si le moteur doit avancer ou reculer pour atteindre sa position cible.
    🔶stop(): Elle arrête immédiatement le moteur, indépendamment de toute commande précédente. C'est utile pour les situations d'urgence ou pour simplement arrêter le moteur à la fin d'une tâche.
    🎬 Principe de fonctionnement du code présenté :
    Ce code est conçu pour montrer comment utiliser la bibliothèque AccelStepper avec un moteur pas à pas et un driver compatible. Il commence par initialiser les différents pins et paramètres du moteur. Ensuite, dans la boucle principale, il lit la valeur d'un potentiomètre pour définir la vitesse du moteur, vérifie l'état des boutons de commande pour démarrer ou arrêter le moteur et allume ou éteint des LEDs en fonction de l'état du moteur et de sa phase d'accélération. Grâce à la bibliothèque AccelStepper, toutes ces tâches sont réalisées de manière fluide et efficace, démontrant la puissance de cette bibliothèque pour le contrôle des moteurs pas à pas.
    ----------------------------------------------------------
    Notre site :
    www.redohm.fr/
    Twitter :
    / le_robot_maya
    ❤️ Notre chaine TH-cam Abonne-toi :
    REDOHM@REDOHM55
    ----------------------------------------------------------
    ⬇️ Téléchargement gratuit pour nos impression 3D sur:
    Grabcad :
    Cults :
    Thingiverse :
    ⬇️ Nos schematheque sur GrabCad
    grabcad.com/re...
    ----------------------------------------------------------
    Musique pour le tuto proposée par RedOhm
    🎵 Musique composée par : Louis Leca
    pour RedOhm

ความคิดเห็น • 19

  • @helenemarec8183
    @helenemarec8183 5 หลายเดือนก่อน

    Merci j'ai les reponses que je cherchais grace a vos explications

    • @REDOHM55
      @REDOHM55  5 หลายเดือนก่อน

      Bonjour,
      Je suis ravi d'entendre que mes explications vous ont été utiles et que vous avez trouvé les réponses que vous cherchiez. Si vous avez d'autres questions ou besoin de précisions supplémentaires, n'hésitez surtout pas à me le faire savoir. Votre curiosité et votre désir d'apprendre sont toujours les bienvenus ici.
      Merci beaucoup pour votre retour positif !
      Cordialement
      L'equipe RedOhm

  • @jeoq8566
    @jeoq8566 11 หลายเดือนก่อน +2

    C ' est toujours avec un énorme intérêt que je suis vos vidéos et je vous remercie de prendre le temps et de partager tout ce savoir .
    J'espère pouvoir mettre en pratique rapidement tout ce qui touche le domaine moteur pas a pas avec cette librairie !
    A bientôt de visionner de nouvelles vidéos !! Merci !!!

    • @REDOHM55
      @REDOHM55  10 หลายเดือนก่อน +1

      Merci à vous

  • @salimm4219
    @salimm4219 8 หลายเดือนก่อน

    merci beaucoup pour tout vos efforts pour partager le savoir .

    • @REDOHM55
      @REDOHM55  7 หลายเดือนก่อน

      Bonjour ,
      Je tiens à vous remercier sincèrement pour vos mots encourageants. C'est vraiment gratifiant de savoir que mes efforts contribuent à partager le savoir. Je suis également heureux de pouvoir contribuer à cette communauté passionnée.
      Je vous encourage vivement à me faire part de vos idées ou questions. Votre participation est essentielle, non seulement pour orienter les futurs sujets de mes tutoriels, mais aussi pour contribuer à améliorer constamment la qualité de la chaîne.
      Cordialement,
      Herve de RedOhm

  • @jean-pierreblin552
    @jean-pierreblin552 11 หลายเดือนก่อน +2

    Trés clair!! Impec et bravo.
    JiPé

    • @REDOHM55
      @REDOHM55  8 หลายเดือนก่อน

      merci

  • @nicolasfrou6576
    @nicolasfrou6576 5 วันที่ผ่านมา

    Bonjour,
    Super vidéo, ça parait simple!
    Malheureusement, ça ne marche pas chez moi... Je suis débutant en programmation.
    J'utilise un driver DM556T et un NEMA23
    Est-ce qu'il y a des parametres à ajuster dans la librairie stepper.h?
    Si vous avez des pistes pour m'orienter au dépannage?
    Mon moteur tourne avec un code sans la librairie stepper. Je pense que le cablage est OK
    Merci!

    • @REDOHM55
      @REDOHM55  4 วันที่ผ่านมา

      Bonjour et merci pour votre commentaire !
      Je suis ravi que la vidéo vous ait plu. Vous mentionnez que vous utilisez la bibliothèque Stepper.h, mais dans le tutoriel, j’utilise la bibliothèque AccelStepper. Ces deux bibliothèques sont différentes et ne fonctionnent pas de la même manière.
      📌 Différences entre Stepper.h et AccelStepper :
      • Stepper.h : C'est une bibliothèque de base pour contrôler les moteurs pas-à-pas. Elle permet de définir un nombre fixe de pas par révolution et de contrôler la vitesse de manière simple. Cependant, elle ne gère pas l'accélération ou la décélération, ce qui la rend moins adaptée pour des applications complexes.
      • AccelStepper : C’est la bibliothèque que j’ai utilisée dans le tutoriel. Elle offre un contrôle plus avancé du moteur, y compris la gestion de l'accélération et de la décélération, ce qui est essentiel pour un mouvement précis et fluide.
      📌 Pourquoi ça pourrait ne pas fonctionner avec Stepper.h :
      • Contrôle limité : Si vous utilisez Stepper.h au lieu de AccelStepper, il est possible que les paramètres que vous configurez ne soient pas compatibles avec le driver DM556T et le moteur NEMA23, en particulier si vous avez besoin d’un contrôle fin de la vitesse et de l’accélération.
      • Compatibilité : AccelStepper est mieux adaptée pour des configurations avancées comme celle que vous décrivez avec le DM556T. Elle vous permet de mieux contrôler la vitesse et d'éviter des erreurs qui peuvent se produire avec des moteurs pas-à-pas lorsqu'ils sont mal configurés.
      📌 Vérification de la borne ENA :
      Il y a un autre point à vérifier : la borne ENA sur le driver DM556T. Cette borne est utilisée pour activer ou désactiver le moteur. Si elle est câblée mais non correctement configurée, cela peut empêcher le moteur de fonctionner.
      - Fonction de la borne ENA : La borne ENA permet de contrôler l'activation du moteur. Lorsqu'elle est active (généralement à un niveau logique bas), le moteur est activé. Si elle est inactive (niveau logique haut), le moteur est désactivé.
      - Impact sur le fonctionnement : Si la borne ENA est connectée mais n'est pas correctement validée, le moteur peut rester désactivé même si tout le reste est correctement configuré.
      - Solution : Pour permettre le fonctionnement du moteur sans gérer ENA dans le code, il suffit d'ouvrir ou de fermer le circuit selon le câblage que vous avez adopté. Dans le code que je vous ai fourni, la gestion de ENA n’est pas incluse. Assurez-vous qu’elle est correctement configurée (généralement en la connectant à un niveau bas) pour activer le moteur.
      📌 Solution proposée avec AccelStepper :
      Je vous recommande d’essayer le code avec la bibliothèque AccelStepper, comme dans le tutoriel, pour voir si cela résout votre problème. Voici un exemple de code adapté à votre driver DM556T :
      #include
      const int enaPin = 7; // Pin Arduino connectée à ENA sur le driver
      // Initialisation de l'objet AccelStepper en mode DRIVER (2 fils : STEP et DIR)
      AccelStepper stepper(AccelStepper::DRIVER, 8, 9);
      void setup() {
      pinMode(enaPin, OUTPUT);
      // Activer le moteur en validant ENA
      digitalWrite(enaPin, LOW); // LOW active ENA
      // Réglage de la vitesse maximale et de l'accélération
      stepper.setMaxSpeed(1000); // en pas par seconde
      stepper.setAcceleration(500); // en pas par seconde au carré
      }
      void loop() {
      // Faire tourner le moteur dans un sens puis dans l'autre
      stepper.moveTo(2000); // Aller à la position 2000 pas
      stepper.runToPosition(); // Exécuter le mouvement
      delay(1000);
      stepper.moveTo(0); // Retourner à la position initiale
      stepper.runToPosition(); // Exécuter le mouvement
      delay(1000);
      }
      📌 Explications du code :
      1. Mode DRIVER : Le driver DM556T utilise deux entrées principales pour contrôler le moteur : STEP (pour les impulsions de pas) et DIR (pour la direction). Dans ce code, j'utilise le mode DRIVER de la bibliothèque AccelStepper, qui est conçu pour ce type de contrôleur.
      2. Pins STEP et DIR :
      o Le premier paramètre du constructeur (AccelStepper::DRIVER) indique à la bibliothèque qu'on utilise un driver avec deux fils (STEP et DIR).
      o Le deuxième paramètre (pin 8) est connecté à l'entrée STEP du DM556T.
      o Le troisième paramètre (pin 9) est connecté à l'entrée DIR du DM556T.
      3. Vitesse et accélération : setMaxSpeed(1000) et setAcceleration(500) permettent de configurer la vitesse maximale et l'accélération en pas par seconde et en pas par seconde au carré, respectivement. Vous pouvez ajuster ces valeurs selon vos besoins.
      4. Mouvement du moteur :
      o moveTo(2000) commande au moteur de se déplacer de 2000 pas.
      o runToPosition() exécute le mouvement en prenant en compte l'accélération et la décélération.
      Cette version est bien adaptée pour une utilisation avec le driver DM556T et un moteur pas-à-pas NEMA23, en utilisant les signaux STEP et DIR pour le contrôle.
      Si vous avez des questions ou si vous rencontrez toujours des problèmes, n’hésitez pas à me donner plus de détails sur votre configuration, et je vous aiderai avec plaisir.
      Cordialement,
      Hervé Mazelin

    • @nicolasfrou6576
      @nicolasfrou6576 17 ชั่วโมงที่ผ่านมา

      @@REDOHM55
      Le programme fonctionne! J'avais plusieurs soucis, mauvaise définition de l'objet, Pb de masse, alim arduino en 5V alors que c 'est demandé entre 7V et 12V
      Maintenant faut que je le modifie pour arriver à mon scénario
      Sur un rail, je sélectionne 2 points. Le moteur doit faire des aller retour entre ces 2 points pendant 40 min à vitesse constante sans compter les accélérations et décélération autour des changements de sens
      Cordialement

    • @REDOHM55
      @REDOHM55  11 ชั่วโมงที่ผ่านมา

      Bonjour,
      Merci pour votre question ! Je voudrais clarifier quelques points pour être sûr de bien comprendre votre besoin.
      Vous mentionnez que le moteur doit faire des allers-retours entre deux points pendant 40 minutes à vitesse constante. Pour répondre au mieux à votre demande, il est important de savoir si vous souhaitez que le moteur :
      Parcoure la distance entre les points A et B en 40 minutes, sans retour, ou
      Fasse un aller-retour complet (de A à B puis de B à A) en 40 minutes.
      La distinction a son importance car elle influence le calcul de la vitesse du moteur.
      Première option : Si vous avez une durée de 40 minutes pour un seul trajet (de A à B), nous déterminerons la vitesse en fonction de la distance connue entre ces deux points pour que le moteur atteigne B exactement 40 minutes après avoir quitté A.
      Deuxième option : Si les 40 minutes incluent l’aller-retour complet, la vitesse devra être calculée de manière à ce que le moteur puisse aller de A à B puis revenir à A dans ce laps de temps, toujours à vitesse constante.
      Dans tous les cas, il est impératif de connaître la distance exacte entre les points A et B pour calculer correctement la vitesse du moteur.
      Si vous pouvez me préciser ces éléments, je serai en mesure de vous fournir les calculs nécessaires et de vous guider dans la configuration de votre système.
      Ps: Ce sujet est intéressant, et je peux vous proposer de créer une vidéo pour expliquer tous les modes de calcul et le paramétrage. Cependant, pour cela, il est essentiel que je dispose de toutes les informations nécessaires afin de réaliser le tutoriel en question.
      À bientôt !
      Herve de RedOhm

    • @nicolasfrou6576
      @nicolasfrou6576 9 ชั่วโมงที่ผ่านมา

      @@REDOHM55
      J'ai deja commencé à faire quelques calculs
      Ma distance maximum entre A et B sera de 190cm et je devrai faire 4 aller retour en 40min
      J'utilise une tige filtée M12, donc le pas est de 1,75mm par tours.
      Mon driver est configuré avec 400pulse par tours.
      Je me base sur ces données pour faire mes premiers calculs, dans un deuxième temps je pourrai sélectionner une distance minimum entre A et B de 50cm et j'aurai un choix de vitesse constante dans un menu.
      Donc mes calculs :
      4A/R en 40min je simplifie 1A/R en 10min
      380cm en 10min
      6,33mm en 1s
      6,33/1,75=3,62tours en 1s
      Ma vitesse constance sera une variable que je pourrai modifier, la je pars sur 3,62Trs/s
      Je n'ai pas besoin d'une grande précision et j'ajusterai tout ceci avec la pratique.
      Cela vous semble-t-il correct ?
      Ma donnée prioritaire est la durée, une fois les 40min passées le moteur retourne en position0 c'est à dire le minimum que peut prendre A,il y aura un capteur de position pour cette référence.
      Nicolas

  • @blueboy558
    @blueboy558 7 หลายเดือนก่อน

    Super intéressant, mais j’ai pas réussi.

    • @REDOHM55
      @REDOHM55  7 หลายเดือนก่อน +1

      Bonjour et merci beaucoup pour votre commentaire ! Il semble que vous ayez rencontré quelques difficultés avec le code AccelStepper. N'hésitez pas à nous poser des questions spécifiques ou à partager les problèmes que vous avez rencontrés, nous serions ravis de vous aider à les résoudre. La bibliothèque AccelStepper peut être complexe, mais une fois maîtrisée, elle offre d'énormes avantages en termes de contrôle des moteurs pas à pas.
      Et bien sûr, permettez-moi de vous souhaiter une merveilleuse année 2024 ! Que cette nouvelle année vous apporte beaucoup de succès dans tous vos projets, notamment en robotique et en programmation. Bonne année !
      Herve de RedOhm

    • @blueboy558
      @blueboy558 7 หลายเดือนก่อน

      @@REDOHM55
      Merci beaucoup pour votre message. C’est vraiment très gentil de vouloir aider.
      Je vous explique. J’essaie d’apprendre un peu l’électronique car j’en aurais besoin pour améliorer mes machines de production dans l’industrie.
      Malheureusement c’est très difficile d’apprendre par sois même sur internet et dans les livres. Vos vidéos sont vraiment d’une aide très précieuse et d’ailleurs, je vous en remercie.
      Avant de vous embêter avec mes problèmes j’ai décidé de refaire l’assemblage pour voir si j’avais fait une erreur et j’ai trouvé.
      J’avais essayé de faire le programme sans les boutons et de plus j’avais recopié le programme. Donc ce matin, j’ai téléchargé votre programme et j’ai mis les boutons et tout a fonctionné.
      J’ai juste une ou deux questions:
      Que est-ce qui vient branché à la pin 5?
      Mon moteur tourne bien, mais il fait des bruits et il vibre sur la table. En fait, le movement n’est pas doux et fluide. Comment je peux corriger ça?

    • @REDOHM55
      @REDOHM55  7 หลายเดือนก่อน

      Bonjour
      Tout d'abord, je vous remercie pour vos mots encourageants et suis ravi de savoir que mes vidéos vous sont utiles dans votre apprentissage de l'électronique, surtout dans un domaine aussi exigeant que l'industrie.
      Concernant votre première question sur ce qui est connecté à la pin 5, il s'agit d'une LED de visualisation indiquant que le moteur est en phase d'accélération. Vous trouverez plus de détails sur ce branchement dans le schéma présenté à la 40ème seconde de la vidéo. Pour une compréhension plus approfondie, je vous invite à consulter les commentaires du code à 4 minutes et 33 secondes de la vidéo. En complément, la pin 6 indique que le moteur est en fonctionnement.
      Pour votre deuxième question sur le bruit et les vibrations du moteur, plusieurs facteurs peuvent en être la cause. Voici quelques pistes à explorer :
      🔌 Vérification des connexions : Assurez-vous que toutes les connexions sont bien sécurisées et qu'il n'y a pas de faux contacts.
      ⚡ Réglage du courant : Un courant inapproprié peut causer des vibrations. Réglez le courant en fonction des spécifications de votre moteur.
      🔋 Type d'alimentation : Une alimentation inadéquate peut entraîner des performances médiocres.
      ⚙ Paramètres du driver : Vérifiez si les paramètres du driver sont correctement configurés pour votre type de moteur.
      🤖 Type de moteur : Certains moteurs sont plus adaptés à certaines applications que d'autres. La référence de votre moteur pas-à-pas pourrait m'aider à vous donner des conseils plus précis.
      Si après ces vérifications, le problème persiste, n'hésitez pas à m'envoyer davantage de détails sur votre configuration, ainsi qu'une petite vidéo montrant le problème. Vous pouvez me contacter en privé sur Facebook ou Messenger.
      Je reste à votre disposition pour toute question supplémentaire.
      Cordialement,
      Herve de RedOhm

  • @thierrymelmet3813
    @thierrymelmet3813 11 หลายเดือนก่อน +1

    Superbe vidéo. Je viens de vous découvrir, alors je fonce regarder la suite. :)

    • @REDOHM55
      @REDOHM55  11 หลายเดือนก่อน +1

      Merci
      Herve de RedOhm