Ardu? No!Les moteurs pas à pasQuelques moteurs ≫ Le 28BYJ-48

28BYJ-48

Variantes

C'est un motoréducteur composé d'un moteur pas à pas à aimants permanents 5V ou 12V, possédant 32 pas par tour, et d'un réducteur de vitesse à engrenages. Il existe au plusieurs moteurs différents qui portent cette référence. Donner le nom du moteur n'est donc pas suffisant. Les grosses différences portent sur la tension d'alimentation (5V ou 12V) et sur le nombre de pas par tour. On peut trouver:

• 28BYJ-48 5V 2048pas/tr: (doc) réducteur 1/64, ce qui fait exactement 2048 pas par tour. C'est un grand classique.

• 28BYJ-48 12V 2048pas/tr: réducteur 1/64, ce qui fait exactement 2048 pas par tour. C'est un grand classique.

• 28BYJ-48 5V 513pas/tr chez Adafruit avant janvier 2021: (doc) réducteur 1/16.032, ce qui fait à peu près 513 pas par tour.

• 28BYJ-48 12V 513pas/tr chez Adafruit avant janvier 2021: réducteur 1/16.032, ce qui fait à peu près 513 pas par tour.

• 28BYJ-48 5V 2052pas/tr chez Adafruit après janvier 2021: (doc) réducteur 1/64.128, ce qui fait à peu près 2052 pas par tour.

• 28BYJ-48 12V 2052pas/tr chez Adafruit après janvier 2021: (doc) réducteur 1/64.128, ce qui fait à peu près 2052 pas par tour.

• 28BYJ-48 2038pas/tr est signalé: (voir forum arduino ou sur lastminuteengineers) réducteur 1/63.68395, ce qui fait à peu près 2038 pas par tour.

Dans beaucoup de cas, je me fiche pas mal du nombre de pas par tour de mon moteur, du moment que je le connais. Par contre comme on a bien souvent besoin de faire exactement un tour, des multiples ou des sous-multiples, avoir un nombre de pas par tour non entier est un problème. Je suis content de n'avoir que des 2048,00 pas/tour.

Notez que pour alimenter au nominal un moteur 5V avec un ULN2003, il faut une tension de 6V environ à cause des 1V perdus dans l'ULN2003. Si il faut deux alimentations, une pour l'Arduino en 5V, l'autre pour le moteur en 6V, autant soit utiliser du 12V pour le moteur, ou encore n'avoir qu'une seule alimentation de 12V et alimenter l'Arduino par Vin. On ne peut pas alimenter par Vin avec du 6V. Utiliser une alimenntation de 5V diminuera légèrement le couple, mais ce n'est pas très grave.

Câblage

Si on utilise un ULN2003 et que les sorties de l'Arduino sont utilisées dans l'ordre:

les broches dans l'ordre du connecteur du moteur sont 2, 3, 4 et 5 et il faudra les déclarer par:

 // Avec Stepper:
Stepper stepper(2048, 2, 4, 3, 5);

// Avec AccelStepper
AccelStepper stepper(FULL4WIRE, 2, 4, 3, 5);

// Avec MTObjects
MTstepper Stepper(2, 3, 4, 5, ...); // Broche dans l'ordre

// avec QuickStep
#define premBobineX 2 // N° de la broche pour la première bobine
#define deuxBobineX 3 // N° de la broche pour la deuxième bobine
#define troisBobineX 4 // N° de la broche pour la troisième bobine
#define quatreBobineX 5 // N° de la broche pour la quatrième bobine

Il peut y avoir une permutation de deux broches par rapport à l'ordre "logique".

Nombre de pas

J'ai l'impression que le plus souvent c'est 2048 pas/tr. Mais on peut trouver 513,02 pas/tour, 2037,89 pas/tour ou 2052,10 pas/tour. Peut être aussi d'autres valeurs, je ne peux être exhaustif.

Dans plusieurs documentations, est indiqué le nombre de DEMI-pas et est affublé du mot step. Cela fait croire que le nombre de pas est le double de la réalité. C'est notamment le cas de la datasheet la plus répandue qui parle de pas de 5,625°/64!

Tension nominale

Je n'ai trouvé que 5V et 12V, bien que certains vendeurs se permettent d'alimenter leurs moteurs 5V en 9V. J'ai montré que si un moteur est construit pour être alimenté en 5V, cela indique 5V pour le mode deux phases à la fois. En alimentant le moteur une seule phase à la fois, il faudrait alimenter le moteur en 7V. Compte tenu de la chute de tension dans le ULN2003 (si on utilise ce composant), cela irait encore. Mais ce n'est pas de cela dont parle notamment Adafruit.

Interface de puissance

Les 28BYJ-48 sont des moteurs 5 fils unipolaires.

Usuellement on utilise avec ce type de moteur une interface à ULN2003 et en mode deux phases à la fois. Avec ce type de composant, bien souvent on pourrait passer en demi-pas, mais je crois que ni la bibliothèque Stepper, ni la bibliothèque AccelStepper ne donne l'accès au mode demi-pas (je suppose que c'est parce que le couple est plus faible).

Certains sites internet indiquent comment séparer les enroulements pour transformer le moteur 5 fils en moteur 4 fils, ce qui permet d'utiliser une interface pour bipolaire et profiter des micro-pas.

Toutefois on peut parfaitement utiliser ce moteur sans modifications comme un bipolaire en mode deux phases à la fois.

Couple statique

Il serait de l'ordre de 30cm.N pour les moteurs 12V et de la moitié pour des moteurs 5V. Je n'ai rien vérifié du tout, mais j'ai des doutes pour les moteurs 5V d'Adafruit qui donnent 15cm.N que le rapport de réduction soit de 1/16 ou de 1/64. Normalement on devrait avoir un facteur 4!

Résistance des enroulements, courant consommé

La encore c'est un flou ou une erreur de documentation. Je pense que la résistance est de 50Ω pour les moteurs 5V, ce qui fait un courant de 100mA par enroulement, et une puissance de 1W pour les deux enroulements alimentés.

Pour les moteurs en 12V mes moteurs ont résistance de 110Ω, ce qui fait un courant de 110mA par enroulement, et une puissance de 2,6W pour les deux enroulements alimentés.

Je ne m'explique pas cette différence de puissance, normalement la puissance est surtout fonction de la taille du boîtier. En tout cas cela expliquerait la différence de vitesse maximum atteinte.

Un site donne d'ailleurs des caractéristiques pour des 28BYJ-48. Il y aurait plusieurs 28BYJ-48 totalement différents à propos de la résistance des enroulements. Là encore si la résistance des enroulements varie d'un modèle à l'autre, la puissance devrait également changer ainsi que les vitesses... Les enroulements de 300Ω sont aussi confirmés par cette documentation.

La meilleure documentation c'est celle-ci! 21Ω sous 5V ne donnerait qu'un courant de 25mA. Il doit certainement s'agir d'un moteur 0,5V! Bon d'accord c'est certainement 210Ω. Et au lieu de "Nombre de pas par tour: 64 (réduction de 4096 en sortie d'axe)", il faut lire "Nombre de pas par tour: 4096 (réduction de 64 en sortie d'axe)", et puis 4096 c'est le nombre de demi-pas et pas de pas!

Vitesse maximale de démarrage pour un moteur en 12V

Il y a pour un moteur à vide deux vitesses maximale, la vitesse maximale de démarrage, et la sur-vitesse maximale.

Pour le moteur d'Adafruit, il est indiqué une vitesse de démarrage de 20tr/mn pour le moteur ayant 2052pas/tr. Pour mes moteurs, je mesure 24tr/mn ce qui me semble cohérent. C'est aussi la vitesse maximale que l'on trouve sur internet ici et là.

Vitesse maximale de démarrage pour un moteur en 5V

Pour la vitesse maximale de démarrage, la datasheet classique indique une fréquence de 600Hz pour un moteur 5V. Il ne s'agit sans doute pas de la fréquence du signal sur une bobine, cela ferait 70tr/mn. Je suppose que l'est la fréquence des pas. 600pas/s fait 600/2048tr/s soit 17tr/mn. N'ayant pas de moteurs 5V, je ne peux pas vérifier.

Le moteur 5V et le 12V ont la même mécanique, le moteur 5V semble moins puissant. Mais à priori les vitesses à vide dépendent peu de la puissance appliquée. En charge, c'est le couple qui va donner la limite et le couple du moteur 5V étant plus faible, on peut avoir des vitesses inférieures en charge.

Pour le moteur d'Adafruit, il est indiqué une vitesse de 6tr/mn pour le moteur ayant 2052pas/tr. Je suppose qu'il s'agit de la vitesse de démarrage. Pour le moteur n'ayant que 513 pas/tr ils indiquent 25tr/mn, ce qui est normal, pour une même vitesse du moteur, si on démultiplie 4 fois moins, on va 4 fois plus vite. Mais ces vitesses me semblent bien faibles.

Sur-vitesse maximale

Je suis monté à 64tr/mm avec mon moteur 12V (un peu plus d'un tour/s). Cela fait une vitesse dépassant les 4000tr/mn pour le moteur lui même (avant démultiplication). C'est beaucoup! Que l'on ne me dise pas que ce petit moteur est un excrément!

La datasheet classique pour un moteur 5V donne une sur-vitesse à 1000Hz pour une vitesse de démarrage à 600Hz. Cela ferait une sur-vitesse maximale de 30tr/s.