IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Aide a la programmation moteur PAS a PAS avec driver + Arduino


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Par défaut Aide a la programmation moteur PAS a PAS avec driver + Arduino
    Bonjour,
    Je voudrais bien avoir de l'aide sur la programmation d'un moteur pas a pas avec driver sur arduino mega.

    Mon souci c'est d'ajouter bouton marche et arrêt sur mon programme telle qu'il est ;

    output (2) marche
    output (3) Arrêt
    Quelque chose comme sa !

    Mon moteur démarre immédiatement après alimentation chose que sa dérange

    Merci de bien vouloir m'aidé a se sujet.
    Cordialement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    /*
      Stepper Motor Test
      stepper-test01.ino
      Uses MA860H or similar Stepper Driver Unit
      Has speed control & reverse switch
      
      DroneBot Workshop 2019
      https://dronebotworkshop.com
    */
     
    // Defin pins
     
    int reverseSwitch = 2;  // Push button for reverse
    int driverPUL = 7;    // PUL- pin
    int driverDIR = 6;    // DIR- pin
    int spd = A0;     // Potentiometer
     
    // Variables
     
    int pd = 500;       // Pulse Delay period
    boolean setdir = LOW; // Set Direction
     
    // Interrupt Handler
     
    void revmotor (){
     
      setdir = !setdir;
     
    }
     
     
    void setup() {
     
      pinMode (driverPUL, OUTPUT);
      pinMode (driverDIR, OUTPUT);
      attachInterrupt(digitalPinToInterrupt(reverseSwitch), revmotor, FALLING);
     
    }
     
    void loop() {
     
        pd = map((analogRead(spd)),0,1023,2000,50);
        digitalWrite(driverDIR,setdir);
        digitalWrite(driverPUL,HIGH);
        delayMicroseconds(pd);
        digitalWrite(driverPUL,LOW);
        delayMicroseconds(pd);
     
    }


    Merci.Nom : Arduino-Stepper-Hookup.jpeg
