Comprendre et bien utiliser le driver A4988 pour moteurs pas à pas.


On retrouve beaucoup d’applications utilisant les moteurs « pas à pas » ou plus communément en anglais les « Stepper motor ». Je citerai bien sûr les imprimantes 3D bien connues à l’heure actuelle, mais il est bien évident qu’il existe une multitude d’applications pour ces moteurs. Le but de cet article n’est pas de passer en revue toutes les applications et technologies du marché, mais de parcourir ensemble les 80% des notions essentielles sur l’utilisation pertinente du célèbre driver A4988 et son homologue le DRV8825 et de vous partager les mesures que j’ai pu réaliser à l’oscilloscope et constatations que j’ai pu observer.

Voici ma toute nouvelle vidéo qui aborde toute la partie réglage du driver.


J’espère ainsi que cet article et cette vidéo vous permettra de mieux appréhender ces modules, et donc, les utiliser de manière pertinente dans vos propres applications.

Même si un moteur « pas à pas » est relativement simple de par sa construction, il est tout de même un peu plus compliqué de le commander correctement comparé à un moteur DC par exemple.

Pour le moteur DC, une simple tension continue appliquée à ses bornes permet de le faire tourner à une certaine vitesse qui est proportionnelle à cette tension. Pour le moteur « pas à pas », c’est un peu plus compliqué que cela.

Je ne vais pas faire tout un cours sur les moteurs pas à pas, il en existe déjà une multitude sur le web, mais je vais m’arrêter sur quelques aspects électriques intéressants pour bien comprendre cette technologie et son driver associé. Il y a plusieurs variantes de ces moteurs, l’article va s’intéresser à un modèle courant qui est dit de type « Bipolaire ».

Aujourd’hui, grâce à des driver spécialisés, par exemple le A4988 ou le DRV8825 (voir ci-dessous) il est facile de commander ce type de moteur à l’aide d’un simple microcontrôleur, un arduino par exemple, en générant un signal d’horloge cadencé à une certaine fréquence et un autre signal logique permettant de gérer le sens de rotation à l’aide d’un niveau « 1 » ou « 0 ». Ces deux signaux sont utilisés dans le mode de base, nous allons voir qu’il y a d’autres signaux qui peuvent apporter plus d’options dans l’utilisation du moteur.

driver A4988 pour moteurs pas à pas

Les deux références sont en réalité les références des circuits intégrés placés sur les PCB’s respectifs. Vous trouverez en fin de l’article les liens vers les deux datasheet.

Les deux PCB ci-dessus sont pine à pine compatible. Il existe beaucoup de fournisseurs sur le web pour ces articles.

Intéressons-nous à la synoptique ci-dessous pour bien comprendre les principes fondamentaux de ce type de driver.

driver A4988 pour moteurs pas à pas

Les signaux entre le « controller » et le « driver » sont de type logique et compatibles avec les microcontrôleurs en 3.3V et 5V, ce sont les signaux dits de commande. Les deux courbes en bleu et en rouge représentent les signaux de puissance appliqués au moteur pour lui garantir un fonctionnement normal.

Il est très important de constater que l’unité de l’axe « Y » est en courant et non pas en tension, ça peut paraitre être un détail pour vous, mais c’est fondamental. Si je reviens brièvement sur un moteur de type DC, comme on en retrouve beaucoup dans la petite robotique (généralement pour la motorisation) ils sont eux, commandés en tension.

Ce qui est également important, c’est que ces deux signaux sont de forme sinusoïdale (même s’il y a de petits escaliers) et parfaitement déphasés de 90°.

La vitesse du moteur pas à pas ne dépend pas de l’amplitude des signaux, mais de la fréquence de ceux-ci. La vitesse des moteurs DC, est, quant elle, fonction de la valeur moyenne de la tension continue appliquée à ses bornes.

La plage de la tension d’alimentation de la partie puissance du driver est comprise entre 8.2V et 45V pour le DRV8825 et entre 8V et 35V pour le A4988. Je vais vous expliquer comment il faut interpréter cette information et l’effet qu’elle aura sur le fonctionnement du moteur.

Pour terminer, il est indiqué au niveau des deux bobines, un courant de 2.5A, cette valeur est bien sûr le courant max que pourra fournir le driver et non pas le courant qui sera fourni d’office au moteur. Le courant fourni au moteur sera réglable en fonction des caractéristiques de ce dernier.

Comment fonctionne concrètement un moteur pas à pas.

Il existe beaucoup de sites traitant de cette technologie, le but de cet article, n’est pas de refaire un cours sur le moteur, mais de vous expliquer comment le commander correctement à l’aide des drivers dont il est question ici dans l’article.

Vous trouverez ci-dessous un lien vers une vidéo (en anglais) qui illustre parfaitement, par une animation, le fonctionnement du moteur. Je vous invite à regarder ce film et revenir sur ce bloc pour continuer la suite de l’explication.

https://www.youtube.com/watch?v=eyqwLiowZiU

Comme vous aurez pu le comprendre dans l’animation, la commande du moteur réside dans une alimentation séquentielle des deux bobines du moteur tout en inversant les polarités.

