Le A4988

La circuit intégré

Pour aller plus loin, vous pouvez récupérer la datasheet de ce composant.

La carte

On pourrait utiliser le circuit intégré et mettre les quelques composant nécessaires, mais l'utilisation d'une carte toute faite simplifie grandement les choses. Je ne détaillerai que l'utilisation de ce composant sur shield. Ce circuit est prévu pour faire fonctionner un moteur pas à pas commandé en courant, mais je rappelle qu'il est possible de commander des moteurs en tension et même des bipolaires sans les modifier si on reste en mode deux phases à la fois. Une limite, la tension d'alimentation doit être de 8V minimum. Il n'est donc pas possible de commander en tension des moteurs 5V, sauf en rajoutant des résistances séries (cela dissipe plus, mais améliore les performances en vitesse).

Brochage et schéma de la carte

 

Utilisation

Les broches sont les suivantes:
- Alimentations:
  - GND: référence des tensions (0V). les deux GND sont reliées
  - VDD: alimentation logique 3V à 5,5V. Avec une Arduino, on y mettra le 5V
  - Vmoteur: Alimentation des moteurs 8V à 35V. On conseille fortement de mettre un condensateur d'au moins 100µF entre cette broche et GND
- Sorties
  - 1A 1B: Connexion pour une des deux bobines du moteur
  - 2A 2B: Connexion pour l'autre bobine du moteur
- Entrées
  - STEP: progression d'une position sur front montant
  - DIR: direction de la progression; dans ma pratique, je branche comme cela vient et si la progression va dans le mauvais sens, j'inverse par exemple les deux connexions d'une seule bobine, ou j'inverse dans la bibliothèque si c'est possible
  - /Enable: met juste les sorties en haute impédance sur un état haut. Laisser cette broche en l'air si on n'a pas besoin de cette fonction, une résistance de pull-down interne assure un état bas
  - /Sleep: coupe le maximum de circuit du A4988 sur un état bas. Laisser cette broche en l'air si on n'a pas besoin de cette fonction, une résistance de pull-up interne assure un état haut
  - /Reset: Réinitialise le circuit (notamment le comptage des micro-pas) et met les sorties en haute impédance sur un état bas. Si on n'a pas besoin de cette sortie et si /Sleep n'est pas utilisée, relier ensemble /Reset et /Sleep; la résistance de pull-up de /Sleep maintiendra /Reset haut
  - MS1, MS2, MS3: permet de choisir le nombre de micro-pas:
        MS1=0 MS2=0 MS3=0: mode pas, deux phases à la fois
        MS1=1 MS2=0 MS3=0: mode demi pas
        MS1=0 MS2=1 MS3=0: mode quart de pas (4 micro-pas)
        MS1=1 MS2=1 MS3=0: mode 8 micro-pas
        MS1=1 MS2=1 MS3=1: mode 16 micro-pas.
Si les broches sont en l'air, on est dans le mode pas.

Deux entrées sont quasi indispensables (2 sorties de l'arduino) STEP et DIR. Pour minimiser une grande partie de la consommation électrique on peut relier toutes les /Enable de tous les A4988 ensembles pour ne consommer qu'une sortie de l'Arduino. /Sleep et /Reset sont plus rares d'emploi. Il est possible de choisir par programmation le mode, par exemple être en 16 micro-pas pour les basses vitesses (peu de bruit, peu de résonance) et passer en mode pas pour les vitesses (permet d'avoir le temps d'envoyer les ordres), mais cela est rare car cela consomme 3 broches supplémentaires de l'Arduino. En principe, on fixe le mode. Certains drivers comme les DM860H se programment par switchs et ont donc un mode fixe.

Si on veut une vitesse constante sans s'occuper du nombre de pas fait, on peut connecter STEP sur une sortie PWM de l'Arduino en faisant varier la fréquence. Mais il faut programmer directement les registres car la fonction analogWrite() de base ne permet pas le choix de la fréquence. Dans les autres cas, on peut relier STEP et DIR à des sorties quelconques de l'Arduino. En général deux broches par moteur suffisent donc.

Contrairement à certains drivers, il n'est pas possible de diminuer le courant lorsque le moteur est à l'arrêt.

La tension d'alimentation du driver n'a pas besoin d'être stable, ni définie en tension. Un transfo + pont de diodes + condensateur suffit.

Moteur bipolaire commandé en courant

Quand on utilise un moteur bipolaire commandé en courant, il vaut mieux donner au driver le courant de réglage. Pour le A4988, on peut mettre un voltmètre entre la masse et le centre de la résistance ajustable et régler cette dernière pour avoir la tension donnée par la formule V=8RI ; R est la résistance présente sur le circuit (voir cercle vert); R22 indique une résistance de 0,22Ω. Le courant doit être réglé au maximum à √2 fois le courant de phase du moteur. Par exemple pour un moteur donné à 1A par enroulement, le A4988 peut être réglé jusqu'à 1,4A. Si le courant réglé est plus faible, le couple sera réduit d'autant, mais la puissance dissipée est réduite de façon importante (elle est proportionnelle au carré du courant). Je conseille donc de régler éventuellement le courant au maximum comme indiquer, puis de baisser le courant tant que le fonctionnement est correct. Ce n'est pas parce que l'on peut mettre jusqu'à 500kg de charge utile dans un voiture qu'il faut systématiquement rouler avec des pierres. C'est pareil pour le moteur.

Moteur bipolaire commandé en tension

Si on utilise un moteur bipolaire commandé en tension (par exemple un moteur 12V), on peut quand même utiliser le A4988 soit en réglant la tension au maximum. Le courant ne sera ainsi jamais limité, et le A4988 mettra systématiquement la tension maximum. Par contre seul le mode pas est utilisables. C'est ce qui est fait avec certaines CNC chinoises. Le A4988 est peu cher, les cartes existent, et le réglage du courant n'est pas nécessaire (il suffit de tourner l'ajustable à fond sens horaire), contrairement à l'utilisation de moteurs commandés en courant. On peut aussi régler corresctement le courant si c'est possible. Le mode micro-pas devient alors possible.

On peut parfaitement piloter un moteur 5 fils (je pense au 28BYJ-48) sans modifications avec un A4988 si on reste en mode pas entiers.

Quelques schémas de montage de base

Dans tous les montages, et au plus court des broches Vmoteur et GND du A4988 prévoir un condensateur d'au moins 100µF pour permettre les appels de courant dû au découpage. Il n'est pas forcément nécessaire d'avoir une alimentation parfaite. On peut se contenter d'une forte ondulation. Pour tourner dans les deux sens, il faut au moins deux sorties pour un moteur STEP et DIR. Si deux moteurs doivent avoir la même rotation, il est préférable d'utiliser deux A4988 et d'utiliser la même broche DIR et la même broche STEP pour les deux circuits.

Entre 8V et 12V pour les moteurs, on peut utiliser une seule alimentation qui sera utilisée pour l'Arduino (via Vin) et le A4988. Ce dernier a aussi besoin de 5V mais avec un courant de l'ordre de 10mA, on peut utiliser la sortie 5V de l'Arduino pour ce faire. 12V est une tension intéressante, car c'est la tension maximale utilisable sans régulateur extérieur.

Au delà de 12V, on ne peut plus alimenter l'Arduino avec la même alimentation que le moteur, et il faut un régulateur, par exemple de 5V.

Drivers pour bipolaires   <<     >>   Avec un boîtier spécialisé