Articles

Comment contrôler un moteur pas à pas avec pilote A4988 et Arduino

Cet article comprend tout ce que vous devez savoir sur le contrôle d’un moteur pas à pas avec le pilote de moteur pas à pas A4988 et Arduino. J’ai inclus un schéma de câblage, un tutoriel sur la façon de définir la limite de courant et de nombreux exemples de codes.

Bien que vous puissiez utiliser ce pilote sans bibliothèque Arduino, je vous recommande fortement de jeter un coup d’œil à l’exemple de code de la bibliothèque AccelStepper à la fin de ce tutoriel. Cette bibliothèque est assez facile à utiliser et peut grandement améliorer les performances de votre matériel.

Après chaque exemple, je décompose et explique comment fonctionne le code, vous ne devriez donc avoir aucun problème à le modifier en fonction de vos besoins.

Si vous souhaitez en savoir plus sur d’autres pilotes de moteur pas à pas, les articles ci-dessous pourraient vous être utiles:

  • How to control a stepper motor with DRV8825 driver and Arduino
  • 28BYJ-48 Stepper Motor with ULN2003 Driver and Arduino Tutorial
  • How to control a Stepper Motor with Arduino Motor Shield Rev3
  • TB6600 Stepper Motor Driver with Arduino Tutorial

Supplies

Hardware components

A4988 stepper motor driver × 1 Amazon
AliExpress
NEMA 17 stepper motor × 1 Amazon
Arduino Uno Rev3 × 1 Amazon
Power supply (8-35 V) × 1 Amazon
AliExpress
Breadboard × 1 Amazon
Capacitor (100 µF) × 1 Amazon
Jumper wires ~ 10 Amazon
AliExpress
USB cable type A/B × 1 Amazon

J’aime utiliser ce pilote en combinaison avec un bouclier CNC ou une carte d’extension. Un tel bouclier comprend déjà des condensateurs et offre un moyen facile de sélectionner la résolution du micro-saut. Il facilite le câblage et constitue une excellente option si vous avez besoin d’une solution plus permanente qu’une planche à pain.

Tools

Small screwdriver Amazon
Multimeter Amazon
Alligator test leads (optional) Amazon

Software

Arduino IDE

Makerguides.com est un participant au programme Amazon Services LLC Associates, un programme de publicité d’affiliation conçu pour fournir aux sites un moyen de gagner des frais de publicité en faisant de la publicité et en créant des liens vers des produits sur Amazon.com .

A propos du pilote

Au cœur du pilote A4988, vous trouverez une puce fabriquée par Allegro MicroSystems : le Pilote de Microstepping DMOS A4988 avec Traducteur et Protection contre les Surintensités. Ce pilote de moteur intégré facilite l’interface avec un microcontrôleur car vous n’avez besoin que de deux broches pour contrôler à la fois la vitesse et la direction du moteur pas à pas.

Le pilote a une capacité de sortie maximale de 35 V et ± 2 A, ce qui est idéal pour piloter des moteurs pas à pas de petite à moyenne taille comme un moteur pas à pas bipolaire NEMA 17.

Si vous avez besoin de contrôler des moteurs pas à pas plus gros comme la NEMA 23, jetez un coup d’œil au pilote de moteur pas à pas TB6600. Ce pilote peut être utilisé avec le même code que l’A4988 et a une cote actuelle de 3,5 A.

  • Pilote de moteur pas à pas TB6600 avec tutoriel Arduino

La puce de pilote A4988 possède plusieurs fonctions de sécurité intégrées telles que la surintensité, le court-circuit, le verrouillage de sous-tension et la protection contre la surchauffe. Vous pouvez trouver plus de spécifications dans le tableau ci-dessous.

A4988 Specifications

Minimum operating voltage 8 V
Maximum operating voltage 35 V
Continuous current per phase 1 A
Maximum current per phase 2 A
Minimum logic voltage 3 V
Maximum logic voltage 5.5 V
Microstep resolution full, 1/2, 1/4, 1/8 and 1/16
Reverse voltage protection? Non
Dimensions 15,5 × 20,5 mm (0,6″× 0,8″)
Coût Vérifiez le prix

Pour plus d’informations, vous pouvez consulter la fiche technique ici.

Différences entre l’A4988 et le DRV8825

Le DRV8825 est assez similaire à l’A4988 mais il y a quelques différences clés:

  • Le DRV8825 offre un micro-pas de 1/32, alors que l’A4988 ne descend qu’à 1/16 de pas. Un microcoupage plus élevé permet un fonctionnement plus fluide et silencieux, mais n’est pas toujours nécessaire.
  • Le potentiomètre de limite de courant se trouve à un emplacement différent
  • La relation entre la tension de référence et la limite de courant est différente.
  • Le DRV8825 nécessite une durée d’impulsion minimale de 1,9 µs; l’A4988 nécessite un minimum de 1µs.
  • Le DRV8825 peut être utilisé avec une alimentation moteur à tension plus élevée (45 V contre 35 V). Cela signifie qu’il est moins sensible aux dommages causés par les pointes de tension LC.
  • Le DRV8825 peut fournir un peu plus de courant que l’A4988 sans refroidissement supplémentaire.

Notez que le brochage du DRV8825 est exactement le même que pour l’A4988, il peut donc être utilisé en remplacement direct!

A4899 (à gauche) vs DRV8825 (à droite)

Paramètres Microstep

Les moteurs pas à pas ont généralement une taille de pas de 1,8 ° ou 200 pas par tour, cela se réfère à des pas complets. Un pilote de micro-pas tel que l’A4988 permet des résolutions plus élevées en permettant des emplacements de pas intermédiaires. Ceci est réalisé en alimentant les bobines avec des niveaux de courant intermédiaires.

Par exemple, l’entraînement d’un moteur en mode quart de pas donnera au moteur à 200 pas par tour 800 micro-pas par tour en utilisant quatre niveaux de courant différents.

Brochage A4988

Les broches de sélection de résolution (taille de pas) (MS1, MS2 et MS3) vous permettent de sélectionnez l’une des cinq résolutions d’étape selon le tableau ci-dessous.

MS1 MS2 MS3 Microstep resolution
Low Low Low Full step
High Low Low 1/2 step
Low High Low 1/4 step
High High Low 1/8 step
High High High 1/16 step

Les trois entrées ont des résistances déroulantes internes de 100 kΩ, de sorte que le fait de laisser les trois broches de sélection microstep déconnectées entraîne le mode pas à pas complet.

J’utilise souvent un bouclier CNC ou une carte d’extension en combinaison avec ces pilotes. La carte d’extension dispose de 3 commutateurs dip pour régler MS1-MS3 haut ou bas et sur le CNC-shield, vous pouvez installer des cavaliers. Si vous utilisez le pilote avec une platine de prototypage, vous pouvez simplement utiliser des fils de connexion pour connecter les broches de sélection à 5 V (c’est-à-dire les rendre HAUTES).

Câblage – Connexion de l’A4988 à l’Arduino et au moteur pas à pas

Schéma de câblage / schéma pour le pilote de moteur pas à pas A4988 avec Arduino et moteur pas à pas.

Le schéma de câblage ci-dessus vous montre comment connecter le pilote A4899 à un moteur pas à pas et à l’Arduino.

Les connexions sont également données dans le tableau suivant:

A4988 Connections