C’est ici que le driver va jouer tout son rôle, il permettra d’appliquer les signaux électriques nécessaires aux bobines du moteur par le biais d’un simple signal d’horloge généré par votre microcontrôleur. Vous retrouvez ci-dessous la synoptique relativement complexe de l’intérieur du driver A4988. C’est là que l’on comprend la nécessité d’utiliser des composants spécialisés pour des fonctions spécifiques. Imaginez si vous deviez faire vous-même toute l’électronique de ce driver par des éléments électroniques séparés !!!

driver A4988 pour moteurs pas à pas

Le but n’est pas d’étudier tout l’intérieur, mais de comprendre le minimum essentiel !

Nous allons nous attarder aux deux grands encadrés en rouge, cela représente ce que l’on appelle un pont en H constitué de 4 transistors MOSFET qui permettront de commander les deux bobines du moteur. Ce type de montage permet d’alimenter les bobines dans les deux polarités avec simplement une seule alimentation, en voici l’explication :

driver A4988 pour moteurs pas à pas

Les quatre transistors MOSFET travaillant en commutation sont représentés par les quatre interrupteurs S1 à S4. Ces quatre interrupteurs vont travailler en diagonale. Les deux figures ci-dessous montrent l’inversion de polarité aux bornes de la charge en fonction de la saturation de S1-S4 et de S2-S3.

driver A4988 pour moteurs pas à pas

Si je prends l’exemple du driver A4988, l’alimentation du pont en H correspond à la tension « motor power supply » (du schéma ci-dessous) connectée entre les pins VMOT et GND. Cette tension est différente de celle qui alimente la partie « logique de contrôle.

driver A4988 pour moteurs pas à pas

Je vais faire l’exercice avec vous d’un choix d’un moteur (je vous mettrai le lien en bas de l’article) et ainsi voir ensemble comment il faut interpréter certaines caractéristiques.

L’image ci-dessous correspond à un moteur tout à fait standard avec 200 pads par tour donc 1.8°/tour. Une remarque importante, ce moteur absorbe un courant de 1.33A sous 2.8V. Comment allez-vous faire pour connecter ce moteur au driver A4988 alors que ce dernier doit être alimenté avec une tension au minimum de 8V !!!

driver A4988 pour moteurs pas à pas

Je vous rassure, ce driver est tout à fait capable de commander ce moteur !

En fait, ce driver est conçu pour commander le moteur en courant et non en tension, cela peut vous paraitre bizarre, mais c’est pourtant la réalité. Voyons comment tout se passe à l’intérieur du composant. Sur la figure ci-dessous, vous pouvez voir deux résistances RS1 et RS2 connectées entre la partie inférieure du pont en H et la masse, ces résistances vont permettre de mesurer le courant en permanence dans les bobines du moteur et agir ainsi sur l’électronique de commande du pont en H.

driver A4988 pour moteurs pas à pas

driver A4988 pour moteurs pas à pas

Les quatre MOSFET sont bien sûr commandés en fonction du signal « STEP » généré par le microcontrôleur, mais également en fonction de la tension mesurée aux bornes RS1. En fait quel que soit la tension qui alimente le driver entre 8 et 35V, celui-ci va surveiller le courant à l’intérieur des bobines pour qu’il ne dépasse pas la valeur nominale réglée. Je vous expliquerai le réglage par la suite.

Cette surveillance est une application de la loi d’Ohm, en effet, la tension aux bornes d’une résistance est égale \( R\times I\), en mesurant la tension aux bornes d’une résistance dont on connait sa valeur, il est facile alors d’en déduire le courant qui la traverse et donc le courant à l’intérieur de la bobine.

Comment évolue le courant à travers les bobines du moteur pas à pas ?

Avant de commencer, j’aimerais revenir sur les caractéristiques du moteur que nous sommes en train d’étudier. J’ai entouré deux grandeurs physiques dans le tableau ci-dessous, l’inductance et la résistance. Je pense que vous le savez en ayant regardé la vidéo, les bobines sont des selfs dont l’unité est le Henry, dans le cas de notre moteur la valeur est de 2.5mH. Une bobine est constituée d’une longueur de fil d’un certain matériau et d’une certaine section, selon la loi de Pouillet, cette bobine a une résistance intrinsèque dont la valeur est égale, dans le cas de notre moteur à 2.1 Ohms.

Donc le schéma équivalent d’une self réelle est une self pure en série avec une résistance. Pour mieux comprendre le fonctionnement du driver, nous allons étudier, au moyen d’une petite simulation LTspice, l’évolution du courant à travers un circuit RL (résistance en sériel avec une self) en fonction d’une tension continue appliquée à ses bornes.

Schéma de principe pour la simulation.

driver A4988 pour moteurs pas à pas

1er exemple

La tension V1 appliquée à la bobine du moteur est de 2.8V.

driver A4988 pour moteurs pas à pas

Le graphe montre une évolution progressive du courant à travers la bobine pour se stabiliser à 1.33A après 8msec. Cette tension continue peut-être appliquée au moteur indéfiniment sans détruire celui-ci.

En fait, l’amplitude finale du courant dans le circuit RL est uniquement lié à la partie R du circuit. Par contre, la partie L du circuit est responsable de l’évolution progressive du courant à travers celui-ci. Je vous mets ci-dessous un exemple dont la valeur de la self serait de 0.01mH, vous allez constater une nette augmentation de la variation du courant à travers le circuit.

driver A4988 pour moteurs pas à pas

2ème exemple

La tension appliquée à la bobine du moteur est de 12V

driver A4988 pour moteurs pas à pas

Vous l’avez compris, dans ce cas, l’intensité est beaucoup trop élevée, 5.7A.

Pour jouer le jeu, nous allons tout de même tester le 3ème exemple.

 

3ème exemple

La tension appliquée à la bobine du moteur est de 24V.

C’est bien sûr beaucoup de trop !!

Alors, pourquoi proposer d’alimenter le driver avec une tension allant jusque 35V en sachant que beaucoup de moteurs « pas à pas » bipolaires ont des résistances de bobines dans cet ordre de grandeur.

Comme expliqué dans la vidéo, une bobine traversée par un courant crée un champ magnétique qui est proportionnel au courant, ce champ magnétique sera responsable du couple généré par le moteur, puisque le rotor va s’orienter en fonction du champ généré par les bobines, la force résultante sera d’autant plus importante que le champ est élevé.

Donc dans le premier exemple, le champ sera maximal 8msec après que la tension de 2.8V soit appliquée. Vous allez peut-être me dire que c’est rapide, mais tout est relatif ! Vous allez comprendre pourquoi.

Si j’analyse directement de plus près le troisième exemple et que je fais un zoom sur le courant, la figure ci-dessous nous montre que le courant atteint 1.33A après seulement 0.158 msec, ce qui est 50 fois plus rapide !!

La montée en courant est beaucoup plus importante dans ce 3ème cas, et donc la dynamique du moteur le sera également. J’entends par dynamique, le fait qu’il sera possible d’atteindre des accélérations et des vitesses plus élevées pour un couple résistif donné.

Le principe de ces deux drivers réside dans le fait que le système mesure en permanence le courant dans les bobines, et agit sur la commande des MOSFET pour faire en sorte de ne jamais dépasser le courant maximal admissible. Les MOSFET vont se bloquer avant même que le courant n’atteigne sa valeur de régime, ce qui correspondrait dans le 3ème cas, à un courant de 11A.

Je voudrais apporter une touche pratique à cet article pour illustrer tout cela, j’ai réalisé pour vous toute une série de mesure à l’oscilloscope, pour vous permettre, je l’espère, de mieux comprendre ce type de driver.

Voici le montage que j’ai utilisé pour réaliser tous mes essais.

driver A4988 pour moteurs pas à pas

Arduion mega, une carte Ramps v1.4 et un driver A4988. J’associe à cela un potentiomètre monté en diviseur de tension qui permet à ma carte arduino de modifier la fréquence de commande du moteur en fonction de la tension mesurée à la sortie du potentiomètre.

Les mesures faites à l’oscilloscope sont :

  • La mesure du courant à travers une bobine du moteur.
  • La mesure de la tension appliquée aux bornes de cette même bobine.

Technique utilisée pour la mesure du courant et le montage que j’ai réalisé :

Utilisation d’un « peine header » auquel j’ai coupé une pine pour insérer une résistance SMD de 0.1 Ohm en format 1206. En mesurant la tension aux bornes de cette résistance, il est possible, à l’aide de la loi d’Ohm, d’obtenir le courant qui circule à travers cette bobine. \( I=\frac{U}{R} \)

Le principe de la mesure de courant dit « par résistance shunt » nécessite l’utilisation d’une résistance la plus faible possible pour ne pas influencer la charge dans le circuit, dans notre cas, la bobine du moteur. Le problème, plus cette résistance est petite, plus la tension aux bornes de cette résistance (pour un courant donné) est petite. Il n’est pas toujours aisé de mesurer de faibles tensions à l’oscilloscope surtout dans un environnement bruité, comme c’est notre cas dans cette mesure de courant moteur. J’aurais pu utiliser la technique classique du probe et de son câble de masse.

Mon expérience m’a montré à de multiples reprises que la boucle formée par le câble de masse fait office d’antenne, et que pour de faibles tensions, le signal prélevé à l’oscilloscope est souvent fort bruité.

Une technique qui fonctionne super bien est de placer un connecteur de type SMB pour mesurer la différence de potentiel aux bornes de cette résistance.

Câble d’adaptation pour SMB/BNC pour une connexion facile à l’oscilloscope.

Prenons le cas d’une commande en « full step » (je vous montrerai les autres modes par la suite). Prenons un moteur à 200 pas/tour.

Je vous invite bien sûr à consulter la datasheet du driver A4988 (je mets le lien en fin d’article) pour de plus amples informations. La figure ci-dessous représente le courant dans les deux bobines en fonction du signal STEP appliqué à l’entrée du driver. Vous pouvez constater que le « flanc » du courant a une pente infinie !! Vous vous doutez bien qu’en pratique, ce n’est jamais le cas, nous allons visualiser tout cela à l’oscilloscope.

driver A4988 pour moteurs pas à pas

Voici l’allure réelle du courant mesuré dans une des deux bobines à l’aide de mon oscilloscope. Le signal en jaune correspond bien sûr à la partie entourée en rouge de la figure ci-dessus ! Je reviendrai au signal en bleu par la suite.

La tension VBB (Vmot) qui alimente le pont en H est de +- 6.5V. Attention, si vous consultez la datasheet, la tension minimum est de 8V, j’ai simplement essayé de descendre légèrement la tension pour accentuer le phénomène que je mets en évidence, j’ai constaté qu’à 6.5V, le driver fonctionnait toujours.

driver A4988 pour moteurs pas à pas

driver A4988 pour moteurs pas à pas

La valeur de crête du signal CH1 est de 100mV, ce qui correspond à un courant de 1A à travers la bobine. \(I=\frac{U}{R}= \frac{100\times 10^{-3}}{0.1} =1A \).

Nous pouvons constater deux choses, la pente est nettement moins importante que celle observée sur la figure théorique, et on peut remarquer une certaine ondulation sur la partie supérieure et inférieure du courant.

Comme pour la simulation LTSpice, le courant croit dans la bobine avec une certaine pente, vous pouvez constater une très nette ressemblance entre les signaux théoriques est les mesures pratiques.

Pour que le courant change complètement de polarité, il faut 1.4ms (voir la figure ci-dessus). Pour que le couple moteur soit maximal, il faut que le courant soit maximal également, donc il faut attendre au minimum 1.4ms avant d’appliquer le prochain step. A chaque step, le moteur progresse de 1/200 de tour, donc pour un tour cela donne 280ms/tour, la vitesse est quant à elle de 1/280ms= 3.57 tours/sec donc 214 tours/min, ce qui n’est pas très élevé.

Vous allez me dire, « élevé » « pas très élevé » tout est relatif, je suis bien d’accord avec vous, tout dépend de l’application dans laquelle sera utilisée le moteur. Le but ici est simplement de vous montrer l’impact que peut avoir la tension d’alimentation du driver sur le comportement du moteur.

La tension VBB (Vmot) qui alimente le pont en H est de +- 20V.

Cette fois-ci l’inversion de polarité se fait en +- 280µs, donc 5 fois plus rapide que dans le cas précédent.

La tension d’alimentation du driver a un impact sur la dynamique du moteur.

Cependant, ce qui est très important de constater, c’est que l’amplitude du courant n’a pas changé, elle est toujours de 1A !!

Le driver procède une électronique interne qui contrôle le courant (à l’aide des résistances RS1 et RS2) et agit sur la commande des MOSFET du pont en H en mode PWM.

Voici une représentation de tout cela (en mode demi-step) :

driver A4988 pour moteurs pas à pas

driver A4988 pour moteurs pas à pas

Pour aller un peu loin dans l’explication, je vais m’intéresser à l’allure de la tension aux bornes des bobinages.

Comme vous pouvez le constater sur la figure ci-dessous, le signal de tension est un peu particulier ! En fait, dans un moteur électrique, on s’intéresse plutôt à l’allure du courant dans les bobinages qu’à la tension appliquée aux bornes du bobinage !

Cela peut vous paraitre bizarre, mais c’est pourtant bien le cas. En général, le fonctionnement d’un moteur électrique est basé sur des phénomènes magnétiques, qui eux sont fonction du courant à travers les bobinages, c’est pour cette raison qu’il est important de bien maitriser le courant à travers ces bobines. Au passage, si vous consultez la datasheet complète du driver A4988, vous ne verrez pas de graphe en rapport avec la tension aux bornes des bobinages.

En réalité, c’est le driver qui va commander ses MOSFET en mode PWM afin d’obtenir le courant désiré à l’intérieur des bobines.

Juste pour le fun, voici l’allure du courant dans la bobine (CH1) et de la tension aux bornes de la bobine (CH2).

driver A4988 pour moteurs pas à pas

Pour les lecteurs qui veulent aller un peu plus loin dans le détail, nous allons analyser de plus près l’allure des deux signaux.

Je voudrais passer par un petit rappel sur la loi qui lie la tension et le courant à travers une self (pure).

\( U_{L}=L \times \large \frac{dI_{L}}{dt} \)

En français, cette formule nous dit que la tension aux bornes d’une self est le produit de la valeur de L multiplié par la dérivée du courant (par rapport au temps) à l’intérieur de la self. Pour une résistance, la loi d’Ohm nous dit simplement \( U_{R}=R \times I_{R}\).

Pour une self donnée, ce n’est pas l’amplitude du courant qui détermine la tension aux bornes de la self, mais la variation de celui-ci !!

Donc, selon l’équation, pour une self de valeur constante, si la tension appliquée à ses bornes est constante, le di/dt est constant également, donc le courant évolue de manière linéaire au cours du temps.

Nous allons analyser tout cela à l’aide du pont en H que l’on retrouve à l’intérieur du driver, et nous allons considérer que la charge est une self. Les signes + et – représente la polarité de la tension aux bornes de la self et les flèches en rouge représentent le sens du courant.

 

Fig : A
driver A4988 pour moteurs pas à pas
Fig : B

 

 

 

 

 

 

 

 

 

 

Fig : C

Je le rappelle, l’électronique à l’intérieur du driver commande les MOSFET’s d’une manière spécifique pour obtenir le courant désiré à l’intérieur de la bobine.

Analysons les 4 phases suivantes.

driver A4988 pour moteurs pas à pas

