Propulsion de robot avec des moteurs Pas à Pas

Echangez ici sur vos idées ou vos problèmes concernant vos circuits électroniques et électriques.
Discuss here the problems concerning your electronic and electrical circuits.
Post Reply
arno
PMI
Posts: 746
Joined: Wed 23 Jun 2004, 21:51
Location: Un peu partout...

Propulsion de robot avec des moteurs Pas à Pas

Post by arno » Fri 05 Oct 2018, 22:35

Bonjour à tous,

Suivant l'avis de nadar breicq dans le sujet viewtopic.php?f=103&t=18544&start=75
Ouvrons une nouvelle discussion sur les moteurs pas à pas et l'usage pour la coupe. Libre à vous d'ouvrir d'autres sujets pour les autres hors sujets tel que l'odométrie.

Donc, pour avoir utiliser du moteur à courant continu (MCC) et du moteur pas à pas (PAP) pour la propulsion, j'avoue que le pas à pas c'est plutôt génial quand on est pas bon en mécanique.
Le contrôle du mouvement d'un robot avec des MCC est performant, mais la vitesse du rotation est dépendante du couple résistant pour une tension donnée, donc si on veux un minimum aller droit cela implique généralement un asservissement. Donc qui dis asservissement, dis ajout de capteurs, qui peuvent être :
* une mesure de courant pour compenser une partie du couple résistant : intéressant, mais moyen pour controller la vitesse
* un capteur sur le moteur : facile mécaniquement, mais ne prends pas en compte les jeux de motoréducteur et les glissements des roues
* roues codeuses folles : plus compliqué mécaniquement et encombrant, mais donne une bien meilleure précision (autour de 1 cm au bout d'un match si c'est bien réglé)
* capteurs extérieurs (balises, lidar, télémètres, caméra) : pas de dérive, mais précision/rapidité en général plus faible que les roues codeuses

