10) Les moteurs PAS à PAS.

Outre la facilité qu’ils procurent à adopter des positions précises ils simplifient considérablement l’agencement technique par le fait qu’ils peuvent maintenir une position stable précise. Si l’automatisme est conçu de façon à ce que le couple résistant ne dépasse jamais le couple moteur, il est possible de numériser les orientations en « aveugle » par simple comptage et décomptage. On leur reproche parfois « de planter des clous », c’est à dire d’avoir des rotations saccadées. Si ce type de fonctionnement est prohibé, au prix d’une électronique sophistiquée on peut les faire fonctionner « en sinusoïdal ». Il en existe de toutes les tailles, et on en trouve des relativement petits particulièrement bien adaptés à la robotique de loisir. Leur caractéristique principale réside dans le nombre de pas qu’ils doivent effectuer pour réaliser un tour complet de leur arbre moteur. Ce nombre est « par nature » toujours pair. La deuxième caractéristique de base réside dans le couple moteur et le couple de maintien qu’ils peuvent assurer, entité qui conditionne directement leur volume.

Experience_066 : C’est le premier pas qui coute !

Wouaouououou le jeu de mot facile ! Désolé, mais je n’ai pas résisté à cette petite blague simpliste. Avec Experience_066.ino nous allons découvrir le monde des moteurs pas à pas avec le modèle 28PYJ-48 très populaire montré sur la Fig.137, tout petit, dont la Fiche n°43 précise les caractéristiques et donne un schéma possible d’utilisation organisé avec des composants discrets. On réalise deux fois le câblage de la Fig.3 et l’on ajoute une LED avec sa résistance de limitation de courant entre le +5Vcc et chaque sortie pour visualiser l’état des pilotages sur chaque bobine et également pouvoir observer le mode veille. La photographie Image 22.JPG montre l’agencement de la platine d’essai avec les transistors genre 2N1711, 2N2222 etc. Quand le moteur est en rotation et les quatre LED allumées, le courant total fait environ 120mA ce qui est largement supportable par une alimentation USB de la carte Arduino. Avec P066 la vitesse de rotation est maximale et reste faible vu la réduction par 64. Pour visualiser la séquence élémentaire de commutation passer le délai à 1000mS, la combinatoire présentée sur la Fig.138 sera plus facile à observer.

Experience_067 : Faire tourner dans l’autre sens.

Séquence élémentaire à programmer, il suffit de lire le tableau de la Fig.138 de la droite vers la gauche. Vous allez me faire remarquer qu’ajouter un démonstrateur juste pour ça c’est faire du remplissage pour arriver à 100. Non, pas besoin de ce subterfuge. Avec les 39 démonstrateurs rangés dans les dossiers à part, les mini-projets, tous ce qui reste à explorer sur les moteurs et les capteurs, pas la peine d’une telle pirouette. Je préfère juste proposer un listage clair et facile à interpréter. Par ailleurs, on va profiter de cette expérience pour remplacer les composants discrets d’Image 22.JPG par le circuit intégré spécialisé ULN2003 pour simplifier le montage et gagner en encombrement. Les caractéristiques de ce composant incontournable et très courant sont détaillées dans la Fiche n°44. Le branchement à effectuer sur le circuit ULN2003 est donné en Fig.139 trois des opérateurs de commutation n’étant pas utilisés. Téléverser P067 sans rien changer matériellement. Puis, le démonstrateur fonctionnant, modifier alors le matériel pour remplacer les composants discrets par le circuit intégré. Pas la peine d’ajouter les LEDs pour cette manipulation.

Experience_068 : Utiliser un module du commerce.

