1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

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

Discussion dans 'Electronique spécifique CNC' créé par fick, 2 Mars 2016.

  1. fick

    fick Nouveau

    Messages:
    4
    Inscrit:
    23 Novembre 2014
    Localité:
    lille
    Besoin d'aide pour faire fonctionner 2 stepper en meme temps sur arduino
    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
     
  2. psemel

    psemel Ouvrier

    Messages:
    277
    Inscrit:
    21 Mars 2009
    Localité:
    oise
    Besoin d'aide pour faire fonctionner 2 stepper en meme temps sur arduino
    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
     
  3. nopxor

    nopxor Compagnon

    Messages:
    1 364
    Inscrit:
    27 Mai 2010
    Localité:
    Yvelines
    Besoin d'aide pour faire fonctionner 2 stepper en meme temps sur arduino
    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();
    }
     
  4. gégé62

    gégé62 Compagnon

    Messages:
    1 423
    Inscrit:
    26 Février 2013
    Localité:
    Harnes (Pas de Calais)
    Département:
    62440
    Besoin d'aide pour faire fonctionner 2 stepper en meme temps sur arduino
    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".?
     
  5. fick

    fick Nouveau

    Messages:
    4
    Inscrit:
    23 Novembre 2014
    Localité:
    lille
    Besoin d'aide pour faire fonctionner 2 stepper en meme temps sur arduino
    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();
         }
        }
    
    }   
    
    
     
  6. nopxor

    nopxor Compagnon

    Messages:
    1 364
    Inscrit:
    27 Mai 2010
    Localité:
    Yvelines
    Besoin d'aide pour faire fonctionner 2 stepper en meme temps sur arduino
    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: 3 Mars 2016
  7. fick

    fick Nouveau

    Messages:
    4
    Inscrit:
    23 Novembre 2014
    Localité:
    lille
    Besoin d'aide pour faire fonctionner 2 stepper en meme temps sur arduino
    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: 3 Mars 2016
  8. nopxor

    nopxor Compagnon

    Messages:
    1 364
    Inscrit:
    27 Mai 2010
    Localité:
    Yvelines
    Besoin d'aide pour faire fonctionner 2 stepper en meme temps sur arduino
    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:
     
  9. nopxor

    nopxor Compagnon

    Messages:
    1 364
    Inscrit:
    27 Mai 2010
    Localité:
    Yvelines
    Besoin d'aide pour faire fonctionner 2 stepper en meme temps sur arduino
    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...
     
  10. fick

    fick Nouveau

    Messages:
    4
    Inscrit:
    23 Novembre 2014
    Localité:
    lille
    Besoin d'aide pour faire fonctionner 2 stepper en meme temps sur arduino
    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
     
Chargement...

Partager cette page