A4988 Connection
VMOT 8-35V
GND Motor ground
SLP RESET
RST SLP
VDD 5V
GND Logic ground
STP Pin 3
DIR Pin 2
1A, 1B, 2A, 2B Stepper motor
  • L’alimentation du moteur est connectée à GND et VMOT (en haut à droite).
  • Les deux bobines du moteur pas à pas sont connectées à 1A, 1B et 2A, 2B (voir ci-dessous).
  • La broche GND (en bas à droite) est connectée à la broche de masse du microcontrôleur et VDD est connectée à 5V.
  • Les broches STP (step) et DIR (direction) sont connectées respectivement aux broches numériques 3 et 2. Vous pouvez choisir un code pin numérique différent si vous le souhaitez, mais ce sont ceux que j’ai utilisés pour ce tutoriel et l’exemple de code.
  • La broche SLP est une entrée basse active. Ce qui signifie que tirer cette broche vers le bas met le conducteur en mode veille, minimisant ainsi la consommation d’énergie. RST est également une entrée basse active. Lorsque vous tirez vers le bas, toutes les entrées de PAS sont ignorées jusqu’à ce que vous les tiriez vers le haut. Si vous n’utilisez pas la broche, vous pouvez la connecter à la broche SLP / SLEEP adjacente pour l’amener haut et activer le pilote.
  • La broche EN (enable) peut être laissée déconnectée, elle est tirée vers le bas par défaut. Lorsque cette broche est placée haut, le pilote est désactivé.

Dans le reste de ce tutoriel, j’ai laissé MS1, MS2 et MS3 déconnectés, de sorte que le pilote fonctionne en mode étape complète. Cela rend l’explication du code un peu plus facile. Normalement, j’utiliserais 1/8 ou 1/16 microstepping et connecterais les broches appropriées à 5V (voir le tableau dans l’introduction).

Avertissement

La carte porteuse A4988 utilise des condensateurs en céramique à faible ESR, ce qui la rend sensible aux pics de tension LC destructeurs, en particulier lors de l’utilisation de câbles d’alimentation de plus de quelques pouces.

Pour protéger le pilote, vous pouvez connecter un condensateur électrolytique entre VMOT et GND. Pololu suggère un condensateur de 47 µF ou plus (j’ai utilisé un condensateur de 100 µF). J’aime ces boîtes d’assortiment d’Amazon, de cette façon j’ai toujours des condensateurs de la bonne taille sous la main.

Comment déterminer le câblage correct du moteur pas à pas?

Si vous ne trouvez pas la fiche technique de votre moteur pas à pas, il peut être difficile de comprendre comment câbler correctement votre moteur. J’utilise l’astuce suivante pour déterminer comment connecter des moteurs pas à pas bipolaires à 4 fils:

La seule chose que vous devez identifier est les deux paires de fils qui sont connectées aux deux bobines du moteur. Les fils d’une bobine sont connectés à 1A et 1B et l’autre à 2A et 2B, la polarité n’a pas d’importance.

Pour trouver les deux fils d’une bobine, procédez comme suit avec le moteur déconnecté:

  1. Essayez de faire tourner l’arbre du moteur pas à pas à la main et remarquez à quel point il est difficile de tourner.
  2. Maintenant, choisissez une paire aléatoire de fils du moteur et touchez les extrémités nues ensemble.
  3. Ensuite, essayez de faire tourner à nouveau l’arbre du moteur pas à pas.

Si vous ressentez beaucoup de résistance, vous avez trouvé une paire de fils de la même bobine. Si vous pouvez faire tourner l’arbre librement, essayez une autre paire de fils. Connectez maintenant les deux bobines aux broches indiquées dans le schéma de câblage ci-dessus.

(Si ce n’est toujours pas clair, veuillez laisser un commentaire ci-dessous, plus d’informations peuvent également être trouvées sur le RepRap.org wiki)

Comment définir la limite actuelle?

Avant de commencer à programmer votre Arduino et de commencer à utiliser le pilote, il y a une chose très importante à faire que beaucoup de gens oublient: définir la limite actuelle!

Cette étape n’est pas très compliquée mais absolument nécessaire pour protéger votre moteur pas à pas et le pilote. Si vous ne définissez pas de limite de courant appropriée, votre moteur peut tirer plus de courant qu’il ou que votre conducteur ne peut en supporter, cela risque d’endommager l’un ou les deux.

Pour régler la limite de courant, vous devez mesurer une tension de référence et ajuster le potentiomètre de bord en conséquence. Vous aurez besoin d’un petit tournevis, d’un multimètre pour mesurer la tension de référence et de cordons de test alligator (en option mais très pratiques).

Schéma de câblage de limite de courant pour le pilote A4988.

Pour mesurer la tension de référence, le pilote doit être alimenté. L’A4988 n’a besoin que d’alimentation via VDD (5V) et vous devez connecter RST et SLP ensemble, sinon le pilote ne s’allume pas. Il est préférable de déconnecter le moteur pas à pas pendant que vous faites cela.

Si vous avez déjà branché le pilote, vous pouvez tout laisser sauf le moteur pas à pas connecté. Vous pouvez appliquer l’alimentation via le port USB de l’Arduino.

A4988 Connection
VDD 5V
RST SLP
SLP RESET
GND Ground
Required connections to set the current limit

Current limit formula

The next step is to calculate the current limit with the following formule:

Limite de courant = Vref ÷ (8 × Rcs)

Le Rcs est la résistance de détection du courant. Si vous avez acheté un pilote A4988 chez Pololu avant janvier 2017, le Rcs sera de 0,050 Ω. Les pilotes vendus après cela ont des résistances de détection de courant de 0,068 Ω.

Cela signifie donc que pour une limite de courant de 1A pour une carte avec des résistances de détection de courant de 0,068 Ω, le Vref doit être de 540 mV.

Emplacements de résistance de détection de courant. Photo: www.pololu.com

Pour sélectionner la bonne limite de courant, consultez la fiche technique de votre moteur pas à pas. Si vous ne trouvez pas la puissance nominale actuelle de votre moteur, je vous recommande de commencer par une limite de courant de 1A. Vous pouvez toujours l’augmenter plus tard si votre moteur / pilote manque d’étapes.

Info bonus: Lorsque vous utilisez le pilote en mode pas à pas, le courant traversant chaque bobine est limité à environ 70% de la limite de courant définie. Cela signifie que vous devez définir la limite actuelle 40% plus élevée ou 1,4 A en mode pas complet. Lors de l’utilisation de microstepping, la formule ci-dessus s’applique.

Notez que vous devez recalibrer la limite de courant si vous modifiez la tension d’alimentation du moteur. Si votre moteur fait beaucoup de bruit, essayez de réduire la limite de courant. Il est préférable de régler la limite de courant juste assez élevée pour que le moteur ne rate pas d’étapes.

Mesure Vref

Maintenant, vous devrez mesurer la tension de référence (Vref) entre les deux points marqués sur l’image ci-dessous (GND et le potentiomètre) et l’ajuster à la valeur que vous avez calculée.

Points de sonde Vref (GND et potentiomètre).

Je recommande d’utiliser des cordons de test alligator fixés au tournevis pour régler la limite de courant. Cela vous permet d’ajuster le potentiomètre et de mesurer la tension de référence en même temps.

Remarque: Il existe une autre façon de mesurer la limite de courant, c’est-à-dire de mesurer directement la consommation de courant du moteur pas à pas. Personnellement, je trouve la méthode ci-dessus beaucoup plus facile.

Pololu mentionne ce qui suit sur son site web:

Remarque: Le courant de la bobine peut être très différent du courant d’alimentation, vous ne devez donc pas utiliser le courant mesuré sur l’alimentation pour définir la limite de courant. L’endroit approprié pour mettre votre compteur de courant est en série avec l’une de vos bobines de moteur pas à pas.

Pololu

FAQ sur la limite de courant