Utiliser des moteurs pas à pas dans un projet de petite robotique est pratiquement un pléonasme. Aussi, le commerce s’est largement positionné sur ce créneau pour fournir des petites motorisations, et des modules électroniques pour les piloter. C’est exactement le cas du module montré sur la Fig.140 dont les caractéristiques sont proposées dans la Fiche n°45. Leur coût restant très modéré, les utiliser relève pratiquement de l’évidence. Quand on observe la Fig.2 de la fiche, on constate que le schéma ressemble furieusement à celui de la Fig.139 auquel on a ajouté les LEDs de visualisation de l’état de sortie des opérateurs.
Le circuit intégré est placé sur un support pour en faciliter l’éventuel changement bien que ce composant soit très fiable. La tension d’alimentation préconisée par la sérigraphie précise que l’on peut aller jusqu’à +12Vcc si le moteur utilisé est conçu pour cette tension. On peut piloter des moteurs à courant continu, mais dans ce cas on ne bénéficiera pas des contre-courants de freinage. Le démonstrateur Experience_068.ino reprend le code des deux expériences précédentes, avec cette fois la rotation dans les deux sens.

Experience_069 : Usage de la bibliothèque <Stepper.h>.

Comme pour toute branche spécifique de la robotique de loisir, on trouve pour la gestion des moteurs pas à pas une bibliothèque qui en simplifie considérablement la programmation. La bibliothèque <Stepper.h> est décrite dans le livret Bibliothèques Arduino.pdf en page 15. Noter qu’il n’est pas nécessaire d’aller télécharger <Stepper.h> sur Internet car elle fait partie des librairies déjà disponibles par défaut à l’installation du compilateur. Il me semble important de souligner que si le programme est bien plus simple à écrire, et plus facile à lire, c’est au détriment de la taille occupée en mémoire. L’utilisation de cette bibliothèque consomme environ 570 octets de plus que le même programme écrit intégralement avec des procédures personnelles.
Pour cette expérience il faut brancher un potentiomètre de 10kΩ par exemple, entre le +5Vcc et GND. Son curseur va sur l’entrée analogique A0. Quand on tourne le curseur de P le moteur se comporte comme un répétiteur qui recopie sa rotation et son positionnement. Simultanément la valeur numérisée par A0 est précisée sur le Moniteur de l’IDE à 57600baud. Lorsque la valeur devient inférieure à 100 le moteur est passé en mode veille. Cette configuration n’est pas prévue par la bibliothèque. Il suffit toutefois de forcer les quatre sorties de pilotage à « 0« . C’est ce que fait la procédure Passer_en_mode_veille(). Remarquez au passage qu’il n’a pas été nécessaire d’initialiser D4 à D7 en sorties, car l’instruction Stepper MOTEUR(Nb_pas_par_tour, Jaune, Bleu, Orange, Rose) s’en charge. En mode veille l’intensité consommée est nulle. Normalement dans cette situation le moteur ne peut plus maintenir sa position, mais dans notre cas le réducteur par 64 est irréversible. On peut forcer notablement en torsion sur l’arbre de sortie, ce dernier ne tournera pas. Pour la forme le module du commerce a été remplacé par des composants discrets sur Image 023.JPG.

Dans le chapitre relatif à la gestion des moteurs pas à pas, devrait figurer le SHIELD d’interfaçage produit par ADAFRUIT. Comme il peut gérer tous les types de moteurs à courant continu, il sera présenté après avoir parcouru le chapitre suivant qui traite des servomoteurs. Par ailleurs dès que l’on envisage un projet « sérieux » utilisant des motorisations plus « musclées », il faudrait aussi mentionner le module électronique TB6600 que l’on peut voir sur la Fig.142 dont les possibilités sont remarquables. Ses performances lui font tenir le haut du pavé. Toutefois, vu son prix d’achat il faut le réserver à des projets qui dépassent largement le cadre des petites expérimentations ludiques. Aussi, si vous désirez vous informer et en avoir des exemples précis d’utilisation, vous pouvez vous rendre sur le lien suivant : (PUB !)
https://www.robot-maker.com/ouvrages/tome-1-pyrograveuse/

La suite est ici.