Répondre à la discussion
Affichage des résultats 1 à 23 sur 23

Projet arduino



  1. #1
    jmjaffre

    Projet arduino


    ------

    Bonjour,

    Nouveua sur le site,

    Je suis à la recherche d'un code pour Arduino uno ou atmega sachant que mon projet consiste à :

    Sur un Axe X :
    - Déplacement d'une platine sur une vis sans fin entraînée par un moteur NEMA 17 sur 50 cm environ
    - pilotée par un Joystick Axe x pour piloter la vitesse;
    - pilotée par un Joystick Axe y pour piloter l'avancement ou le recul;

    Butée de fin de course à chaque extrémité ( matériel à définir).

    D'avance,
    Merci

    -----

  2. Publicité
  3. #2
    Yoruk

    Re : Projet arduino

    Salut et bienvenue,

    C'est toujours pareil, c'est pas la peine de commencer à coder si la partie matérielle et le schéma ne sont pas validés !

    Quelles sont les caractéristiques du moteur ? Comment le piloter (quelle interface de puissance) ? Faut-il faire varier le sens/la vitesse ?

    Quel type de joystick ? Analogique, numérique ? Branché comment sur la arduino ?

    Sans savoir tout ça, on ne peut rien faire...!
    La robotique, c'est fantastique !

  4. #3
    jmjaffre

    Re : Projet arduino

    Bonjour Yoruk,

    Afin que les choses claires, je ne viens pas sur ce site pour recevoir des leçons (j,ai déjà lu ça sur le site)...un, j'ai passé l'âge et de de deux, même si j'apprends de nouvelle choses, j'ai plus de 30 ans d'expérience dans d'autres domaines...

    Revenons à notre sujet:

    Projet similaire à celui-ci: http://forum.allaboutcircuits.com/sh...ad.php?t=75956
    Le projet est commandé par une carte ARDUINO UNO
    Un moteur NEMA17 fais coulisser une platine sur environ 30 cm avec 2 butées fin de course...
    L'interface de puissance est un contrôleur L298N
    Le déplacement du moteur est effectué grâce à un Joystick raccordé sur la carte ARDUINO sur AO/A1 (Analogic)
    Le X sert à regler la vitesse du moteur
    Le Y sert à faire avancer ou reculer le moteur.

    Je reçois le moteur fin de semaine ainsi que les capteurs de fin de course.

    Voilà pour l'essentiel

    Je me tiens a votre disposition pour tous renseignements complémentaires

    Merçi,
    Cordialement,
    Jean-Marie

  5. #4
    Yoruk

    Re : Projet arduino

    Excuse moi, mais les gars qui viennent nous demander de faire leur travail sans nous donner la moindre info sont légion ici...

    Donc, merci pour les précisions, mais un petit schéma serait un plus pour démarrer...

  6. A voir en vidéo sur Futura
  7. #5
    jmjaffre

    Re : Projet arduino

    Je comprends ta réaction, c'est valable partout... au moins les choses sont claires
    Merci pour la rapidité, je prépare un schéma pour fin de semaine.
    Cordialement,

  8. #6
    Yoruk

    Re : Projet arduino

    Comme joystick, tu as quoi ?
    La robotique, c'est fantastique !

  9. Publicité
  10. #7
    Yvan_Delaserge

    Re : Projet arduino

    Pour commander un moteur pas-à-pas, je te conseille d'utiliser ce type de carte.
    L'arduino n'aura plus qu'à lui fournir une fréquence d'horloge et l'indication de direction avant ou arrière.

    Nom : TB6560.gif
Affichages : 71
Taille : 500,5 Ko

    La carte est basée sur l'hybride TB6560. Elle gère le microstep jusqu'à 1/16, ainsi que le courant appliqué au moteur, jusqu'à 3 A. Elle peut être alimentée avec une tension allant jusqu'à 24 V. Elle comporte des opto-coupleurs. Et elle est très économique!
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)

  11. #8
    jmjaffre

    Re : Projet arduino

    J'ai commande cette carte de commande : L298N
    Cordialement,
    Images attachées Images attachées  

  12. #9
    jmjaffre

    Re : Projet arduino

    Bonjour Yoruk,

    Le Joystick est ce modèle,
    Cordialement,
    Images attachées Images attachées  

  13. #10
    Yvan_Delaserge

    Re : Projet arduino

    Le L298 est juste un double pont en H. C'est-à-dire juste l'étage de puissance final. Avec de plus une tension de déchet assez importante. Ce qui fait qu'il chauffe pas mal.

    Donc toute la gestion des impulsions destinées au p-à-p devront se faire par l'Arduino. Mais il existe des librairies pour la gestion des pàp.

    Par contre, les cartes à TB6560 se trouvent actuellement à moins de 4 $, et elles simplifient pas mal la vie.
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)

  14. #11
    jmjaffre

    Re : Projet arduino

    Bonjour Yvan,
    Dis moi sur quel site tu le le trouve à 4$,
    Cordialement,

    Je travaille sur un proto... je choisirai du matériel plus sophistqué plus tard...

  15. #12
    Pauldair

    Re : Projet arduino

    Bonjour,

    Tu as 4 exemples de sketches Arduino pour moteur pas à pas (Stepper Motor en anglais) qui fonctionnent à merveille avec le L298N, voir ici:

    Nom : ArduinoStepper.png