Dois-je connecter ou non le moteur pas à pas?Non, vous n’avez pas besoin de connecter le moteur pas à pas au pilote lors du réglage de la limite de courant. Pour être prudent, déconnectez votre moteur, cela interfère parfois avec la mesure de la tension Vref.

Dois-je faire tourner le moteur en exécutant l’esquisse du moteur Arduino?
Non, voir la question ci-dessus.

Dois-je tourner l’horloge du potentiomètre – ou dans le sens antihoraire pour augmenter Vref?
Cela dépend du fabricant du pilote. Si vous avez une véritable carte de dérivation Polulu du DRV8825 ou A4988, tournez le potentiomètre dans le sens des aiguilles d’une montre pour augmenter Vref et dans le sens antihoraire pour l’abaisser.

Refroidissement du pilote

Le circuit intégré du pilote A4988 a un courant nominal maximal de 2 A par bobine, mais sans dissipateur thermique, il ne peut fournir qu’environ 1 A par bobine avant qu’il ne commence à surchauffer.

Le pilote est généralement livré avec un petit dissipateur thermique à dos adhésif, que je vous recommande d’installer immédiatement. Vous pouvez également acheter un tas de petits dissipateurs de chaleur sur Amazon pour un prix vraiment bon marché.

Exemple de code Arduino de base pour contrôler un moteur pas à pas

Maintenant que vous avez câblé le pilote et défini la limite actuelle, il est temps de connecter l’Arduino à l’ordinateur et de télécharger du code. Vous pouvez télécharger l’exemple de code suivant sur votre Arduino à l’aide de l’ Arduino Arduino. Pour cet exemple spécifique, vous n’avez pas besoin d’installer de bibliothèques.

Cette esquisse contrôle à la fois la vitesse, le nombre de tours et le sens de rotation du moteur pas à pas.

Vous pouvez copier le code en cliquant sur le bouton dans le coin supérieur droit du champ code.

Comment fonctionne le code :

L’esquisse commence par définir les broches de pas et de direction. Je les ai connectés aux broches Arduino 3 et 2.

L’instruction #define est utilisée pour donner un nom à une valeur constante. Le compilateur remplacera toute référence à cette constante par la valeur définie lors de la compilation du programme. Ainsi, partout où vous mentionnez dirPin, le compilateur le remplacera par la valeur 2 lorsque le programme sera compilé.

J’ai également défini une constante stepsPerRevolution. Parce que j’ai mis le pilote en mode pas complet, je l’ai mis à 200 pas par tour. Modifiez cette valeur si votre configuration est différente.

// Define stepper motor connections and steps per revolution:#define dirPin 2#define stepPin 3#define stepsPerRevolution 200

Dans la section setup() du code, toutes les broches de commande du moteur sont déclarées en SORTIE numérique avec la fonction pinMode().

void setup() { // Declare pins as output: pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT);}

Dans la section loop() du code, nous laissons le moteur tourner un tour lentement dans le sens CW et un tour rapidement dans le sens CCW. Ensuite, nous laissons le moteur tourner 5 tours dans chaque direction avec une vitesse élevée. Alors, comment contrôlez-vous la vitesse, la direction de rotation et le nombre de tours?

Contrôle du sens de rotation:

Pour contrôler le sens de rotation du moteur pas à pas, nous réglons la broche DIR (direction) HAUTE ou BASSE. Pour cela, nous utilisons la fonction digitalWrite(). Selon la façon dont vous avez connecté le moteur pas à pas, le réglage de la broche DIR high permettra au moteur de tourner en CW ou CCW.

Contrôle du nombre de pas ou de tours:

Dans cet exemple d’esquisse, les boucles for contrôlent le nombre de pas que prendra le moteur pas à pas. Le code dans la boucle for entraîne 1 pas du moteur pas à pas. Parce que le code dans la boucle est exécuté 200 fois (stepsPerRevolution), il en résulte 1 révolution. Dans les deux dernières boucles, le code dans la boucle for est exécuté 1000 fois, ce qui se traduit par 1000 pas ou 5 tours.

Notez que vous pouvez changer le deuxième terme de la boucle for en n’importe quel nombre d’étapes que vous souhaitez. for(int i = 0; i < 100; i++) entraînerait 100 étapes, soit une demi-révolution.

Vitesse de contrôle:

La vitesse du moteur pas à pas est déterminée par la fréquence des impulsions que nous envoyons à la broche DE PAS. Plus la fréquence est élevée, plus le moteur tourne rapidement. Vous pouvez contrôler la fréquence des impulsions en changeant delayMicroseconds() dans le code. Plus le délai est court, plus la fréquence est élevée, plus le moteur tourne rapidement.

Tutoriel de la bibliothèque AccelStepper

La bibliothèque AccelStepper écrite par Mike McCauley est une bibliothèque géniale à utiliser pour votre projet. L’un des avantages est qu’il prend en charge l’accélération et la décélération, mais il a également de nombreuses autres fonctions intéressantes.

Vous pouvez télécharger la dernière version de cette bibliothèque ici ou cliquer sur le bouton ci-dessous.

Vous pouvez installer la bibliothèque en allant dans Sketch >Include Library >Add.Bibliothèque ZIP in dans l’ Arduino Arduino.

Une autre option consiste à accéder aux outils > Gérer les bibliothèques or ou tapez Ctrl + Maj + I sous Windows. Le gestionnaire de bibliothèque ouvrira et mettra à jour la liste des bibliothèques installées.

Vous pouvez rechercher ‘accelstepper’ et rechercher la bibliothèque de Mike McCauley. Sélectionnez la dernière version, puis cliquez sur Installer.

Code d’exemple de rotation continue

L’esquisse suivante peut être utilisée pour faire fonctionner un ou plusieurs moteurs pas à pas en continu à une vitesse constante. (Aucune accélération ou décélération n’est utilisée).

Comment fonctionne le code:

La première étape consiste à inclure la bibliothèque avec #include <AccelStepper.h>.

// Include the AccelStepper library:#include <AccelStepper.h>

L’étape suivante consiste à définir les connexions A4988 à Arduino et le type d’interface du moteur. Le type d’interface du moteur doit être réglé sur 1 lors de l’utilisation d’un variateur de pas et de direction. Vous pouvez trouver les autres types d’interface ici.

L’instruction #define est utilisée pour donner un nom à une valeur constante. Le compilateur remplacera toute référence à cette constante par la valeur définie lors de la compilation du programme. Ainsi, partout où vous mentionnez dirPin, le compilateur le remplacera par la valeur 2 lorsque le programme sera compilé.

// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver:#define dirPin 2#define stepPin 3#define motorInterfaceType 1

Ensuite, vous devez créer une nouvelle instance de la classe AccelStepper avec le type d’interface moteur et les connexions appropriés.

Dans ce cas, j’ai appelé le moteur pas à pas ‘stepper’ mais vous pouvez également utiliser d’autres noms, comme ‘z_motor’ ou ‘liftmotor’ etc. AccelStepper liftmotor = AccelStepper(motorInterfaceType, stepPin, dirPin);. Le nom que vous donnez au moteur pas à pas sera utilisé plus tard pour régler la vitesse, la position et l’accélération de ce moteur particulier. Vous pouvez créer plusieurs instances de la classe AccelStepper avec des noms et des broches différents. Cela vous permet de contrôler facilement 2 moteurs pas à pas ou plus en même temps.

// Create a new instance of the AccelStepper class:AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);

Dans la section setup() du code, nous définissons la vitesse maximale par pas / seconde. Des vitesses de plus de 1000 pas par seconde peuvent être peu fiables, j’ai donc défini cela comme le maximum. Notez que je spécifie le nom du moteur pas à pas (’stepper’), pour lequel je souhaite définir la vitesse maximale. Si vous avez plusieurs moteurs pas à pas connectés, vous pouvez spécifier une vitesse différente pour chaque moteur:

void setup() { // Set the maximum speed in steps per second: stepper.setMaxSpeed(1000); stepper2.setMaxSpeed(500);}

Dans le loop()nous réglons d’abord la vitesse à laquelle nous voulons que le moteur tourne. Pour cela, nous utilisons la fonction setSpeed(). (vous pouvez également le placer dans la section configuration du code).

stepper.runSpeed() interroge le moteur et lorsqu’une étape est due, exécute 1 étape. Cela dépend de la vitesse réglée et du temps écoulé depuis la dernière étape. Si vous souhaitez changer la direction du moteur, vous pouvez définir une vitesse négative: stepper.setSpeed(-400); tourne le moteur dans l’autre sens.

Exemple de code pour contrôler le nombre de pas ou de tours

Pour laisser le moteur tourner un nombre spécifique de pas, je préfère utiliser une boucle while en combinaison avec stepper.currentPosition(). Vous pouvez utiliser l’exemple de code suivant pour laisser le moteur tourner d’avant en arrière.

Explication du code :

La première partie du code jusqu’à la section loop() est exactement la même que dans l’exemple précédent.

Dans la boucle, j’utilise une boucle while en combinaison avec la fonction currentPosition(). Tout d’abord, je mets la position actuelle du moteur pas à pas à zéro avec stepper.setCurrentPosition(0).

 // Set the current position to 0: stepper.setCurrentPosition(0);

Ensuite, nous utilisons la boucle while. Une boucle while boucle continuellement, et infiniment, jusqu’à ce que l’expression à l’intérieur de la parenthèse, () devienne fausse. Donc, dans ce cas, je vérifie si la position actuelle du moteur pas à pas n’est pas égale à 400 pas (!= signifie : n’est pas égal à). Bien que ce ne soit pas le cas, nous faisons fonctionner le moteur pas à pas à une vitesse constante définie par setSpeed().

Dans le reste de la boucle, nous faisons exactement la même chose, juste avec une vitesse et une position de cible différentes.

Exemple de code d’accélération et de décélération

Avec l’esquisse suivante, vous pouvez ajouter une accélération et une décélération aux mouvements du moteur pas à pas, sans codage compliqué. Dans l’exemple suivant, le moteur va et vient avec une vitesse de 200 pas par seconde et une accélération de 30 pas par seconde par seconde.

Explication du code:

Dans le setup(), outre la vitesse maximale, nous devons définir l’accélération / décélération. Pour cela, nous utilisons la fonction setAcceleration().

void setup() { // Set the maximum speed and acceleration: stepper.setMaxSpeed(200); stepper.setAcceleration(30);}

Dans la section boucle du code, j’ai utilisé une manière différente de laisser le moteur tourner un nombre prédéfini de pas. La fonction stepper.moveTo() est utilisée pour définir la position cible. La fonction stepper.runToPostion() déplace le moteur (avec accélération/décélération) vers la position cible et bloque jusqu’à ce qu’il soit à la position cible. Parce que cette fonction bloque, vous ne devez pas l’utiliser lorsque vous devez contrôler d’autres choses en même temps.

Conclusion

Dans cet article, je vous ai montré comment contrôler un moteur pas à pas avec le pilote de moteur pas à pas A4988 et Arduino. J’espère que vous l’avez trouvé utile et instructif. Si vous l’avez fait, partagez-le avec un ami qui aime aussi l’électronique et la fabrication de choses!

J’ai personnellement beaucoup utilisé ce pilote pour un tas d’imprimantes 3D et d’autres projets liés à la CNC, mais j’aimerais savoir quels projets vous prévoyez de construire (ou avez déjà construit) avec ce pilote. Si vous avez des questions, des suggestions ou si vous pensez que des choses manquent dans ce tutoriel, veuillez laisser un commentaire ci-dessous.