Cet article fait suite à mes premiers essais de pilotage des moteurs pas-à-pas pour construire un point tournant qui n’avaient pas été couronnés de succès.
Pour rappel, l’objectif est de mettre en œuvre la motorisation d’un pont tournant avec un moteur pas-à-pas bipolaire sans réduction mécanique. On trouve dans le commerce des moteurs pas-à-pas à 200 pas ou 400 pas par tour. Vous trouverez les informations de base dans l’article Wikipédia mais surtout dans cet excellent article de Nicolas Marchildon que je trouve particulièrement didactique. le pilotage de tels moteurs n’est pas compliqué à condition de disposer d’un carte à microcontrôleur. En effet, passer d’un pas au suivant est réalisé en envoyant une séquence de tensions sur les deux bobines du moteur. Plus les séquences sont rapides et plus le moteur tourne vite.
Dans « Moteur pas-à-pas et pont tournant », j’avais essayé de piloter le moteur par micro-pas en pilotant chaque bobine par une PWM à 20KHz, dont la rapport cyclique évoluait en sinus, les deux PWM étant décalées de ∏/2. L’expérience avait eu un succès mitigé. En effet, les micro-pas sont définis par le courant dans chaque bobine du moteur pas-à-pas et en pilotant via une PWM, on pilote le courant en aveugle sans aucune garantie que lui même évolue en sinus.
Or, des circuits intégrés qui pilotent directement le courant, en le mesurant et en le régulant afin de permettre un mouvement par micro-pas précis, existent. L’un des spécialistes est Allegro Microsystems qui propose toute une gamme de circuits dédiés au moteurs pas-à-pas bipolaires avec un nombre de micro-pas pouvant aller jusqu’à 16. Un deuxième acteur majeur est Texas Instruments avec la gamme de circuits DRV88xx avec un nombre de micro-pas pouvant aller jusqu’à 32. Enfin, Toshiba propose également des composants dans la série TD65xx dont certains montent à 32 micro-pas.
Présentation de l’EasyDriver v4.4
L’EasyDriver v4.4 est une breakout board en OpenHardware conçue en coopération entre SparkFun et Brian Schmalz. Une breakout board est une carte minimaliste dont le but est de faciliter l’intégration d’un composant : alimentation, résistances, condensateurs indispensables au fonctionnement et boches au pas de 2,54mm pour pouvoir la mettre en œuvre sur une breadboard. Elle est donc peu chère, une dizaine d’Euros en France.
Le composant central est un Allegro A3967, dont voici la datasheet, qui permet 8 micro-pas. Ce n’est pas ce qui se fait de mieux et les essais montreront si, oui ou non, 8 micro-pas suffisent. Deux choses qu’il faut savoir :
- Lorsque l’ensemble est sous tension, le moteur est alimenté et sa position est fermement tenue ;
- Il ne faut en aucun cas débrancher le moteur en laissant l’EasyDriver sous tension, il pourrait en résulter la destruction de l’Allegro.
La carte mesure 49 mm sur 21 mm et se présente comme ceci :
- Le régulateur 5V fournit le 5V à la logique de l’Allegro à partir de la tension d’alimentation du moteur ;
- Le potentiomètre permet de régler le courant maximum. Plus le courant est élevé et plus le moteur a de couple mais moins le mouvement d’un micro-pas au suivant sera doux ;
- Pour connaître la valeur de ce courant, il suffit de mesurer la tension de référence Vref au point de mesure d’une part, et la résistance de capture de courant Rs d’autre part. Le courant maximum Imax est donné par la formule : Imax = Vref / 8Rs ;
- Enfin la carte est munie d’un condensateur de filtrage de 47µF qui protège l’Allegro des transitoires lors de la mise sous tension.
La carte est prévue pour s’enficher sur une carte mère où sur une breadboard. Elle possède 17 connexions dont le rôle est donné à la figure ci-dessous.
- Le moteur pas-à-pas est connecté via les 4 broches en haut à gauche ;
- L’alimentation du moteur est connectée sur les deux broches en haut à droite (entre 7V et 30V). Il est possible d’alimenter le moteur avec une tension plus élevée que celle qu’il supporte à condition de régler le courant à une valeur inférieure ou égale au courant supporté par le moteur ;
- Les différentes masses sont reliées entre elles et l’une au moins devra être connectée à la masse de la carte microcontrôleur employée (Arduino ou autre) ;
- RESET, ENABLE et SLP (pour SLEEP) permettent respectivement de faire une réinitialisation de l’Allegro, de l’activer ou de le mettre en veille ;
- RESET doit être amené à 0 puis à 1 pour réinitialiser l’Allegro. Les deux bobines sont alimentées à 70,71% et le rotor se place sur un demi-pas. L’EasyDriver tire le RESET à 5V via une résistance de 10kΩ. On peut donc laisser cette broche en l’air sans soucis ;
- ENABLE doit être constamment à l’état 0 (bas) pour que l’Allegro pilote les bobines du moteur. L’EasyDriver tire ENABLE à 0V via une résistance de 10kΩ. On peut donc aussi laisser cette broche en l’air sans soucis ;
- Enfin SLP peut être mise à l’état bas pour désactiver la majeure partie de la circuiterie interne de l’Allegro. Ici encore, l’EasyDriver tire SLP à 5V via une résistance de 10kΩ. On peut également laisser cette broche en l’air sans soucis.
- MS1 et MS2 permettent de fixer le nombre de micro-pas entre 2 pas selon la table suivante. Ici aussi l’EasyDriver tire MS1 et MS2 à 5V par l’intermédiaire de réistances de 10kΩ. Par conséquent, en laissant ces broches en l’air, la résolution de 8 micro-pas par pas est sélectionnée ;
MS2 | MS1 | Mode |
0 | 0 | Pas entiers |
0 | 1 | 1/2 pas |
1 | 0 | 4 micro-pas |
1 | 1 | 8 micro-pas |
- PFD règle la vitesse à laquelle le courant est réduit. Par défaut cette réduction est lente (slow decay). À priori ce réglage convient aux vitesses lentes et d’après le schéma du EasyDriver, il n’est nécessaire de s’en occuper que pour augmenter les performances dans le cas d’une vitesse de rotation élevée ;
- DIR fixe le sens de rotation du moteur. Nous allons donc piloter cette broche pour notre application ;
- STEP permet de faire avancer le moteur au micro-pas suivant. Une transition de 0 à 1 provoque cette avance. Cette broche sera également pilotée.
Équipons l’engin
L’EasyDriver arrive nu, il faut donc le munir de connecteurs pour l’utiliser. J’ai choisi des connecteurs avec détrompeurs et verrouillage pour le moteur et l’alimentation du moteur et des barrettes de broches pour les autres. Le tout au pas de 2,54mm. Utiliser un connecteur digne de ce nom pour la connexion vers le moteur garantit qu’il n’y aura pas de déconnexion intempestive par arrachage de fil et donc pas de destruction de l’Allegro.
Il reste maintenant à connecter tout cela à un moteur et à un Arduino pour faire quelques essais.