Affichages : 61
Taille : 24,6 Ko

    Inspire-t-en pour la réalisation de ton projet. Si tu n'es pas anglophone, voici quelques traductions:

    1. MotorKnob : le moteur pas à pas suit la rotation d'un potentiomètre (ou d'un autre capteur).
    2. Stepper_oneRevolution: ce programme pilote un moteur pas à pas uni ou bipolaire, le moteur fait un tour complet dans une direction, puis dans l'autre.
    3. Stepper_oneStepAtATime: ce programme pilote un moteur pas à pas uni ou bipolaire, le moteur tourne d'un pas à la fois très lentement.
    4. Stepper_speedControl: ce programme pilote un moteur pas à pas uni ou bipolaire, le moteur tourne dans le sens horaire, plus la valeur du potentiomètre de contrôle est élevée, plus le moteur tourne vite.

  16. Publicité
  17. #13
    jmjaffre

    Re : Projet arduino

    Re,
    j'ai installé en bout d'axe de mon moteur NEMA17, une tige filetée Ø 5 mm pour déplacer une table sur 30 cm environ avec 2 butées à chaque extrémités que je piloter avec un joystick...
    voilà l'idée de base de mon projet.
    cordialement,

  18. #14
    jmjaffre

    Re : Projet arduino

    Bonjour Yvan,
    Dis moi sur quel site tu le le trouve à 4$,
    Cordialement,

    Je travaille sur un proto... je choisirai du matériel plus sophistqué plus tard...

  19. #15
    Pauldair

    Re : Projet arduino

    Les cartes à TB6560 sont actuellement vendues (pour de petites quantités) à $8.00 l'unité.

    Celles à L298N sont vendues à 12$ les 5 pièces, ce qui donne $ 2.40 / pièce.

  20. #16
    Yvan_Delaserge

    Re : Projet arduino

    Ici, tu trouves des cartes à TB6560 à 3,12 $, frais de port compris.
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)

  21. #17
    Pauldair

    Re : Projet arduino

    Merci Yvan !

    Citation Envoyé par Yvan_Delaserge Voir le message
    Ici, tu trouves des cartes à TB6560 à 3,12 $, frais de port compris.
    A ce prix là c'est cadeau !

  22. #18
    Yvan_Delaserge

    Re : Projet arduino

    Oui, et tu as en plus, l'avantage d'avoir des optocoupleurs, la gestion du courant des moteurs et le microstep.
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)

  23. Publicité
  24. #19
    jmjaffre

    Re : Projet arduino

    Bonjour,
    j'ai trouver exactement le projet que je souhaite executer, cependant le programme est avec easydriver mais ne supporte pas les 2A de mon NEMA?
    et de plus les raccordement et le programme pour un L298N ne correspondent pas
    ci-joint le programme 5MS1, MS2, SLEEP n'existe pas sur L298N...
    https://brainy-bits.com/tutorials/st...r-easy-driver/


    #define step_pin 3 // Pin 3 connected to Steps pin on EasyDriver
    #define dir_pin 2 // Pin 2 connected to Direction pin
    #define MS1 5 // Pin 5 connected to MS1 pin
    #define MS2 4 // Pin 4 connected to MS2 pin
    #define SLEEP 7 // Pin 7 connected to SLEEP pin
    #define X_pin A0 // Pin A0 connected to joystick x axis

    int direction; // Variable to set Rotation (CW-CCW) of the motor
    int steps = 1025; // Assumes the belt clip is in the Middle

    void setup() {
    pinMode(MS1, OUTPUT);
    pinMode(MS2, OUTPUT);
    pinMode(dir_pin, OUTPUT);
    pinMode(step_pin, OUTPUT);
    pinMode(SLEEP, OUTPUT);

    digitalWrite(SLEEP, HIGH); // Wake up EasyDriver
    delay(5); // Wait for EasyDriver wake up


    /* Configure type of Steps on EasyDriver:
    // MS1 MS2
    //
    // LOW LOW = Full Step //
    // HIGH LOW = Half Step //
    // LOW HIGH = A quarter of Step //
    // HIGH HIGH = An eighth of Step //
    */

    digitalWrite(MS1, LOW); // Configures to Full Steps
    digitalWrite(MS2, LOW); // Configures to Full Steps

    }

    void loop() {
    while (analogRead(X_pin) >= 0 && analogRead(X_pin) <= 100) {
    if (steps > 0) {
    digitalWrite(dir_pin, HIGH); // (HIGH = anti-clockwise / LOW = clockwise)
    digitalWrite(step_pin, HIGH);
    delay(1);
    digitalWrite(step_pin, LOW);
    delay(1);
    steps--;
    }
    }

    while (analogRead(X_pin) > 100 && analogRead(X_pin) <= 400) {
    if (steps < 512) {
    digitalWrite(dir_pin, LOW); // (HIGH = anti-clockwise / LOW = clockwise)
    digitalWrite(step_pin, HIGH);
    delay(1);
    digitalWrite(step_pin, LOW);
    delay(1);
    steps++;
    }
    if (steps > 512) {
    digitalWrite(dir_pin, HIGH);
    digitalWrite(step_pin, HIGH);
    delay(1);
    digitalWrite(step_pin, LOW);
    delay(1);
    steps--;
    }
    }

    while (analogRead(X_pin) > 401 && analogRead(X_pin) <= 600) {
    if (steps < 1025) {
    digitalWrite(dir_pin, LOW);
    digitalWrite(step_pin, HIGH);
    delay(1);
    digitalWrite(step_pin, LOW);
    delay(1);
    steps++;
    }
    if (steps > 1025) {
    digitalWrite(dir_pin, HIGH);
    digitalWrite(step_pin, HIGH);
    delay(1);
    digitalWrite(step_pin, LOW);
    delay(1);
    steps--;
    }
    }

    while (analogRead(X_pin) > 601 && analogRead(X_pin) <= 900) {
    if (steps < 1535) {
    digitalWrite(dir_pin, LOW);
    digitalWrite(step_pin, HIGH);
    delay(1);
    digitalWrite(step_pin, LOW);
    delay(1);
    steps++;
    }
    if (steps > 1535) {
    digitalWrite(dir_pin, HIGH);
    digitalWrite(step_pin, HIGH);
    delay(1);
    digitalWrite(step_pin, LOW);
    delay(1);
    steps--;
    }
    }

    while (analogRead(X_pin) > 900 && analogRead(X_pin) <= 1024) {
    if (steps < 2050) {
    digitalWrite(dir_pin, LOW);
    digitalWrite(step_pin, HIGH);
    delay(1);
    digitalWrite(step_pin, LOW);
    delay(1);
    steps++;
    }
    }
    }

  25. #20
    Yvan_Delaserge

    Re : Projet arduino

    Sinon, tu as aussi ça:
    Code:
     //Declare pin functions on Redboard
    #define stp 2
    #define dir 3
    #define MS1 4
    #define MS2 5
    #define EN  6
    
    //Declare variables for functions
    char user_input;
    int x;
    int y;
    int state;
    
    void setup() {
      pinMode(stp, OUTPUT);
      pinMode(dir, OUTPUT);
      pinMode(MS1, OUTPUT);
      pinMode(MS2, OUTPUT);
      pinMode(EN, OUTPUT);
      resetEDPins(); //Set step, direction, microstep and enable pins to default states
      Serial.begin(9600); //Open Serial connection for debugging
      Serial.println("Begin motor control");
      Serial.println();
      //Print function list for user selection
      Serial.println("Enter number for control option:");
      Serial.println("1. Turn at default microstep mode.");
      Serial.println("2. Reverse direction at default microstep mode.");
      Serial.println("3. Turn at 1/8th microstep mode.");
      Serial.println("4. Step forward and reverse directions.");
      Serial.println();
    }
     //Main loop
    void loop() {
      while(Serial.available()){
          user_input = Serial.read(); //Read user input and trigger appropriate function
          digitalWrite(EN, LOW); //Pull enable pin low to allow motor control
          if (user_input =='1')
          {
             StepForwardDefault();
          }
          else if(user_input =='2')
          {
            ReverseStepDefault();
          }
          else if(user_input =='3')
          {
            SmallStepMode();
          }
          else if(user_input =='4')
          {
            ForwardBackwardStep();
          }
          else
          {
            Serial.println("Invalid option entered.");
          }
          resetEDPins();
      }
    }
    //Default microstep mode function
    void StepForwardDefault()
    {
      Serial.println("Moving forward at default step mode.");
      digitalWrite(dir, LOW); //Pull direction pin low to move "forward"
      for(x= 1; x<1000; x++)  //Loop the forward stepping enough times for motion to be visible
      {
        digitalWrite(stp,HIGH); //Trigger one step forward
        delay(1);
        digitalWrite(stp,LOW); //Pull step pin low so it can be triggered again
        delay(1);
      }
      Serial.println("Enter new option");
      Serial.println();
    }
    //Reverse default microstep mode function
    void ReverseStepDefault()
    {
      Serial.println("Moving in reverse at default step mode.");
      digitalWrite(dir, HIGH); //Pull direction pin high to move in "reverse"
      for(x= 1; x<1000; x++)  //Loop the stepping enough times for motion to be visible
      {
        digitalWrite(stp,HIGH); //Trigger one step
        delay(1);
        digitalWrite(stp,LOW); //Pull step pin low so it can be triggered again
        delay(1);
      }
      Serial.println("Enter new option");
      Serial.println();
    }
    // 1/8th microstep foward mode function
    void SmallStepMode()
    {
      Serial.println("Stepping at 1/8th microstep mode.");
      digitalWrite(dir, LOW); //Pull direction pin low to move "forward"
      digitalWrite(MS1, HIGH); //Pull MS1, and MS2 high to set logic to 1/8th microstep resolution
      digitalWrite(MS2, HIGH);
      for(x= 1; x<1000; x++)  //Loop the forward stepping enough times for motion to be visible
      {
        digitalWrite(stp,HIGH); //Trigger one step forward
        delay(1);
        digitalWrite(stp,LOW); //Pull step pin low so it can be triggered again
        delay(1);
      }
      Serial.println("Enter new option");
      Serial.println();
    }
    //Forward/reverse stepping function
    void ForwardBackwardStep()
    {
      Serial.println("Alternate between stepping forward and reverse.");
      for(x= 1; x<5; x++)  //Loop the forward stepping enough times for motion to be visible
      {
        //Read direction pin state and change it
        state=digitalRead(dir);
        if(state == HIGH)
        {
          digitalWrite(dir, LOW);
        }
        else if(state ==LOW)
        {
          digitalWrite(dir,HIGH);
        }
    
        for(y=1; y<1000; y++)
        {
          digitalWrite(stp,HIGH); //Trigger one step
          delay(1);
          digitalWrite(stp,LOW); //Pull step pin low so it can be triggered again
          delay(1);
        }
      }
      Serial.println("Enter new option:");
      Serial.println();
    }
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)

  26. #21
    jmjaffre

    Re : Projet arduino

    Bonjour Yvan,

    Si j,ai bien compris ton message, il suffit que je déclare MS1, MS2, ...sur chaque borne de mon L298N... dans mon programme et ça marche..!!!

    Merci de ta réponse,

    Cordialement.
    JEAN-MARIE.

  27. #22
    Yvan_Delaserge

    Re : Projet arduino

    non, MS1 et MS2 servent à régler le microstep. Tu n'as pas lu la doc?
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)

  28. #23
    jmjaffre

    Re : Projet arduino

    Re,
    non sur la doc, j'ai juste le schéma de raccordement mais pas de d'explication...
    Si tu as une doc ou un lien, merci de me le faire passer
    cordialement,
    JM

Discussions similaires

  1. projet sur arduino
    Par rania.yac dans le forum Électronique
    Réponses: 1
    Dernier message: 24/04/2015, 23h39
  2. Projet ARDUINO
    Par IB69 dans le forum Électronique
    Réponses: 6
    Dernier message: 03/02/2014, 21h59
  3. Projet de bac Arduino
    Par kocliko dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 19/03/2013, 09h52
  4. Projet arduino
    Par ouess dans le forum Électronique
    Réponses: 0
    Dernier message: 26/11/2012, 17h52
  5. Projet arduino
    Par techous205 dans le forum Électronique
    Réponses: 6
    Dernier message: 16/09/2012, 23h53
Découvrez nos comparatifs produits sur l'informatique et les technologies.