De l'autre côté, dans les moyens de propulsions habituels, nous avons les moteurs pas à pas. Ici, la vitesse de rotation ne dépends pas du couple résistant, tant que l'on reste dans sa capacité (c'est la partie importante!), donc le moteur fait exactement ce qui lui a été commandé, pas de dérive !
Les problèmes pouvant être rencontrés sont ce qu'on appelle les "sauts de pas", c'est à dire que l'on a fait avancer les commutations des bobines moteurs plus vite que la mécanique n'a pu les suivre, et on se retrouve avec un décalage et quelques pas perdus voir un blocage sur place du moteur (il ne fait que vibrer d'avant en arrière sur un même pas). Pour ne pas avoir ce problème, il faut se limiter à ne commander électriquement que ce que la physique permet : mettre des rampes d'accélération (car le couple fournit par le moteur est limité, donc l’accélération aussi) et faire attention aux vitesses maxi. Le bon point est que les moteurs Pas à Pas ne coûtent pas cher et sont facile à trouver de puissance suffisante pour faire faire 50 à 80cm/s à un robot de quelques kilogrames avec une rampe d'une seconde. La preuve que bien utilisé, un moteur PAP est fiable est précis, c'est que presque toutes les imprimantes 3D et fraiseuses les utilisent pendant des heures sans avoir le moindre capteur de position.
Il reste cependant une grosse source d'incertitude sur la position qui est le glissement des roues, le PAP ne garantissant que la vitesse de rotation du moteur. Mais c'est la même chose qu'avec des MCC. Les roues codeuses folles sont un bon ajout tout comme les capteurs extérieurs pour ne pas avoir de soucis après quelques déplacements. Une mécanique propre et équilibrée aide aussi.
Pour le côté pilotage électronique, il a été dis que cela été compliqué. Je ne suis pas entièrement d'accord, le fait de ne pas avoir besoin d'asservissement retire une partie de difficulté de programmation et réglage, il y a moins de capteurs donc moins d'électronique, mais le pilotage des pas rajoute une difficulté selon la solution choisie. En voici quelques unes :
* Faire les micro-pas en pilotant le courant de chaque bobine à la main : a déconseiller :lol: C'est ce qu'on avait il y a un bon moment, car les composants tous fait étaient pas encore répandus !
* Envoyer des impulsions depuis le MCU avec un logiciel maison à un driver traitant les micro-pas : très bien et facile pour le côté électronique. Reste une charge logiciel pas négligeable si on veut des rampes exactes. En faisant des choses approchées (palliers par exemple) cela devient plus simple. Un MCU avec un timer pour générer ces impulsions (mode PWM, mais en changeant la fréquence et non le rapport cyclique) simplifie fortement la vie et la charge du processeur, et est disponible dans tous les MCU que je connais ou presque.
* Utiliser une bibliothèque logicielle de gestion des pas à pas associé à un driver traitant les micro-pas : le logiciel de beaucoup d'imprimantes 3D est open source, et il est possible de l'utiliser pour la partie gestion des pas et des rampes et mettre le code du robot au dessus. Voir grbl par exemple (http://www.aquickcnc.com/wiki/Grbl). Pas de besoins matériels particulier, c'est fait pour Arduino !
* Utiliser une carte de pilotage d'imprimante 3D et de la piloter en Gcode par UART depuis un MCU : rien à faire pour piloter les PAP, tout est déjà dedans. Il suffit d'envoyer des commandes du genre "G0 X1000 Y1000 F100" pour avancer droit sur 1 mètre à 100mm/s ! Les cartes de pilotage du genre le shield arduino RAMPS (https://reprap.org/wiki/RAMPS/fr) sont disponible, ainsi que des cartes tout intégrées (https://reprap.org/wiki/RAMPS/fr)
* Ne pas avoir de MCU du tout, et juste mettre la liste d'instructions Gcode dans une carte SD dans une carte tout intégrée de pilotage d'imprimante 3D : ça ca me ferais bien rire à essayer, mais pas d'IA possible
* Utiliser un driver gérant les rampes, pas exemple les L6470 de ST qui sont piloté par un bus SPI et prennent des ordres de position avec profil d'acceleration, et gèrent tout, y compris la détection de perte de pas sans capteur !

Bref, des avantages et inconvénients existent pour les 2 solutions MCC et PAP, mais des solution relativement simples à mettre en œuvre existent pour les 2.
Le gros avantage du PAP, c'est d'éliminer le besoin d'asservissement pour avoir un robot qui va relativement droit, sans ondulations sur le chemin comme on le vois souvent avec MCC, et sans nécessiter de capteurs particuliers.
Le MCC reste une bonne solution qui a aussi fait ses preuves parmi les meilleurs de la coupe, mais ce niveau de précision n'est pas atteinte comme ça d'un coup de baguette magique.


Le sujet est ouvert, à vous d'ajouter vos expériences, problèmes rencontrés, solutions trouvées, corrections de mes erreurs, .... lâchez vous !

User avatar
nadar breicq
Posts: 381
Joined: Fri 07 Mar 2008, 09:49
Location: Amiens
Contact:

Re: Propulsion de robot avec des moteurs Pas à Pas

Post by nadar breicq » Fri 05 Oct 2018, 23:21

Il est un peu tard mais je vais mettre quelques petites idées. Je compléterais par la suite.

En gros je suis d'accord avec tous ce qu'a dit Arno. De notre coté, ce que l'on fait depuis quelques temps maintenant, c'est :
- Nema 23 avec transmission poulie courroie vers roues sur axe commun
- Pilotage avec des drivers genre imprimante 3D ( A4988 ou DRV8825 )
- Un uC qui gere le déplacement du robot en fonction d'infos reçu en i2C

Le uC de déplacement, c'est la partie du code qui est amélioré depuis 5 ans maintenant. On est partie de la lib AccelStepper et de uC Ardunio micro à l'époque. Aujourd'hui on a gardé plus ou moins la structure de AccelStepper avec quelques modifs mais on est passé sur du Teensy. On va peut être modifier beaucoup la lib cette année car y'a encore quelques lenteurs ...

Aujourd'hui on en est vachement satisfait et on va continuer sur cette lancée cette année. On a réussi à faire 27eme avec des déplacements précis sans gros décalages, et on a pas voulu augmenter trop la vitesse à la coupe. Après notre dernier match on a poussé un peu le robot et on s'est rendu compte que l'on pouvait multiplier la vitesse par 3 ... Vous pouvez voir nos déplacements et notre robot sur notre petite vidéo de présentation :
https://youtu.be/UjfzfY6sQC0

Ce que l'on aime sur les moteurs pas-à-pas :
- Précision et simplicité de mise en oeuvre dans les déplacements
- Taille de la partie puissance très limité
- Prix des moteurs ( les notre coutent 11€ piece ... ). Rapport qualité / prix / fiabilité j'ai pas trouvé mieux ...
- Encombrement et fixation des moteurs
- Le bruit ( :lol: )
- Le poids ( re :lol: )

Ce que l'on veut améliorer :
- Rajouter des codeurs serait plus du luxe aujourd'hui :)
- Les Nema23 nous obligent à passer sur une tension batterie de 24V. On avait un monstre en batterie ces deux dernières années, mais on va essayer des trucs plus petits.
- Le pilotage des phases des moteurs pas complètement simultanés ( mais ça c'est du à l'utilisation de la lib accelstepper )

Voila :) Et toutes les équipes que j'ai accompagnées et qui débutaient, je leur ai conseillé le PàP pour se tester et ils en sont très content ( encore aujourd'hui pour certaines équipes ;-) ).
Participez aux Joutes de robotique 2020 ! :wink:
Membre de l'équipe Les Karibous [2013][2014][2015][2016][2017][2018][2019][2020]
Vainqueur de la Makerfight 2019
FabManager du FabLab La Machinerie d'Amiens
Membre du club Valrobotik de Valenciennes [2009 - 2012]

User avatar
nadar breicq
Posts: 381
Joined: Fri 07 Mar 2008, 09:49
Location: Amiens
Contact:

Re: Propulsion de robot avec des moteurs Pas à Pas

Post by nadar breicq » Fri 05 Oct 2018, 23:24

Ha oui et je plussois aussi les remarques de Arno sur les limites du PàP, notamment :
- Bien dimensionner ses moteurs et la chaine de puissance pour le robot que vous souhaitez construire
- Ne pas demander des accelerations trop folles aux moteurs

Une fois que ça c'est réglé, franchement, c'est du bonheur :)
Participez aux Joutes de robotique 2020 ! :wink:
Membre de l'équipe Les Karibous [2013][2014][2015][2016][2017][2018][2019][2020]
Vainqueur de la Makerfight 2019
FabManager du FabLab La Machinerie d'Amiens
Membre du club Valrobotik de Valenciennes [2009 - 2012]

