Skip to content

Déterminer la fréquence de pulse maximale d'un moteur pas à pas

Ce que l'on va faire ici

Nous allons voir ici comment tester la fréquence de pulse maximale d'un moteur pas à pas. Cette fréquence, appelée pps (pulse per second) dans les documentations des fabricants (courbe de couple), est la fréquence maximale possible pour les pas moteurs au-delà de laquelle le moteur ne tournera plus mais vibrera seulement.

Connaître cette ppsMax est important et utile pour la conception de machine : cette ppsMax correspond à la limite supérieure de la courbe de couple et il sera illusoire de vouloir obtenir des vitesses au-delà de cette valeur. En réalité, les fréquences de pulse max utilisables avec du couple seront de l'ordre de 30% de la pps max ainsi trouvée.

Aspect mathématiques

Un moteur a un nombre de pas physique que l'on peut noter nbPas. La fréquence maximale de pulse peut se noter ppsMax en puls/sec.

Sans microstepping (= fullstep) :

  • Pour un pps donné, la vitesse de rotation vaut vRot=pps/nbPas
  • La vitesse de rotation maximale en tour par seconde vaut vRotMax=ppsMax/nbPas tr/sec

Avec microstepping (= microstepping) :

  • Pour un pps donné, la vitesse de rotation vaut vRot=pps/nbPas*microStep tr/sec
  • La vitesse de rotation maximale en tour par seconde vaut vRotMax=ppsMax/nbPas*microStep tr/sec

Matériel nécessaire

Pour cela nous avons besoin :

  • d'une logique de commande, par exemple une SCMB programmée avec Smoothieware ce qui permettra d'avoir la fréquence de pulse la plus élevée possible
  • d'un étage moteur externe (réglage du microstepping par switch)
  • d'une alimentation externe
  • du moteur pas à pas bipolaire à tester.
  • un oscilloscope de mesure de la pps

Le montage à réaliser

Le montage à réaliser est le suivant :

Procédure de test

Pour ce simple test, on communique avec Smoothiware depuis un terminal série, le plus simple étant d'utiliser le terminal série Arduino. Tester la bonne réponse de la carte avec la commande help par exemple, ce qui donne :

On va commencer par configurer Smoothieware de façon adéquate pour notre test. On a 2 options pour cela :

  • soit en par commandes depuis le terminal série,
  • soit en éditant le fichier config.txt

On commence donc par adapter le paramétrage de GRBL pour notre test, à savoir :

  • fixer la vitesse de X à 60 steps/mm :
    • soit avec la commande config-set alpha_steps_per_mm 60
    • soit au niveau de la ligne suivante du fichier config.txt : alpha_steps_per_mm 60 # Steps per mm for alpha
  • fixer également la vitesse max de X à une valeur élevée pour éviter tout "blocage" par le firmware du pulse max :
    • soit avec la commande config-set x_axis_max_speed 100000 et config-set alpha_max_rate 100000
    • soit au niveau de la ligne suivante du fichier config.txt : x_axis_max_speed 1000000 # mm/min et alpha_max_rate 1000000.0 # mm/min
  • on peut également fixer une accélération plutôt haute pour que le train de pulse s'installe rapidement en faisant :
    • soit avec la commande config-set acceleration 1000
    • soit au niveau de la ligne suivante du fichier config.txt : acceleration 1000 # acceleration

Une fois fait, faire un reset sur la carte et à la connexion suivante, vérifier les valeurs courantes avec :

  • config-get alpha_steps_per_mm
  • config-get x_axis_max_speed
  • config-get alpha_max_rate
  • config-get acceleration

On envoie des ordres successifs de mouvement avec des vitesses de plus en plus élevées via le paramètre F et on essaie de trouver le point de blocage, c'est à dire la fréquence max de pulse au delà de laquelle il n'y a plus d'augmentation, même si on augmente la vitesse.

Pour cela :

  • on commence par envoyer un ordre G91 pour passer en relatif (çà simplifie le comportement du firmware dans notre cas)
  • on envoie une série d'ordre de la forme G1 X100.0 F8888 : adapter la valeur en X en fonction de la durée du train de pulses et la valeur de F est à adapter en fonction du test.