Je voulais également vous montrer la cohérence entre la figure théorique de la datasheet et les mesures réelles obtenues ! Les deux petites lignes rouges que j’ai ajoutées sur la courbe de l’oscilloscope correspondent aux phases « Fast Decay » et « Slow Decay » reprises dans la datasheet.

  • Phase n°1 : changement de polarité à l’intérieure de la bobine, la tension est positive, le courant croit de manière linéaire (avec une pente constante et positive). Fig A.
  • Phase n°2 : Le courant atteint la valeur max, le driver stoppe la croissance du courant, la tension aux bornes de la self s’inverse, la pente du courant s’inverse, le courant décroit dans le mode « Fast Decay » . Fig B.
  • Phase n°3 : Le driver se met en mode « Slow decay », la tension aux bornes de la charge est nulle, le courant tourne en roue libre à travers le MOSFET S2 qui est saturé et la diode du MOSFET S1. Fig C.
  • Phase n°4 : Le driver réalimente la charge avec une tension positive pour faire recroitre le courant dans le self. Fig A.

Ce cycle continue jusqu’au prochain signal « step » appliqué à l’entrée du driver.

Suite à toutes ces explications, j’espère que vous comprenez mieux pourquoi le driver A4988 est un driver en courant et non en tension.

Comme je cherche à être un maximum pratique, voici quelques figures faites à l’oscilloscope pour vous montrer la correspondance entre la réalité et la datasheet.

driver A4988 pour moteurs pas à pas
Mode demi-step.

 

driver A4988 pour moteurs pas à pas
Mode quart de step.

 

driver A4988 pour moteurs pas à pas
Mode huitième de step.

driver A4988 pour moteurs pas à pas
Mode seizième de step.

On se rapproche dans ce cas d’une parfaite sinusoïde. Pour une question de mesure, je n’ai pu mesurer les deux courants simultanément dans les deux bobines.

Si vous faites des recherches sur internet sur les driver A4988 et DRV8825 vous allez retrouver des petits PCB’s directement utilisables qui intègrent ces chip.

Le A4988 et son schéma de principe.

driver A4988 pour moteurs pas à pas

Les résistances \(R_{CS} \) sont les résistances shunt mises en série avec les bobines du moteur. Pour le réglage de ce courant, le circuit est doté d’un petit potentiomètre qui permet de modifier la tension à la pine 17 (Vref). Cette tension est directement responsable de l’amplitude du courant à travers les bobines.

Le DRV8825 et son schéma de principe.

driver A4988 pour moteurs pas à pas

Ces petits modules sont facilement intégrables dans vos montages arduino et microcontrôleurs.

La figure ci-dessous illustre le montage de base pour une utilisation correcte du driver.

En fonction du contexte dans lequel vous vous trouvez, vous pouvez bien entendu relier les pins ENABLE, RESET, SLEEP à votre microcontrôleur.

Pour les pins MS1, MS2, MS3, vous pouvez appliquer un état logique fixe ou les connecter à votre microcontrôleur pour mettre le driver dans un mode donné selon la table de vérité ci-dessous.

Il faut faire bien attention de respecter la plage pour les tensions d’alimentation de la partie logique et de la partie power. Remarque, le moins des deux alimentations sont reliés ensemble.

Veillez à ce que l’alimentation connectée à Vmot puisse bien fournir le courant nécessaire au bon fonctionnement du moteur !!

Je voudrais terminer cet article en insistant sur le fait que, tout ce qui vient d’être dit, ne s’applique qu’au moteur « pas à pas » de type BIPOLAIRE !

Dans beaucoup d’application arduino, vous risquez de retrouver un autre type de moteur « pas à pas » et son driver associé (voir figure ci-dessous):

Attention, ces deux entités ne fonctionnent pas du tout sur le même principe que celui expliqué dans cet article.

-Ce sont des moteurs de type unipolaire

-Le driver est un circuit intégré qui referme uniquement 8 transistors Darlington dont seulement 4 sont utilisés.

Ces transistors travaillent bien sûr en commutation, mais ce circuit ne possède nullement de mesure de courant, vous devez les voir comme de simples interrupteurs.

 

Dans ce cas, la tension utilisée pour alimenter le driver ne peut en aucun cas être supérieure à la tension spécifiée par le moteur. En fait, dans ce type de moteur, c’est la tension d’alimentation qui figure sur le moteur et dans les moteurs bipolaires, c’est plutôt le courant max à ne pas dépasser dans les enroulements qui est indiqué.

J’ai dans mon stock un petit moteur sur lequel est indiqué 5V, lorsque je mesure la résistance d’une bobine à l’Ohmmètre, elle est de 22 Ohms contre 2.1 Ohms pour notre moteur étudié. Dans le cas du driver ULN2003 le courant dans les enroulements du moteur est directement lié à la tension appliquée à celui-ci !!

\( \frac{5}{22}=227mA \)

Les transistors du ULN2003 peuvent en saturation laisser passer chacun 500mA.

Ce sont souvent des petits moteurs pour des applications nécessitant des petits couples et faibles vitesses.

La logique de commande est également différente, vous devez ici générer la séquence d’alimentation des bobines dans le programme de votre arduino et vous savez travailler uniquement en full step !

Je ne dis pas que ces moteurs et drivers ne sont pas bien, il faut juste comprendre la différence, et ainsi faire un choix opportun en fonction de votre application.

Nous arrivons à la fin ce cet article, toutes mes félicitations pour être arrivé jusqu’au bout.

 

Vous pouvez retrouver toute mes vidéos en vous abonnant à ma chaine YouTube!

 

N’hésitez pas à me laisser vos commentaires, vous abonner à ce blog et surtout partager si vous trouvez cet article intéressant.

A bientôt,

Denis.

 

 

Partager l'article:

44 commentaires sur “Comprendre et bien utiliser le driver A4988 pour moteurs pas à pas.

  1. Merci pour cette article qui m’a appris pas mal de chose sur le fonctionnement du moteur pas à pas et aussi sur le pololu. J’avoue qu’au démarrage de ma lecture, j’espérai comprendre pourquoi mon moteur (Nema17) ne tournait pas en étant branché sur un shield lui même sur un arduino uno. J’ai 4 pololus sur chaque axes au niveau du shield. J’alimente mon arduino en 12v. J’ai pris un programme très basique pour réaliser 1 révolution. Pour le Gcode, j’utilise GRBL. Mais rien.
    Je crois que cela vient du fait que je n’ai pas réglé les pololus. Et j’avoue ne pas savoir comment faire. Si vous pouviez me donner quelques pistes.
    Merci

    1. Bonjour et merci pour ton message. C’est bien sûr pas toujours facile de répondre à distance et par écrit. De mon côté, je pourrais t’appeler par google hangout pour en discuter 10 min, ce sera peut-être plus efficace. Souvent en étend électronicien, j’essaie toujours de partir sur le minimum nécessaire, pas de code complexe, un seul élément à la fois,… Je vais t’envoyer mon code qui est très simple à tester. Je te l’enverrai sur ton adresse email. Tien-moi informé,
      Denis.

  2. Merci Denis pour ta réponse.
    Je veux bien ton code pour être sur.
    J’ai aussi trouvé un article sur le blog du Bear qui traite du réglage du Pololu. Je vais aussi faire ce qu’il conseille.
    Mon projet est de construire un distributeur de graines pour mes grandes perruches avec prises de photo avant la distribution afin de mesurer la quantité à donner puis photo après distribution pour vérifier la bonne distribution. J’ai 6 volières que je veux équiper de 3 distributeurs chacun afin de gérer les déférents aliments à fournir. Idem pour la distribution d’eau, cela devrait être plus facile et sans électronique.
    Si cela t’intéresse, je peux partager mes réalisation avec toi, sachant que je n’ai pas beaucoup de temps et que cela va être long ;o)
    A bientôt
    Marc

  3. Bravo !! Super article, plein d’informations. Merci pour ce partage, je dois dire qu’il me faudra quelques relectures pour bien appréhender la chose et surtout tester, tâter, donc du pain sur la planche, mais avec ce fil rouge …. même pas peur !

  4. J’ai découvert ton article via le forum lesimprimantes3d où tu as laissé un post dans la section Tutoriels.
    Quelques corrections éventuellement:
    -pins ou broches en lieu et place de « pines » (qui en français signifie autre chose ;-),
    – concernant le schéma de principe, il concerne le DRV8825 et pas le 8824

    Sinon article très fouillé, explicatif et pédagogique. J’ai appris de nombreuses choses bien que l’électronique ne soit aucunement ma spécialité.
    Si ton livre est du même acabit, je vais me laisser tenter en fournissant mon mèl pour le recevoir.

    1. Bonjour, j’ai une imprimante 3d geeetech pro b et c’est une gt2560 dessus avec 4 driver A4988, je voulais vous demander si vous savez quels sont les meilleurs driver actuelle pour cet carte mère, si de nouveaux sont sortis depuis qu’existe cet carte mère ?
      Et si les drv8825 apporte réellement une diminution du bruit avec le même résultat, le changement pour ces derniers demande -t- il une modification dans marlin ?

      Merci pour votre aide

      1. Bonjour Geoffrey,
        Je n’ai malheureusement pas d’expérience dans les imprimantes 3D, il m’est difficile de répondre à ta question. J’ai seulement fait une étude d’un point de vue électrique de ces driver.
        Bien à toi,
        Denis.

  5. Bravo pour ce cours magistral sur les drivers des stepper moteurs bipolaires. Ce serait bien de mettre le code Arduino sur cette page comme ça tout le monde pourrait en profiter. Il est visible sur la vidéo mais pas complètement. L’approche est différente des autres tuto que j’ai pu suivre où on nous demandait de régler la tension entre le pot et la masse. J’ai commandé une shield ramps 1.4 et vais tenter de reproduire les tests ci-dessus. Je suis aussi intéressé par un tuto sur ltspice. il en existe sur le web mais assez succincts. Si c’est dans tes projets d’en faire un, je suis preneur. Je me suis abonné à ta chaîne youtube, je serai donc prévenu de tes futurs tuto. Bonne continuation !

    1. Bonjour Alain, merci pour ton message encourageant. Je viens d’ajouter deux liens pour télécharger le programme, un pour le projet complet « Visual Studio » et l’autre pour le simple fichier ino.
      Bonne chance pour tes tests,
      Pour LtSpice, je suppose que tu as vu l’article sur comment créer un potentiomètre avec LTSpice, je sais, ce n’est pas un tuto complet.
      Bien à toi,
      Denis.

  6. Bravo Denis pour faire des articles de grande qualité sans imposer des conditions de jouissance comme on en a partout. J’ai lu deux de vos articles comme j ‘aurai pu avoir le plaisir d’ écouter un bon Brassens. J’espère avoir le plaisir de vous relire souvent.
    Je suis intéressé par arduino esp8266 et aimerai un bon tuto sur VSCodium ou VisualStudio code couplé ARDUINO
    Christian

    1. Bonjour Christian, sorry pour le retard.
      Merci beaucoup pour votre retour très encourageant.
      Je suis content de voir que mes articles vous plaisent.
      Denis.

  7. Bonjour et merci pour cette article
    cela m’a éclairé un peu .
    Mais je ne comprends toujours pas pour les modes micropas .
    apparemment il faut les conecter sur l’arduino pour les paramètrer en H ?
    Mais sur quelle pin de l’arduino ?
    existe t’il un schéma simple qui pourrait me guider ?

    1. Bonjour,
      Si tu veux que le micro stepping soit modifiable par programme en fonction de certains modes de fonctionnement, tu dois effectivement connecter les trois pins (MS1, MS2, MS3) à 3 IO (digital) de ton arduino. Tu choisis 3 IO libre et tu agis sur leur niveau logique en fonction du tableau repris dans la datasheet pour déterminer le microstepping que tu désires. En espérant avoir répondu à ta question.
      Denis.

  8. Bonjour,

    Merci et bravo pour ce document très poussée.
    Je débute dans l’arduino et les commande de moteur pap et je cherche de la doc pour comprendre le mieux possible.
    Par contre il y a un petit truc qui me gène au niveau des rapports intensité tension et résistance du moteur. Je dois tenir compte de l’intensité max du moteur pour régler mon circuit A4988.
    J’ai récupéré des moteurs dans une imprimante et l’intensité max n’est pas indiqué.
    Par contre j’ai la tension et la résistance.Et c’est la que j’ai un gros doute…27V 5 ohms.
    Si l’on applique le loi d’ohm je serais à 5.4 A. Je pense que j’ai loupé un truc.
    les infos complètes marquées QH4-4354 SMH42-9605-A 27V 5ohms FDK.
    Merci

    1. Bonjour,Pour moi, le 27V c’est une tension préconisée qui peut être utilisée par le driver du moteur, mais ce n’est pas la tension DC qui peut être appliquée en continu aux bornes d’un enroulement. Les driver’s sont généralement des driver’s en courant comme pour le A4988 qui est expliqué dans l’article. On utilise une tension supérieure à R*I (R du bobinage * le courant nominal de l’enroulement) pour augmenter la dynamique du moteur, mais c’est le driver qui s’assure de ne pas dépasser le courant maximal acceptable pour le moteur. Dans ton cas, ce qui est difficile de savoir c’est le courant admissible. La seule info que tu as, c’est l’alimentation de ton imprimante qui te fourni 27V 0,47A. Je ne connais pas le couple qui est demandé par ton imprimante à ces différents moteurs. Dans l’imprimante, est-ce que les trois moteurs sont censés fonctionner en même temps ?Attention cependant, le 0,47A c’est le courant max qui peut être fourni à l’entrée des trois driver’s, ce n’est pas directement le courant injecté dans les bobinages. Comme les driver’s sont de type « à découpage de type buck » le courant d’entrée du driver est inférieur à celui de sortie.J’ai ici un moteur récent industriel (voir photo) où tu peux voir que le courant max est de 1A pour une tension qui peut être de 24V ou 50V. Je viens de mesurer à l’ohmmètre, j’ai également une résistance de 5 Ohms. Dans le cas de ce moteur (Beckhoff), je te confirme que c’est bien la tension du driver.Au vu de la section des fils de ton moteur, je ferais un test avec un courant de 0,5A, 0,8A et voir quel est le couple que tu obtiens et l’échauffement. En fonction de tout cela, l’augmenter légèrement.En espérant que ces quelques explications puissent t’aider.Tiens-moi au courant,Denis.

  9. Bonjour et merci pour ta réponse.
    Je rentre de vacances et vient d’en prendre connaissance.
    Je vais reprendre mes tests et découvertes de l’arduino.
    Concernant le a4988 peux-t-on comme certains autres drivers piloter 1 ou 2 moteurs continu en utilisant les sorties 1a 1b pour un moteur et 2a 2b pour éventuellement un second moteur?
    Merci d’avance de ta réponse.

    1. Bonjour Timmy,
      Pour ma part, le driver A4988 n’est pas vraiment adapté pour la commande de moteur DC. Contrairement à un driver de type L298 qui est plus universel (même si c’est deux composants ont un étage de sortie qui est un pont en H) la logique de fonctionnement est tout autre. Pour le L298, la logique de commande, génération des step’s, ect, se fait à l’extérieure (tu es capable ainsi de gérer le pont en H comme du le désires) tandis que pour le A4988 tout se passe en interne et n’est pas modifiable. Le A4988, est un driver en courant et pour moi, il n’est pas adapté pour la commande d’un moteur type DC. Je ne dis pas que c’est impossible, j’ai vu des sites qui en parlaient, mais pour moi ce n’est pas la meilleure solution.
      Denis.

  10. Bonjour et merci.
    Ok donc faut que je trouve un l298 par exemple.J’avais sous la main 5 A4988 c’est pour ça que je voulais en utiliser un. En plus ils ne sont pas cher.
    Merci

  11. Bonjour Denis et bravo pour cet article d’une pédagogie remarquable. Cela a conforté ce que je pressentais sur le A4988 mais sans jamais l’avoir lu de façon aussi explicite.

    En ce qui me concerne je commence à étudier ce driver associé a des Nema14 pour monter un robot balancier mais avec une carte ESP32 (en utilisant le MCPWM). Pour l’instant les moteurs tournent correctement et je réussis à faire varier leur vitesse par télécommande wifi à l’aide de mon téléphone en utilisant des websockets.

    La question que je suis en train de me poser concerne les broches ENABLE et SLEEP. Comme je me suis aperçu que le(s) moteur(s) consomme(nt) un max à l’arrêt, j’ai eu envie (pour économiser la batterie) de couper par soft leur alimentation lorsque le robot est à l’arrêt, par exemple couché ce qui arrive souvent lors des premiers essais.

    J’ai eu beau lire la datasheet je ne comprends pas la différence entre l’utilisation des broches EN et SLEEP pour faire cela (il faut dire que j’ai une formation de matheux et pas d’électronicien). Saurais-tu où je pourrais trouver des infos complémentaires sur cette question ?

    Merci d’avance et encore félicitations pour ce papier !

    Jack-Michel

      1. Bonjour Denis et encore merci pour cet additif qui répond à merveille à la question que je me posais. C’est clair, net et précis ; ça valait le coup d’attendre un peu pour avoir une réponse de cette qualité. Bravo !

    1. Bonjour Manpreet
      Tu pourrais peut-être poser tes questions sur ce blog,. Il est possible que ce soit des questions auxquelles on n’a pas pensé et cela permettrait à tous de profiter des réponses de Denis, non ?
      Cordialement
      Jack-Michel

  12. Bonjour Denis
    Merci pour la qualité de ton article.
    Je souhaiterai un avis si possible:
    Je voudrai piloter un nema 34 valeur 6A avec un driver industriel qui accepte en peak 6A.
    Est ce que je peux conserver cette association et limiter le courant à par exemple 5 pour une sécurité?
    Si oui en microstep est ce que le courant sera contrôlé à cette limite également?
    Et enfin, est ce bien le couple qui subira une limite en limitant le courant ?

    Merci encore

    1. Bonjour,
      Oui, tu peux toujours utiliser un driver qui est réglé sur un courant plus faible, soit par sécurité ou pour gérer un moteur acceptant des plus faibles courants.
      Pour l’histoire du micro stepping, je ne vois pas pourquoi le driver ne gérerait pas le courant, c’est à voir dans la doc du driver.
      Il est clair que le couple en sera affecté et donc l’accélération max de ton moteur en dynamique.
      Denis.

  13. Magnifique Article et vidéo : J’ai tout compris en particulier tout ce qui concerne la régulation en courant de ce circuit. J’ai en projet une commande motorisée d’une petite fraiseuse, et cet article a été très instructif.
    Encore merci

  14. Superbe article, notamment les explications sur les écrans d’oscilloscope comparés aux graphiques du datasheet.
    Et belle sonde de courant avec son adaptateur BNC, utile quand on veut des mesures sérieuses.

  15. Bonjour a tous,
    s’ils vous plait, je veux commander le courant de mon moteur stepper, afin de varier le couple en même temps la vitesse ne doit dépasser un certain niveau. Et je veux savoir est ce que par un stepper motor driver et une carte arduino, je pourais commander le couple de mon moteur. Merci d’avance

    1. Bonjour,
      Avec les A4988 et de DRV8825, vous ne pourrez pas faire varier votre couple avec l’arduino, c’est un réglage (voir article) qui se fait de manière hardware.
      Par contre, la vitesse sera gérée par votre arduino en agissant sur la fréquence du signal STEP.
      Denis.

  16. Merci pour ces explications très claires ! J’en profite pour laisser ici une question que je me pose depuis un moment : comme les moteurs sont régulés en courant par l’A4988, il n’y a théoriquement pas de limite de longueur de câble pour les moteurs (puisque pas de chute de tension causée par leur résistance interne est compensée par le rétrocontrôle du courant par le driver), c’est bien ça ? Ou y a t’il une limite de longueur ?
    Merci !

    1. Bonjour,
      Merci pour votre commentaire.
      Je suis tout à fait d’accord avec votre résonnement, effectivement la valeur max du courant ne sera pas influencée par cette longueur de fil (maintenant tout dépend de quelle longueur ?) puisque ce sont les résistances de mesure qui vont déterminer le courant.
      Par contre, ça pourrait avoir un léger effet sur la dynamique du signal, puisque qu’en augmentant la longueur du fil, on augmente la valeur de la self parasite du câble, ça peut avoir un effet sur la constante de temps L/R.
      Maintenant, tout est relatif, il faut estimer cette influence et voir si elle est négligeable ou non ??
      Je n’ai pas d’info sur la longueur max, je ne l’ai jamais expérimenté.
      Denis.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *