Le 28BYJ-48 est le moteur pas à pas des premiers montages : petit, alimenté en 5 V, avec un réducteur intégré qui lui donne assez de couple pour faire tourner une aiguille, un petit plateau, un volet ou une vanne légère. Mais un moteur pas à pas ne se branche jamais directement sur un microcontrôleur : chacun de ses bobinages absorbe de l’ordre de 100 mA, très au-delà de ce qu’une broche logique supporte sans se détériorer.
Ce pack apporte les deux pièces ensemble : le moteur et sa carte driver ULN2003A. La fiche cinq fils du moteur se clipse sur le connecteur blanc de la carte, et il ne reste que quatre broches de commande à relier au microcontrôleur. C’est la formule la plus directe pour démarrer, sans avoir à vérifier soi-même que le driver et le moteur sont compatibles.
Ce que contient le pack
- un moteur pas à pas 28BYJ-48 5 V, unipolaire à quatre phases, avec son réducteur intégré et ses cinq fils terminés par un connecteur femelle au pas de 2,54 mm ;
- une carte driver ULN2003A, avec son circuit en boîtier à seize broches, ses quatre entrées de commande repérées IN1 à IN4, ses quatre témoins de phase et son connecteur pour le moteur.
Les câbles de liaison vers le microcontrôleur ne sont pas fournis : quatre fils suffisent pour les signaux, deux pour l’alimentation.
Ce que la photo montre
- le moteur : corps métallique cylindrique, flasque avant percée de deux pattes de fixation, arbre de sortie en métal, et une pièce en plastique bleu d’où sortent les cinq fils ;
- la carte : circuit imprimé vert, avec le circuit ULN2003A en boîtier DIP à seize broches, quatre LED alignées accompagnées de leurs résistances de limitation, un peigne de quatre broches portant les repères IN1 à IN4, le connecteur blanc qui reçoit la fiche du moteur, et un bornier à deux pôles pour l’alimentation des bobinages.
La sérigraphie du bornier annonce une plage de tension plus large que celle du moteur : c’est la carte qui la tolère, pas le moteur. Ce pack est la version 5 V.
Caractéristiques techniques
| Moteur | 28BYJ-48, unipolaire, quatre phases, cinq fils |
|---|---|
| Alimentation | 5 V continu |
| Réducteur | Intégré, rapport nominal 1/64 ; sur de nombreux lots le rapport réel est voisin de 1/63,68 |
| Angle de pas | 5,625° au moteur, soit 2048 pas complets ou 4096 demi-pas par tour à l’arbre, c’est-à-dire 0,176° et 0,088° |
| Résistance d’une phase | De l’ordre de 50 Ω, valeur annoncée 50 Ω ±7 % à 25 °C |
| Courant par phase | Environ 100 mA sous 5 V, d’après la résistance de bobinage |
| Couple à l’arbre | De l’ordre de 34 mN·m, soit à peu près 350 gf·cm, à 120 Hz |
| Connecteur du moteur | Cinq broches femelle au pas de 2,54 mm, détrompé |
| Circuit de la carte | ULN2003A : sept canaux Darlington, diodes de roue libre intégrées, quatre utilisés ici |
| Courant par canal | De l’ordre de 500 mA en continu, davantage en pointe |
| Entrées de commande | IN1 à IN4 ; logique 3,3 V comme 5 V |
| Témoins | Une LED par phase, qui suit le déroulement de la séquence |
Le câblage
Trois groupes de fils, dans cet ordre : la fiche du moteur, les quatre signaux, l’alimentation des bobinages.
| Fiche du moteur | Se clipse sur le connecteur blanc de la carte, dans le seul sens possible |
|---|---|
| IN1 | Broche numérique 8 du microcontrôleur |
| IN2 | Broche numérique 9 |
| IN3 | Broche numérique 10 |
| IN4 | Broche numérique 11 |
| Bornier + | Broche 5V, pour un montage sur l’alimentation de la carte de développement |
| Bornier − | Masse de la carte de développement, commune avec celle des signaux |
N’importe quel jeu de quatre broches numériques convient, à condition de le déclarer dans le programme. Les broches 8 à 11 laissent libres les broches 0 et 1, réservées à la liaison série, et les entrées analogiques restent disponibles pour des capteurs.
Mini-projet : trouver la vitesse limite du moteur
Un moteur pas à pas n’a pas de vitesse qui lui soit propre : c’est la cadence des impulsions envoyées qui la fixe. Le montage de mise en route consiste donc à faire le tour de cette cadence, lentement puis de plus en plus vite, pour voir à partir de quel palier le rotor décroche. C’est la manipulation la plus utile à faire une fois, car elle donne l’ordre de grandeur à ne pas dépasser dans les programmes suivants.
Ce qu’il faut
| Le pack | Le moteur 28BYJ-48 et sa carte ULN2003A |
|---|---|
| Le cerveau | Uno R3 et son câble USB, qui alimente aussi les bobinages pour cet essai |
| Les liaisons | 10 câbles Dupont : quatre pour IN1 à IN4, deux pour le bornier |
Le programme
À téléverser sur la carte, puis ouvrir le moniteur série à 9600 bauds. Appuyer sur une touche lance une rampe de huit paliers : chaque palier dure environ un tiers de tour, et le moniteur affiche le délai utilisé. Regardez l’arbre pendant que ça tourne.
/*
* Pack moteur pas a pas 28BYJ-48 5 V et carte driver ULN2003A
* Rampe de vitesse : trouve le palier ou le rotor decroche
* Carte de developpement : Arduino Uno R3
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
const byte ENTREES[4] = {8, 9, 10, 11}; // IN1 a IN4 de la carte driver
// Sequence en demi-pas : huit etapes par cycle, deux bobinages alimentes
// aux etapes paires, un seul aux etapes impaires.
const byte SEQUENCE[8][4] = {
{1, 0, 0, 0},
{1, 1, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 1, 1},
{0, 0, 0, 1},
{1, 0, 0, 1}
};
const int PAS_PAR_PALIER = 320; // 320 demi-pas, soit un peu moins d'un tiers de tour
const int DELAI_INITIAL = 8; // millisecondes par demi-pas au premier palier
const int DELAI_FINAL = 1; // millisecondes par demi-pas au dernier palier
void appliquer(byte index) {
for (byte b = 0; b != 4; b++) {
digitalWrite(ENTREES[b], SEQUENCE[index][b]);
}
}
void palier(int delai, int nbDemiPas) {
for (int i = 0; i != nbDemiPas; i++) {
appliquer(i % 8);
delay(delai);
}
}
void rampe() {
for (int delai = DELAI_INITIAL; delai != DELAI_FINAL - 1; delai--) {
Serial.print("Delai de ");
Serial.print(delai);
Serial.println(" ms par demi-pas");
palier(delai, PAS_PAR_PALIER);
}
Serial.println("Rampe terminee : notez le dernier palier ou l'axe tournait encore");
}
void setup() {
for (byte b = 0; b != 4; b++) {
pinMode(ENTREES[b], OUTPUT);
}
Serial.begin(9600);
Serial.println("Pret : appuyez sur une touche pour lancer la rampe");
}
void loop() {
if (Serial.available() != 0) {
Serial.read();
rampe();
}
}Comment ça marche
- La table des phases est le cœur du programme. Chaque ligne décrit l’état des quatre entrées à un instant donné ; les lignes lues dans l’ordre font avancer le moteur, lues à l’envers elles le font reculer. Aucun fil n’est à débrancher pour changer de sens.
- Le demi-pas double la finesse. À chaque étape impaire un seul bobinage est alimenté, aux étapes paires deux le sont : l’axe avance d’un demi-pas à chaque impulsion, soit environ 0,09°.
- Le délai fixe la vitesse, et rien d’autre. Courte, la pause donne une rotation rapide ; trop courte, le rotor n’a plus le temps de suivre un demi-pas avant la commande suivante et se met à vibrer sur place.
- Le moteur ne dit pas qu’il a décroché. Aucun retour de position n’existe : le programme ne sait que ce qu’il a envoyé. Seul l’œil, sur l’arbre, distingue une rotation régulière d’une vibration.
- Les LED servent de diagnostic. Si elles s’allument toujours dans l’ordre alors que l’axe ne tourne plus, la commande est bonne et c’est la cadence qui est en cause. Si aucune LED ne s’allume, cherchez du côté du câblage et de l’alimentation.
- Ralentir ne coûte rien. Le couple ne dépend pas de la vitesse : un moteur qui décroche à une cadence donnée tourne sans effort deux fois plus lentement.
Variante : alimenter les bobinages à part
Sur un essai court, les 5 V de la carte de développement suffisent. Dès que le moteur tourne longtemps, ou que deux moteurs sont branchés, mieux vaut nourrir les bobinages par une alimentation 5 V 2 A reliée au bornier : le régulateur de la carte chauffe, la tension s’affaisse, et le microcontrôleur redémarre en pleine rotation.
Dans ce montage, le + de l’alimentation va sur le + du bornier, le − sur la masse, et la masse de l’alimentation doit être reliée à celle du microcontrôleur. Sans ce fil commun, les signaux de commande n’ont plus de référence et le moteur reste immobile. Les deux alimentations ne sont jamais reliées entre elles autrement que par cette masse.
Points d’attention
- N’appliquez jamais 12 V à ce moteur. Le bornier et le circuit tolèrent des tensions bien plus élevées que le moteur de ce pack : c’est le moteur qui cuit, pas la carte.
- Ne branchez jamais un bobinage directement sur une sortie logique, même « juste pour voir » : 100 mA par phase détruisent la broche.
- Ne forcez jamais l’axe à la main. Le réducteur interne est en plastique ; un tour forcé casse des dents et rend le moteur irréparable.
- Un moteur tiède est normal. Les bobinages restent alimentés entre deux mouvements et maintiennent la position : c’est ce qui tient l’axe, et c’est aussi ce qui le fait chauffer légèrement.
- Une carte franchement chaude signale un courant trop élevé pour le canal sollicité, ou une tension d’alimentation trop grande pour le moteur.
- Aucun retour de position. Si la position compte, prévoyez un mouvement de référence au démarrage, une butée ou un capteur de fin de course.
- Gardez une masse commune entre la carte driver, le microcontrôleur et l’alimentation des bobinages.
Questions fréquentes
Le moteur vibre mais ne tourne pas
Trois causes, dans l’ordre de fréquence : la fiche du moteur n’est pas entièrement enfoncée dans le connecteur de la carte ; l’alimentation du bornier est absente ou insuffisante ; la masse du microcontrôleur n’est pas commune avec celle de l’alimentation des bobinages. Si les LED défilent correctement et que l’axe reste immobile, c’est la cadence qui est trop rapide pour ce moteur : allongez le délai.
Comment reconnaître le fil commun du moteur ?
Au multimètre, en position ohmmètre, broche par broche du connecteur. Le fil commun présente la même résistance avec chacun des quatre autres, de l’ordre de 50 Ω ; entre deux fils de phase quelconques, la mesure est à peu près le double. Le fil rouge est conventionnellement le commun sur ce moteur, mais la mesure tranche toujours : elle vaut mieux que la couleur.
Combien de pas pour un tour exact ?
Le rapport annoncé est de 1/64, soit 4096 demi-pas par tour à l’arbre — c’est la valeur à mettre dans un programme. Sur de nombreux exemplaires, le réducteur réel est un peu différent et le tour complet tombe autour de 4076 demi-pas, soit quelques degrés d’écart après une révolution. Pour un mouvement d’aller et retour, cela ne se voit pas ; pour un mécanisme qui tourne toujours dans le même sens, faites un repère sur l’axe, envoyez 4096 demi-pas et corrigez la constante du programme de la différence observée.
Peut-on commander un moteur pas à pas plus gros ?
Pas avec cette carte. Le ULN2003A convient aux petits moteurs unipolaires à cinq fils ; au-delà de quelques centaines de milliampères par phase, il faut un driver à régulation de courant, qui limite lui-même l’intensité dans le bobinage. Un moteur bipolaire de type Nema 17 ne se pilote pas autrement.
Faut-il acheter le moteur et la carte séparément ?
Cela dépend de ce que vous avez déjà. Le pack convient pour démarrer de zéro. Si vous possédez déjà un moteur 28BYJ-48 et cherchez seulement la carte, ou l’inverse — plusieurs moteurs pour une seule carte, par exemple —, les deux pièces existent seules : la carte driver ULN2003A d’un côté, le moteur 28BYJ-48 de l’autre.
À combiner avec
Ce pack se suffit à lui-même côté matériel : il demande seulement une carte de développement, et c’est ce qu’apporte le kit Arduino Uno starter, avec la carte Uno, les câbles de liaison et une plaque d’essai pour poser le montage. Si votre mécanisme réclame franchement plus de couple, passez au moteur pas à pas Nema 17, qui se pilote avec un driver à régulation de courant comme le driver A4988 : le 28BYJ-48 reste imbattable pour les mouvements légers et lents, celui d’une aiguille ou d’un petit volet.







Avis
Il n’y a pas encore d’avis.