Affichages : 292
Taille : 55,7 Ko

  2. #2
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 017
    Par défaut
    Bonjour cool-16

    Voilà à quoi ça peut ressembler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    /*
      Stepper Motor Test
      stepper-test01.ino
      Uses MA860H or similar Stepper Driver Unit
      Has speed control & reverse switch
      
      DroneBot Workshop 2019
      https://dronebotworkshop.com
    */
     
    // Defin pins
     
    int reverseSwitch = 2;  // Push button for reverse
    int startSwitch = 3;    // Push button for start
    int stopSwitch = 4;     // Push button for stop
     
    boolean enMarche = false; // false = Arret
     
    int driverPUL = 7;    // PUL- pin
    int driverDIR = 6;    // DIR- pin
    int spd = A0;     // Potentiometer
     
    // Variables
     
    int pd = 500;       // Pulse Delay period
    boolean setdir = LOW; // Set Direction
     
    // Interrupt Handler
     
    void revmotor (){
     
      setdir = !setdir;
     
    }
     
     
    void setup() {
     
      pinMode (driverPUL, OUTPUT);
      pinMode (driverDIR, OUTPUT);
      pinMode (reverseSwitch, INPUT);
     
      pinMode (startSwitch, INPUT_PULLUP);
      pinMode (stopSwitch, INPUT_PULLUP);
      attachInterrupt(digitalPinToInterrupt(reverseSwitch), revmotor, FALLING);
     
    }
     
    void loop() {
    	if (digitalRead(startSwitch) == LOW)         // Si bouton start presse
    	{
    		enMarche = true;
    	}
     
    	if (digitalRead(stopSwitch) == LOW)         // Si bouton stop presse
    	{
    		enMarche = false;
    	}
     
        pd = map((analogRead(spd)),0,1023,2000,50);
        digitalWrite(driverDIR,setdir);
     
    	if (enMarche)
    	{
    		digitalWrite(driverPUL,HIGH);
    		delayMicroseconds(pd);
    		digitalWrite(driverPUL,LOW);
    		delayMicroseconds(pd);
    	}
     
    }
    Tu ajoutes 2 boutons "contre" GND, et câblés sur 3 = Start, 4 = Stop. Il n'est pas nécessaire de mettre des résistances sur ces boutons du fait que ....Switch, INPUT_PULLUP
    A noter que j'ai ajouté l'initialisation du bouton reverseSwitch ( pinMode (reverseSwitch, INPUT).

    Cordialement
    jpbbricole

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Par défaut
    Citation Envoyé par jpbbricole Voir le message
    Bonjour cool-16

    Voilà à quoi ça peut ressembler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    /*
      Stepper Motor Test
      stepper-test01.ino
      Uses MA860H or similar Stepper Driver Unit
      Has speed control & reverse switch
      
      DroneBot Workshop 2019
      https://dronebotworkshop.com
    */
     
    // Defin pins
     
    int reverseSwitch = 2;  // Push button for reverse
    int startSwitch = 3;    // Push button for start
    int stopSwitch = 4;     // Push button for stop
     
    boolean enMarche = false; // false = Arret
     
    int driverPUL = 7;    // PUL- pin
    int driverDIR = 6;    // DIR- pin
    int spd = A0;     // Potentiometer
     
    // Variables
     
    int pd = 500;       // Pulse Delay period
    boolean setdir = LOW; // Set Direction
     
    // Interrupt Handler
     
    void revmotor (){
     
      setdir = !setdir;
     
    }
     
     
    void setup() {
     
      pinMode (driverPUL, OUTPUT);
      pinMode (driverDIR, OUTPUT);
      pinMode (reverseSwitch, INPUT);
     
      pinMode (startSwitch, INPUT_PULLUP);
      pinMode (stopSwitch, INPUT_PULLUP);
      attachInterrupt(digitalPinToInterrupt(reverseSwitch), revmotor, FALLING);
     
    }
     
    void loop() {
    	if (digitalRead(startSwitch) == LOW)         // Si bouton start presse
    	{
    		enMarche = true;
    	}
     
    	if (digitalRead(stopSwitch) == LOW)         // Si bouton stop presse
    	{
    		enMarche = false;
    	}
     
        pd = map((analogRead(spd)),0,1023,2000,50);
        digitalWrite(driverDIR,setdir);
     
    	if (enMarche)
    	{
    		digitalWrite(driverPUL,HIGH);
    		delayMicroseconds(pd);
    		digitalWrite(driverPUL,LOW);
    		delayMicroseconds(pd);
    	}
     
    }
    Tu ajoutes 2 boutons "contre" GND, et câblés sur 3 = Start, 4 = Stop. Il n'est pas nécessaire de mettre des résistances sur ces boutons du fait que ....Switch, INPUT_PULLUP
    A noter que j'ai ajouté l'initialisation du bouton reverseSwitch ( pinMode (reverseSwitch, INPUT).

    Cordialement
    jpbbricole


    Merci beaucoup Monsieur, pour votre aide ça a marcher au top !!!
    il a fallu juste rentrer les bons terme que j'ai pas pu coordonné .

    j'ai dû supprimé le (pin 2) qui cause un problème de rotation a chaque marche/arrêt il change de sens .

    Mes Salutations.

  4. #4
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 903
    Par défaut
    - pouquoi le push button de la pin 2 est aussi connecté au driver (au + de DIR et PUL) au travers d'une résistance?
    - setdir étant dans l'interruption, il vaurdrait mieux la déclarer en volatile pour éviter les optimisations du compilateur. attention aux rebonds cependant avec ces petits boutons momentanés.

  5. #5
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 017
    Par défaut
    Bonjour Jay M
    Citation Envoyé par Jay M Voir le message
    - pouquoi le push button de la pin 2 est aussi connecté au driver (au + de DIR et PUL) au travers d'une résistance?
    C'est simplement un PULL_UP, c'est connecté au +5V de l'Arduino.

    Cordialement
    jpbbricole

  6. #6
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 903
    Par défaut
    Bonjour

    Citation Envoyé par jpbbricole Voir le message
    C'est simplement un PULL_UP, c'est connecté au +5V de l'Arduino.
    ah bien sûr. bien vu.



    j'ai dû supprimer la (pin 2) qui cause un problème de rotation a chaque marche/arrêt il change de sens .
    Comment avez vous câblé les boutons sur les pin 3 et 4? il faut faire Pin --- bouton --- GND

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programme moteur pas à pas et capteur infrarouge
    Par AwFull_Nexus dans le forum Arduino
    Réponses: 1
    Dernier message: 31/03/2019, 23h17
  2. Débutant, l'IDE ne communique pas avec l'arduino
    Par Eric-89fr dans le forum Arduino
    Réponses: 2
    Dernier message: 23/03/2019, 09h31
  3. Programmation moteur pas à pas labview
    Par renaud.33 dans le forum LabVIEW
    Réponses: 1
    Dernier message: 02/05/2011, 18h16
  4. Réponses: 0
    Dernier message: 10/09/2010, 09h13
  5. [emu8086] Aide dans projet moteur pas à pas
    Par marouane87 dans le forum x86 16-bits
    Réponses: 9
    Dernier message: 16/05/2009, 02h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo