Besoin d'aide pour faire fonctionner 2 stepper en meme temps sur arduino

  • Auteur de la discussion fick
  • Date de début
fick
fick
Nouveau
23 Nov 2014
4
lille
  • Auteur de la discussion
  • #1
Bonjour a tous,

Je vous explique mon problème je suis en cours de fabrication d'une bobineuse, (1 nema23 et 1 nema17, un A4988 et ST6600 via arduino), est je n'arrive pas a faire fonctionner les 2 steppers en même temps, mais j'y arrive l'un après l'autre.

Voici mon code :
quelqu'un pourrait il m'aider ? sachant que les branchement sont correct

Merci d'avance !

Fick
 
P
psemel
Ouvrier
21 Mar 2009
400
oise
bonjour,

j'ai la même chose sur une autre application, mais cela n'est pas gênant pour moi.

il faut réduire le nombre de pas du guide et de l'axe. en faisant une boucle pour arriver aux valeurs.
Void loop()

int a=-1;
I=0;
J=-2350;
for(i=I i=J step a)
{
run stepper guide (i);
run stepper axe (10000000/i);
}
int a=1;
I=-2350;
J=0;
for(i=I i=J step a)
{
run stepper guide (i);
run stepper axe (10000000/i);
}
fin de boucle
 
gégé62
gégé62
Compagnon
26 Fev 2013
2 863
Harnes (Pas de Calais)
je n'ai pas tout analysé dans les réponses déjà faites, mais à tout hasard, ne serait-ce pas un problème lié au timer interne du micro, qui est utilisé pour gérer le PWM, et qui ne peut pas "faire 2 choses en même temps".?
 
fick
fick
Nouveau
23 Nov 2014
4
lille
  • Auteur de la discussion
  • #5
Alors avant tout merci pour vos réponses :-D. Une partie du problème a été résolu, "runToNewPosition" est bloquant( tout comme la fonction step de la librairie arduino) c'est a dire que tant que le stepper n'a pas atteint la position le programme est en pause, donc j'ai changé de fonction avec " .move".
Et pourquoi j'utilise la librairie accelstepper ? il y a plus de fonctions et elle permet de gérer l’accélération, cela permet d'avoir une vitesse plus importante avec les steppers, car si on met une vitesse de 8000 steps directement le moteur "grogne", alors que si l’accélération est par exemple de 6000 et la vitesse de 8000 il atteint cette vitesse sans problème mais par "étape".

Sinon j'ai réussi a faire fonctionner les 2 steppers mais celui de l'axe grogne au bout de 2seconde, voici mon code ?

 
nopxor
nopxor
Compagnon
27 Mai 2010
1 412
Yvelines
As-tu vérifié le réglage du courant du driver ? Ainsi que le câblage est bien correct ?
Est-ce que tu arrives à le faire tourner correctement seul ?
Es-tu sûr de l'alimentation ?
C'est lequel qui grogne, Axe ou guide ? 17 ou 23 ?

La pin 1 est utilisée pour chaque moteur.
C'est bizarre.
 
Dernière édition:
fick
fick
Nouveau
23 Nov 2014
4
lille
  • Auteur de la discussion
  • #7
oui j'ai verifié le réglage du courant du driver, c'est le nema 23 donc l'axe, et il ne grogne pas quand il fonctionne seul. pour l'alimentation j'ai une alimentation 12V 18A pour le nema 17 et une Alim 36V 4A pour le nema 23 donc pas de problème de ce coté. Pour le pin 1, en fait ce n'est pas le pin 1, c'est pour dire que les steppers son contrôler par un driver !

ÉDITE: Sinon toujours le même problème le nema 23 (Axe) se met a grogner et ne fonctionne plus au bout de 2 seconde alors que le nema17 (Guide) fonctionne parfaitement. Je suis sur que c'est du au programme a cause du ".run" mais je ne sais pas le corriger .
 
Dernière édition:
nopxor
nopxor
Compagnon
27 Mai 2010
1 412
Yvelines
la fonction moveTo attend une variable de type long (32 bits) donc comprise entre -2 147 483 648 et 2 147 483 647.
Or tu as un argument égal à 10 000 000 000.
Il y a débordement. :sad:
 
nopxor
nopxor
Compagnon
27 Mai 2010
1 412
Yvelines
Tes boucles "tant qu'il reste du chemin à parcourir" n'ont pas vraiment lieu d'être puisque la fonction run est appelée pour cela.
En plus elles sont pas mal imbriquées...
 
fick
fick
Nouveau
23 Nov 2014
4
lille
  • Auteur de la discussion
  • #10
Avant tout désolé pour le temps de ma réponse j’ai été occupé ce week-end.


Nopxor : merci pour le long, c'est corrigé mais le problème est toujours là !


Et je sais pas comment faire autrement pour les boucles, en gros j'aimerai pouvoir faire tourner l'axe X fois et lorsque c'est fini, guide arrête de faire des aller-retour (-1800 jusque 0, 0 jusque -1800, ...)


De plus, je viens de voir que si j'utilise la fonction runToNewPosition, le stepperGuide bouge plus vite et en faisant moins de bruit. que si j'utilise move. La fonction move n'utilise pas la gestion de l’accélération, j'ai l'impression, rien trouver dans la référence ?


Sinon j'ai la solution de facilité utiliser 2 arduino 1 pour chaque moteur, mais je trouve cela un peu bête d'avoir un microcontrôleur avec autant de pin et de l'utiliser que pour un stepper ... C’est ce que je fais en attendant d’avoir trouvé mieux
 
La dernière réponse à ce sujet date de plus de 6 mois
Haut