Forums LR PRESSE

Où il est question de trains, petits et grands

  • Advertisement

Moteur pas-à-pas et pont tournant

Toutes les discussions sur l'Arduino !

Modérateur: MOD

Moteur pas-à-pas et pont tournant

Publié: Dim 08 Déc 2013, 15:04 
Bonjour

Voici le premier des articles au sujet des moteurs pas-à-pas pour motoriser un pont tournant. Cet aticle est également disponible sur mon blog : http://modelleisenbahn.triskell.org/spip.php?article68

Cet article fait suite à mes premiers essais de pilotage des moteurs pas-à-pas pour construire un point tournant qui n'avaient pas été couronnés de succès.

Por rappel, l'objectif est de mettre en œuvre la motorisation d'un pont tournant avec un moteur pas-à-pas bipolaire {{sans réduction mécanique}}. On trouve dans le commerce des moteurs pas-à-pas à 200 pas ou 400 pas par tour. Vous trouverez les informations de base dans l'article Wikipédia mais surtout dans cet excellent article de Nicolas Marchildon- que je trouve particulièrement didactique. le pilotage de tels moteurs n'est pas compliqué à condition de disposer d'un carte à microcontrôleur. En effet, passer d'un pas au suivant est réaliser en envoyant une séquence de tensions sur les deux bobines du moteur. Plus les séquences sont rapides et plus le moteur tourne vite.

Dans « Moteur pas-à-pas et pont tournant », j'avais essayé de piloter le moteur par micro-pas en pilotant chaque bobine par une PWM à 20KHz, dont la rapport cyclique évoluait en sinus, les deux PWM étant décalées de ∏/2. L'expérience avait eu un succès mitigé. En effet, les micro-pas sont définis par le courant dans chaque bobine du moteur pas-à-pas et en pilotant via une PWM, on pilote le courant en aveugle sans aucune garantie que lui même évolue en sinus.

Or, des circuits intégrés qui pilotent directement le courant, en le mesurant et en le régulant afin de permettre un mouvement par micro-pas précis, existent. L'un des spécialistes est Allegro Microsystems qui propose toute une gamme de circuits dédiés au moteurs pas-à-pas bipolaires avec un nombre de micro-pas pouvant aller jusqu'à 16. Un deuxième acteur majeur est Texas Instruments avec la gamme de circuits DRV88xx avec un nombre de micro-pas pouvant aller jusqu'à 32. Enfin, Toshiba propose également des composants dans la série TD65xx dont certains montent à 32 micro-pas.

Présentation de l'EasyDriver v4.4

L'EasyDriver v4.4 est une breakboard en OpenHardware conçue en coopération entre SparkFun et Brian Schmalz. Une breakboard est une carte minimaliste dont le but est de faciliter l'intégration d'un composant : alimentation, résistances, condensateurs indispensables au fonctionnement et boches au pas de 2,54mm pour pouvoir la mettre en œuvre sur une breadboard. Elle est donc peu chère, une dizaine d'Euros en France.

Le composant central est un Allegro A3967, dont voici la datasheet, qui permet 8 micro-pas. Ce n'est pas ce qui se fait de mieux et les essais montreront si, oui ou non, 8 micro-pas suffisent. Deux choses qu'il faut savoir:
  • Lorsque l'ensemble est sous tension, le moteur est alimenté et sa position est fermement tenue;
  • Il ne faut en aucun cas débrancher le moteur en laissant l'EasyDriver sous tension, il pourrait en résulter la destruction de l'Allegro.

La carte mesure 49 mm sur 21 mm et se présente comme ceci:

Image

  • Le régulateur 5V fournit le 5V à la logique de l'Allegro à partir de la tension d'alimentation du moteur;
  • Le potentiomètre permet de régler le courant maximum. Plus le courant est élevé et plus le moteur a de couple mais moins le mouvement d'un micro-pas au suivant sera doux ;
  • Pour connaître la valeur de ce courant, il suffit de mesurer la tension de référence Vref au point de mesure d'une part, et la résistance de capture de courant Rs d'autre part. Le courant maximum Imax est donné par la formule : Imax = Vref/8Rs ;
  • Enfin la carte est munie d'un condensateur de filtrage de 47µF qui protège l'Allegro des transitoires lors de la mise sous tension.

