Les moteurs pas à pas

Sommaire:
      Différents types de moteurs
      Définition
      Principe de base
      Le moteur à aimant permanent
      Le moteur hybride
      Bipolaire et unipolaire
      Courant ou tension maximum
      Alimenter un ou deux enroulements?
      Effet de l'inductance des enroulements
      La force contre-électromotrice
      Diminution de la constante de temps par résistance série
      Alimentation des enroulements en courant
      Tension maximum
      Nombre de pas par tours
      Alimentation en pas entiers, une phase à la fois
      Alimentation en pas entiers, deux phases à la fois
      Mode demi-pas
      Micro-pas
      Choix d'un moteur: courant ou tension?
      Diodes de roue libre avec un moteur unipolaire
      Réponse à un seul pas, résonance
      Résolution et précision
      Couple statique
      Couple résiduel
      Couple dynamique
      Démarrage et sur-vitesse
      Accélération constante
      Calculs d'accélération constante   Nouveau
      Accélération par paliers
      Accélération par la méthode de Martin
      Accélération par la méthode de David Austin
      Température du moteur
      Autres pistes
      Identification d'un moteur et de ses fils
      Identification du type (tension ou courant)
      Identification de la tension ou du courant nominal
      Mise en série ou en parallèle des enroulements
      Montages pour les moteurs unipolaires
      Montages pour les moteurs bipolaires
      Shield Protoneer V3 / KS0160 Keyestudio CNC Shield V3   Nouveau
      Bibliothèque Stepper
      Bibliothèque StepperDriver
      Bibliothèque QuickStep

 

Différents types de moteurs

Tout se passe dans la famille Moteurs. Ils ont trois jeunes enfants qui comprennent bien ce qu'on leur dit, et qui sont capables des faire de petites choses. Le plus grand est toujours agité, le confinement ne l'a pas aidé, et il tourne en rond dans l'appartement. Dès qu'il a de l'énergie. Et plus il en a plus il s'agite! Il n'y a que quand il n'a pas d'énergie qu'il s'arrête et sa mère dit alors "Il a enfin cessé!". C'est ce qui lui a valu le surnom de Cessé. Moteur Cessé est devenu son état civil.

Un moteur à courant continu (moteur CC) tourne quand on le branche à une source de tension. Il n'y a pas besoin de faire autre chose. Si on ne lui donne plus d'énergie, il s'arrête. Plus la tension à ses bornes est élevée, plus il tourne vite. En première approximation, la vitesse est proportionnelle à la tension moyenne. Pour faire varier sa vitesse, on fait donc varier la tension. On utilise souvent le PWM (Pulse Width Modulation pour Shakespeare, ou MLI - Modulation de largeur d'impulsion - pour Molière), c'est le fait de mettre un coup la tension d'alimentation, un coup rien du tout. Suivant la largeur de l'impulsion (le temps de l'état "haut", de la tension d'alimentation) la moyenne sera plus élevée ou plus faible et le moteur tournera plus ou moins vite. Le courant est proportionnel au couple.

Le plus jeune n'a qu'un seul mot de vocabulaire "papa" qu'il prononce plutôt "pâââââpa" Son état civil c'est Moteur Pas-A-Pas. Son père qui est Processeur en finquième (ou professeur en cinquième, je ne sais plus) , l'initie aux petits chevaux, depuis sa cuisine, en train de préparer le repas. Pâââââpa était dans la pièce voisine, sur un tapis circulaire ayant autour 4 couleurs complémentaires deux à deux: Une paire complémentaire jaune/bleue et une paire complémentaire magenta/vert. Voici le jeu quand je suis arrivé pour observer le développement cognitif de la famille:

Pour faire avancer Pâââââpa, le père Processeur annonce "Avance sur le magenta". Pâââââpa se met alors sur la couleur magenta la plus proche, celle d'à côté. Puis le père Processeur annonce "Avance sur le bleu". Et ainsi de suite. J'ai observé que le Processeur donnait les ordres suffisamment lentement pour que Pâââââpa ait largement le temps de se déplacer sur la bonne case. Quand Processeur s'arrête de donner des ordres Pâââââpa s'arrête et reste sur sa couleur. Chaque fois que Processeur donne un ordre, Pâââââpa avance d'un pas pour aller sur la couleur annoncée.

Un moteur pas à pas a en général 4 ensembles de pôles qui sont complémentaires deux à deux (un nord, un sud) Si il y a 4 bobines, on en alimente une et les pôles du rotor (partie mobile au centre) se mettent en face des pôles opposés du stator (partie fixe autour). En alimentant successivement les 4 bobines on avance, chaque fois d'un pas. Les bobines sont complémentaires, l'une va donner en un point un nord, l'autre un sud. On n'alimente pas les deux bobines complémentaires en même temps. Pour économiser le cuivre, on peut aussi n'avoir que deux bobines et on fera passer le courant dans un sens ou dans un autre pour avoir les deux positions. Si on arrête de donner des ordres, le moteur pas à pas reste sur sa position, il ne tourne plus.

Processeur a une fois essayé d'aller trop vite, mais Pâââââpa faisait n'importe quoi, il n'arrivait plus à suivre. Mais quand Processeur s'est arrêté de donner des noms de couleurs Pâââââpa s'est mis sur la dernière couleur annoncée.

Si les ordres sont donnés assez lentement, le moteur progresse. Si on va trop vite le moteur perd des pas. Mais quand on l'arrête, il se positionnera sur un pas correspondant à la bobine alimentée. On peut donc perdre des pas, mais c'est par paquets de 4; on ne peut pas perdre un pas tout seul.

Une fois Processeur a annoncé les couleurs lentement d'abord puis de plus en plus vite. C'était beaucoup plus rapide et je pensais que Pâââââpa n'arriverait pas à suivre, mais en fait Pâââââpa était lancé, courrait sur les couleurs et tout marchait bien. Processeur aurait pu ralentir ses ordres pour arréter Pâââââpa correctement, mais dans la casserole la sauce à brûlé, Processeur s'est arrêté brusquement de donner des ordres, Pâââââpa n'a plus respecté les couleurs entraîné par son élan.

Il y a pour les moteurs une vitesse maximale. Si on accélère, on peut alors dépasser cette vitesse. On dit alors qu'on est en sur-vitesse. Le moteur tourne, respecte les pas, mais ne peut pas s'arrêter net.

Pour rigoler, après avoir sauvé ce qui restait utilisable de la sauce, Processeur a redonné les ordres à la vitesse d'avant. Pâââââpa à croisé les bras et a attendu qu'on lui donne des ordres assez lentement;

On ne peut pas démarrer un moteur directement en sur-vitesse. En principe le moteur vibre, mais n'avance pas.

La plupart du temps, cet apprentissage étant sérieux, Daïveur donne des ordres à une vitesse raisonnable, il pourrait les donner plus rapidement, mais il ne peut pas le savoir, de sa cuisine il ne voit pas le jeu. Si il allait trop vite, Pâââââpa aurait perdu des couleurs. On n'est pas au maximum de ses capacités.

Avec un moteur pas à pas on doit travailler assez lentement pour ne pas perdre de pas. On ne peut pas travailler à la limite de ses possibilité. On donne des ordres en aveugle, et on suppose que tout se passe bien.

Une fois Pâââââpa était chargé, car il a emprunté les boules de pétanques de son père parce qu'elles brillaient. Son père lui annonçait des couleurs, mais on voyait bien que Pâââââpa ne pouvait pas avancer aussi vite qu'avant.

Si on charge le moteur pas à pas, il ne peut pas tourner aussi vite.

Processeur sait très bien faire aller Pâââââpa dans les deux sens, il lui suffit de donner les ordres dans l'autre sens. Et il sait très bien faire pour que Pâââââpa aille vite ou au contraire très lentement, l'arrêter ou le faire partir dans l'autre sens.

On peut facilement faire varier la vitesse d'un pas à pas en donnant les ordres plus ou moins vite, et changer le sens de rotation en alimentant les bobines dans l'ordre inverse.

Une fois il est arrivé que la mère se place dans l'embrasure de la porte et renseigne le père sur la position du petit. La marâtre s'appelle Codeur, car c'est elle qui fait régner l'ordre dans la maison, et ses codes sont bien respectés. Avec l'aide de sa compagne, Processeur a pu donner des ordres plus vite. A un moment Pâââââpa n'a pas eu le temps de suivre les ordres, mais grâce à Codeur, Processeur a pu rectifier le tir, et Pâââââpa a pu se mettre où il fallait. Mais la présence de Codeur est rare.

On peut utiliser un codeur incrémental avec un moteur pas à pas qui va renseigner sur la position. Ainsi on peut rattraper les pas perdus. Mais c'est plus compliqué. On appelle cela une boucle fermée car il y a un retour d'information. Je n'ai pas vu de réalisation d'amateurs avec un codeur. On reste en boucle ouverte.

Une autre fois Draïveur, un ami de Processeur, est venu à la maison. Ils ont joué à trois. Processeur et Draïveur étaient ensembles dans la cuisine en train de boire une bière et en finissant de préparer le repas. Processeur avait plein de choses à faire, il était déjà midi et demi et le repas n'était pas prêt, Daïveur a proposé de l'aider pour Pâââââpa qui voulait jouer. Sans trop réfléchir Processeur disait simplement "avance" ou "recule" et Draïveur traduisait en nom de couleurs pour Pâââââpa.

Au lieu de calculer quel pas va être mis, on peut utiliser un driver (prononcer draïveur, pilote en français) qu va se charger de calculer dans quelle bobine mettre le courant. Cela simplifie la tâche du microprocesseur. Le driver peut faire bien d'autres choses encore. Le microprocesseur donne deux ordres Step pour dire d'avancer d'un pas et Dir pour donner la direction.

A un moment il a été décidé que Pâââââpa pourrait aussi s'arrêter entre deux couleurs. Processeur disait toujours "avance" ou "recule" mais Draïveur traduisait pour Pâââââpa en disant "jaune-magenta" puis "magenta" puis "magenta-bleu" puis "bleu"... Ainsi Pâââââpa faisait des demi-pas. Comme cela fonctionnait bien, et pour faire faire des pas de fourmis à Pâââââpa, Draïveur a intercalé des couleurs du style "beaucoup de jaune et un peu de magenta". Pâââââpa avançait alors avec des pas encore plus petits.

Avec un driver, on peut souvent passer en demi-pas, ou même en micro-pas. Ce sont des sous-divisions du pas que l'on obtient en mettant des courants convenablement choisis dans chaque bobine.

Lessie est plus âgée que Pâââââpa, elle sait parler, On l'appelle Brush-Lessie à cause de ses cheveux, voir même Brush-Less pour les intimes. Bref, Brush-Less pousse Pâââââpa, et reprend le jeu. Et là j'entendais la conversation:
- va sur le magenta
- ça y est preque!
- va sur le bleu
- ça y est preque!
- va sur le vert
- ça y est preque!
...
Du coup Brush-Less allait beaucoup plus vite que Pâââââpa. Elle ne pouvait pas perdre de couleurs. Mais c'était un peu plus compliqué à cause du dialogue.

Un moteur brushless (sans balais) est un moteur synchrone dont on lit la position pour envoyer la suivante. Cela donne un résultat beaucoup plus performant, mais le pilotage est plus compliqué. Ce sont les moteurs qui entraînent par exemple les disques durs, on y voir un disque aimanté, des bobines et des petits circuits permettant de mesurer le champ magnétique pour avoir la position. Du fait de l'asservissement, ils sont peu utilisés par les amateurs.

 

Définition

Les moteurs pas à pas sont des convertisseurs d'énergie électrique -> mécanique rotatifs spécialement conçus pour pouvoir tourner d'un angle déterminé et rester en position. Ils sont théoriquement réversibles (sauf les moteurs à réluctance variables), mais ne sont jamais utilisés dans l'autre sens (rendement trop faible).
Ils sont idéaux dans tout ce qui est positionnement. Ils sont construits pour pouvoir fonctionner en boucle ouverte: on donne alors des ordres de rotation, sans avoir de capteurs, et on suppose que l'ordre a été exécuté. La commande est en conséquence simple, et de ce fait largement utilisé. On en trouve quasi systématiquement dans les petites machines qui ont besoin de ce positionnement: imprimantes, scanner, imprimantes 3D, CNC... Dans l'industrie, on en trouve utilisés en boucle fermée, mais c'est quasiment jamais le cas pour le grand public.

Ces moteurs on un rendement assez faible, mais leur mise en ouvre étant simple. NEMA17 est une famille de moteurs pas à pas de petite puissance assez répandue dans le milieu amateur.

Pour les puissances importantes, on utilisera plutôt des moteurs plus performants (moteur à courant continu, moteur brushless), avec un asservissement de position.

Il existe des moteurs pas à pas à une seule phase dans certains réveille-matins, mais le fonctionnement et l'utilisation est un peu particulière. Je ne m'en préoccuperais pas dans cette page. Je ne parlerai que des moteurs à 2 phases, n'ayant jamais vu de moteurs à 3 phases.

Cette page est destinée aux amateurs, et par conséquent je ne m'intéresserai pas à des particularités du milieu industriel. En particulier, aux moteurs pas à pas fonctionnant en boucle fermée.

 

Principe de base

On peut distinguer principalement deux types de moteurs pas à pas. Je passe sous silence les moteurs dits "à réluctance variable" car je n'en ai jamais vu, et je n'ai jamais vu de site en proposant à la vente. Parler de ces moteurs, c'est comme parler des anciens francs. Le premier type de moteur est le moteur dit à aimant permanent, le deuxième est le moteur dit hybride, qui a aussi un aimant permanent. Le principe est exactement le même pour ces deux moteurs. Je vais décrire plutôt les moteurs grand public que nous rencontrons.

Pour le principe, je me base sur un moteur qui n'existe pas, mais qui est plus simple à comprendre. Ce moteur comprend un rotor (partie centrale qui tourne) constitué d'un aimant permanent, et d'un stator (partie fixe extérieure) constitué de 4 pôles que l'on peut rendre individuellement par commande comme pôle nord ou sud. Ci-contre à droite, ce moteur imaginaire. En fait le moteur ne va pas rester dans cette position, mais les pôles du rotor vont s'aligner sur les pôles du stator les plus proches, car la réluctance du circuit est plus faible. Le moteur va présenter un couple non nul qui le maintien en place. Cela vient du fait que la réluctance du circuit est minimale si les pôles du rotors sont en face. Ce couple est faible, de l'ordre de 10 fois plus petit que si le stator est alimenté (présente des pôles nord et sud).

Si je mets un sud sur le pôle statorique en haut et un nord sur le pôle statorique du bas, l'aimant va s'orienter pour mettre en face les pôles opposés. Le nord du rotor va être en haut. Par la suite, je vais mettre le sud statorique à gauche et le nord à droite. Le rotor va faire un quart de tour pour orienter nord à gauche. Puis je vais mettre un sud en bas, puis un sud à droite... Voici la succession:

Je pense qu'il est important de bien comprendre ce moteur de base car tous les moteurs on un fonctionnement similaire et cela permet de comprendre les modes pas, demi-pas... La compréhension du moteur à aimant permanent ou hybride est utile pour la culture, mais pas pour comprendre comment alimenter un moteur. Si vous ne comprenez pas le moteur hybride (c'est le cas de beaucoup de personnes, y compris moi au début), cela ne vous empêchera pas d'alimenter correctement un pas à pas, d'écrire une bibliothèque...

On dira que le moteur à deux phases, chaque phase utilise les deux pôles opposés, il y aura une ou plusieurs bobines mais c'est la même phase car elle fonctionnent ensembles. Il y a eu des moteurs à 3 phases, mais je n'en ai jamais vu, c'est du passé. Ce moteur de démonstration tel que nous l'avons vu n'est pas très répandu car l'angle minimum de rotation est beaucoup trop grand. Pour mon moteur imaginaire en 4 pas (4 commandes), on a fait un tour complet. On dira aussi que c'est un 4 pas par tour ou un moteur avec un angle de pas de 90°. Les pas correspondent aux positions stables, et cela arrive quand les pôles du rotor sont en face des pôles du stator. Dans la plupart des cas il faut réduire cet angle. Pour ce faire, il n'y a pas tellement de choix, il faut augmenter le nombre de pôles ou/et mettre un réducteur de vitesse derrière.

En doublant le nombre de pôles, voici ce que l'on obtient à gauche. Une phase est alimentée sur les deux, elle correspond à 2 pôles nord et 2 pôles sud. C'est maintenant un moteur 8 pas par tours. En généralisant:
- on a toujours 2 phases
- il y a N pas par tours
- au stator, il y a N pôles, l'écart angulaire entre les pôles du rotor est équivalent à 1 pas
- au rotor, il y a N/2 pôles, l'écart angulaire entre les pôles du rotor est équivalent à 2 pas

 

Le moteur à aimant permanent

Avec un rotor à 2 pôles (un nord, un sud), on a un moteur 4 pas. Pour augmenter le nombre de pôles, le rotor devient en général annulaire comme ci-contre.

Celui du dessus, c'est un moteur 48 pas. Il a donc un rotor avec 12 pôles nord et 12 pôles sud. A gauche une idée de la magnétisation du rotor. C'est l'extérieur qui doit être magnétique. Un centre peut être évidé, c'est autant d'inertie en moins, et cela permet surtout de faire passer l'axe.

Au stator, il faut 48 pôles en tout. Mais il faut éviter d'avoir 48 pôles avec les 48 bobines! Pour cela on peut remarquer dans la commande précédents qu'il y a deux systèmes de pôles séparés, deux phases. Si on numérote les pôles en tournant dans un sens (quelconque), les pôles 1 et 3 fonctionnent ensemble, ainsi que 2 et 4. De plus si 1 est un pôle nord, 3 est un sud et vice-versa. Il en est de même si on dispose de 48 pôles numérotés 1, 2, 3, 4, 1, 2, 3, 4, 1... On va faire deux stators, un pour chaque phase, et dans la photo, il y en a un en haut et l'autre en bas. Chacun présentera si il est alimenté une succession de 12 pôles nord et 12 pôles sud (24 pôles par stator, il y en a deux, cela nous fait bien nos 48 pôles en tout).

Vous avez déjà vu ou entendu parler d'une bobine pour faire un électroaimant. En faisant passer du courant dans la bobine, il va y avoir un nord et un sud. Voici un petit schéma d'une bobine avec son entrefer (-A- dessin de gauche).

En -B- j'ai changé la place de l'entrefer (pensez comme si on faisait tourner la pièce polaire métallique).

En -C- je suis passé d'une bobine 2D en une vraie bobine 3D.

Pour avoir la dernière partie -D- j'ai simplement fait descendre de temps en temps la tôle côté nord, de temps en temps remonter la tôle coté sud. Si on observe maintenant cette représentation, on voit que l'on a une alternance nord - sud - nord - sud... En inversant le sens du courant, cela va permuter les nord et les sud. En ne mettant pas de courant, il n'y a plus de pôles.

Pour retrouver l'alternance 1, 2, 3, 4,... On va placer deux de ces bobines l'une au dessus de l'autre, décalées d'une demi-dent. On voit sur la photo une bobine au dessus de l'autre, mais on ne voit que les triangles polaires de la bobine du dessus. Le boîtier métallique (à gauche sur la photo) referme le circuit magnétique.

 

Le moteur hybride

Il tient son nom car ce serait un mélange de moteur à aimant permanent et de moteur à réluctance variable. Cela vient en réalité que de la forme du rotor dentelé qui peut rappeler le moteur à réluctance variable. A la limite, le stator non alimenté se comporte comme le rotor d'un réluctance variable alimenté, exactement comme le moteur à aimant permanent. Au niveau du fonctionnement, il n'a pas de différence entre un moteur hybride et un moteur à aimant permanent, les pôles opposés du rotor et du stator se mettent en face.

Au dessus démonté, c'est un Nema17. Ce terme désigne une famille de moteurs qui ont normalisé certaines dimensions. Mais dans cette famille on trouve des moteurs hybrides de différentes profondeurs, de différentes forme d'axe, de différents couples, de différentes types de bobinages (unipolaires, bipolaires).

Les petites tôles embouties du moteur à aimant permanent, c'est mignon, mais le nombre de pas est insuffisant. Pour faire un moteur 200 ou 400 pas par tour, il va falloir trouver autre chose. Je vais prendre l'exemple du Nema17 ci-dessus. Reprenons ce que nous avions vu: N pas par tours, N pôles statoriques, N/2 pôles rotoriques, 2 phases. Les pôles au stator sont décalés d'un pas, et au rotor de 2 pas. Si je veux avoir 200 pas par tour, il me faut:
- 2 phases (on aura toujours 2 phases)
- 1,8° par pas (360°/200 pas)
- 200 pôles au stator, décalage entre deux pôles: 2 pas (3,6°) et comme un pôle sur deux est un nord et l'autre un sud, le décalage entre deux pôles nord (ou sud) est de 4 pas
- 100 pôles rotoriques décalés de 2 pas, les pôles nord étant espacés de 4 pas, ainsi que le pôles sud. Mais si, on va arriver à mettre autant de pôles!).

Commençons par le rotor. 100 pôles rotoriques, c'est 50 pôles nord et 50 pôles sud régulièrement espacés. Comme cela fait beaucoup de monde, on va ranger les nord d'un coté, les sud de l'autre, l'aimant se trouvant "au milieu". Pour faire 50 pôles nord on va utiliser 50 dents d'un côté, et pour les 50 pôles sud, on aura 50 dents en bas. Ci-contre le rotor avec les couleurs rouge pour les nord et bleu pour les sud. On remarque de les sud sont bien au milieu des nord. 4 pas, soit 7,2° est l'angle séparant deux pôles (dents) nord ou deux pôles sud, 2 pas soit 3,6° est le décalage entre les dents nord et sud.

Pour le stator, cela se complique un peu. On devrait avoir 200 pôles en tout, soit 100 pôles par phase, soit encore 50 pôles nord pour une phase. Ces pôles doivent être répartis régulièrement. A un moment donné, on pourrait avoir un pôle nord du stator en face de chaque pôle sud du rotor, vu qu'il y en a autant. Cela correspond aussi au modèle que l'on a vu au tout début! Je vais m'intéresser à ce moment précis et pour l'instant uniquement aux pôles nord d'une des deux phase (après on s'occupera de l'autre pôle et de l'autre phase). Voici à droite ce que cela donne → (passez la souris sur l'image pour agrandir).

On oubliera pas que le rotor est en deux morceaux, décalés de 2 pas, mais que les dents du stator font toute la hauteur du rotor. Dans un premier temps, nous allons voir ce qui se passe en haut.

← Il y a donc 50 dents (ou petits pôles) sud du stator qui attirent 50 dents nord du rotor. Comme on n'a pas de place pour faire 4 galettes (2 phases et 2 pôles par phases soit 4 ensembles de pôles à loger), on se dit que si il manquait des dents, il y aurait moins de couple, mais que cela fonctionnerait quand même. On va donc au stator, ne laisser que 12 dents sur les 50. Par raison de symétrie, on va en mettre 6 d'un côté et 6 l'autre. Voici à gauche ce que cela donne. On a pris 12 dents en tout parce que c'est divisible par 2 (on en met autant de chaque côté) et que si on veut mettre les 4 pôles sur 50 dents, cela fait maximum un maximum de 6. Si on en avait mis que 5, cela aurait fonctionné, avec un peu moins de couple, et de la place inutile. Autant remplir au maximum.

→ Maintenant on a fait de la place, on peut y mettre l'autre pôle (sud) de la même phase. Mais du fait qu'il y a au rotor 50 dents, si on met les dents perpendiculairement aux précédentes, elle ne vont pas être en face des dents du rotor. Elles vont même être au milieu, en face d'un trou. Voir schéma à droite. Et cela tombe bien car placés ainsi, comme c'est une dent sud et que le rotor est sud, chaque petite dent repousse les deux dents sud de chaque côté. Elles vont ainsi servir a augmenter le couple. Il ne faut pas oublier ce qui se passe en bas. Les pôles du stator descendent jusqu'en bas du rotor. Et en bas, les dents nord du rotor vont se trouver en face des dents sud du stator, ce qui va faire du couple possible, et les petits dents sud du stator vont être au milieu de leurs équivalentes au rotor. C'est comme en haut, et tout est symétrique.

← On a laissé la place pour mettre l'autre phase, qui va donc se retrouver décalée d'un pas, c'est à dire 1/4 de dent nord du rotor.

Quelques caractéristiques au final:
- le fonctionnement est exactement le même que pour l'autre type de moteur.
- au rotor les dents sont placées régulièrement avec un angle correspondant à 4 pas. Pour N pas, on a N/4 dents sur chaque galette.
- au stator, les dents sont aussi espacés du même angle correspondant à 4 pas. Pour une phase, entre les pôles opposés sont décalés de 2 pas.
- comme on ne peut pas faire des demis-dents au stator, il y a moins de dents au stator, mais le nombre de pas ne dépend pas de la différence du nombre de dents entre rotor et stator.

 

Bipolaire et unipolaire.

Pour commander les enroulements des moteurs, on peut utiliser une commande bipolaire ou unipolaire. Voyons ce que cela cache.

J'ai montré que pour faire progresser le moteur, il fallait mettre au stator des pôles alternés nord, sud, nord, sud... Il va donc falloir inverser le sens du courant dans les enroulements statorique. L'idée la plus simple est de faire passer dans un enroulement le courant tantôt dans un sens, tantôt dans l'autre. On dira alors que la commande est bipolaire car on utilise les deux polarités. Pour pouvoir réaliser ceci, on utilise en principe un montage en pont constitué de 4 transistors de puissance par phase.

Un moteur à courant continu tournant toujours dans le même sens, peut être alimenté avec un champ magnétique toujours dans le même sens. Ce n'est pas le cas des moteurs pas à pas.

Une deuxième solution est de doubler le nombre de bobines. On a ainsi pour chacune des phases une bobine qui va créer un champ magnétique dans un sens, et une deuxième bobine qui va créer le champ inverse. Chacune des bobines ayant un point commun bien souvent relié au plus de l'alimentation. Ainsi il ne suffit que d'un seul transistor par bobine, soit deux par phase. Les schémas de montage sont abordés plus loin.

C'est LE moteur que l'on voit très souvent pour expliquer le fonctionnement des moteurs pas à pas hybrides. Il y a trois phases indépendantes. MAIS je n'ai jamais vu ni entendu parler d'un moteur hybride ayant ce type de bobinage. Cela existait pour les moteurs à réluctance variable. Si vous récupérez un moteur pas à pas ayant ce type de bobinage, n'oubliez pas que très peu de bibliothèques permettent de le gérer. Bon codage!

Pour les moteurs pas à pas ayant 4 fils, il y a deux bobines sans point commun, une bobine par phase, deux fils par bobine. On est alors obligé d'utiliser une commande bipolaire. De ce fait les moteurs sont qualifiées de bipolaires. Dans une phase ou une bobine, le courant doit passer tantôt dans un sens, tantôt dans l'autre.

Pour les moteurs pas à pas ayant 5 fils, il y a deux bobines par phase et un point commun général. En théorie, on pourrait les alimenter en bipolaire, mais je n'ai vu personne sauf moi qui en parle. Avec 5 fils, tout le monde alimente ces moteurs en mode unipolaire. On met en général la tension d'alimentation +V sur le commun, et un transistor entre la bobine et la masse va permettre d'établir le courant. Pour faire un pôle nord sur la phase 1, il faut par exemple mettre A1 à la masse (via son transistor de commande), B1 étant "en l'air". Pour faire un pôle sud, c'est la broche B1 que l'on met à la masse et c'est A1 qui est "en l'air". Du fait que l'on soit obligé de doubler les bobines, va prendre plus de place dans le moteur. A taille égale le moteur est moins performant. Mais on récupère une commande plus simple (enfin, c'est ce qui est dit).

Notez sur le schéma la présence d'un point d'un côté du bobinage. Cela indique le même sens pour deux bobinages qui sont couplés. Pour un moteur 5 fil, on s'en moque un peu car ils sont bobinées correctement, mais pour un moteur 8 fils, il faudra faire attention d'utiliser les enroulements dans le bon sens.

6 fils. C'est quasiment équivalent, car la plupart du temps les deux communs sont mis ensembles. Toutefois si on ignore les communs, on se retrouve avec un moteur 4 fils, et on pourrait avoir une commande bipolaire. Mais le moteur est dimensionné pour être alimenté en unipolaire, et si un seul enroulement est prévu pour supporter le courant nominal In, pendant qu'il n'y a pas de courant dans l'autre bobinage, on ne peut pas utiliser les deux enroulements à leur maximum pour ne pas dépasser l'échauffement maximal ou pour ne pas aller en saturation. Une autre solution est de n'utiliser qu'un seul des deux enroulements. On a donc toujours du cuivre en trop, à taille égale le moteur est toujours moins performant

Avec 8 fils, cela se complique un peu surtout à cause de l'imprécision de la documentation. Ce type de moteur peut être utilisé en unipolaire (on relie A'1, B'1, A'2, B'2 au plus de l'alimentation) ou en mode bipolaire. Dans ce cas, on peut relier les deux enroulements soit en série, soit en parallèle, soit encore n'en utiliser qu'un seul. Maintenant comme ce moteur soit prévu pour fonctionner aussi en mode bipolaire, on est dans le même cas que le moteur 5 fil, on a du cuivre en trop.

Je suis de plus en plus convaincu que si on a le choix, les moteurs bipolaires sont plus intéressants. A taille équivalente, ils sont plus performants (voir l'extrait du catalogue de omc-stepperonline à droite). Le mode unipolaire avait son intérêt lorsque l'électronique de puissance n'était pas à la hauteur. Maintenant que pour quelques euros on trouve des drivers performants, il n'y a plus gros intérêt à utiliser des moteurs unipolaires. Il y a quand même quelques exceptions comme le 28BYJ-48 qui est un moteur à bas coût.

De toutes façons, on ne peut pas piloter le moteur pas à pas directement par de l'informatique. Il faut un driver. Pour les toutes petites puissances, on a le choix à utiliser une commande unipolaire avec 5 ou 6 fils et un driver comme le ULN2803 à 1€, ou avoir une commande bipolaire avec un A4988 à 1€ beaucoup plus performante si le moteur est un bipolaire commandé en courant.

 

Courant ou tension maximum

Le constructeur indique toujours le courant maximal admissible en permanence dans un enroulement ou la tension maximale aux bornes d'un enroulement. Dans ce paragraphe, je ne parlerai que de courant, mais vous pouvez remplacer le terme courant par le mot tension, le raisonnement est le même.

Il y a trois raisons pour ne pas augmenter le courant spécifié:
- cela augmente les pertes joules et le moteur va surchauffer (déjà que sa température peut dépasser les 60°C). Doubler le courant quadruple l'énergie dissipée, et par la même l'échauffement... et diminue fortement sa durée de vie.
- si le moteur est près de la saturation, voir avec une légère saturation, doubler le courant ne va pas doubler le champ magnétique, et par conséquent n'augmente pas le couple en proportion du courant. On va donc seulement faire chuter le rendement. Si il nous faut plus de couple, autant prendre un moteur plus gros. En fait, il y a peu de chance que le moteur soit conçu pour être loin de la saturation, car cela augmenterait la taille du circuit magnétique et par conséquent le prix, sans apporter de réel gain en terme de couple.
- en augmentant le courant, on risque la désaimantation du moteur, et par conséquent une diminution permanente des caractéristiques. C'est en faisant passer du courant dans un enroulement que l'on aimante certains moteurs. L'effet inverse fonctionne aussi. Il n'est pas impossible que le fait de démonter un moteur désaimante aussi le moteur, mais je n'ai pas d'infos à ce sujet pour les pas à pas.

La documentation du Nema17 17HS13-0316S indique qu'il peut admettre un courant de 0,31A dans un enroulement et que son couple de maintien est de 0,16Nm. La documentation n'est pas très explicite à propos de ce que cela veut dire, il y a deux possibilités:
- on peut admettre 0,31A dans chaque phase. On appellera cette alimentation deux phases à la fois. Pour les moteurs à 5 ou 6 fils, prévus pour fonctionner en mode unipolaire, il est inconcevable d'alimenter deux bobines d'une même phase (les champs magnétiques induits s'annuleraient), et on ne peut donc alimenter que deux bobines sur les quatre. Pour les moteurs 8 fils, je suppose que le constructeur pense au montage unipolaire.
- on peut admettre 0,31A dans un seul enroulement en même temps.
Je n'ai pas de certitudes, mais je pense que la bonne solution est la première. Je n'ai pas encore vu la réponse à cette question dans les caractéristiques. Mais j'ai des indices qui m'aiguilleraient dans ce sens:
- les courbes de couples, quand c'est spécifié, indiquent le mode deux phases alimentées en même temps
- les drivers en courant type A4988 utilisent le mode deux phases quand on se met en mode pas
- si on peut faire passer 0,31A dans deux enroulements, on peut aussi faire passer 40% en plus dans un seul enroulement (même champ magnétique, même échauffement). Or les constructeurs donnent toujours des chiffres les plus avantageux. Il est plus présentable de dire que le moteur doit être alimenté en 0,31A [dans chaque phase] que 0,43A [dans une seule phase]
- j'ai alimenté un moteur 1,33A avec une seule phase alimentée en 1,33A, et la température du boîtier n'était que de 50°C (échauffement de 25°C de la carcasse seulement), alors que la température au fonctionnement nominal peut aller jusqu'à 70°C
- j'ai tracé la courbe couple= f(intensité) de ce moteur 1,33A. Je ne retombe pas sur la valeur du couple donné par le constructeur, mais c'est sans doute dû à ma mesure artisanale. Mais pour 1,33A je suis loin de la saturation, alors que pour 1,88A je suis dans le coude. Il est peu probable que le moteur soit dans la zone linéaire de cette courbe (voir courbe à droite).

Par la suite, je vais supposer que le courant (ou la tension) indiqué par le constructeur est le courant maxi (ou la tension maxi) que l'on peut mettre dans deux enroulements (un de chaque phase).

Cela implique pour un moteur 12V, alimenté avec un ULN2803 et une tension d'alimentation de 12V fonctionnera presque au nominal en mode deux phases à la fois, et sera sous alimenté en mode une seule phase à la fois. Un moteur 1,33A avec un driver A4988 sera alimenté au nominal si on règle le courant sur 1,88A (quand le A4988 est en mode deux phases à la fois, le courant dans chaque phase est de 70% du courant réglé; en réglant le courant à 1,88A on aura ainsi 1,33A dans chaque phase).

 

Alimenter un ou deux enroulements?

← Alimentation d'un moteur pas à pas mexicain...

Je vais de nouveau raisonner en courant, mais c'est le même raisonnement si je parlais en tension.

Supposons que j'alimente deux enroulements de résistance R avec un courant I. La puissance dissipée dans un seul enroulement est RI2 et la puissance totale pour les deux enroulements est le double soit 2RI2. Pour dissiper la même puissance dans un seul enroulement il va falloir faire passer un courant I√2. En effet la puissance sera de R.(I√2)2 soit 2RI2. Comme les moteurs sont construits pour être à la limite de l'échauffement maximum, si on peut faire passer un courant I dans deux bobines (mode deux phases à la fois par exemple), on ne peut pas dépasser √2I dans une seule bobine (mode une phase à la fois par exemple)

Supposons que j'alimente deux enroulements de N spires avec un courant I (une bobine pour une phase, l'autre pour la deuxième phase, en mode deux phases à la fois) Chaque enroulement va produire un champ magnétique proportionnel au nombre de spires et au courant, soit kNI. Vu que le champ produit par deux phases sont décalées de 90° (voir le moteur de base), le champ résultant produit par deux bobines sera de √2kNI. Si j'alimente maintenant une seule bobine (mode une phase à la fois), et comme on ne peut y mettre que √2.I, on aura le même champ magnétique. En conclusion si on a un moteur bipolaire, l'alimenter en en mode une phase à la fois ou deux phases à la fois donne le même échauffement et le même couple pour peu que l'on choisisse le courant maximal admissible.

Pour un moteur unipolaire, en principe on n'alimente qu'une seule bobine sur les deux que comporte une phase donnée. Supposons qu'elle soit alimenté avec le courant maximal I. Si on utilise ce moteur en mode bipolaire, on peut n'utiliser qu'une seule bobine. On aura alors le même couple kNI et le même échauffement RI2 que le moteur soit en mode unipolaire ou bipolaire avec une seule bobine. Mais on peut aussi utiliser les deux bobines en série! Il faudra donc réduire le courant par √2 pour ne pas dépasser l'échauffement maximal mais alors le flux magnétique sera plus important car le nombre de spires à doublé. On n'est plus dans le cas précédent ou il y avait un décalage de 90° entre les deux champs produits, ici les champs sont de même orientation. Si on ne veut pas saturer le moteur, il faut alors réduire le courant par 2 et pas par √2. Le moteur aura le même couple mais chauffera moins. Il chauffera moins car on a plus cuivre, c'est une autre démonstration qu'à performance égale (couple), on peut diminuer la taille des enroulement et donc du moteur si on utilise un moteur bipolaire.

On trouve donc souvent des coefficients √2 à prendre en compte pour les limites des courants ou des tensions. Juste pour rigoler, j'ai aussi vu le coefficient 1,96. Il provient du calcul suivant: √2 x √2 = 1,4 x 1,4 = 1,96 . Si vous voyez ce coefficient, prenez 2, ce sera plus exact et plus facile à calculer!

 

Effet de l'inductance des enroulements

Voyons un peut les caractéristiques du Nema17 17HS13-0316S Il est indiqué:
Courant par phase : 0,31A
Résistance d'une phase : 38,5Ω
Inductance d'une phase :21mH
Notez que la tension n'est pas indiquée. Mais à l'arrêt (le temps n'intervient plus, ni l'inductance), U = R . I = 12V (environ). J'alimente mon moteur en 12V, il passe 0,31A, tout est parfait. Mais maintenant je vais faire tourner mon moteur. J'alimente donc les bobines les unes après les autres (c'est un moteur 6 fils que je suppose alimenté en unipolaire, une phase à la fois). Et voyons ce qui se passe quand j'alimente une phase. Sur les chronogrammes en dessous, j'ai représenté les courant dans une phase, et comme elle comprend 2 bobines, il y a deux chronogrammes:

Pour la première bobine, lorsqu'elle est alimentée, elle va produire champ magnétique. Si j'alimente la seconde, elle produira un champ inverse. C'est pour cela que j'ai orienté mon courant dans le sens inverse. Le champ résultant de la phase 1 est proportionnel à la somme de ces courants tels qu'ils sont orientés.

Sur ce diagramme on dirait que le courant s'établit instantanément. Ce n'est pas possible car il y a une inductance de 21mH dans chaque enroulement. La constante de temps L/R vaut L/R = 21mH / 38,5Ω = 0,55ms (j'arrondis à 0,5ms). A une vitesse de rotation de 0,1 tour par seconde, un tour (c'est à dire 200 pas) dure 10s, un pas dure 10s/200 soit 50ms, soit 100 fois la constante de temps ou encore 30 fois le temps que met le courant met à s'établir. On peut donc ignorer l'effet de l'inductance.

Si maintenant je tourne à la vitesse de 2 tours par seconde, soit 20 fois plus vite. Un pas dure 25ms c'est juste 5 fois la constante de temps. On considère que c'est le temps que met le courant à atteindre son asymptote. On pourrait trouver plusieurs façons d'alimenter une bobine et plusieurs façons de ne plus l'alimenter. Je vais étudier ici les deux cas courants:
- l'alimentation de la bobine se fait en mettant la tension nominale et la décroissance du courant se fait en imposant une tension nulle à ses bornes. Je vais appeler ce mode décroissance lente (slow decay pour les anglais)
- l'alimentation de la bobine se fait en mettant la tension nominale et la décroissance du courant se fait en imposant la tension nominale mais en sens inverse jusqu'à ce que le courant s'annule, puis en imposant une tension nulle à ses bornes ensuite. Je vais appeler ce mode décroissance rapide (fast decay pour les anglais).

La forme des courants dans la phase 1 en mode décroissance lente ressemble à:

C'est un peu moins joli, mais à priori (à vérifier), le courant moyen n'a pas changé, le couple ne devrait pas changer non plus. Tout va encore bien. En mode décroissance rapide, on obtient alors:

Dans ce cas la moyenne du courant a diminuer et le couple aussi. On peut rattraper cette perte en alimentant la bobine non pas pas la tension nominale au départ, mais avec le double.

Plaçons nous à 10 tours pas secondes. A moment le temps d'alimentation de la bobine 1 est égale à sa constante de temps. A cet instant le courant n'a donc pas atteint le courant nominal, mais seulement 63% de sa valeur:

Dans la vraie vie, la forme est un peu différente car mettre un courant dans l'enroulement 2 va créer un champ inverse du précédent et cela va annuler le courant dans l'enroulement 1. On peut parler d'inductance mutuelle ou encore voir que les deux bobines de la même phase réalisent un transformateur. L'une agit sur l'autre. Avec le modèle simplifié, il y aurait toujours du courant dans l'enroulement 1, ce qui va se traduire par un diminution du couple. Le champ résiduel de l'enroulement 1 s'oppose au champ créé par l'enroulement 2. En tenant compte de l'inductance mutuelle quand on alimente l'enroulement 2, il faut d'abord annuler le champ résiduel avant de créer le champ dans la bonne direction.

En décroissance rapide, ce phénomène n'a pas lieu:

Mais dans les deux cas il ne nous reste un courant moyen beaucoup plus faible et donc un couple moindre.

 

La force contre-électromotrice

Un moteur pas à pas, c'est finalement un aimant se déplaçant devant des enroulements. Et c'est comme un moteur à courant continu, c'est réversible. Le rendement n'est déjà pas bon dans le bon sens... Mais ce n'est pas pour faire une génératrice que je m'intéresse à la fcem. Quand on fait tourner un moteur pas à pas, il se crée cette fcem qui va s'opposer au passage de notre très cher courant. Cela dépasse un peu mes compétences actuelles, je ne sais pas estimer l'impact exact, mais des ordres d'idées peuvent montrer que ce phénomène est loin d'être négligeable.

Une rare information que j'ai trouvée sur le net à ce propos est sur le site de MDP qui indique le chronogramme ci-contre.

La tension produite doit être sensiblement proportionnelle à la vitesse de rotation. Elle est quasiment sinusoïdale et aurait son maximum lorsque le courant dans l'enroulement est nul.

Si j'entraîne mon moteur bipolaire Nema 17 qui a une tension nominale de 12V à 3tr/s, j'obtiens sur un enroulement une tension quasi sinusoïdale de 12V crête. Ce qui indique que je ne pourrais certainement pas l'utiliser normalement à cette vitesse. Vers 17tr/s (1000tr/mn), la tension atteint 60V. Avec un moteur basse tension (3,7V), à 17tr/s je ne suis qu'à 15V crête. Et je fais tourner ce moteur à 37 tr/s, il doit y avoir une fcem de 30V!

 

Diminution de la constante de temps par résistance série

Pour récupérer du couple, il faut pouvoir mettre du courant ou l'arrêter le plus rapidement possible. Une solution est de diminuer la constante de temps par l'ajout d'une résistance série. En général, on choisit de mettre une résistance en série avec chaque enroulement égale à la résistance du bobinage. La constante de temps est L/R, doubler R divise la constante de temps par deux. Pour ceux qui on du mal à croire aux formules, voici le schéma équivalent d'un enroulement encadré de rouge. En rajoutant une résistance égale à celle de l'enroulement, l'ensemble est équivalent à deux bobines en séries, mais avec une inductance moindre.

Bien entendu, il faut alors doubler la tension d'alimentation. Ce montage est simple, mais les résistances vont dissiper autant de puissance que le moteur. C'est donc utilisable qu'en petite puissance

Avec le moteur de tout à l'heure (0,31A / 38,5Ω / 21mH / 12V) Il faudra choisir une résistance de 38,5Ω et de puissance P = R . I2 = 38,5Ω.0,31A2=3,7W Il faudra prendre un modèle 5W et c'est à l'arrêt sur la phase en question que la résistance dissipera le plus. Moteur en rotation, elle sera alimentée la moitié du temps (en mode deux phases à la fois) et dissipera un peu moins de 2W.

 

Alimentation des enroulements en courant

Pour que l'établissement (ou la coupure) du courant se fasse rapidement, on peut aussi alimenter les enroulements en courant. Comme on n'a pas de générateurs de tension parfait (courant illimité), on n'a pas non plus de générateur de courant idéal (tension illimitée), mais on fera avec l'alimentation que l'on a (12V, 24V, 48V et même 80V). Si ce courant n'est pas atteint, on mettra toute la tension possible. C'est le dual d'une alimentation en tension qui va délivrer une tension de consigne et si cette tension n'est pas atteinte, délivrera tout le courant possible.

Un autre approche possible du même fonctionnement, est de dire que pour alimenter une bobine, on va mettre la tension maximale et on baissera la tension quand le courant nominal sera atteint.

Si on alimente un enroulement sous une tension double au début de sa conduction, la pente au départ va se trouver doublée, et on atteindra le courant souhaité un peu plus de deux fois plus vite. Si on veut aller 10 fois plus vite, il suffit de prendre une tension d'alimentation en gros 10 fois plus élevée que sa tension nominale. Avec le moteur 12V de tout à l'heure, si on voulait aller 10 fois plus vite, il faudrait une alimentation de 120V. C'est beaucoup, pour la sécurité, pour les transistors de puissance... On a donc tout intérêt à utiliser des moteurs avec des tension nominales assez basses, souvent de l'ordre de 2,5V. Ainsi pour multiplier les pentes par 10, on prend une alimentation de 24V, ce qui est acceptable. On peut aussi utiliser le 48V, voir du 72V. En multipliant la pente par 10 ou plus, on verra les effets de l'inductance se sentira pour des fréquences de rotation plus élevées.

Pour la décroissance du courant, on peut, suivant le besoin, mettre une tension nulle aux bornes de l'enroulement, ou inverser la tension, ou encore un mélange des deux.

Dans le cas des moteurs, on n'a pas besoin d'un courant parfaitement constant. On peut se contenter d'ailleurs d'une alimentation non régulée. Pour fixer le courant, on utilisera plutôt un découpage PWM qui a un meilleur rendement. On va ainsi mettre toute la tension disponible, et quand on atteint le courant de consigne, on remet la tension à 0. Le courant va donc baisser, et on remettra le couvert. On aura donc des ondulations sur le courant. Ci contre à gauche, une idée de l'établissement du courant. Dans la pratique, ce peut être un peu plus compliqué pour la décroissance car on peut alimenter l'enroulement en mettant la tension en inverse (décroissance rapide ou "fast decay"), mettre du 0V aux bornes de l'enroulement (décroissance lente ou "slow decay") ou encore une décroissance mixte ("mixed decay") composée d'un temps en décroissance rapide et un temps en décroissance lente. Voir à droite.

On a vu qu'augmenter la tension d'alimentation permet d'accélérer la montée du courant (ou la descente). Cela va compenser en partie l'effet de l'inductance. Mais cela permet aussi de diminuer l'effet de la force contre électromotrice (si la fcem est de 4V, pour un moteur alimenté en 4V, c'est important, si le moteur est alimenté en 48V, c'est négligeable). Cela va permettre de conserver du couple quand on fait tourner le moteur.

Quand le moteur est arrêté mais que les enroulements sont alimentés, on va hacher le courant. Si le rendement du hacheur était de 100%, toute la puissance de l'alimentation serait dissipée dans le moteur. Ce dernier voit son courant nominal, donc sa tension nominale. Si j'alimente un 17HS13-1334S (1,33A - 3,7V) il y aura dans un seul enroulement, en mode une phase à la fois, 1,88A (On a vu que pour une phase à la fois, il faut multiplier le courant par √2), et le moteur dissipera 1,88A . 3,7V = 10W. Et ceci quelle que soit la tension d'alimentation du driver. En supposant le driver parfait, si la tension d'alimentation est de 3,7V le courant va passer tout le temps. Si la tension d'alimentation est de 37V (10 fois plus), le moteur recevra 37V pendant un dixième du temps et dissipera toujours 10W. L'alimentation fournira du 37V, et fournira 1,88A pendant un dixième du temps seulement. Cela fait toujours 10W. Il n'y a pas de mystère, la puissance moyenne fournie par l'alimentation sera toujours de 10W quelle que soit la tension. Faut-il pour autant avoir une alimentation de 1,88A? Et bien non car en sortie de l'alimentation se trouve un condensateur et c'est lui qui va recevoir un courant quasi constant de la part de l'alimentation (0,188A) et fournir 1,88A pendant 1/10ème du temps. Ainsi on pourrait prendre une alimentation 12V, 24V, 48V... pourvu qu'elle délivre les 10W, et que l'on ne dépasse pas la tension maxi du moteur.

Si on passe en mode deux phase à la fois (ou en micro-pas), Le courant dans le moteur sera en tout de 1,88A (réparti entre les deux phases), et le résultat est le même.

La présence d'un condensateur en parallèle sur l'alimentation permet de stocker l'énergie et de la fournir en un court instant si l'alimentation n'a pas ce pouvoir. Ce condensateur est conseillé.

Quand le moteur est arrêté, l'inductance ne joue aucun rôle, et l'énergie est perdue dans la résistance. Quand le moteur tourne, on va emmagasiner en plus de l'énergie dans l'inductance, puis annuler cette énergie. On peut éventuellement récupérer une partie de cette énergie si on inverse la tension aux bornes de l'enroulement. Mais on ne peut pas tout récupérer (et ce n'est pas toujours souhaitable que la décroissance soit importante. Le moteur va donc dissiper plus d'énergie si il commence à tourner. Quand la vitesse devient suffisamment importante, le courant n'arrive plus assez vite à sa valeur nominale, le courant moyen dans le moteur va diminuer, ainsi que la puissance fournie par l'alimentation. En conséquence, pour un moteur de puissance P, je recommande une alimentation de 1,6P.

 

Tension maximum

Nous venons de voir que quand on alimente le moteur en courant, plus la tension d'alimentation est importante, meilleures sont les caractéristiques. Mais peut-on utiliser du 48V sur un moteur de 3V? La réponse est évidemment oui, le constructeur donne d'ailleurs souvent la courbe de couple pour 12V, 24V et 48V. Mais on peut se poser la question "quelle est la tension maximale que l'on peut mettre sur un enroulement?". Je n'ai pas de réponse à cette question, je n'ai pas encore vu cette donnée dans les caractéristiques des moteurs. Pour certains moteurs, le constructeur donne bien l'info de la tension d'isolement entre un enroulement et la carcasse (de l'ordre de 500Veff pendant une minute par exemple), mais ce n'est pas la tension maxi entre deux enroulements. Je pense que cela n'a pas une grande importance car on ne trouve pas beaucoup de driver capable de dépasser les 72V.

 

Nombre de pas par tour

Le nombre de pas par tour est défini à la construction. Les moteurs à aimants permanents on en général moins de 64 pas par tour. Le 28BYJ-48 est donné comme 2048 pas par tour car il a un réducteur de vitesse. Sinon ce serait un 64 pas par tour. Les moteurs hybrides ont pour les amateurs 200 pas par tours. Il en existe jusqu'à 1000 pas par tour.

Pour compter le nombre de pas par tours si le moteur n'a pas de réducteur, on peut envoyer des pas avec un logiciel et voir l'angle réaliser. Pour compter le nombre de pas à la main, le plus simple est de mettre le moteur sous tension (même légère), ainsi les crans que l'on ressent sont des paquets de 4 pas. Si on sent 50 crans par tour, c'est un 200 pas par tour, et donc un moteur hybride.

 

Alimentation en pas entiers, une phase à la fois

Dans le modèle simplifié du début, on alimentait les enroulements, un par un, les uns après les autres . C'est la méthode naturelle, et elle découle directement des propriétés du moteur. Le moteur Nema17 17HS13-0316S (0,31A / 38,5Ω / 21mH) est construit pour supporter 0,31A dans deux phases en même temps, soit 0,41A dans un seul enroulement (on a vu que pour un seul enroulement il faut multiplier le courant par √2). Si on y met plus, le moteur surchauffe, sature.... Si on y met moins, le couple sera plus faible, mais il n'y a pas de risques.

Voici, à gauche, une illustration avec le moteur de démonstration de base de ce fonctionnement.

 

Alimentation en pas entiers, deux phases à la fois

Si au lieu d'alimenter un seul pôle, on en alimentait deux, l'aimant central s'orienterait entre les deux pôles. Cela donnerait le fonctionnement illustré à gauche.

Sans surcharger le moteur, alimenter sous sa tension nominale deux phases à la fois, ou sous sa tension nominale multipliée par √2 une phase à la fois, donne exactement le même couple à bas régime. Mais il peut y avoir un intérêt à alimenter en 2 phases à la fois:
- la puissance est répartie sur deux enroulements au lieu d'un seul (moins de points chauds)
- si on alimente le moteur en "courant", pour une même tension d'alimentation, le rapport Valim/Vmoteur est multiplié par 1,4 et cela va améliorer les performances en hautes vitesses.

Le driver A4988 qui est un classique pour la gestion des moteurs pas à pas bipolaires de petites puissances va donc préférer utiliser le mode 2 phases à la fois pour avancer en pas entiers, et le courant est réduit par rapport à la consigne (pour un moteur, la consigne doit être 1,4 fois le courant maxi du moteur donné par le constructeur). Voir information ci contre à droite.

 

Mode demi-pas

C'est le mélange alterné des deux modes précédents. Un dessin vaut mieux qu'un long discours. A droite le fonctionnement en demis-pas. Une fois sur deux, on alimente une seule phase, une fois sur deux on alimente deux phases. C'est simple au premier abord et cela permet de transformer à moindre frais un moteur 200 pas par tour en un moteur 400 pas par tours. Seulement il y a une règle que l'on devrait respecter: la tension ou le courant doit être augmenté de √2 lorsqu'on est en une phase à la fois. Avec une alimentation en tension (avec des ULN2803) Je n'ai pas vu de schéma correct permettant ce mode. Avec les drivers permettant la commande en courant, on a bien cette différence d'alimentation.

Bien entendu, on peut quand même utiliser un ULN2803 pour une commande en demi-pas, en prenant la tension d'alimentation égale à la tension nominale, mais les demi-pas n'ont pas le même champ magnétique et si le moteur n'est pas à vide, les pas ne seront pas égaux. De plus comme la tension est inférieure à ce qu'elle devrait pour les pas "une seule phase", le couple maximal est réduit. Et c'est lui le facteur limitant. Dans ce cas le couple utilisable est réduit par rapport au modes pas entiers ou demi-pas.

Avec une alimentation en courant, le driver tient compte de cette particularité, et on sera toujours au couple maximum

 

Micro-pas

On vient de voir qu'en alimentant deux phases en même temps, le champ magnétique résultant va se positionner entre les positions qu'il y aurait si on alimentait une seule phase. Au milieu même si les deux phases ont le même courant. En plus en réduisant pour ce "demi-pas" le courant par √2, le couple bas régime est constant. Pour mon moteur imaginaire, cela donne:

demi-pascourant
phase 1
courant
phase 2
angle
1100%0%
270%70%45°
30%100%90°
4-70%70%135°
5-100%0%180°
6-70%-70%225°
70%-100%270°
870%-70%315°

Pour intercaler une position entre le demi-pas 1 et le demi-pas 2, il suffit d'alimenter les deux phases, mais un peu plus la phase 1 que la phase 2. Toujours en respectant que la puissance totale est fixe soit (courant phase 1)2 + (courant phase 2)2 = (courant nominal)2. On peut ainsi passer en quarts de pas. En faisant ainsi plusieurs divisions, on peut avoir des huitièmes de pas, des seizièmes de pas... On appelle cela des micro-pas (microsteps en anglais). Rien ne nous garanti que les micro-pas soient identiques, et on ne gagne rien en précision, un moteur précis à +/-3% sera toujours précis à +/-3%. Voici à droite le début de la table du A4988.

Les micro-pas sont un grand classique des drivers en courant. A tel point d'ailleurs que certain drivers ne permettent pas le mode pas entier. Le driver DM860H vous transforme un moteur 200 pas par tour en un 400 à 25000 pas par tour.

En passant en micro-pas, on diminue les risques de résonance, on diminue énormément le bruit du moteur (les saccades sont toutes petites). Mais d'un autre côté, il faut que la commande envoie plus d'informations. Si au lieu d'être en mode deux phases à la fois, on passe en 16 micro-pas, il faut envoyer 16 fois plus d'ordres. C'est pour cela que certains indiquent que l'on gagne en passant en micro-pas, mais que 10 ou 16 est un bon compromis.

La bibliothèque accelstepper indique que les pas sont fiables en dessous de 1000 pas par seconde ce qui fait 5tr/s pour un moteur 200 pas par tours. Si on passe en 10 micro-pas, la limite devient de 0,5tr/s, ce qui peut devenir faible.

 

Choix d'un moteur: courant ou tension?

Quand on regarde un catalogue de moteurs pas à pas, et que l'on s'intéresse au critère tension sur un enroulement, on s'aperçoit que l'on peut classer les moteurs en deux catégories. Dans la première, j'y mets les moteurs dont la tension est un nombre rond, bien souvent 5V, 6V, 12V ou 24V. Ces moteurs sont conçus pour être alimentés directement sous la tension délivrée par l'alimentation. Vous êtes en 12V, vous prenez un moteur 12V! On ne mettra pas plus de tension au démarrage qu'à la fin, et on va donc avoir plus rapidement des pertes de couple. Si le moteur est utilisé pour des vitesses assez faibles (inférieures à 1 tour par seconde), cela n'a pas d'importance, et le choix de ce type de moteur peut se justifier. Pour améliorer le couple en rotation, on peut y mettre une résistance, mais c'est au détriment du rendement. Ce type de moteur est surtout utilisé en petite puissance. Bien souvent ce sont des moteurs unipolaires, mais ce n'est pas obligatoire.

Le moteur 17HS13-0316S (0,31A 38,5Ω 21mH 0,16Nm 220g / 12V) est de ce type.

Pour le second type de moteur, on va trouver des tensions bizarres 2,8V 3,7V... Les tensions sont souvent faibles (inférieures à 5V), mais les courants élevés (supérieurs à 1A même pour les petits moteurs). L'alimentation idéale pour ces moteurs est en courant. Il faut un driver spécifique, mais comme de toutes façon il en faut un... Avec ce type de moteurs, on va avoir de meilleurs performances en haute vitesse, l'effet de l'inductance est moindre. Pratiquement tout le temps, ce sont des moteurs bipolaires.

Le moteur 17HS13-1334S (1,33A 2,1Ω 2,5mH 0,22Nm 220g / 3,7V) est de ce type. Il ressemble au 17HS13-0316S (même taille, même poids, mais il est plus performant en terme de couple car ce n'est pas un moteur unipolaire.

Se dessine un choix général, bien qu'il peut y avoir des exceptions:
Moteur unipolaire
Alimentation en tension
    ou     Moteur bipolaire
Alimentation en courant
On aura plus de performances (y compris plus de couple) à taille équivalente avec un moteur bipolaire.

 

Diodes de roue libre avec un moteur unipolaire

Quand on alimente des moteurs, ou toute autre charge inductive, avec des transistors en commutation, le courant ne peut s'annuler d'un coup au blocage des transistors. Il faut en principe des diodes de roue libre pour permettre au courant de trouver un passage et décroître. Si on ne le fait pas, le courant passera dans un transistor, la tension va grimper jusqu'à ce qu'il lâche. Cela génère des perturbation électromagnétiques importantes et pourrait parait-il endommager les transistors (je n'y crois absolument pas, il n'y a jamais ni excès de courant, ni excès de puissance, ni choc, seules possibilités pour détruire un transistor). Le choix et la position des diodes de roue libre pour la plupart des montages est une évidence, il n'en est pas de même avec l'alimentation d'un moteur unipolaire.

Voici à gauche le schéma d'une bobine avec sa diode de roue libre alimentée par un transistor. C'est un schéma classique.

Quand le transistor conduit, le courant croît dans l'inductance. Quand le transistor se bloque, le courant continue dans le même sens en décroissant. Il va donc passer par la diode de roue libre, puis devenir nul au bout d'un moment.

Il y a plusieurs moyens d'améliorer encore ce schéma, mais ici ce n'est pas le but.

Pour une phase du moteur pas à pas, il y a deux enroulements au lieu d'un seul. La première idée qui vient est donc de doubler le schéma, on aura bien un transistor par bobine. Cela donne le schéma de droite.

Dans certains cas on trouve des diodes en parallèle sur les transistors, souvent par construction même du transistor. Ce montage fonctionne, il est usuel, mais on peut très facilement l'améliorer.

Voyons ce qui se passe pour nos deux bobines d'une seule phase (à gauche).

Les deux bobines ne sont pas indépendantes. Elles sont bobinées sur le même noyau. Elles vont faire comme un transformateur. Pour les courants et tensions continus, ce qui se passe d'un côté ne regarde pas ce qui se passe de l'autre côté. Mais ce qui nous préoccupe aujourd'hui, c'est les transitoires, notamment quand on coupe le courant dans une phase. Cette dépendance recopie la tension d'une bobine sur l'autre. Voici ce qui se passe si on branche l'extrémité gauche de la première bobine: l'autre suit (les tensions sont opposées à cause du branchement):

Reprenons la figure de tout à l'heure, et alimentons le transistor T1 (je suppose tous les composants parfaits)

Au début tous les transistors sont bloqués, A, B et C sont au potentiel Vmoteur. Lorsque T1 commence à conduire, le potentiel de A descend pour aller au 0V. Le point C va donc vouloir monter pour aller à 2Vmoteur. Mais la diode D2 veille au grain et devient passante. Les deux parties ne sont plus indépendantes. On ne raisonne plus comme avant. En fait D2 met la bobine BC en court-circuit, et on a un transformateur dont on alimente le primaire (AB) et dont le secondaire (BC) est en court-circuit. C'est pas bon du tout. Quand on bloquera T1, la diode D1 jouera son rôle. Au passage à ce moment le point A remonte de Vmoteur, et donc le point C descend de Vmoteur. C se trouve au potentiel de la masse, et tout est correct de ce côté. Le problème c'est D1 et D2 au moment ou un transistor commence à conduire. Supprimons-les!

A droite. Quand les transistors sont bloqués, A B et C sont au potentiel Vmoteur. Quand T1 commence à passer, le point A voit son potentiel passer à 0V, et par conséquent C passe à 2Vmoteur. C'est plus que prévu, mais cela ne pose en principe pas de problèmes. On a réglé un problème. Mais pas celui de l'arrêt, vu que l'on a supprimé D1! Voyons ce qui se passe alors. T1 est conducteur depuis longtemps. A est à 0V, l'influence des bobines l'une sur l'autre est terminée, B et C sont au potentiel Vmoteur. Au moment où l'on bloque T1, Le courant I ne devant pas s'annuler immédiatement, le potentiel de A va grimper, et celui de C va donc descendre. Maintenant, non seulement A monte, mais en plus C devient négatif. Et c'est la que l'on peut faire un miracle: il suffit de mettre une diode qui empêche le potentiel de C de descendre en dessous du 0V (Elle protégera le transistor T2):

Et voila! Comme la tension du point C ne peut que descendre de Vmoteur, la tension du point A ne peut plus monter que de Vmoteur. Comme il était à 0, il va rejoindre le potentiel de B. Il n'y a pas de surtension.

Pour comprendre un peu mieux ce qui se passe, quand T1 passe, la bobine AB emmagasine de l'énergie, et quand on bloque T1, c'est la bobine BC qui va rendre cette énergie.

J'ai supposé tout à l'heure que les commutations étaient suffisamment lentes pour que les effets du couplage des bobines soit terminés. Si il n'en était pas ainsi, avant le blocage de T1, le potentiel de C serait entre Vmoteur et 2Vmoteur. Le potentiel de C peut descendre alors entre Vmoteur et 2Vmoteur, et A peut monter d'autant. On va retrouver alors en A au maximum 3Vmoteur. C'est effectivement ce que j'ai observé avec un moteur.

Ce montage présente aussi un très gros avantage: quand le courant des bobines décroît suite à un blocage d'un transistor, la bobine qui libère l'énergie à un potentiel de Vmoteur à ses bornes. On se retrouve avec une décroissance comme si on avait une zener. Mais on a payé qu'une diode.

Maintenant si vous voulez absolument mettre une diode en parallèle sur l'enroulement, pour éviter le court-circuit mettez une diode avec une zener correspondant à la tension d'alimentation. Mais je n'ai pas vu chez les fabricants de schéma avec une diode, zener ou pas, en parallèle sur les enroulements.

 

Réponse à un seul pas, résonance

Lorsque l'on demande au moteur d'avancer d'un seul pas, il est possible qu'il dépasse la position souhaitée puis revienne pour finir à la position souhaitée. Je n'ai pas vérifié cette courbe, je n'en ai pas les moyens. Les moteurs mettraient environ 0,3s à se positionner correctement.

Tout d'abord quand on va faire avancer le moteur avec un rythme très lent, un pas par seconde par exemple, le moteur va avancer avec énergie d'un pas, va s'arrêter, va avancer d'un pas, s'arrêter... On va donc avoir une succession d'à-coups. Pour diminuer ces à-coups, on peut diminuer les angles de rotation en utilisant les micro-pas. C'est ce que j'ai noté avec une maquette, en mode pas entiers, le moteur fait beaucoup de bruit, mais en passant en 16 micro-pas le niveau sonore est raisonnable.

Une deuxième conséquence de cette courbe est le phénomène de résonance. La position angulaire du moteur est une sinusoïde amortie. La succession des pas peut être telle qu'au lieu d'amortir cette sinusoïde, on entretient cette courbe. Le mouvement peut s'amplifier, et il y a perte de pas (on peut accrocher sur 4 pas trop loin ou 4 pas trop court). Le moteur peut donc avoir des phénomènes de résonance pour des vitesses assez faibles qui empêche le fonctionnement correct, ou tout au moins va diminuer son couple utile. J'ai un moteur qui à vide pourrait tourner à 2000tr/mn, mais qui résonne vers 50tr/mn (perte de pas, arrêt, et même rotation en sens inverse). Du coup, si on ne doit pas dépasser 40tr/mn, c'est dommage. Ce phénomène de résonance va dépendre beaucoup de la charge. Et de nouveau les micro-pas permettent de supprimer la résonance. On peut aussi atténuer cette résonance en augmentant le nombre de pas par tour; un constructeur vante ainsi les mérites de son moteur 1000 pas par tour (par contre pour atteindre les 250 dents du rotor, il est obligé d'augmenter le diamètre du rotor).


Mise en évidence d'une résonance

Une autre résonance bien curieuse

A cause du fonctionnement très bruyant en mode pas et des problèmes de résonance, je conseille très fortement de travailler en 8 à 16 micro-pas. Je suppose qu'augmenter le nombre de micro-pas doir encore réduire le bruit.

 

Résolution et précision

La résolution d'un moteur c'est le plus petit angle que l'on peut demander. Pour un moteur 200 pas/tr, si on est en mode pas, c'est donc de 1,8°. Si on passe en mode 16 micro-pas, la résolution est 16 fois meilleure, environ 0,1°.

La précision c'est l'erreur que le moteur va faire. Si on lui demande de se mettre en position 0, il le fera si il est à vide et si il n'y a pas de frottements secs et si sa géométrie est parfaite (en gros, il ne le fera jamais)? Je n'ai vu qu'une datasheet indiquant la précision d'un pas à pas. C'était de +/-3%. Je suppose que c'est à vide et que c'est +/-3% d'un pas. Mais à cela se rajoute l'erreur de positionnement due à la charge qui atteint +/- 1 pas (voir en dessous: couple statique). Pour une charge de 50%, l'erreur peut atteindre 1/3 pas soit 0,6° pour un 200 pas/tr.

Il ne faut donc pas confondre précision avec résolution. C'est en général la précision dont on a besoin. Si on veut par exemple que le moteur avance degré par degrés, au delà de 4 micro-pas, on rentre dans le domaine de l'à peu près. Avec 4 micros-pas, pour avancer degré par degré, on ira aux positions 0 pas (0°+/-0,6°), 0,5 pas (théorie 0,9° pour 1°+/-0,6°), 1 pas (théorie 1,8° pour 2°+/-0,6°), 1,75 pas (théorie 3,15° pour 3°+/-0,6°)...

 

Couple statique

Quand je parle de couple statique, cela signifie que le moteur est alimenté mais qu'il n'y a pas de commutation des phases. Quand les pôles opposés du rotor et du stator sont parfaitement en face, le couple est nul et l'état est stable: si on écartait le rotor de sa position, un couple le ferait revenir. Si on se décale de 4 pas, on se retrouve exactement dans la même situation. Si on se décale de 2 pas, les pôles identiques au rotor et au stator sont en face, et le couple est de nouveau nul. Mais l'état est instable, un petit écart angulaire, va faire apparaître un couple qui va accentuer l'écart. Entre ces points, la forme du couple est complexe, mais on peut considérer en première approximation que le couple est une fonction sinusoïdale de l'angle.

Si le moteur était parfaitement à vide (pas ce couple, pas de frottements), en position statique, le moteur ne délivrerait aucun couple (on est pile poil sur le pas demandé: 0). En charge, plus on demande ce couple, plus le moteur va se décaler. Si le rotor est en retard, le couple est positif et tendrait à faire avancer le moteur pour rattraper cet écart. Si au contraire on dépasse la position indiquée par le phase, le couple est négatif et le rotor aura tendance à revenir en arrière. Tant que l'on ne dépasse pas le couple maximum, on se trouve sur la courbe rouge en gras, et la position du rotor est définie à 1 pas près. On n'est pas sur le pas sélectionné, il y a donc une erreur de positionnement de +/- 1 pas. En mode micro-pas, il y aura quand même une erreur pouvant aller jusqu'à 1 pas (et non pas 1 micro-pas). Et moins le moteur est chargé (plus le couple demandé est faible) plus il est juste.

Si le moteur est utilisé avec un couple constant qui est toujours dans la même direction, tous les pas sont décalés de la même quantité, mais dans le cas d'une commande numérique où l'on va entraîner un chariot d'un côté ou de l'autre, il y aura un décalage dans un sens pour l'aller et le décalage sera dans l'autre sens pour le retour. On va donc avoir un hystérésis allant jusqu'à 2 pas.

Si on force et que l'on décale le moteur entre 1 et 2 pas, il aura quand même tendance à revenir à 0, mais en général la courbe du couple qui a fait ce décalage ne permet pas de revenir (c'est le cas si on tourne à la main). On va alors accrocher la position 4 pas plus loin si le couple a diminué suffisamment, sinon on va décrocher de 4 pas en 4 pas.

Tout ceci veut aussi dire qu'un moteur pas à pas ne peut pas perdre un pas unique, mais qu'il les perd éventuellement par paquets de 4. Ainsi on peut perdre 4 pas, 8 pas... Quand on est en butée, et que l'on continue d'envoyer des ordres de pas, tous les 4 pas, le moteur va revenir sur une position stable en arrière et il va y avoir un "saut" de 3 pas (en mode pas) à 4 pas (en mode micro-pas). Ce saut étant important cela va procurer du bruit, mais ce n'est absolument pas dangereux pour le moteur lui même. Les vibrations peuvent endommager à la rigueur la mécanique, mais le moteur ne va pas surchauffer comme le ferait un moteur à courant continu.

 

Couple résiduel

Lorsque le moteur n'est pas alimenté, la présence d'un aimant permanent et de pôles va permettre au moteur d'avoir un couple non nul. Ce couple est faible, par exemple 20 fois moins que le couple statique. Les moteurs sans aimant permanent n'ont donc pas de couple résiduel.

 

Couple dynamique

Le couple est sensiblement proportionnel au courant qui traverse le ou les enroulements. Le moteur, comme nous l'avons vu présente un couple à l'arrêt, du fait du courant qui le traverse. Lorsque le moteur tourne, ce couple utile va diminuer pour plusieurs raisons:
- présence d'une inductance qui ralenti les variations de courant
- présence d'une force contre électromotrice
- augmentation des frottements du moteurs diminuant d'autant le couple utile;

Si on commande le moteur en tension, l'effet de l'inductance va diminuer rapidement le couple. Si le moteur est alimenté en courant, le couple va être plus important. C'est pour cela que le constructeur va donner la courbe du couple quand le moteur est alimenté en courant et pas en tension. La source de courant n'est pas complètement idéale, On utilise une source de tension que l'on découpe pour obtenir le courant souhaité. Plus la tension d'alimentation est élevée, plus vite on arrive au courant souhaité, et donc plus le moteur va avoir de couple. Concernant la force contre électromotrice, plus la tension d'alimentation est élevée, moins son effet se fera sentir. Pour la courbe du couple en fonction de la vitesse, le constructeur va donc donner la tension d'alimentation.

La tension qui est inscrite n'est pas la tension d'alimentation du moteur, mais la tension du driver.

Un des moteur STM23-2 est un moteur 2,8A 0,9Ω soit 2,5V. Sur la courbe le constructeur ne propose même pas une alimentation en 2,5V et suppose que le moteur est alimenté avec 12V minimum. On voit sur les courbe très nettement le gain procuré par une tension d'alimentation élevée. On a pour la moitié du couple statique une vitesse maximale presque proportionnelle à la tension d'alimentation.

 

Démarrage et sur-vitesse

Quand on veut démarrer un moteur pas à pas en envoyant une slave d'impulsion régulière (sans accélération), avant que la rotation se stabilise, le moteur va avoir du retard; le couple sera positif et tendra à faire accélérer le moteur et cela va permettre (ou non) de combler le retard. Si on est à vide, et si il n'y avait pas de frottements, on peut aller jusqu'à 2 pas de retard (le couple est encore positif). Si on dépasse les deux pas de retard, le couple devient négatif et va entraîner le moteur dans l'autre sens, et donc le freiner. Les pas suivants vont de même le faire aller dans un sens et dans l'autre, il ne démarre pas. Si le moteur est chargé, une partie du couple va servir à entraîner la charge et le couple disponible pour accélérer sera plus faible, c'est comme si on décale la sinusoïde en vertical vers le milieu. On peut avoir du retard, mais moins que 2 pas. Le moteur ne démarre pas instantanément comme je l'ai entendu dire, mais il va avoir entre zéro et deux pas de retard, puis il va combler ce retard.

On voit souvent ce genre de graphique. Le fonctionnement est divisé en trois zones. Si le couple demandé et la vitesses sont faibles (en dessous de la courbe rouge), le démarrage direct est possible. Le fonctionnement est impossible au delà de la courbe bleue, car le couple résistant est plus important que celui que peut fournir le moteur, lequel diminue avec la vitesse (le courant ne peut plus s'établir assez vite). Entre les deux, on a une zone de sur-vitesse; on peut se trouver dans cette zone, mais il faut accélérer progressivement le moteur, puis le freiner pour en sortir sans perte de pas. La courbe de gauche indique le couple maximum pour un démarrage direct et est appelée "torque in" dans la littérature anglo-saxonne. La deuxième courbe est appelée "torque out".

Quand on parle de démarrage direct, c'est en partant du moteur arrêté. Si on veut pouvoir faire une inversion de sens de marche, on peut considérer que c'est un démarrage en sens inverse de deux fois la vitesse, auquel cas il suffirait de changer l'échelle des vitesse pour le démarrage direct. Ce n'est pas forcément juste car le couple peut aider à freiner le moteur.

En fait cette courbe serait importante, mais elle dépend beaucoup trop du montage réel. Supposons que l'on n'ait que du frottement sec sans inertie. Dans ce cas, il n'y aurait plus de zone de sur-vitesse. Supposons maintenant qu'il n'y ait plus de frottement sec, mais qu'il n'y ait une inertie extrêmement importante. On aurait alors la courbe "torque in" tassée à gauche. Dans la pratique on a les deux, et on ne peut absolument pas calculer le couple si on ne connaît pas la vitesse. Or celle-ci n'est atteinte qu'en fin de démarrage. On ne peut donc pas l'estimer pendant le premier pas. La courbe permet d'expliquer, mais les valeurs si elles y sont vont dépendre des conditions de mesure. Pour moi, ce n'est qu'une décoration, ou alors il faudrait préciser tous les paramètres de mesure.

Il est rare que le constructeur spécifie les conditions de mesure. Dans la courbe ci-dessus, est spécifiée la charge (purement inertielle, environ 4 fois celle du moteur). Mais l'interprétation n'est pas une évidence. Si la charge est fixée, on ne peut pas obtenir deux courbes, mais seulement 2 points. Que représente alors le couple? C'est le couple encore disponible? Et pourquoi à vitesse nulle, les deux courbes ne donnent pas le même point, vu qu'il n'y a pas de démarrage possible?

Avec un montage réel, le régime de sur-vitesse existe. C'est une vitesse que l'on peut atteindre, mais uniquement avec un démarrage progressif (augmentation de la vitesse). Le démarrage progressif permet aussi de ne pas avoir d'à-coup lors du démarrage direct ou lors de l'arrêt brusque.


C'est quoi la sur-vitesse?
 

Vitesse maximum
343tr/mn et 378tr/mn

Vitesse maximum en sur-vitesse
2220 tt/mn

 

Accélération constante

Très souvent si on démarre un moteur pas à pas en l'accélérant, on choisit une accélération constante, la vitesse va ainsi croître linéairement. C'est basé sur l'idée que si le moteur a pu passer d'une vitesse nulle à une vitesse V1 en un temps T, on pourra passer de la vitesse V à V+V1 dans le même temps. C'est comme un nouveau démarrage. Mais cela me pose problème car d'une part le couple du moteur diminue si la vitesse augmente, et d'autre part on a besoin de plus d'énergie (il faudra donc plus de temps) pour passer de V à V+V1 que pour passer de 0 à V1. Il faudrait donc avoir une courbe de vitesse qui croisse plus vite au début qu'à la fin. Or la forme de cette courbe dépend de la charge. En boucle ouverte, par simplification et parce que l'on sait le calculer, on utilise quand même une accélération constante.

Petit problème pour illustrer ceci: Un homme marche à 2km/h, il pèse 50 kg et son énergie cinétique est de 1/2.M.V2 soit 100 joules. En arrivant dans les couloirs du métro sur un tapis roulant qui va aussi à 2km/h, notre homme stoppe sa marche, et continue par conséquent à avoir une même vitesse et une même énergie cinétique. Voyant que cela ne va pas assez vite, il se met à marcher à 2km/h. Par rapport au tapis (repère galiléen), il passe de 0 à 2km/h et dépense 100 joules pour atteindre cette vitesse. Arrivé à la fin du tapis, un grosse dame lui barre la route, il lui rentre dedans avec sa vitesse de 4km/h et dans le choc perd son énergie de 400 joules (1/2.M.V2 avec v=4km/h) D'où sortent ces 200 joules supplémentaires?
Ceci pour dire que pour atteindre 2km/h il lui faut 100 joules, pour atteindre 4km/m il lui en faut 400. Il faut donc plus d'énergie pour augmenter la vitesse de 2km/h si on a déjà une certaine vitesse que si on le fait départ arrêté.

Si l'on veut quand même une accélération constante, parce que l'on ne sait pas trop quoi faire d'autre, on obtient le graphique de gauche. J'ai représenté en bleu la vitesse idéale. C'est une droite. Chaque palier peut être un seul pas ou plusieurs. Si il s'agit d'un pas unique, le premier palier est plus large car au fur et à mesure que la vitesse augmente, le temps pour faire un pas diminue. Si la vitesse augmente par paliers, et que l'on veut des paliers de même durée, il faut avoir peu de pas au début, ce qui n'est pas plus simple. Ici n'est représenté que 10 paliers pour une question de lisibilité. Dans la suite, je vais supposer que chaque palier n'est composé que d'un pas (ou d'un micro-pas). Bien entendu est représenté la vitesse théorique issu de la commande; dans la pratique quand on fait le premier pas, la vitesse est importante, suivi d'un arrêt, voir de quelques oscillations.

Le calcul de l'accélération, dans le cas d'une rampe de vitesse linéaire n'est pas complètement triviale si on veut faire le calcul en temps réel. Mais on peut avoir assez facilement une idée de la vitesse qu'il faut donner au moteur.
En notant:
t le temps,
v(t) la vitesse en fonction du temps, angulaire du moteur ou linéaire de la charge,
d(t) la distance parcourue en fonction du temps, angle ou distance,
A l'accélération,
on peut écrire: v(t) = A . t soit t = v(t) / A (1)
d(t) = A . t2 / 2 (si vous dérivez la distance par rapport au temps, vous obtenez la vitesse) soit t = √ (2 . d(t) / A) (2)
en mixant les équations (1) et (2): t = v(t) / A = √(2 . d(t) / A) soit v(t) = √(2A) . √(d(t))
Comme la distance parcourue est proportionnelle au nombre de pas faits, la vitesse est donc proportionnelle à la racine carrée des pas faits.

Quand j'ai écrit ma bibliothèque, plutôt que demander comme paramètre l'accélération angulaire, la vitesse de rotation, j'ai préféré travailler avec les nombres de pas. Je sais par exemple que sur l'axe n°1, j'ai 800 pas par cm. Je n'ai pas à convertir la distance que je veux faire en angle. Si il faut que je convertisse ma distance en angle, je vais convertir des entiers en réels, ce qui va me faire éventuellement des arrondis et des calculs plus longs que si je travaille avec des entiers. Si je fais la somme de tous les pas que je fais, j'aurais toujours le nombre exact, alors que je ne peux rien garantir si je cumule les angles.

Dans le même esprit, je n'utilise pas le paramètre d'accélération. Mon problème pourrait être se déplacer à 10 cm/s pour aller d'un point A à un point B avec une accélération régulière sur le premier centimètre. Avec mes 800 pas/cm et un moteur de 200 pas, tout calculs faits, cela donne une accélération de 0,005 m/s2 ou encore 0,785 rd/s2 ou encore 100 pas/s2. Aucun de ces chiffres ne me parlent (je ne garanti en plus pas la valeur). Pour moi, c'est plus simple de dire "je veux une accélération sur 1cm, 'est à dire sur 800 pas".

Pour écrire le programme avec les données accélération sur 800 pas, et une vitesse finale de 8000 pas/s (10 cm/s), comme on a v(t) = k . √(d(t)), et que pour d(t) = 800 pas, v(t) vaut 8000 pas/s, le coefficient k vaut 8000/√(800) soit 282. On a donc v(t) = 282 . √d(t)
Le premier pas est fait avec une vitesse de 282 pas/s, le deuxième à 282√2 (399 pas/s),... le 800ème à 282√800 soit 8000 pas/s .

Pour faire un décélération, il suffit de prendre le calcul dans l'autre sens, le premier pas se fera à la vitesse de 8000 pas/s, l'avant dernier à 399 pas/s, le dernier à 282 pas/s.

 

Calculs d'accélération constante

Ce paragraphe va détailler comment calculer les différents paramètres lorsque l'on a des accélérations. Par exemple, je veux faire N pas à la vitesse maximale de V avec une accélération A, quel temps cela va me prendre? Dans tout ce paragraphe, je ne m'intéresse qu'au cas ou l'accélération est constante.

Pour ce paragraphe, je ne vais parler que de pas, mais si on est en micro-pas, remplacez le premier mot par le deuxième. Vous pouvez aussi remplacer "pas" par degré ou millimètres. Je vais noter:
DA la distance parcourue en pas dans la phase d'accélération
DC la distance parcourue en pas dans la phase à vitesse constante
D la distance totale parcourue en pas dans les deux phases
V la vitesse maximale en pas/s
P le temps minimal d'un pas en s
A l'accélération en pas/s2
TA le temps d'accélération en s
TC le temps à vitesse constante en s
T le temps total (temps d'accélération et temps à vitesse constante) en s
v(t) la vitesse acquise au bout d'un temps t en pas/s
d(t) la distance parcourue au temps t en pas
L'origine des temps est pris au début du calcul qui nous intéresse.

Palier à vitesse constante

Intéressons nous tout d'abord à la partie ou le moteur est à vitesse constante. Les équations sont les suivantes:
V = Cte
v(t) = V (1)   la vitesse est constante et vaut donc toujours V
d(t) = V.t (2)   la distance est proportionnel au temps et à la vitesse
P = 1/V (3)   les pas/s c'est l'inverse des s/pas
et au temps TC l'équation 2 donne DC = V.TC (4)
et on obtient en supprimant V grâce à (3): DC = TC/P (5)

Quelle distance est parcourue?   DC = V.TC = TC/P
Quelle est la vitesse?   V = DC/TC
Quelle est le temps entre pas?   P = TC/DC
Quel temps a-t-on mis?   TC = DC/V = DC.P

Phase d'accélération

Intéressons nous à la phase d'accélération uniquement. Les équations sont les suivantes:
A = Cte
v(t) = A.t (1)
d(t) = A.t2/2 (2)
P = 1/V (3)
et au temps TA l'équation 1 donne V = A.TA (4)
au temps TA l'équation 2 donne DA = A.TA2/2 (5)
en supprimant TA entre (4) et (5): DA = V2/2A (6)
en supprimant A entre (4) et (5): DA = V.TA/2 (7)
puis en remplaçant V par 1/P (équation (3)), on a en plus:
P = 1/A.TA (8)
DA = 1/2A.P2 (9)
DA = TA/2P (10)

On voit par les formules que si on exclu P ou V (P et V sont intimement liés), tout est déterminé si on fixe deux paramètres . Suivant les deux paramètres que l'on se fixe, il faudra utiliser l'une ou l'autre formule:
Quelle distance est parcourue?   DA = A.TA2/2 = V2/2A = V.TA/2 = 1/2A.P2 = TA/2P
Quelle temps faut-il?   TA = V/A = √(2DA/A) = 2DA/A = 1/P.A = 2P.DA
Quelle accélération prendre?   A = V/TA = 2DA/TA2 = V2/2DA = 1/P.TA = 1/2DA.P2
Quelle vitesse atteint-on?   V = A.TA = √(2A.DA) = 2DA/TA
Quelle temps entre pas a-t-on en fin d'accélération?   P = 1/A.TA = √(1/2A.DA) = TA/2DA

Phase d'accélération, puis décélération

En calculant la vitesse ainsi, c'est simple il suffit de remplacer dans les équations ci dessus DA par D/2 et TA par T/2. Cette possibilité va donner ce que je vais appeler l'accélération optimale. Si on a besoin de parcourir une certaine distance en un temps défini, cette accélération est la plus faible possible et la vitesse est aussi la plus faible.

Phase d'accélération, palier à vitesse constante, puis décélération

Je vais supposer que la décélération est la même que l'accélération. Je calcule pour l'accélération et je double cette phase. V et P sont les vitesses constantes du palier. Les équations sont:
T = 2.TA + TC (1)
D = 2.DA + DC (2)
Les autres sont le mêmes qu'avant, mais elles ne sont pas indépendantes, on peut choisir:
V = A.TA (3)
DA = V2/2A (4)
DC = V.TC (5)
On a 5 équations, il faut éliminer TA, TC, DA, DC
(1) donne TC = T - 2.TA
(2) donne DC = D - 2.DA
En mettant tout cela dans (5), on a D - 2.DA = V(T - 2.TA) (6)
(3) donne TA = V/A (7)
en mettant (4) et (7) dans (6) on obtient D - 2.(V2/2A) = V(T - 2.(V/A))
ou encore D.A - V2 = V.T.A - 2V2
ou encore V2 - V.T.A + D.A = 0 (8)

Cette équation indique que si l'on fixe le temps et la distance, il y a une infinité de solutions pour choisir la vitesse et l'accélération. En effet si on va vite, on gagne de la distance dans le palier à vitesse constante, que l'on peut compenser par une plus faible accélération qui va réduire le temps ou l'on va vite. Le déterminant de cette équation "b2-4ac" valant T2.A2 - 42.D.A est toujours positif si l'accélération est infinie (on a plus de phase d'accélération ni de décélération, le démarrage est direct) il suffit de prendre la vitesse D/A. Par contre si on choisit une accélération trop faible (déterminant négatif, pas de solutions), on ne pourra pas aller suffisamment vite pour parcourir la distance dans le temps imparti. Intuitivement, si au bout de la moitié du temps, on est toujours en accélération et que l'on n'a pas encore fait la moitié des pas, comme pour la décélération, on parcourt la même distance dans le même temps, le compte de la distance n'y sera pas.

Pour qu'il y ait une solution, il faut que le "b2-4ac" soit positif. Si il est nul, il n'y a qu'une seule solution, et cela correspond à TC=0, et à ce que j'appelle l'accélération optimale.

Vu qu'il y a une infinité de choix si l'on fixe deux paramètres, il faut maintenant en fixer trois, et on peut avoir le quatrième. Si on choisit A, T et D, on a pour calculer V une équation du 2ème ordre. Le déterminant de (8) vaut T2.A2 - 4D.A, la solution est "(-b +√Δ)/2a" l'autre solution est négative. D'ailleurs si cette solution est négative aussi, c'est que vous avez choisi une accélération trop faible ou un temps trop court ou une distance trop grande. La solution est donc (si elle existe) V = (T.A+√(T2.A2 - 4D.A))/2. On a donc:
Quelle distance est parcourue?   D = V2/A - V.T
Quelle temps faut-il?   T = V/A + D/V
Quelle accélération prendre?   A = V2/(D-V.T)
Quelle vitesse atteint-on?   V = (T.A+√(T2.A2 - 4D.A))/2
Quelle temps entre pas a-t-on en fin d'accélération?   P = 1/(T.A+√(T2.A2 - 4D.A))/2

 

Accélération par paliers

Le problème pour faire une accélération linéaire telle que celle ci dessus est qu'il faut extraire une racine carrée pendant l'intervalle séparant deux pas. Or si on travaille à faible vitesse, on a bien le temps de faire le calcul, mais on n'a pas trop besoin de l'accélération car le moteur peut démarrer en direct, et si on veut passer en sur-vitesse, on n'a plus le temps de calculer la racine. Notez aussi que si on utilise les micro-pas, cela va notablement diminuer le temps de calcul disponible. Une solution classique consiste à faire des paliers de vitesses que l'on calculera à l'avance. Soit on utilise une table de vitesses, soit on utilise une table de coefficients. Ainsi le calcul n'est plus qu'une règle de trois. Pour calculer les paliers, le plus simple est que chacun aient le même nombre de pas, et on peut alors appliquer les formules ci-dessus.

Si on veut faire une accélération sur 33 paliers par exemple (le dernier palier étant la vitesse finale, ce qui fait une table de 32 valeurs), les coefficients des vitesses sont √(1/33), √(2/33) ... √(32/33). Et si on veut faire l'accélération sur 800 pas les paliers feront 800/32 = 25 pas. Si le nombre ne tombe pas juste, il y a la possibilité de faire des paliers identiques et de garder le reste pour la pleine vitesse, ou de faire quelques paliers plus long.

 

Accélération par la méthode de Martin

Parfois on cherche absolument à coller avec une accélération constante. Nous avons vu que ce n'est pas forcément une excellente idée, car les premiers pas sont moins contraignant que les derniers. En fait au lieu d'une courbe en racine carrée, ce serait mieux d'avoir une courbe de vitesse plus rapide au début. On peut se contenter d'une courbe approximative, de toutes façon on ne peut pas avoir la courbe optimale car elle dépend fortement du moteur et de la charge. L'idéal est en tout cas une courbe qui soit au dessus de la racine carrée, et qui soit rapide à calculer.

En fait on ne programme pas la vitesse, mais le temps qui sépare deux impulsions. Pour la programmation, on utilise soit un délai soit un timer. Dans les deux cas, c'est une unité de temps, c'est à dire l'inverse d'une vitesse. Comme nous avons vu que la vitesse devrait être proportionnelle à la racine carrée du nombre de pas parcourus, la durée de la temporisation devrait être proportionnelle à l'inverse de la racine carrée. En notant cn le temps pour le pas n (unité à définir en fonction de la programmation), on a:  cn = k / √n  avec n le nombre de pas ou le nombre de paliers faits.

En multipliant par √n, on obtient  k = cn √n  et on a donc  k = cn √n = cn+1 √(n+1)  k ne m'intéresse pas pour l'instant, c'est cn+1 que je cherche. Cela donne  cn+1 = cn √(n/(n+1)) = cn √(1-1/(n+1))  On peut approximer √(1-1/(n+1)) par (1-1/2n). Cela va nous donner une valeur proche si n est important, et une erreur importante pour les petites valeurs. Mais on a vu que ce n'est pas très important d'avoir une valeur approximative. Notez aussi que les calculs ne seront pas fait avec une précision infinie, ce qui peut introduire des erreurs d'arrondi supplémentaires. Ce n'est donc pas la peine d'avoir une méthode de calcul exacte. Cela nous donne donc  cn+1 = cn (1-1/2n)  ou encore  cn+1 = cn - cn/2n  Cette formule est plus rapide à calculer que l'inverse d'une racine carrée.

Les formules de Martin donnant le remplacement de 1/√n sont les suivantes:
c1 = √(pi/4) soit environ 0,8864
cn+1 = cn (1-1/2n)  pour les accélérations
cn = cn+1 (1+1/2n)  pour les décélérations
Voyons déja pour les accélérations. Comparons là avec √n (vous pouvez utiliser un tableur par exemple):

ncn1/√nerreur
10,88622692551,00000000011%
20,66467019410,7071067816%
30,55389182840,5773502694%
40,48465534990,5000000003%
50,43618981490,4472135952,5%
60,39984066360,4082482902%
70,37128061620,3779644731,7%
80,34807557770,3535533911,5%
90,32873804560,3333333331,4%
100,31230114330,3162277661,2%
300,18181507780,1825741860,4%
1000,09987507860,1000000000,12%
3000,05771097570,0577350270,04%
10000,03161882400,0316227770,012%
 3000  0,0182566579  0,018257419  0,004% 

Remplacer le 1/√n permet de simplifier les calculs et donne une vitesse toujours légèrement supérieure comme conseillé (si l'intervalle de temps est plus petit, la vitesse est plus grande).

Pour la décélération, le calcul "inverse" en partant de la valeur pour n=3000 donne:

ncn1/√nsens
10,88622692551,000000000
20,66467019410,707106781
30,55389182840,577350269
40,48465534990,500000000
50,43618981490,447213595
60,39984066360,408248290
70,37128061620,377964473
80,34807557770,353553391
90,32873804560,333333333
100,31230114330,316227766
300,18181507780,182574186
1000,09987507860,100000000
3000,05771097570,057735027
10000,03161882400,031622777
 3000  0,0182566579  0,018257419  ↓ 
ncn1/√nsens
11,12828513941,000000000
20,75219009290,707106781
30,60175207440,577350269
40,51578749230,500000000
50,45847777090,447213595
60,41679797360,408248290
70,38473659100,377964473
80,35908748490,353553391
90,33796469170,333333333
100,32017707630,316227766
300,18332118590,182574186
1000,10011673420,100000000
3000,05775427510,057735027
10000,03162409420,031622777
 3000  0,0182566579  0,018257419  ↑ 

On voit que pour les paramètres de décroissance, la vitesse décroît pas tout à fait assez vite. En général, ce n'est pas trop grave car le couple résistant peut aider au freinage.

Pour utiliser les coefficients pour la décroissance, c'est assez simple car on connaît le nombre de pas n que va durer la décroissance et la vitesse de départ, c'est à dire le cn.

Pour utiliser les coefficients en mode accélération, il faut calculer le premier coefficient c1. Ce calcul n'est fait qu'une seule fois et il est fait au moment ou le moteur tourne le moins vite; on a donc du temps pour le faire. Si cN est la vitesse finale qu'il faut atteindre au bout des N pas, il suffit de multiplier le coefficient c1 (0,8862269255) par cN.√N  Ainsi toutes les vitesses sont multipliées par cette même valeur, en particulier la dernière valeur qui ainsi vaudra presque la bonne valeur. Il peut y avoir un léger dépassement de la vitesse (la table dit de 0,04% de dépassement pour 300 pas). On peut, si cela est vraiment dérangeant, plafonner la vitesse avec la valeur cN désirée.

 

Accélération par la méthode de David Austin

David Austin préconise une autre méthode qui donne des résultats plus proche de la rampe linéaire. Comme je ne pense pas que la rampe parfaitement linéaire soit la meilleure chose, je ne vois pas trop l'intérêt de ce calcul qui est plus complexe que la méthode de Martin. Pour plus de détails, voir cette méthode sur la page d'www.embedded.com

 

Température du moteur

La température maximale de fonctionnement d'un moteur pas à pas est en principe définie par sa classe d'isolation. Les classes sont repérées par des lettres A, B, F ou H. La température conseillée maximale de fonctionnement (correspondant à un fonctionnement que je suppose être de quelques dizaines de milliers d'heures) est la suivante:
 Classe d'isolation  température 
A105°C
B130°C
F155°C
H180°C
Et on admet communément que pour une élévation de 10°C la durée de vie est diminuée de moitié, comme une diminution de 10°C double la durée de vie. On admet également que la différence entre la température interne et la température du boîtier est voisine de 45°C (30°C de différence et 15°C pour la différence due aux points chauds). On n'oubliera pas que la température de l'air autour du moteur n'est pas la température de la pièce, et que bien souvent 40°C est une bonne valeur. Pour les amateurs, on n'est pas forcément dans un tel environnement, et pour un moteur de classe A (prendre cette classe si on ne la connaît pas), cela peut faire un moteur dont la carcasse monte à 60°C. Un moteur pas à pas est un moteur qui peut être très chaud en fonctionnement normal.

Pour limiter l'échauffement, certains drivers réduisent le courant de moitié lorsque le moteur est à l'arrêt. J'ai entendu dire qu'ils maintenaient le couple tout en diminuant le courant. Il n'en est rien, en diminuant le courant par moitié, on diminue le couple par deux, mais à l'arrêt, on n'a pas besoin de couple ni pour vaincre les inerties, ni pour vaincre les frottements, et cela diminue l'échauffement par 4. C'est donc une solution judicieuse.

 

Autres pistes

Il y a certainement plein de choses que je passe sous silence.

Quand les pôles du rotor et du stator se positionnent en face, cela diminue la réluctance du circuit magnétique, et par conséquent, la valeur de l'inductance augmente. Pour conserver la même quantité d'énergie magnétique emmagasinée (L.I2/2), le courant doit diminuer. Ce phénomène va donc aussi avoir tendance à diminuer le couple.

Au moins avec un A4988, quand on utilise les micro-pas à basse vitesse, certains pas sont "sautés" si on est en mode normal. D'où le mode mixed decay qui est conseillé dans ce cas.

 

Identification d'un moteur et de ses fils

Quand on récupère un moteur, avant de le câbler, il faut connaître son branchement. D'ailleurs quand on en achète un neuf, on ne dispose pas toujours des couleurs permettant de connaître le brochage. Dans un premier temps, il faut savoir où sont les enroulements.

Tout d'abord, un connecteur à 6 broches n'indique pas forcément un moteur à 6 fils! Je dispose d'un moteur avec un connecteur à 6 broches, mais qui n'a que deux enroulements (moteur 4 fils). Deux broches sont non connectées. Par contre si il y a des fils, il est peu probable qu'il y ait un fil non connecté.

Je ne parle que des moteurs à 2 phases. Pour ces moteurs, on a deux ensembles d'enroulements, l'un pour une phase, l'autre pour la deuxième phase. En général, pour un montage amateur (pas de petite série), on ne se préoccupe pas de voir le sens d'une phase par rapport à l'autre dans un premier temps. Par contre pour une phase donnée, il faut reconnaître l'orientation des enroulements. Pour un moteur à 4 fils, il n'y a qu'un seul enroulement par phase, le fait de savoir où sont les phases suffit. Pour un moteur 5 ou 6 fils, comme les enroulements sont déjà connectés en série, cela revient au même. Par contre pour les moteurs à 8 fils, il est important de repérer le sens des enroulements d'une phase donnée si on veut utiliser les deux enroulements.

On ne se préoccupe pas non plus de savoir quelle est la phase n°1 et la phase n°2, cela peut décaler le départ d'un pas. Soit on se moque du zéro, et le décalage au départ ou non n'a pas d'influence, soit on fait une mise à zéro, et ce décalage n'a pas d'importance non plus

Pour un moteur à 4 fils, il suffit de respecter dans un premier temps les phases. On s'aperçoit que le branchement est mauvais si la progression des pas est irrégulière, avec des pas en avant et des pas en arrière. C'est pareil pour les moteurs à 5 ou 6 fils: respecter les phases. Bien entendu, si il y a des erreurs dans le programme et dans le câblage, cela va poser pas mal de problèmes, mais si on est sûr du programme, on peut essayer les différents branchements pour trouver le bon.

Une fois branché et le logiciel en place, le moteur va tourner dans le bon sens ou dans le mauvais. Souvent le programme permet par configuration de choisir le sens, sinon au cas où, il faut inverser une phase en débranchant deux fils et en les reconnectant dans l'autre sens.

Pour les moteurs à 8 fils, il y a 4 bobines. Tout va dépendre du montage que l'on va utiliser. Il faudra identifier non seulement les bobines, mais normalement aussi celles qui correspondent à la même phase, et le sens relatif des bobines d'une même phase. Le nombre de fils fait que l'essai avec un programme qui fonctionne n'est pas terrible.

Identification avec un multimètre

C'est la méthode la plus simple et la plus rapide, mais qui ne fait pas tout pour les moteurs à 8 fils. La résistance d'un enroulement est comprise entre 1Ω et 100Ω environ. Mesurer la résistance entre les fils deux à deux permet ainsi de savoir où sont les bobines. Pour les moteurs à 5 ou 6 fils, on peut aussi avoir le point milieu: sur 3 fils pris deux à deux on doit mesurer deux fois R et une fois 2R. La borne du point milieu, c'est celle qui n'est pas utilisé lorsque la mesure donne 2R.

Cette méthode nous permet de savoir où sont les bobines, mais pour le moteur à 8 fils, ne nous renseigne pas pour identifier les bobines qui vont par paire ni du sens des bobines pour une même phase. Et il faut disposer d'un multimètre.

Identification par le couple résistant

Lorsque l'on fait tourner un moteur pas à pas, il se comporte comme un générateur. Si on met un enroulement en court-circuit, l'énergie produite va être dissipée par effet joule dans l'enroulement. Cette énergie est fournie par la rotation et va donc augmenter le couple résistant. Cela se sent facilement en faisant tourner le moteur à la main. En comparant l'effort à faire pour le faire tourner le moteur quand rien n'est branché et lorsque l'on connecte les deux bornes d'un même enroulement, on doit sentir une différence. On peut sentir en particulier une rotation plus saccadée. Si on connecte deux fils n'appartenant pas à la même bobine, aucun courant ne circule, pas dissipation d'énergie, et on a le même couple qu'à vide. Par contre si on a connecté les deux fils d'une même bobine, on va sentir le couple résistant augmenter. Cette méthode permet d'identifier la place des bobines, comme peut le faire l'ohmmètre. Pour un moteur à 4 fils c'est assez simple, on connecte deux fils au hasard, et si on sent le couple résistant augmenter lorsque l'on fait tourner le moteur à la main, on a les deux bornes d'une même bobine. Les deux autres sont pour la deuxième. Si on ne sent rien, on change les branchements.

Pour les moteurs à 5 fils, le couple est faible si aucun enroulement n'est branché. Si on connecte un seul enroulement, comme dans tous les autres moteurs, le couple est un peu plus important si on le fait tourner à la main. Si on connecte deux bobines le couple va être encore plus important. Si les deux bobines appartiennent à deux phases différentes, on va avoir le même couple à chaque pas (raison de symétrie), le couple est alors régulier (plus doux). Si le branchement concerne une même phase, le couple sera plus important tous les 4 pas. On sent nettement que l'avance est plus crantée. Cela permet donc de retrouver le câblage complet du moteur.

Pour les moteurs à 6 fils, les test de couple avec 2 fils connectés ensemble va nous donner deux paquets de 3 fils. Si on court-circuite une seule bobine, le couple est plus faible que si on en court-circuite deux. On peut donc facilement retrouver les deux points milieux et par conséquent le câblage complet.

Pour un moteur 8 fils, en court-circuitant deux fils jusqu'à avoir une résistance permet de trouver une première bobine. En recommençant avec les 6 fils restants, on va trouver une deuxième bobine, puis une troisième avec 4 fils, et la dernière est branchée aux deux fils restants. Pour un moteur 8 fils, il faut encore apparier les enroulements deux par deux, et donner le sens de l'un par rapport à l'autre. Pour ce faire, conaissant les connexions de chaque bobine, on en met deux quelconques en parallèle. Il n'y aura pas de couple résistant si et seulement si elles appartiennent à la même phase et que les pôles correspondants soit ensemble. En effet, dans ce cas on a la même tension sur les deux bobines et on a donc aucun courant, et par conséquent aucun couple résistant.

Identification avec une pile

J'ai entendu dire que certains font une identification des enroulements avec une pile. Je ne conseille pas cette méthode car certains moteurs ont des résistances de l'ordre de 3Ω et cela est comme un court-circuit pour la pile. On pourrait le faire avec une alimentation si elle peut être limitée à 5V et 1A.

 

Identification du type (tension ou courant)

J'ai signalé que certains moteurs sont prévus pour être alimentés en 5V, 12V ou 24V, et d'autre sont des basses tension (en principe inférieur à 5V), mais avec des courants dépassant 1A. Pour les premiers la résistance d'un enroulement est de l'ordre de 30Ω, pour les seconds, la résistance est inférieure à 5Ω.

La mesure avec un multimètre permet facilement de faire la différence (supérieur ou inférieur à 20Ω?). Si on n'a pas de d'ohmmètre, il est possible de mettre une résistance de 22Ω à la place. On va comparer le couple résistant en court-circuit et avec une résistance de 22Ω. Si la résistance de l'enroulement est importante, la résistance de 22Ω aura peu d'effet et les couples seront quasiment semblables. C'est un moteur qui s'alimente en tension. Si la résistance de l'enroulement est faible, avec 22Ω, c'est comme un circuit ouvert et on aura avec la résistance quasiment plus de couple. C'est un moteur qui s'alimente en courant.

 

Identification de la tension ou du courant nominal

Vous venez de récupérer un moteur qui a une résistance d'enroulement de 35Ω. Ce peut être un moteur 5V, 12V... Comment le savoir? Il faut le mesurer.

La tension (ou le courant maximal) en continu que l'on peut mettre sur un moteur est limité d'une part par la saturation du moteur, et d'autre part par son échauffement. Il ne faudrait pas dépasser les maximums ni pour l'un ni pour l'autre, et donc faire les mesures en même temps. Pour un soucis pédagogique, je vais décrire l'une et l'autre.

Si on ne connaît pas le moteur, on va supposer que c'est le plus mauvais moteur et que sa classe d'isolation est A et que la température du boîtier ne peut pas dépasser 60°C (105°C - 30°C - 15°C). Il suffit de mettre une tension donnée sur les deux phases, d'attendre 10mn et d'augmenter la tension jusqu'à ce que le moteur atteigne 60°C.

Pour la saturation, il faut tracer la courbe du couple en fonction du courant (ou de la tension) en statique, et voir à quel moment cette courbe ne devient plus droite. On a alors le début de la saturation.

 

Mise en série ou en parallèle des enroulements

Il existe deux grandes familles de montage pour les moteurs pas à pas: le montage unipolaire et le montage bipolaire.

Principe des montages unipolaires et bipolaires

Unipolaire indique que les enroulements vont avoir un courant qui ne circule que dans un seul sens (une seule polarité). Une bobine d'une phase va créer un champ magnétique dans un sens, l'autre bobine de la même phase va engendrer un champ en sens inverse. Bipolaire indique que le courant va circuler dans les deux sens et l'inversion du courant provoquera l'inversion du champ. Les principes sont donnés ci-contre, les interrupteurs représentés sont en fait des transistors, et n'est pas indiqué sur ce schéma de principe les protections, la mesure du courant éventuelle et la commande.

Un moteur à 4 fils ne peut être utilisé qu'avec le montage bipolaire. Les moteurs à 4 fils sont naturellement appelés moteurs bipolaires. Les moteurs ayant 5 ou 6 fils peuvent être branché des deux façons mais en général il sont branchés en mode unipolaires; ils sont donc qualifiés de moteurs unipolaires. Les moteurs 8 fils sont utilisés au choix, avec un montage bipolaire ou unipolaire, mais comme tout ce qui est universel, c'est au détriment de la performance.

Avec un montage unipolaire, pour avoir un fonctionnement dans un sens en mode pas, on peut fermer d'abord I0, ce qui alimente la phase 1, puis I2 pour alimenter la phase 2, puis I1, ce qui alimente la phase 1 dans l'autre sens, puis I3. On a donc que 4 transistors par moteur. Avec un montage bipolaire, pour mettre le courant dans un sens, il faut fermer les interrupteurs I0 et I1 et pour faire passer le courant dans l'autre sens, il faut fermer I2 et I3. Il faut 8 transistors par moteur. La commande est un peu plus complexe, il faut notamment veiller à ne pas faire conduire en même temps I0 et I3 (ou I1 et I2), mais comme il est possible d'alimenter les enroulement en sens inverse, on peut accélérer la décroissance du courant.

Certains sites indiquent qu'avec un montage unipolaire on peut d'aller plus haut en vitesse car le courant n'a pas besoin de s'inverser. Personnellement, je n'y crois pas du tout car avec ce type de montage, on ne peut pas annuler le courant en inversant le sens de la tension. la décroissance du courant est donc plus lente qu'avec le montage bipolaire.

Le gros intérêt du montage unipolaire est que l'on a besoin que de quatre transistors par moteur. Et on peut avec très peu d'électronique réaliser ce montage. Pour moi, c'est un montage historique, qui date du temps ou l'électronique de puissance coûtait encore cher. Peu d'électronique, mais la gestion de l'avance doit être faite par programmation. Si on doit avancer et reculer par paquets de 4 pas, c'est assez simple, par contre si on doit avancer et reculer d'un nombre de pas quelconque, cela complique. La simplicité de la commande, quand on n'a pas un besoin impératif de performances, fait que ce montage est encore utilisé. On trouve donc ce type de moteur par exemple dans les imprimantes. Avec le développement de l'électronique de puissance et des circuits intégrés, le montage bipolaire finit par devenir plus simple que le montage unipolaire. J'ai même vu des sites qui indiquent comment modifier le 28BYJ-48 (5 fils) pour le transformer en un moteur 4 fils (cela a-t-il un intérêt?).

On notera surtout que pour le montage unipolaire , seule la moitié des enroulements doit être utilisé en même temps, et pour une même puissance le moteur doit être plus gros. Il en est de même pour les montages bipolaires des moteurs 8 fils qui ne peuvent exploiter les enroulements au maximums.

Pour avoir un moteur commandé en tension (on vient par exemple d'acheter un moteur 12V), il suffit de prendre pour Vmoteur une tension de 12V. Pour avoir un moteur commandé en courant, on prendra en principe un driver qui mesure le courant grâce à une résistance en série avec l'enroulement.

Moteurs à 4 fils

Pour ce type de moteurs, seul le montage en pont (bipolaire) est utilisable.

Moteur à 6 fils

On peut bien sûr utiliser le montage unipolaire. C'est en principe la solution que l'on prend. Mais comme on a au moins deux enroulements sans point commun, il est possible d'utiliser une commande bipolaire. Il y a deux choix possibles, soit on utilise un seul enroulement sur deux (l'autre ne servant à rien), soit on utilise les deux enroulements en série comme un seul enroulement.

Si on n'utilise qu'un seul enroulement, le moteur est dans son utilisation "normale", car en mode unipolaire c'est bien ce que l'on a. On l'alimentera avec le bon couple courant ou tension (IN, VN).

Si on utilise les deux enroulements en série, on a vu que pour une même saturation magnétique (même couple), il faut diviser le courant par 2. Le moteur chauffera moins. La tension étant aux bornes des deux enroulements de VN, cela ne change pas les caractéristiques pour les grandes vitesses.

Mais si on se contente de diviser le courant ou la tension par √2, On sera au maximum pour l'échauffement, mais l'excitation magnétique sera de 40% plus élevé. Il y a un risque se saturer le moteur, mais cela peut se traduire par une augmentation du couple notamment pour les basses vitesses. Par contre comme cela augmente la tension, le moteur se comportera moins bien aux hautes vitesses si la commande en courant est utilisée. De toutes façons si on veut pouvoir accéder aux hautes vitesses, il faut une commande en courant. C'est pour ces raisons que l'on qualifie le montage avec un seul enroulement de "grande vitesse" et celui avec deux enroulements de "fort couple".

Moteurs à 5 fils

Du fait d'une connexion commune, on utilise normalement le montage unipolaire.

Mais regardons à gauche le branchement pour le moteur 6 fil lorsqu'on utilise deux bobines en série, et posons nous la question de savoir quel est le potentiel sur la broche du moteur qui n'est pas utilisé. Nous avons un diviseur de tension réalisé avec deux bobinages qui fonctionnent de la même façon (même valeur résistive, même valeur inductive, même courant, même fcem...). la tension est donc de Valim/2. Et donc la tension entre ces deux points communs est nulle. Il peut y avoir de légères différences si deux shunts de mesure du courant sont placés dans le pont, car la tension aux bornes de ces shunts n'est pas la même au moment des commutations. Ce serait gênant si on alimentait le moteur en courant PWM et pas en tension. Mais en principe les moteurs unipolaires sont alimentés en tension. On peut donc laisser le fil commun connecté, voir schéma de droite.

Moteur à 8 fils

Un moteur à 8 fils peut se câbler un peu comme on veut. On peut l'utiliser avec un montage unipolaire. Il faut juste respecter le sens des enroulements pour que le moteur avance. Le courant sera de IN, et la tension de VN.

Pour une utilisation bipolaire, on peut utiliser un seul enroulement, utiliser les deux en série ou en parallèle.

Si on n'utilise qu'un seul enroulement, ou si on utilise deux enroulements en série, on va avoir les mêmes résultats que pour un moteur 6 fils.

Si on met les deux enroulements en parallèle, et si on ne veut pas saturer le moteur, il faudra garder le même courant (courant alors moitié dans chaque enroulement). Cela va diminuer la tension aux bornes du moteur. On aura donc le même couple à bas régime, mais si le moteur est alimenté en courant, la tension nécessaire est divisée par 2, ce qui fait un bien meilleur comportement en hautes vitesses.

Si on se permet de saturer le moteur, le courant peut être augmenté de 40%, et les caractétistiques couple basse vitesse sera meilleur.

Pour ce type de moteur, si on souhaite des caractéristiques performantes, je ne vois que le montage parallèle intéressant. Mais il nécessite de connecter les 8 fils au lieu de 4.

Ci-contre un moteur 8 fils utilisé en mode bipolaire série. C'est un moteur fonctionnant sous 2394V et consommant 99A. Bon, je déconne!

 

Montages pour les moteurs unipolaires

La commande directe par un dispositif informatique, par exemple une carte Arduino, n'est pas possible car les courants demandés par les moteurs sont trop élevés. Il faut recouir nécessairement à un amplificateur. On peut utiliser des composants discrets (pour les montages unipolaires, c'est encore possible) ou des circuits spécialisées (que l'on appelle drivers).

Montage pour moteur unipolaire avec des transistors, commande du moteur en tension

Ce montage est un grand classique si l'on utilise des MosFets. Ce montage permet d'utiliser les moteurs qui doivent être commandés en tension car lorsqu'un transistor est passant, la tension d'alimentation se retrouve aux bornes de la bobine. En choissisant correctement le MosFet, la tension de déchet (aux bornes du transistor) est petite devant la tension du moteur et peut être ignorée.

R1 est une résistance permettant de limiter le courant lors d'un changement de niveau de l'arduino. A ce moment le MosFet se comporte comme un condensateur et le courant vaut donc 5V/R1. En partant d'un courant de 20mA, R1 prendrait la valeur de 250Ω (la valeur normalisée 220Ω convient). La valeur du courant maximal est sujet à discussions. R2 permet de bloquer le transistor lors de la mise sous tension, avant d'avoir eu le temps de définir la broche correspondante dans l'arduino à 0V. Une valeur de 1MΩ est un bon choix. Ma pratique consiste à observer que lors de la mise sous tension, la tension étant nulle au départ, la capacité grille/source maintient le potentiel bas suffisamment longtemps.

La diode D est une diode anti-retour qui est superflue avec certains MosFet qui ont comme sur le schéma une diode en parallèle.

Il est possible de remplacer le MosFet par un transistor bipolaire (un NPN) sous réserve que le gain de ce transistor permette d'avoir le courant moteur avec 20mA maximum comme courant dans la base. Il faut aussi penser que les darlingtons ont des tensions de déchets de l'ordre de 1 à 2V et que cela peut être gênant si le moteur est un 5V. Pour un moteur 5V 0,3A un transistor de petite puissance peut convenir, comme un 2N2222.

Ce montage ne permet que d'utiliser une commande en tension. On ne pourra pas pousser les performances, mais c'est souvent suffisant.

Montage pour moteur unipolaire avec un ULN2003 ou un ULN2803, commande du moteur en tension

Je pense plutôt au ULN2803, mais il y a plusieurs circuits presque équivalents. Le ULN2803 est un réseau de 8 transistors darlington, ce qui permet de commander jusqu'à 2 moteurs pas à pas, si les courants ne sont pas trop importants.
ULN2003: 50V, 7 sorties, entrées 0/5V
ULN2803: 50V, 8 sorties, entrées 0/5V
SN75423: 100V, 8 sorties, entrées 0/5V
Ces circuits ont une entrée 0/5V, dite TTL, et sont donc commandable directement par l'Arduino. Le ULN2002 doit être commandé en 14/25V et est donc inutilisable en sortie de l'Arduino.

ULN2003 et ULN2803 sont équivalent, et si il n'y a qu'un seul moteur à commander, on peut prendre l'un ou l'autre. Notez que les sorties inutilisées peuvent être utilisées à d'autres fins (commander un moteur CC, une led de puissance...).

Pour le courant maximum utilisable, c'est un peu plus compliqué. Il ne faut pas dépasser les 500mA par sortie d'une part, ni dépasser la température maximale de fonctionnement. Supposons que l'on souhaite brancher 2 moteurs qui consomment 350mA par phase. On alimente au maximum 2 enroulement par moteur (si on utilise le mode demi pas ou le mode deux phases à la fois), sinon c'est un seul enroulement par moteur. Pour 350mA en sortie, le constructeur donne une tension maximale de 1,6V (typique de 1,3V), ce qui fait 0,56W par sortie au maximum. Si on utilise deux moteurs en mode deux phases à la fois, on a 4 sorties utilisées en même temps, on va dissiper 2,25W. Avec une résistance thermique donnée de 62.7°C/W, la température de la jonction s'élève de 140°C ce qui est trop si la température ambiante est supérieure à 10°C car on dépasse la température de fonctionnement maximale de 150°C. Et encore le constructeur précise qu'"Un fonctionnement à la température de jonction maximale absolue de 150°C peut affecter la fiabilité". En conclusion, avec un ULN2803, on doit pouvoir commander deux moteurs sous 200mA maximum ou un seul moteur de 500mA.

Utiliser deux sorties ensemble pour commander les enroulement devrait permettre de monter le courant aux alentours de 600mA, mais sans aucune garantie. Un ULN2803 pourra alors commander un seul moteur. Utiliser deux sorties ensembles permet de faire passer moins de courant dans les sorties, ce qui diminue la tension de déchet, et par la même la puissance dissipée. Si vous utilisez une carte toute faite, en principe c'est un ULN2003 (7 sorties) qui est utilisé, et on ne peut pas doubler les sorties.

Les diodes de roue libre nécessaires entre les sorties et la masse sont déjà présentes dans le circuit. Connecter la sortie COM au + de l'alimentation permet de faire des court-circuits quand on alimente une bobine et je le déconseille, bien que certains sites l'utilisent. Si vous souhaitez utiliser cette possibilité, il faut mettre une zener en série.

On peut remarquer que si le courant dans le moteur ne dépasse pas les 500mA, on peut utiliser une sortie par fil moteur, et que l'on a alors des sorties inutilisées. On peut aussi remarquer que l'on avait besoin de 4 commandes pour le moteur, une par bobine. Mais si on laisse le moteur constamment sous tension (ce que l'on fait en général car le couple moteur non alimenté est faible), on s'aperçoit que pour une phase on commande soit une bobine, soit l'autre. On a donc besoin que d'une information binaire au lieu de deux pour une phase donnée (soit deux sorties de l'Arduino au lieu de 4). Et on va profiter des darlington non utilisés pour faire une inversion. En effet la bobine N°2 d'une phase a sa commande inversée par rapport à la bobine N°1. Voici ce que cela peut donner pour une seule phase (il faut doubler le schéma pour un moteur, et on peut utiliser n'importe quelle porte; ces schémas ne sont pas à recopier tels quels, il ont pour objectif de vous montrer ce que l'on peut choisir):

Le schéma de gauche montre l'alimentation d'une phase. A été rajouté la zener facultative dont le seuil doit être au moins de la valeur de VAlim. On a deux commandes de l'Arduino qui sont opposées.

Le montage N°1 va utiliser l'inversion d'un darlington pour commander le deuxième. Il faut par contre garantir que la première sortie ait un potentiel de sortie (VCEsat) au maximum de 1,2V sinon la deuxième porte ne se bloquerait pas. C'est donc utilisable si le courant de sortie ne dépasse pas 300mA. La tension de sortie de la porte vaut VAlim ou 1V. Or le circuit est prévu pour admettre en entrée du 5V. Si VAlim est supérieur à 5V, la résistance R est nécessaire (sous 5V, on relie directement la sortie 18 à l'entée 2, c'est à dire on prend R=0). Ne pas oublier que du fait que le VCEsat est de l'ordre du volt, un moteur 5V sera légèrement sous-alimenté si VAlim est de 5V. Si on prend une alimentation de 6V, on peut se passer de R. Dans le cas contraire, le ULN2008 ayant un courant de l'ordre de 1mA, on peut facilement déterminer R: la tension a ses bornes devra être de VAlim-5V Sa valeur est donc approximativement de (VAlim-5V)/0,001A. Pour 5V, prendre 0Ω, pour 12V prendre 6,8kΩ (valeur normalisée la plus proche de 6kΩ)...

Le montage N°2: Si le courant du moteur est de l'ordre de 500mA, la tension de déchet sera supérieure à 1,2V et ne permet plus de bloquer le deuxième darlington. Pour assurer le fonctionnement, on peut alors placer une diode en série avec l'entrée, qui bloquera le darlington jusqu'à un VCEsat de 1,8V. Seul le seuil de la diode m'importe, un diode signal convient (1N914 ou 1N4148), mais une diode de redressement fait l'affaire (1N400?). La formule pour calculer R devient (VAlim-5,6V)/0,001A ce qui ne change quasiment pas.

Plutôt que d'utiliser une diode, on peut si on n'a qu'un seul moteur, utiliser un darlington supplémentaire. C'est le montage n°3. On va donc utiliser une sortie du ULN2003/ULN2803 pour la puissance et une sortie pour faire l'inversion. La sortie de cette porte supplémentaire étant à collecteur ouvert, il faut une résistance de rappel (de pullup) à VAlim. La résistance R du montage N°1 convient tout à fait:
- si A=low la sortie 17 du darlington est en haute impédance (transistors bloqués) et on alimente l'entrée 3 avec notre 1mA. Notez que l'on aura alors une tension de l'ordre de 5V si R est bien dimensionnée correspondant à la tension normale prévue en entrée.
- si A=high la sortie 17 impose un état bas en sortie et sous quelques mA, on sera bien en dessous du seuil des 1,2V
La formule pour calculer R est la même que pour le montage N°1: R=(VAlim-5V)/0,001A. Mais pour une tension de 5V on ne peut plus mettre 0Ω. On mettra alors un minimum de 470Ω (passera 10mA au maximum, soit 10 fois ce que consomme l'entrée). Plus cette résistance est grande, moins les darlington aura le bon courant de base, et si elle est trop faible, cela consomme du courant pour rien.

On trouve sur le net le schéma de gauche. Je ne l'aime pas pour plusieurs raisons:
- le croquis du moteur ressemble plus à un moteur à deux enroulements que celui qui est censé être représenté qui comporte 4 enroulements; il s'agit bien ici d'un moteur 6 fils, les deux du bas sont les deux points communs (que j'avais pris au départ pour la masse); en principe, les potentiels d'alimentation positifs sont dessinés en haut, ici ils sont en bas, d'où ma confusion au départ
- il faut une alimentation supplémentaire de 5V pour ce montage alors que VAlim convient mieux
- la diode telle qu'elle est dessinée ne sera jamais conductrice, elle ne sert à rien: il y a dans le ULN2803/ULN2003 des diodes en série dans l'autre sens; ou bien il s'agit de ma fameuse zener qui est mal dessinée
- le ULN2004 ne convient pas car il risque de ne pas "saturer" avec une tension de 5V
- les deux résistances de 1kΩ de gauche ne servent à rien
- les deux résistances de droite ont pour moi une valeur trop importante. Des 470 seraient plus appropriées surtout si on veut pouvoir utiliser un moteur consommant 500mA.

Montage pour moteur unipolaire avec deux ponts, commande du moteur en tension

On a vu que l'on peut utiliser un double pont pour commander un moteur unipolaire. Il suffit simplement d'ignorer les deux fils commun qu'ils soient branchés ensemble ou pas. Faire alors comme si le moteur unipolaire était un moteur bipolaire. Les paragraphes suivants fonctionnent.

 

Montages pour les moteurs bipolaires

Montage pour moteur bipolaire avec des transistors

C'est un montage à déconseiller car la gestion d'un pont est plus compliqué. Quand on alimente un moteur en bipolaire, l'utilisation d'un circuit spécialisé devient une évidence.

Montage pour moteur bipolaire avec un pont en H ou avec de demi-ponts

On peut utiliser deux ponts en H (H-Bridge) pour la commande, un pont par enroulement. La commande demande en général une sortie de l'Arduino par demi-pont. Cela fonctionne même si je conseille d'utiliser plutôt des drivers spécifiques. Il existe des doubles ponts avec la possibilité de mettre des shunts de mesure de courant, ce qui permet de piloter en courant ou en tension, ou des ponts sans cette mesure qui permet de piloter en tension. Si on a des commandes en demi ponts, il faut donner des signaux A /A et B /B, soit 4 signaux. On trouve par exemple:
- SN754410 composé de 4 demi-ponts non inverseur 1A 4,5V à 36V
- L293D composé de 4 demi-ponts non inverseur 0,6A 4,5V à 36V
- L298 composé de 4 demi-ponts non inverseur 4A 7,5V à 46V
- TB6612FNG composé de 4 demi-ponts non inverseur 1,2A 15V

Montage pour moteur bipolaire avec un driver spécifique

L'utilisation d'un driver permet un montage très performant pour un faible coût. Ces drivers n'ont que 2 entrées importantes par moteur Step et Dir: un front sur Step fait progresser le moteur d'un pas ou d'un micro-pas, Dir permet de choisir le sens. Un commande supplémentaire EN (enable) permet de mettre le pont en haute impédance. L'utilisation de Step et Dir utilise moins de broches, est plus simple, allège le programme, permettent les micro-pas.

On peut trouver quelques circuits intégrés seuls ou montés sur une carte ou un shield:
- A4988 (8V à 35V; 2A)
- AMIS-30543 (6V à 30V; 3A)
- DRV8825 (8,2V à 45V; 2,2A)
- DRV8711 (8V à 52V; 6A)
- DRV8834 (2,5V à 10,8V; 2A)
- DRV8880 (6,5V à 45V; 2A)
- L9942 (7V à 28V; 2,5A)
- MP6500 (4,5V à 35V; 2,5A)
- STSPIN220 (1,8V à 10V; 1,3A)
- STSPIN820 (7V à 45V; 1,5A)
- TB6600 (8V à 42V; 0,5A à 3,5A)
- TB67S109 (10V à 47V; 3A)
- TB67S128 (6,5V à 44V; 5A)
- TB67S279 (10V à 47V; 2A)
- TB67S249 (10V à 47V; 4,5A)
Je connais bien le A4988 c'est le circuit que je conseille pour les petites puissances. Des cartes CNC sont prévues pour une Nano et 3 A4988.
Le DRV8825 est quasiment identique au A4988, mais jusqu'à 2.2A. Existe en carte compatible A4988.

Il existe aussi des boîtiers contenant le driver:
- DM432C (20V à 40V; 1,3A à 3,2A)
- DM556 (20V à 45V; 2,1A à 6,6A)
- DM860 (24V à 80V; 7A)
- TB6600 (8V à 42V; 0,5A à 3,5A)

Montage pour moteur bipolaire avec un A4988, commande du moteur en courant ou en tension

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 il est possible de commander des moteurs en tension et même des bipolaires sans les modifier. C'est pourquoi, je le qualifierais d'universel.

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. En principe, on fixe le mode. Certains drivers comme les DM860H se programment pas 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 à d'autres drivers, il n'est pas possible de diminuer le courant lorsque le moteur est à l'arrêt.

Quand on utilise un moteur bipolaire commandé en courant, il faut donner au driver cette information. 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, 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).

Si on utilise un moteur bipolaire commandé en tension (par exemple un moteur 12V), on peut quand même utiliser le A4988 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 les modes pas et demi-pas sont utilisables, et encore en mode demi-pas ces demi-pas ne sont pas égaux en couple disponibles. 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 contrairement à l'utilisation de moteurs commandés en courant.

Si on utilise un moteur unipolaire commandé en tension on a vu que l'on pouvait laisser la broche commune comme elle est (reliée pour les 5 fils et non connectée pour les 6 et 8 fils) et on est ramené au moteur bipolaire commandé en tension.

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 (non utile si le moteur est alimenté en tension). Il faut au moins deux sorties pour un moteur STEP et DIR (pour plusieurs moteurs on pourrait n'avoir qu'une broche commune pour DIR).

Si le moteur doit être alimenté en 5V, on peut utiliser le montage n°1. On ne peut pas alimenter le A4988 via la sortie 5V de l'Arduino car la puissance appelée par le moteur est trop grande. On doit utiliser une alimentation externe de 5V qui alimentera aussi l'Arduino si elle est de bonne qualité, sinon il faut séparer l'alimentation du moteur.

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 dela 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.

La tension d'alimentation pour un moteur commandé en courant n'a pas besoin d'être stable, ni définie en tension. Un transfo + pont de diodes + condensateur suffit.

Montage pour moteur bipolaire avec un boîtier TB6600 ou DM860, commande du moteur en courant

Pour un moteur consommant plus de 2A, on se tourne en général vers des boîtiers plus puissants. Rien que pour le composant TB6600, il existe plusieurs cartes ou boîtiers qui l'utilise. Le DM860 est un boîtier dont je n'ai pas encore trouvé le schéma. C'est pour cela que je me contenterai de généralités. Pour les boîtiers, il n'y a aucun composant à rajouter et le nombre d'entrées est souvent réduite à 3 (Step Dir et Enable), le reste se choisit grâce à des switchs.

Le DM860, par exemple a ses entrées isolées par photocoupleur et elles sont différentielles. L'entrée Enable peut rester non câblée si elle n'est pas utilisée. Mais je vais m'intéresser à à Step. Il y a deux façons de l'utiliser, soit on met un "commun" au +5V et on donne les ordres des pas par Step- (montage dit anodes communes), soit on met un "commun" au 0V et on donne les ordres des pas par Step+ (montage dit cathodes communes). Cela peut sembler identique, c'est ce qui est dit, mais la gestion des pas à pas que j'utilise fonctionne correctement que si Step est actif sur front montant ce qui me semble correspondre au montage cathodes communes. La plupart des bibliothèques fonctionnent avec les deux montages.

 

Shield Protoneer V3 / KS0160 keyestudio CNC Shield V3

Ouvrir une nouvelle page pour ce shield

 

Bibliothèque Stepper

La bibliothèque Stepper est fournie par défaut avec l'IDE d'Arduino. Elle est prévue pour fonctionner avec des commandes directes sur les phases, en mode deux phases à la fois:
- Si la commande du moteur utilise 4 broches, ce sont dans l'ordre
          phase 1 sens 1
          phase 1 sens 2
          phase 2 sens 1
          phase 2 sens 2
Cela correspond à la commande unipolaire avec un ULN2003.
- Si la commande du moteur utilise 2 broches, ce sont dans l'ordre
          phase 1
          phase 2
Cela correspond à la même chose, mais en remplaçant la deuxième commande des phases par l'inverse de la première commande. Cela économise 2 broches.
- Il existe un troisième type de commande pour les moteurs à 5 phases (jamais vu!)

Ce logiciel n'est pas prévu pour fonctionner avec des drivers en courant comme les A4988. Toutefois, comme c'est le mode 2 phases à la fois qui est utilisé, dans le mode 2 broches, si on câble Step et Dir à la place de phase1 et phase2, cela fonctionne presque. Voici la nouvelle table de vérité que l'on obtient:

  Pas    Phase 1  Step    Phase 2  Dir  
  1    0    1  
  2    1    1  
  3    1    0  
  4    0    0  

On s'aperçoit que quand on fait 4 pas, Step reçoit un front montant, et si Dir change quand il veut, au moment du front montant sur Step, il est toujours haut. En envoyant 4 pas, le moteur progresse de 1 pas. La rotation inverse fonctionne, si on demande -4 pas, on progressera aussi de 1 pas en sens inverse (la table est alors lue de bas en haut et Dir vaut 0 sur le front montant de Step). Il y a même mieux, si on inverse Step et Dir, cela change le sens de rotation.

Quand je dis que cela fonctionne presque, c'est parce que tant que l'on progresse par pas multiple de 4, il n'y a pas de problèmes, mais que si vous avancez d'un pas, puis reculez d'un pas, et tout ceci en boucle, et si vous faites le pas1, pas2, pas1, pas2... Step va voir une sucession de fronts, pendant que Dir ne change pas de sens. Le moteur va ainsi tourner deux fois plus vite, mais toujours dans un seul sens:
#include <Stepper.h>

#define STEPS 12800

Stepper stepper(STEPS, XX, XX); // remplacer XX par les n° de broche de Step et Dir

void setup()
{
  stepper.setSpeed(6000);
  stepper.step(1); // A enlever si le moteur ne tourne pas (décale la table d'un cran)
}

void loop()
{
  stepper.step(1);
  stepper.step(-1);
}

Si vous avez un moteur 200 pas par tour, définissez le nombre de pas par
#define STEPS 200
Mais si vous utilisez Step et Dir mettez:
#define STEPS 200*4
Et si en plus vous utilisez le mode 16 micro-pas, ce sera:
#define STEPS 200*4*16

Avec cette bibliothèque sur une carte Uno, le temps d'un pas est au minimum de 35µs en mode deux commandes et 47µs en mode 4 commandes. Pour un moteur 200 pas par tours en mode deux phases à la fois, il est possible de tourner en théorie jusqu'à 140tr/s . Mais si on utilise un driver type Step/Dir on ne peut tourner que 4 fois moins vite (35 tr/s - 2100tr/mn) et si en plus on utilise le mode 16 micro-pas, il faut encore diviser la vitesse par 16, soit 2,2tr/s (130tr/mn).

Juste pour rigoler avec la version 1.1.0: la fonction non documentée version() retourne la valeur 5

C'est une bonne bibliothèque pour commencer, elle est assez simple et fonctionne parfaitement.

 

Bibliothèque StepperDriver

La bibliothèque StepperDriver est conçue pour être utilisée avec des moteurs pas à pas pilotés par des drivers type Step/Dir. Elle permet les micro-pas, les accélérations et des modes non bloquants. Elle n'est donc en général pas adaptée pour les moteurs unipolaires.

Avec les essais que j'ai fait avec une carte Uno, le temps minimum d'un pas est de 43µs. En première approximation, le temps d'un pas est de 14µs de plus de ce qui est programmé, avec un minimum de 43µs (si on veut un pas de 100µs, il faut demander un pas de 100µs-14µs=86µs).

Je n'ai pas testé complètement cette bibliothèque car je n'ai pas réussi à faire marcher les exemples ClockStepper et NonBlocking, et que j'ai des pertes de pas dans l'exemple AccelTest. Avec les données d'origine, on dirait qu'à un moment le moteur fait quelque pas en arrière dans les accélérations ou les décélérations. Pourtant le moteur que j'utilise ne tourne qu'à 2tr/s (je sais que mon moteur ne décroche pas avant 6tr/s en mode pas en démarrage direct). J'ai divisé les accélérations par 10, je perd toujours des pas.

 

Bibliothèque QuickStep

Comme c'est moi qui ai écrit QuickStep, je ne peux que la conseiller. Son seul inconvénient: elle utilise un ou plusieurs timers. Par contre c'est une bibliothèque non bloquante.

 


dansetrad.fr Contactez-moi