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

fick
Nouveau
23 Novembre 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 :
Code:
#include <AccelStepper.h>

AccelStepper stepperAxe(1,3,4);
AccelStepper stepperGuide(1,5,6);


void setup()
{
    stepperAxe.setMaxSpeed(6000); // 15000max
    stepperAxe.setAcceleration(4000);// 4000max
    stepperAxe.setSpeed(6000);
    stepperAxe.runSpeed();
  
  
    stepperGuide.setMaxSpeed(8000);//8000max
    stepperGuide.setAcceleration(6000);//6000max
  
  
}
void loop()
{ 
     stepperGuide.runToNewPosition(-2350);
     stepperGuide.runToNewPosition(0);
     StepperAxe.runToNewPosition(10000000000);
   

}
quelqu'un pourrait il m'aider ? sachant que les branchement sont correct

Merci d'avance !

Fick
 
psemel
Ouvrier
21 Mars 2009
384
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
 
nopxor
Compagnon
27 Mai 2010
1 413
Yvelines
Bonjour,

Plusieurs exemples d'utilisation de MultiStepper là:
http://www.airspayce.com/mikem/arduino/AccelStepper/examples.html


Notamment:
Code:
// MultiStepper.pde
// -*- mode: C++ -*-
//
// Shows how to multiple simultaneous steppers
// Runs one stepper forwards and backwards, accelerating and decelerating
// at the limits. Runs other steppers at the same time
//
// Copyright (C) 2009 Mike McCauley
// $Id: MultiStepper.pde,v 1.1 2011/01/05 01:51:01 mikem Exp mikem $
#include <AccelStepper.h>
// Define some steppers and the pins the will use
AccelStepper stepper1; // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5
AccelStepper stepper2(AccelStepper::FULL4WIRE, 6, 7, 8, 9);
AccelStepper stepper3(AccelStepper::FULL2WIRE, 10, 11);
void setup()
{
    stepper1.setMaxSpeed(200.0);
    stepper1.setAcceleration(100.0);
    stepper1.moveTo(24);
  
    stepper2.setMaxSpeed(300.0);
    stepper2.setAcceleration(100.0);
    stepper2.moveTo(1000000);
  
    stepper3.setMaxSpeed(300.0);
    stepper3.setAcceleration(100.0);
    stepper3.moveTo(1000000);
}
void loop()
{
    // Change direction at the limits
    if (stepper1.distanceToGo() == 0)
        stepper1.moveTo(-stepper1.currentPosition());
    stepper1.run();
    stepper2.run();
    stepper3.run();
}
 
fick
Nouveau
23 Novembre 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 ?

Code:
#include <AccelStepper.h>

AccelStepper stepperAxe(1,3,4);
AccelStepper stepperGuide(1,5,6);


void setup()
{ 
    stepperAxe.setMaxSpeed(6000); // 15000max
    stepperAxe.setAcceleration(4000);// 4000max

    stepperAxe.moveTo(10000000000);
   

   
   
    stepperGuide.setMaxSpeed(8000);//8000max
    stepperGuide.setAcceleration(6000);//6000max
   
   
}
void loop()
{  
    
    
     while ((stepperAxe.distanceToGo() != 0))
     {
        stepperGuide.move(-1800);//-2350
       
       
        while ( ( stepperGuide.distanceToGo() != 0 )  )
        {
            // On appel run en boucle
            stepperGuide.run();
            stepperAxe.run();
        }
   
        stepperGuide.move(-stepperGuide.currentPosition());

     while ( ( stepperGuide.distanceToGo() != 0 )  )
     {
        // On appel run en boucle
        stepperGuide.run();
        stepperAxe.run();
     }
    }

}
 
fick
Nouveau
23 Novembre 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:
fick
Nouveau
23 Novembre 2014
4
lille
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