H0x7d0
Posts: 66
Joined: Thu 11 Jun 2009, 14:08

Re: Propulsion de robot avec des moteurs Pas à Pas

Post by H0x7d0 » Sat 06 Oct 2018, 11:21

Dans ce qui est moins bien avec les pas à pas ^^ (parce qu'aucune solution n'est parfaite):
1-Les moteurs sont souvent controlés en courant fixe. Donc peu importe l'energie nécéssaire, le robot consomme toujours autant.(même à l'arrêt... la contrepartie est de connaitre parfaitement le nombre de matchs faisable avec une batterie...mais ce sera moins qu'avec des moteurs CC)
2-Et donc à l'arrêt, les moteurs chauffent ^^
3-Dépendant du pas, il faut avoir un soft qui soit capable de suivre la cadence du/des moteur, en parrallèle des capteurs, et autres.
4-ça demande un peu de réglage:(si contrôlés trop faiblement, trop rapidement, risque de saut de pas...)
Les 3 derniers soucis se règlent en soft avec les librairies ci-dessus :) (enfin le moteur chauffera quand il avancera lentement, mais on peut le couper à l'arrêt)
Sinon, j'avais déjà vu un tuto pour utiliser les pas à pas comme encodeur:
https://www.pobot.org/Realisation-d-un-codeur.html
Enfin, contre le problème1&2, il existe des drivers de moteurs pas à pas avec gestion d'un encodeur:
https://www.omc-stepperonline.com/close ... cl57t.html
Ce qui règle le premier problème.Bien entendu, si ça existe, il est possible de le fabriquer plutôt que de l'acheter :p
L'idée étant que le driver ne donne que la quantité minimal de courant pour faire le saut de pas. Et s'il n'y arrive pas, il envoi un pin d'alarme pour prévenir. C'est particulièrement pratique sur les CNC, pour éviter que la machine ne décale en cas de manque de couple (ou quand on cogne un truc pas normal), et donc que la machine ne d’auto-détruise.
Il est possible de mettre le codeur sur le moteur, ou sur une roue externe.

H0x7d0
Posts: 66
Joined: Thu 11 Jun 2009, 14:08

Re: Propulsion de robot avec des moteurs Pas à Pas

Post by H0x7d0 » Sat 06 Oct 2018, 11:41

Sinon, perso, ça m'intéresse comme solution pour notre petit robot,(vu que ça permet une méca plus simple et compact que les moteurs CC équivalents).
Je pense à vu que nez qu'avec une carte RAMPS, ça devrait le faire pour un robot pas trop lourd, par contre, je me demandais si vous connaissiez d'autres cartes d'imprimantes 3D(parce que les cartes de cnc sont souvent plus limitées), avec notamment des pins de servo-moteurs?

nb: de base, sur les cartes ramps, il y a :
-5 drivers de moteurs PàP changeables quand on les crame
-6 interupteurs (pour les bumpers)
-(écran+controle)
-des gros mosfet pour (faire chauffer des trucs ou) faire tourner des turbines/moteurs CC sans retour
-une connexion uart pour dialoguer en bluetooth avec le module associé
-(j'aimerai bien un deuxième uart pour faire bouger de l'ax-12)
C'est assez minimaliste,mais pas tant que ça non plus.
Sinon, il y a aucune isolation de puissance, donc si on tire trop, il peut y avoir des retours plus ou moins dramatiques sur la partie logique. Conseil: ne pas lésiner sur des condensateurs entre la batterie et la carte)