La carte est prévue pour s'enficher sur une carte mère où sur une breadboard. Elle possède 17 connexions dont le rôle est donné à la figure ci-dessous.

Image

  • Le moteur pas-à-pas est connecté via les 4 broches en haut à gauche;
  • L'alimentation du moteur est connectée sur les deux broches en haut à droite (entre 7V et 30V). Il est possible d'alimenter le moteur avec une tension plus élevée que celle qu'il supporte à condition de régler le courant à une valeur inférieure ou égale au courant supporté par le moteur;
  • Les différentes masses sont reliées entre elles et l'une au moins devra être connectée à la masse de la carte microcontrôleur employée (Arduino ou autre);
  • RESET, ENABLE et SLP (pour SLEEP) permettent respectivement de faire une réinitialisation de l'Allegro, de l'activer ou de le mettre en veille;
    • RESET doit être amené à 0 puis à 1 pour réinitialiser l'Allegro. Les deux bobines sont alimentées à 70,71% et le rotor se place sur un demi-pas. L'EasyDriver tire le RESET à 5V via une résistance de 10kΩ. On peut donc laisser cette broche en l'air sans soucis;
    • ENABLE doit être constamment à l'état 0 (bas) pour que l'Allegro pilote les bobines du moteur. L'EasyDriver tire ENABLE à 0V via une résistance de 10kΩ. On peut donc aussi laisser cette broche en l'air sans soucis;
    • Enfin SLP peut être mise à l'état bas pour désactiver la majeure partie de la circuiterie interne de l'Allegro. Ici encore, l'EasyDriver tire SLP à 5V via une résistance de 10kΩ. On peut également laisser cette broche en l'air sans soucis.
  • MS1 et MS2 permettent de fixer le nombre de micro-pas entre 2 pas selon la table suivante. Ici aussi l'EasyDriver tire MS1 et MS2 à 5V par l'intermédiaire de réistances de 10kΩ. Par conséquent, en laissant ces broches en l'air, la résolution de 8 micro-pas par pas est sélectionnée;

    Image
  • PFD règle la vitesse à laquelle le courant est réduit. Par défaut cette réduction est lente (slow decay). À priori ce réglage convient aux vitesses lentes et d'après le schéma du EasyDriver, il n'est nécessaire de s'en occuper que pour augmenter les performances dans le cas d'une vitesse de rotation élevée;
  • DIR fixe le sens de rotation du moteur. Nous allons donc piloter cette broche pour notre application;
  • STEP permet de faire avancer le moteur au micro-pas suivant. Une transition de 0 à 1 provoque cette avance. Cette broche sera également pilotée.

Équipons l'engin

L'EasyDriver arrive nu, il faut donc le munir de connecteurs pour l'utiliser. J'ai choisi des connecteurs avec détrompeurs et verrouillage pour le moteur et l'alimentation du moteur et des barrettes de broches pour les autres. Le tout au pas de 2,54mm. Utiliser un connecteur digne de ce nom pour la connexion vers le moteur garantit qu'il n'y aura pas de déconnexion intempestive par arrachage de fil et donc pas de destruction de l'Allegro.

Image

Image

Image

Il reste maintenant à connecter tout cela à un moteur et à un Arduino pour faire quelques essais.

Ne vous précipitez pas à acheter cette carte, il n'est pas dit qu'elle sera retenue pour la suite
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 679
Inscrit le: Jeu 04 Oct 2012, 15:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Moteur pas-à-pas et pont tournant

Publié: Dim 08 Déc 2013, 19:09 
Bonjour Jean-Luc,

Voici un projet qui sera intéressant à réaliser car une plaque tournante, c'est sans doute le rêve de beaucoup de modélistes. :coeur1:

Mettre en œuvre un moteur pas à pas est relativement facile avec Arduino, avec un circuit ULN2803 ou bien un L298. Mais on reste dans la technique classique de commande du moteur.

Ici, tu proposes un shield capable de faire du microstepping, ce qui permet d'avoir un mouvement plus fluide. Tu m'avais conseillé un site pour comprendre le principe et cela m'a bien aidé. 8)

Pour ceux qui veulent commander une petite plaque tournante, le microstepping est-il vraiment nécessaire, car le diamètre étant plus petit, est-ce qu'on voit un déplacement par pas ? Surtout avec un moteur de 200 pas. Là, je n'ai aucune idée, tu as sans doute plus d'expérience que moi. :?:

Quelle que soit la réponse, il est toujours intéressant de se lancer dans une nouvelle technique, et je peux te dire que je vais suivre ce fil avec assiduité. :wink:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1698
Inscrit le: Mer 25 Sep 2013, 16:14

Re: Moteur pas-à-pas et pont tournant

Publié: Dim 08 Déc 2013, 19:25 
Bonsoir Christian

Quelques éléments de réponse. Une plaque tournante de 15cm de diamètre en N (correspondant à une plaque de 24m) et 200 pas/tour, ça donne des sauts de 2,4mm en bout de pont d'un pas à l'autre. Ça se voit aussi surement que tu vois l'aiguille des secondes sauter sur une horloge.

Il n'y a pas plus de complication avec un shield capable de faire du micro-stepping qu'en pilotant directement le moteur par pas entier. On a deux signaux : 1 pour le sens de rotation, l'autre pour égrener les pas. le programme est très simple.
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 679
Inscrit le: Jeu 04 Oct 2012, 15:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Moteur pas-à-pas et pont tournant

Publié: Dim 08 Déc 2013, 19:40 
Jean-Luc m'a devancé alors que j'étais avec ma calculette (celle du PC, bien sûr :mrgreen: ).

Petit calcul, donc :
Prenons un pont tournant de longueur classique. Mettons, 23 m de diamètre.
En HO, ça fait à la louche 264 mm. La moitié (le rayon, notons le R), ça fait 132 mm.
Notre moteur pas à pas est un "200 pas par tour", autrement dit, à chaque pas, ou tourne d'un angle a de 2 grades (il y a 400 grades dans un tour).
La déviation D au bout du pont est donnée par :
D = 2 x R x tan(a / 2)

Résultat : 4,1 mm

En faisant du microstepping 1/8 de pas, on sera rendu à peu près à 0,5mm, ça sera déjà mieux. :wink:
.
Avatar de l’utilisateur
Roc
Promesse tenue
 
Messages: 21111
Inscrit le: Jeu 22 Fév 2007, 12:51
Localisation: Aude
Âge: 50
Prénom: Olivier
Club: Intermittent des Rigollots©

Re: Moteur pas-à-pas et pont tournant

Publié: Lun 09 Déc 2013, 19:58 
Mise en œuvre de l’EasyDriver v4.4 pour un pont tournant

Cet article est également disponible sur mon blog : http://modelleisenbahn.triskell.org/spip.php?article69
avec deux vidéos que je n'arrive décidément pas à insérer ici.

Voici le compte rendu de quelques essais de mise en œuvre avec l'objectif de motoriser un pont tournant.

Le matériel

Afin d'avoir la meilleure résolution possible, le moteur pas-à-pas bipolaire choisi est un moteur 400 pas par tour vendu par Selectronic. Il s'agit de ce modèle.

Ce moteur est prévu pour être alimenté en 12V. Les bobines ont une résistance de 40Ω et par conséquent chaque bobine consomme 300mA. Le couple de maintient est de 3,5 kg/cm.

J'ai fixé sur l'arbre une latte en bois de 40 cm de longueur et donc un rayon de 20cm. Cette longueur est de 30% supérieure à la longueur d'un pont tournant en H0 et plus de 2 fois plus long qu'un pont tournant en N. Cela permet de visualiser la rotation et plus particulièrement les défauts.

Image

En combinant les 400 pas par tour du moteur et les 8 µpas de l'EasyDriver, on arrive à 3200 positions sur le cercle. Avec un diamètre de 30cm, typiquement un pont tournant en H0, cela nous donne un pas d'environ 0,3mm en bout de pont. Avec un rayon de 15cm qui correspond au pont tournant PECO en N, cela nous donne un pas de 0,15mm en bout de pont.

La connexion de l'Arduino à l'EasyDriver est particulièrement simple. Comme on la vu dans « L’Easydriver v4.4 », la plupart des broches de l'EasyDriver ont la configuration adéquate quand on les laisse tout simplement non connectées.

Image

Les sorties numériques 2 et 3 de l'Arduino sont employées pour piloter le moteur. On garde les alimentations séparées. L'EasyDriver est alimenté en 12V continu et, pour les essais, l'Arduino reste alimenté via l'USB.

Image

Influence de la limitation de courant

Plus le courant maximum Imax, c'est à dire le courant correspondant à 100% d'alimentation d'une bobine, est élevé et plus le passage d'un µPas au suivant est rapide et franc. Comme on veut le passage le plus doux possible, il faut régler le courant maximum à la valeur la plus basse possible.

Les indications de sens de rotation du potentiomètre sur l'EasyDriver 4.4 sont fausses. La valeur minimum correspond en fait à une rotation dans le sens trigonométrique (à gauche) et la valeur maximum à une rotation dans le sens horaire (à droite).


D'après la schématique, le Imax minimum possible est de 166mA pour Vref = 1V, ce qui correspond à la valeur minimum que l'on trouve dans la documentation de l'Allegro A3967. En réalité, le Vref minimum mesuré est de 1,59V au lieu des 1V annoncés. Par ailleurs, j'ai mesuré une valeur de 1,2Ω pour les résistances de capture de courant au lieu des 0,75Ω annoncés dans la schématique. Le rapport Vref/ Rs est quasiment le même et le Imax pour Vref = 1,59V est donc bien de 166mA.

Voici une vidéo montrant l'influence de la limitation de courant sur la fluidité de la rotation pour les valeurs suivantes de Imax : 280mA (Vref = 2,69V), 224mA (Vref = 2,15V) et 166mA (Vref = 1,59V). La vitesse de rotation est de 1 tour en 2 minutes.

(voir la vidéo sur http://modelleisenbahn.triskell.org/spip.php?article69)

On voit effectivement que le réglage Imax au minimum donne le meilleur résultat en terme de fluidité de mouvement même si la vidéo gomme les petites vibrations qui sont observables à des Imax plus élevés. Le couple reste largement suffisant.

Le logiciel

La pilotage du moteur pas-à-pas est très facile. La broche 2 de l'Arduino connectée à l'entrée DIR de l'EasyDriver permet de fixer le sens de rotation et la broche 3 connectée à l'entrée STEP de l'EasyDriver permet d'avancer d'un µPas. Ces deux broches sont donc mises en sortie dans setup() comme ceci.

Code: Tout sélectionner
const int pinSens = 2;
const int pinMicroPas = 3;

void setup()
{
    pinMode(pinSens, OUTPUT);
    pinMode(pinMicroPas, OUTPUT);
}


Le jeu consiste ensuite à choisir un sens de rotation en mettant pinSens à HIGH ou LOW puis à enchaîner à une certaine cadence des HIGH et des LOW sur pinMicroPas.

La cadence est déterminée par le délai d'attente entre deux bagottages sur pinMicroPas. Par exemple, si l'on veut que le pont accomplisse un tour complet en 2 minutes, soit 120s, on calcule ce temps d'attente de la manière suivante: 3200 µPas en 120s donne un délai de 120/3200 = 37,5ms ≃ 37ms.

Ainsi le programme le plus simple possible consiste à faire tourner le moteur en permanence dans loop().

Code: Tout sélectionner
void loop()
{
    digitalWrite(pinMicroPas, LOW);
    digitalWrite(pinMicroPas, HIGH);
    delay(37);
}


Voici une vidéo qui montre l'exécution d'une séquence de déplacement : positionnement en 100, puis 300, puis 200, puis 800, puis 1600, puis 1000 et enfin 2400. Dans la première partie, un délai de 36ms entre deux µPas est utilisé. Les µPas ne sont pas visibles. Dans la seconde on passe à un délai de 99ms, les µPas deviennent visibles. Enfin dans la 3e partie, le mouvement d'une position à l'autre a une phase d'accélération pendant 0,5s en passant d'un délai de 78ms à 36ms par décrément de 3ms et une phase de décélération pendant 0,75s en passant d'un délai de 36ms à 99ms par incrément de 3. Les phases d'accélération et de décélération sont légèrement hachées.

(Voir la vidéo sur http://modelleisenbahn.triskell.org/spip.php?article69)

L'EasyDriver remplit son office mais montre quelques limites pour les très faibles vitesses qui sont utilisées dans les phases d'accélération et de décélération. D'autres breakout boards existent et la prochaine fois, nous verrons celle développée par Pololu qui utilise un Texas Instruments DRV8824 permettant 32µPas.
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 679
Inscrit le: Jeu 04 Oct 2012, 15:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Moteur pas-à-pas et pont tournant

Publié: Mar 10 Déc 2013, 09:27 
Bonjour

Il serait peut être intéressant de faire des essais avec une machine HO ou un poids équivalent, pas forcement centré (motorisation dans la chaudière ou le tender ou sur un boggie ...), cela peut influencer le fonctionnement ?

Pierre
Avatar de l’utilisateur
Pierre59
Papotier
 
Messages: 147
Inscrit le: Dim 07 Mars 2010, 09:17
Localisation: Villeneuve d'Ascq (59650)
Âge: 75
Echelle pratiquée: HO
Club: Lille Modélisme

Re: Moteur pas-à-pas et pont tournant

Publié: Mar 10 Déc 2013, 09:44 
Bonjour Pierre

C'est une bonne idée.

Si quelqu'un pouvait me donner la masse d'une machine H0 :oops:
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 679
Inscrit le: Jeu 04 Oct 2012, 15:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Moteur pas-à-pas et pont tournant

Publié: Mar 10 Déc 2013, 10:26 
jlb a écrit:Bonjour Pierre

C'est une bonne idée.

Si quelqu'un pouvait me donner la masse d'une machine H0 :oops:


BB16000 Roco 415 grammes

150X Trix 516 grammes

Pierre
Avatar de l’utilisateur
Pierre59
Papotier
 
Messages: 147
Inscrit le: Dim 07 Mars 2010, 09:17
Localisation: Villeneuve d'Ascq (59650)
Âge: 75
Echelle pratiquée: HO
Club: Lille Modélisme

Re: Moteur pas-à-pas et pont tournant

Publié: Mar 10 Déc 2013, 14:28 
On cause dynamique, ici. :diable:
La masse, ça n'est pas très important. Ce qui est intéressant, c'est le moment d'inertie. Et il faut aussi inclure le moment d'inertie du pont, qui ne doit pas vraiment être négligeable par rapport à celui le la loc.
Et il faut aussi ajouter à cela les frottements solides sur l'axe et les roulements.

Les moments d'inertie vont amener le système a démarrer lentement, mais ne pas s'arrêter quand on lui demande, et l'électronique de contrôle va vouloir le ramener à la position cible, d'où des oscillations autour ce cette position, à chaque pas.
Les frottements, au contraire, vont lisser ces oscillations.

Y'a des chances pour que les effets des premiers soient plus importants que les seconds.

Bon, une fois qu'on a dit ça... :?
Admettons qu'en première approximation, on modélise le système par une masse parallélépipédique de 3cm de côté et 25 de long, et d'environ 400 grammes (ce qui est moins que la masse d'une loco en HO, mais qui doit, à la louche, compenser les frottements).
.
Avatar de l’utilisateur
Roc
Promesse tenue
 
Messages: 21111
Inscrit le: Jeu 22 Fév 2007, 12:51
Localisation: Aude
Âge: 50
Prénom: Olivier
Club: Intermittent des Rigollots©

Re: Moteur pas-à-pas et pont tournant

Publié: Mar 10 Déc 2013, 22:07 
Bonsoir,

Je viens de tester avec un pont plus large chargé avec une boîte de 10000 résistance 10kΩ :D et 2 breadboards pour une masse totale de 570g. La boîte fait 27cm de long et la masse est répartie de manière homogène.

Ça fait un peu plus d'une heure que le pont fait des allers-retours entre la position 0 et la position 100. Il en est à 428 allers-retours. Il n'a pas raté de µPas et la position est 100% reproductible

Par contre, une fois chargé, le mouvement est moins fluide. Roc avait bien prédit le phénomène ;-)

Pas de soucis avec une locomotive N (j'ai mis une P8 Fleishmann dans sa boite sur le pont), le mouvement reste fluide.

J'attends le DRV8824 de Pololu avec ses 32 µPas. La suite au prochain numéro :)
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 679
Inscrit le: Jeu 04 Oct 2012, 15:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Moteur pas-à-pas et pont tournant

Publié: Jeu 12 Déc 2013, 20:15 
Bonsoir, as-tu essayé de mettre le tout hors tension ? Quand tu remets sous tension, y-a-t-il un décalage du pont ? Un "hoquet" ? Faut-il réaligner le pont à chaque mise sous tension ?
Il existe aussi un board (Bipol-step) chez Lextronic. Tu connais ? Ton avis ?
papou89
Papotier
 
Messages: 199
Inscrit le: Lun 29 Nov 2010, 20:58

Re: Moteur pas-à-pas et pont tournant

Publié: Jeu 12 Déc 2013, 20:39 
Bonsoir,

Quand tu mets hors tension, le moteur retombe sur un pas entier. Quand tu mets sous tension, le driver se positionne sur un demi pas (c'est à dire les deux bobines alimentées à 70% du courant maximum).

À la mise sous tension, il faut une procédure de mise à 0 du pont. L'une des position est repérée par un capteur et le programme cherche cette position. La position trouvée devient le 0. J'ai un capteur en stock : http://www.tme.eu/en/details/tcst2103/p ... s/vishay/#

Le Bipol-step a exactement le même circuit que l'EasyDriver, il est équivalent en tous points je pense excepté les borniers qui sont fournis. 13€ le jeu de connecteur, ça fait très cher je trouve (je dois avoir monté pour moins d'1€ de connecteur sur l'EasyDriver)

Je pense que je recevrai mon DRV8824 lundi. Je pense qu'il est nécessaire d'avoir plus de 8 µPas. Du moins en H0 De nouvelles choses la semaine prochaine donc :)
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 679
Inscrit le: Jeu 04 Oct 2012, 15:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Moteur pas-à-pas et pont tournant

Publié: Lun 16 Déc 2013, 22:46 
jlb a écrit:Je pense que je recevrai mon DRV8824 lundi.
Bon alors, l'est pas arrivé le bidule ? :moi: :noel:
.
Avatar de l’utilisateur
Roc
Promesse tenue
 
Messages: 21111
Inscrit le: Jeu 22 Fév 2007, 12:51
Localisation: Aude
Âge: 50
Prénom: Olivier
Club: Intermittent des Rigollots©

Re: Moteur pas-à-pas et pont tournant

Publié: Lun 16 Déc 2013, 23:24 
Tu suis pas mon blog :mrgreen:

Je n'ai pas eu le temps de reformater l'article pour le forum mais ça va venir :)
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 679
Inscrit le: Jeu 04 Oct 2012, 15:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Moteur pas-à-pas et pont tournant

Publié: Mar 17 Déc 2013, 00:13 
jlb a écrit:Tu suis pas mon blog :mrgreen:
Heu... non. :oops:
On peut pas tout faire... :siffle:

:mrgreen:
.
Avatar de l’utilisateur
Roc
Promesse tenue
 
Messages: 21111
Inscrit le: Jeu 22 Fév 2007, 12:51
Localisation: Aude
Âge: 50
Prénom: Olivier
Club: Intermittent des Rigollots©

Suivant

Retour vers Arduino

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 6 invité(s)