Test d'un moteur NEMA 17 - 59N.cm

Régler correctement l'intensité moteur

L'intensité de phase d'un NEMA 17 est 2A max, donc fixer le Imax de l'étage moteur à cette valeur.

Pour mémoire, l'inertie du rotor annoncée par le fabricant vaut 82 g.cm²

Mode ppsMax (acc=100mm.s⁻²) ppsMax (acc=1000mm.s⁻²)
1/1 1650 1650
1/8 64000 (8000) 64000
1/16 128000 (8000 equiv fullstep) 128000

Donc :

  • le microstepping améliore considérablement la Vmax (x5)
  • l'accélération ne modifie pas fondamentalement la VMax du moteur libre (probablement différent du moteur avec entraînement du fait inertie)
  • la Vmax d'un NEMA 17 en 1/16 est 8000 pps equiv full step soit 40 tr/sec et donc par exemple maximum de 1600mm/sec si entraînement 40mm/tour

Test d'un moteur NEMA 23 - 128N.cm

Régler correctement l'intensité moteur

L'intensité de phase d'un NEMA 23 de ce type est 4A max, donc fixer le Imax de l'étage moteur à cette valeur. """)

Pour mémoire, l'inertie du rotor annoncée par le fabricant vaut 300 g.cm²

Mode ppsMax (acc=100mm.s⁻²) ppsMax (acc=1000mm.s⁻²)
1/1 1250 1250
1/4 36000 (9000 equiv fullstep)
1/8 64000 (8000 equiv fullstep) 64000 (équiv 8000!)
1/16 70000 (4375 equiv fullstep) 64000 (equiv 4000)

Donc :

  • le microstepping améliore considérablement la Vmax (x5)
  • le microstepping au-delà de 1/8 le microstepping n'améliore plus la pps... (1/8)
  • l'accélération modifie améliore +/- légèrement la VMax du moteur libre
  • la Vmax d'un NEMA 23 en 1/8 est 8000 pps equiv full step soit 40 tr/sec et donc par exemple maximum de 1600mm/sec si entraînement 40mm/tour...
  • mais seulement 4375pps en 1/16 !

Test d'un moteur NEMA 23 - 300N.cm

Régler correctement l'intensité moteur

L'intensité de phase d'un NEMA 23 de ce type est 4A max, donc fixer le Imax de l'étage moteur à cette valeur.

Pour mémoire, l'inertie du rotor annoncée par le fabricant vaut 800 g.cm²

Mode ppsMax (acc=100mm.s⁻²) ppsMax (acc=1000mm.s⁻²)
1/1 1100 xxxx
1/4 10000 (2500 equiv fullstep)
1/8 25000 (3125 equiv fullstep) xxxxx (équiv 8000!)
1/16 60000 (3750 equiv fullstep) xxxxx (equiv 4000)

Un rapide test en 1/32 montre qu'on ne fait pas mieux qu'en 1/16.

Donc :

  • le microstepping améliore considérablement la Vmax (x2-3)
  • mais l'impact est moindre que précédemment du fait de l'inertie croissante du rotor... L'inertie fait "écrouler" le ppsMax...
  • le microstepping n'a pas ici le même effet et on a tendance à être mieux en 1/16 pour la VMax
  • l'accélération modifie améliore +/- légèrement la VMax du moteur libre
  • la Vmax d'un NEMA 23 300N.cm en 1/16 est 3750 pps equiv full step soit 18,75 tr/sec et donc par exemple maximum de 750mm/sec si entraînement 40mm/tour...

Test d'un moteur NEMA 34 - 1300N.cm

Régler correctement l'intensité moteur

L'intensité de phase d'un NEMA 23 de ce type est 5A max, donc fixer le Imax de l'étage moteur à cette valeur.

Pour mémoire, l'inertie du rotor annoncée par le fabricant vaut 3600 g.cm² (soit x 4.5 par exemple par rapport à un NEMA 23-300N.cm... , x 12 par rapport à un NEMA 23-126N.cm et soit x 44 par rapport à un NEMA 17-59N.cm !!)