arno
PMI
Posts: 746
Joined: Wed 23 Jun 2004, 21:51
Location: Un peu partout...

Re: Propulsion de robot avec des moteurs Pas à Pas

Post by arno » Sat 06 Oct 2018, 20:04

H0x7d0 wrote:
Sat 06 Oct 2018, 11:21
1-Les moteurs sont souvent controlés en courant fixe. Donc peu importe l'energie nécéssaire, le robot consomme toujours autant.(même à l'arrêt... la contrepartie est de connaitre parfaitement le nombre de matchs faisable avec une batterie...mais ce sera moins qu'avec des moteurs CC)
2-Et donc à l'arrêt, les moteurs chauffent ^^
Quand on arrête le robot, on redescend la consigne de courant pour avoir juste un léger couple résistant et ne pas vider les batteries. La consigne de courant est toujours pilotable de l'exterieur, faut juste avoir prévu un moyen de la piloter (le plus simple étant d'avoir une GPIO qui ajoute une résistance en parrallèle de celle de base pour avoir 2 seuils, sinon un DAC, un PWM, ou rien du tout pour les versions numériques).
H0x7d0 wrote:
Sat 06 Oct 2018, 11:21
4-ça demande un peu de réglage:(si contrôlés trop faiblement, trop rapidement, risque de saut de pas...)
Oui. Ce n'est pas comme si contrôler un robot en position avec des MCC ne demandais pas un peu de réglages non plus :wink:
H0x7d0 wrote:
Sat 06 Oct 2018, 11:21
Enfin, contre le problème1&2, il existe des drivers de moteurs pas à pas avec gestion d'un encodeur:
https://www.omc-stepperonline.com/close ... cl57t.html
Ce qui règle le premier problème.Bien entendu, si ça existe, il est possible de le fabriquer plutôt que de l'acheter :p
L'idée étant que le driver ne donne que la quantité minimal de courant pour faire le saut de pas. Et s'il n'y arrive pas, il envoi un pin d'alarme pour prévenir. C'est particulièrement pratique sur les CNC, pour éviter que la machine ne décale en cas de manque de couple (ou quand on cogne un truc pas normal), et donc que la machine ne d’auto-détruise.
Il faut bien voir que sur une CNC les 3 axes sont complètement découplées. Sur un robot typique à 2 roues, chaque variation sur un moteur va créer un décalage sur les 2 axes coordonnées du robot et sur le cap du robot, ce qui n'est pas corrigeable sur un seul axe. Il me parait plus intéressant de traiter des roues codeuses indépendante à un niveau supérieure au contrôle de chaque moteur. Dans la pratique ce que nous faisons, c'est les déplacements en boucle ouverte (ligne droite ou rotation sur soi), et on utilise la position estimée par les roues codeuses indépendantes pour planifier le déplacement suivant. Il suffit de connaître les limites d'accélération et de vitesse du robot et ne pas les dépasser pour que les décalages à chaque déplacement soient minimes. Les roues codeuses externe permettant de récupérer un peu de précision perdu avec les glissements de la roue sur la table.
H0x7d0 wrote:
Sat 06 Oct 2018, 11:41
Je pense à vu que nez qu'avec une carte RAMPS, ça devrait le faire pour un robot pas trop lourd, par contre, je me demandais si vous connaissiez d'autres cartes d'imprimantes 3D(parce que les cartes de cnc sont souvent plus limitées), avec notamment des pins de servo-moteurs?
D'après ce schéma du wiki reprap, il y aurait déjà 4 sorties servomoteur sur la version 1.4 : https://reprap.org/mediawiki/images/f/f ... ematic.png

Sinon, il existe la smoothieboard qui a un paquet d'interfaces pour des extensions et un proc véloce : http://smoothieware.org/smoothieboard-v1

johannes_turag
Posts: 6
Joined: Thu 26 Oct 2017, 13:50

Re: Propulsion de robot avec des moteurs Pas à Pas

Post by johannes_turag » Mon 08 Oct 2018, 10:12

Just because it kinda fits here, may I suggest the new stepper driver IC called TMC2130 from Trinamics?
It is really cheap and available on breakout boards with most of the necessary components.
We are planning to use it in the next season (however, not for moving our robot) and it is also used in the newest Prusa 3D printers.
It has awesome features like lost step detection and current adjustment optimizing the temperature loss. Also, the stealthChop mode is just fascinating, as the motors don't produce any sounds anymore.
Of course, talking to it is a little trickier if you want to do more than just step/dir interfacing. To access all additional features you have to use an SPI interface.

arno
PMI
Posts: 746
Joined: Wed 23 Jun 2004, 21:51
Location: Un peu partout...

Re: Propulsion de robot avec des moteurs Pas à Pas

Post by arno » Sat 13 Oct 2018, 00:37

Hi Johannes !
johannes_turag wrote:
Mon 08 Oct 2018, 10:12
Also, the stealthChop mode is just fascinating, as the motors don't produce any sounds anymore.
Would you care to explain on which principle this stealtChop is based to reduce the sound ? I read quickly through the datasheet and that is not quite clear for me.

Sound in steppers come from several sources I can think of:
* the current control done through chopping the input voltage (like PWM) => not hearable if chopping frequency is high enough
* mecanical steps => reduced through micro-stepping
* mecanical resonance of the stepper coils due to the magnetic field resulting in a force on the coil copper => sound frequency proportional to the speed, not much to be done here except reducing current which reduces torque...

So what can they do to reduce sound ? Did I miss something ?

User avatar
romain_cvra
PMI
Posts: 1234
Joined: Sat 30 Jun 2007, 16:17
Location: suisse
Contact:

Re: Propulsion de robot avec des moteurs Pas à Pas

Post by romain_cvra » Mon 15 Oct 2018, 09:45

I confirm that the difference in noise is impressive!
We have a Prusa MK3 3D printer that uses the stealthChop of the Trinamics drive. It makes almost no noise compared to the Prusa MK2 which has none.
The only noise is during rapid movement and it is the recirculation of the balls in the ball guide that produces it.

I never use a PaP motor in robotics but in the world of 3d printing, Trinamics drivers are considered the best.

Romain
Site web : http://www.cvra.ch.
Le code source : GitHub
Visualisation CAO 3D de nos robots : GrabCAD

johannes_turag
Posts: 6
Joined: Thu 26 Oct 2017, 13:50

Re: Propulsion de robot avec des moteurs Pas à Pas

Post by johannes_turag » Mon 15 Oct 2018, 12:35

As far as I can recall, they use constant voltage instead of constant current and by that they don't force the motor into the new position but rather "suggest" a new position. In the end, they drive a stepper motor very similar to a BLDC or synchronous motor I think.

Here is a video explaining it in more detail: https://www.youtube.com/watch?v=Q0sJlGh9WNY
And here they compare the motor torque in stealthChop mode: https://www.trinamic.com/fileadmin/asse ... arison.pdf

arno
PMI
Posts: 746
Joined: Wed 23 Jun 2004, 21:51
Location: Un peu partout...

Re: Propulsion de robot avec des moteurs Pas à Pas

Post by arno » Mon 15 Oct 2018, 23:34

Thanks for the feedback and links, I missed those new drivers in the 3d community (I'm stuck to previous generation).
Vidéos indeed shows a great reduction in noise. Not sure I can yet explain how, but it is doing some tricky stuff ;)

I will miss playing the Mario bros theme on steppers through Gcode to test they are working :D

Post Reply