Général Vitesse moteur PAP

  • Auteur de la discussion Mcar
  • Date de début
Mcar
Mcar
Compagnon
Bonsoir,

je teste un moteur pap 42BYGHM810 (ici http://www.wantmotor.com/product/42BYGHM_EN.html ) 400 pas/tr, associé à un driver TB6600 le tout connecté à un Arduino. ce genre de driver
1616189159801.png

l'alimentation est une 24Vcc 10A
je n'arrive à monter au dessus de 280tr/mm avec la Lib AccelStepper
le micro stepp est reglé sur 4 (800) et l'intensité sur 1,5A
voici mon programme :


est ce normal avec cette configuration ou ai je fais une erreur ?
merci pour votre soutien
 
I
isul
Apprenti
Le moteur supporte 2,4 A il faut régler à cette intensité.
Amha la tension de 24v est insuffisant. Selon la vitesse souhaitée, il faut adapter la tension.
Plus de vitesse = plus de voltage
 
S
speedjf37
Compagnon
Bonjour,

Quelle est la limitation ?
La fréquence des steps ,le driver qui ne suit pas ou le moteur qui décroche ?

Quel moyen de mesure (fréquencemètre , oscilloscope ) ?

Cordialement JF
 
Mcar
Mcar
Compagnon
Bonjour à tous, merci pour vos reponses

@speedjf37 , c'est le moteur qui décroche.

@isul suite aux remarques ,
le micro step n'est pas changer , sur la pos. 4 soit 1600 pulse/sec. = 60 tr/mm
j'ai mis une alim 36V boosté à 38V et réglé l'intensité à 2,5A
j'arrive monter la vitesse à 384 tr/mm ensuite le moteur décroche.
avec l alim à 36V réglé l'intensité à 2,A
j'arrive monter la vitesse à 360 tr/mm
avec une alim 24V boosté à 28V réglé l'intensité à 2,A
j'arrive monter la vitesse à 324 tr/mm

petit retour d'expérience pour un néophyte que je suis dans ce domaine ,
ce qui confirme les propos de @isul (merci)


ma question,

le choix de mon driver TB6600 sur le réglage de l'intensité est de :
2,0 A en normal et 2,2A max ou
2,5 A en normal et 2,7 en pic
sachant que mon moteur supporte 2,4 A et afin d'avoir la vitesse la plus vite possible
puis je le régler à 2,5A sans risquer de l'endommager ?
 
T
topette79200
Apprenti
bonjour
il se pourrait aussi que la largeur d impulsion ne soi pas optimisée pour ce drivers
dans la librairie accelstepper il y a une fonction qui permet de régler la largeur d impulsion. peut être a essayer
file:///F:/librairie/stepperAccel/doc/classAccelStepper.html#af4d3818e691dad5dc518308796ccf154

fonction : setMinPulseWidth
bonne journée
 
Mcar
Mcar
Compagnon
j'ai fait différents essais avec cette fonction setMinPulseWidth ()
suivant la doc il semble que 20 est un minimum,
mis 18,20,25,30 et honnêtement je vois pas de différence.
 
T
topette79200
Apprenti
il est ecris dans la doc de accelstepper
PerformanceThe fastest motor speed that can be reliably supported is about 4000 steps per second at a clock frequency of 16 MHz on Arduino such as Uno etc.

ton moteur fait 400pas/trs, ton driver est réglé sur 800 ---> donc ton moteur fait 1/2 tour / 800 pas
--> 1tr/1600 step
tu arrive a environ 300 tr/min ---> 5 tr/seconde
5(tr/s)x 1600 (step/tr) =8000 step/s
tu es peut être a la limite des possibilités de l arduino . il y a la librairie Serial qui prend aussi des ressources. essaies sans cette librairie.
 
B
benny1964
Apprenti
Bonjour
j'ai eu le même problème que toi ; j'ai tout essayé changer le pap, le driver et j'ai modifié les paramètres de AccelStepper mais ça n'a rien donné. Mais curieusement les grandes vitesses ont bien fonctionné avec la carte Nvum et mach3 (plus que 1000 rpm !). Alors j'ai essayé avec un générateur de signaux et un oscilloscope: j'ai remarqué que quand on démarre avec la vitesse à fond le moteur se bloque et quand on monte la vitesse doucement il fonctionne très bien à des hautes vitesses (pour un pap bien sur). C'était ça le problème: quand tu demande 600 rpm , AccelStepper fait tourner le moteur immédiatement à 600 rpm et le pap se bloque (pour moi: maxi 230 rpm avec nema 34 et nema 23 et quelques soit la résolution).
Alors j'ai écris quelques fonctions pour arduino qui gère l'accélération et en démarrant toujours par 180 rpm, et j'ai laissé tomber AccelStepper.
 
V
vres
Compagnon
C'est vrai AccelStepper comme son nom l'indique doit gérer l'accélération non ? :smt017
 
B
benny1964
Apprenti
Peut-être y a quelque chose qui m'a échappé pour AccelStepper mais je peux dire que arduino ,surtout la Due, peut fournir des fréquences très élevés pour faire tourner les pap à des grandes vitesses quelque soit la résolution.
 
T
topette79200
Apprenti
il y a la fonction : setAcceleration()
attention ensuite il faut utiliser : run() , qui tient compte de l accélération et décélération et pas runspeed() qui fait vitesse constante, il me semble
a+
 
R
Rom'
Compagnon
A une époque toshiba à vendu un paquet de TB qui étaient buggés, qui se sont retrouvés sur le marché des drives à bas cout, selon le datecode tu peux savoir si vérolés ou pas....
C'est peut etre une piste...
 
J
Jmr06
Compagnon
Comme déjà dit, il faut une rampe d'accélération pour atteindre les grandes vitesses. Dans le code, je ne vois pas où l'accélération est paramétrée. Les possibilités de causes à explorer :
- accélération mal programmée. C'est le premier point à vérifier.
- le logiciel sur l'Arduino n'est pas assez rapide et pas prévu pour ces fréquences (je n'y crois pas trop, mais possible)
- le moteur est bien à vide ? Si le moteur est en charge, le courant et la tension max peuvent limiter la vitesse
- matériel défaillant. On ne sait jamais, mais peu probable. A explorer en dernier à mon avis.
 
S
speedjf37
Compagnon
sachant que mon moteur supporte 2,4 A et afin d'avoir la vitesse la plus vite possible
puis je le régler à 2,5A sans risquer de l'endommager ?

Tant que tu peux poser la main sur le moteur sans te bruler c'est bon (50/60°) !

JF
 
B
benny1964
Apprenti
AccelStepper est une usine à gaz et complexe et qui gère beaucoup de choses qu'on n'utilise pas forcement. A mon avis si on a besoin de 1 ou 2 fonctions pour faire tourner un seul pap on peut facilement s'en passer de cette bibliothèque.
 
gégé62
gégé62
Compagnon
Oui je confirme il faut imposer une rampe d'accélération, celle-ci ne peut pas être infinie. Pour info j'ai ramé pas mal il y a quelque semaines avec un moteur brushless, certes c'est différent car il a 3 phases, mais la problématique est voisine.
C'était à titre d'autoformation notamment pour l'utilisation "en direct" des interruptions, sans utiliser la fonction dédiée arduino ni aucune bibliothèque. J'ai fait tourner jusque 5000 t/mn environ, la limite étant toujours un problème d'accélération, plus on va vite et plus il faut qu'elle soit douce, on comprend ça quand on fait le programme.
Il n'y a rien de transcendant, mais cela nécessite d'apprendre à bien connaître les "timers", la doc Atmel est bien faite mais il faut quand même s'accrocher, et j'ai trouvé quelques sites qui aident bien aussi.
Si tu es intéressé je peux donner des détails et des sketches (arduino Uno) du genre démarrage avec rampe, puis palier à vitesse constante. Je pense que l'adaptation d'un sketche vers un moteur PaP n'est pas difficile, ce sont tous des moteurs synchrones.
 
Dernière édition:
B
benny1964
Apprenti
- le logiciel sur l'Arduino n'est pas assez rapide et pas prévu pour ces fréquences (je n'y crois pas trop, mais possible)
J'ai vérifié avec l'oscilloscope que sur une sortie, arduino peut fournir assez de signaux (fréquence) pour faire tourner un pap à de vitesse haute
 
Mcar
Mcar
Compagnon
Merci pour vos réponses, très instructif pour le béotien que je suis mécanicien de formation, merci pour toutes ces reponses
j'utilise accelStepper justement pour pouvoir gérer les accélérations et décélérations .

mon applicatif sera pour un ascenseur de stockage pour mes rames de train
voir ici , voir à 25 sec.

ascenseur en cours de réalisation usinage
IMG_20210108_142329.jpg

le moteur ne sera pas le même (Nema 23)

mais au bureau c'est plus facile de tester mon programme :mrgreen: , avec un petit moteur et mes questionnement seront applicable au Nema 23
pour votre info, j'ai appris spécialement le langage C de arduino pour ce projet :-D (rien ne m'arrête :hang:) je ne suis donc pas un specialiste

donc en conclusion, je vais intégrer les courbes d'accélérations et décélérations de suite pour mes tests et refaire les essais de vitesse.
pour la petite histoire, je dois déplacer cet ascenseur sur 660 mm avec une vis à bille de pas 5mm , et je voudrais environ 20sec. pour le déplacement total. soit une vitesse de moteur pap à 400 tr/mm environ. d'où mon etude sur la vitesse :mrgreen:
 
V
vres
Compagnon
Oui mais attention ici c'est des 0.9° a vitesse égale la fréquence bobinage est 2 fois supérieure.
 
Mcar
Mcar
Compagnon
Bonjour à vous tous,
j'ai donc mis en application vos messages et plus particulierement les accelerations et decelerations
j'arrive à 600 tr/mm :smt038
donc j'ai réglé mon moteur à 504 tr/mm soit une fréquence de 3360 par sec.
le microstep et reglé à 1 soit pour une vitesse de 400 step/sec je sui à 60 tr/mm
voici le programme de test :

et une petite vidéo mais j'ai l'impression que le moteur décroche un peu au debut de l'accélération,

 
jpbbricole
jpbbricole
Compagnon
Bonjour Marco

Ah! le train électrique, c'est magique!

En son temps, j'avais fait un programme qui permet de commander un MPAP tout en modifiant ses paramètres et ceci au moyen de commandes "envoyées" depuis la console de l'IDE Arduino.
Ca évite de compiler à chaque modification.

Si tu est intéressé, je peux le réactualiser, il faudrait que je "dépoussière" un peu!
Les commandes seraient:
SETSPEED, SETMAXSPEED, SETACCELERATION, MOVE et MOVETO

Cordialement
jpbbricole
 
Mcar
Mcar
Compagnon
Bonjour Jpbbricole,

j'utilise accelStepper mais c'est compliqué pour mes petites connaissances dans ce domaine.
je me fais des petits bout de programme comme celui affiché plus haut pour comprendre cette library et définir la meilleur méthode pour mes besoins.
définitivement l'accélération et deceleration me fait perdre des pas ce qui est incompatible avec la precision nécessaire., ce que je ne comprends pas d'ailleurs.
et il faut absolument dans mon contexte que j'accélère et décélère doucement car je vois mal mes rames de train s'envoler à cause d'un mouvement trop brusque.

donc oui je suis intéressé, merci pour ta proposition.
 
wika58
wika58
Compagnon
Salut Marco,

C'est vrai qu'au démarrage on dirait que le MPAP rate des pas.

Sur les tests que je suis en train de faire sur la motorisation des 3 axes de ma BF28, j'ai aussi remarqué l'importance des rampes d accélération.
Avec mes modules GI, je ne peux gérer cela.
Mais par exemple sur le Z, si j'accélère progressivement, je peux monter à des vitesses 3 à 4 fois plus importantes.

Je devrais poster des vidéos ce soir.

Bonne continuation sur ton élévateur de voies de trains.
 
V
vres
Compagnon
Un moteur Pas à Pas ne peut pas tourner a haute vitesse sans accélération. En revanche en dessous d'une certaine vitesse le moteur Pas à Pas peut démarrer sans accélération, cette vitesse s'appelle la vitesse start/stop.
Cette vitesse dépend du rapport entre le couple du moteur et le couple résistant.
 
wika58
wika58
Compagnon
Interessant :smt023

Peut-on déterminer (ou est-elle donnée par le constructeur) cette vitesse start/stop?
 
V
vres
Compagnon
Non, comme je le disais ça dépend du couple de maintien et du couple résistant, si tu as un moteur ayant un fort couple de maintien et un faible couple résistant tu auras une vitesse start/stop élevée.
 
wika58
wika58
Compagnon
Ok.
Donc je déterminerai cette vitesse par essais successifs.
 
jpbbricole
jpbbricole
Compagnon
Bonjour Marco

J’ai revu, un peu, mon utilitaire qui permet de « bidouiller » les paramètres de commandes du driver MPAP, je l’ai adapté à la bibliothèque AccelStepper. J’ai pris la version 1.61.
Le programme est configuré pour travailler avec des drivers qui ont STEP, DIR et ENA comme signaux de commande. La plus part du temps ces signaux sont actifs HIGH, sauf ceux du type A4988 ENA est actif LOW. Cette ligne, dans setup() permet de les inverser si nécessaire.
La liste des commandes est
SETSPEED=
SETMAXSPEED=
SETACCELERATION=
MINPULSWIDTH=
MOVE=
MOVETO=
La commande ? permet de les lister.

La syntaxe des commandes n’est pas sensible majuscule/minuscule. L’introduction se fait dans la console de l’IDE Arduino à 115200
1616417646322.png
1616417657469.png



Au départ, les paramètres sont ainsi :

Détail de quelques commandes :
MOVE=
Déplacement relatif

MOVETO=
Déplacement absolu

Ces 2 types de déplacements utilisent la fonction runToPosition() qui gère l’accélération/décélération, donc la vitesse est réglée par le paramètre setMaxSpeed() (commande SETMAXSPEED=).

SETACCELERATION=
Plus cette valeur est petite, plus l’accélération est progressive.

Les valeurs introduites ne sont pas mémorisées en cas d’extinction de l’Arduino, ce peut être un ajout au programme, si nécessaire. N’hésites pas, si tu as besoin d’autres fonctions.

Le programme :

Pour ton ascenseur à trains, si tu as besoin d’un coup de main…



Cordialement

Jpbbricole
 
Mcar
Mcar
Compagnon
Un grand merci @jpbbricole
je regarde tout ça de près ce soir. et je reviendrais vers toi assurément vu mes connaissances dans ce domaine :-D j'utilise aussi accelStepper
j'arrive à monter dans les tours avec une accélération maintenant je suis monté jusqu' à 800tr/mn :mrgreen:
mais paradoxalement lorsque j'applique l'accélération c'est dans les premiers tours que le moteur décroche à environ 5-10 tr/mn et cela à l'accélération comme à la deceleration.
 

Sujets similaires

Mcar
Réponses
15
Affichages
8 355
Doctor_itchy
D
gaston83
Réponses
123
Affichages
2 317
gaston83
gaston83
gaston83
Réponses
65
Affichages
7 125
rokag3
R
V
Réponses
62
Affichages
36 106
Dardar88
Dardar88
M
Réponses
185
Affichages
19 126
wika58
wika58
V
Réponses
7
Affichages
1 377
vibram
V
jpbbricole
Réponses
18
Affichages
3 614
jpbbricole
jpbbricole
jpbbricole
Réponses
1
Affichages
1 176
pinou29
pinou29
Haut