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

Programmer un carte Arduino pour contrôler un moteur pas à pas



  1. #1
    JFSGeneva

    Programmer un carte Arduino pour contrôler un moteur pas à pas


    ------

    Bonjour,

    Depuis quelques jours j'essaye de piloter un moteur PaP d'imprimante avec la carte Arduino.

    Le fil de discussions à ce sujet sur le forum Arduino. ICI

    J'arrive à le faire tourner en continu, mais si je veux le faire avancer d'un nombre de pas déterminés, en dessous de 16 pas ça ne marche pas.

    C'est un moteur bipolaire 48 pas que je tente d'utiliser en demi-pas.

    Je n'arrive pas à trouver plusieurs choses:

    -Lorsque je programme le nombre de pas à 96, seul un demi-tour est effectué, il me semble que le moteur devrait faire un tour ?

    -Lorsque je programme 100 pas, le moteur fait seulement 96 pas et non 96 + 4 (100) ?

    -Lorsque je programme un nombre de pas inférieur à 16, rien ne se passe ou du moins pas grand chose ?


    Voici le code sur la carte Arduino :

    Code:
    int pinA = 9;
    int pinB = 13;
    int pinC = 12;
    int pinD = 10;
    
    // ici il y a les séquences des différentes pin pour faire un tour
    int etatPinA[8] = {1,1,0,0,0,0,0,1};
    int etatPinB[8] = {0,1,1,1,0,0,0,0};
    int etatPinC[8] = {0,0,0,1,1,1,0,0};
    int etatPinD[8] = {0,0,0,0,0,1,1,1};
    
    int nbPas = 96;
    int i = 0;
    
    int delaiEntrePas = 1350;   
    							 
    void setup()
    {
      pinMode(pinA, OUTPUT); 
      pinMode(pinB, OUTPUT); 
      pinMode(pinC, OUTPUT); 
      pinMode(pinD, OUTPUT); 
    }
    
    void loop()
    {
      // ici on écrit sur la pin la séquence correspondante 
      digitalWrite(pinA, etatPinA[i]);
      digitalWrite(pinB, etatPinB[i]);
      digitalWrite(pinC, etatPinC[i]);
      digitalWrite(pinD, etatPinD[i]);
      delayMicroseconds(delaiEntrePas);
       
      nbPas--;
       
      if(nbPas != 0 && i != 7) // si nbPas différent de 0 et i différent de 3, on passe au pas suivant
      {
    	i++;
      }
      else if(nbPas != 0 && i == 7) // si nbPas différent de 0 et i égal à 3, on retourne au premier pas 
      {
    	i = 0;
      }
      else // si nbPas égal à 0 fin
      {
    	while(1)
    	{
    	  // fin
    	}
      }
      
    }
    J'aimerais pouvoir faire tourner le moteur un pas après l'autre ou par séries de plusieurs pas (Ex: 67, 102, 343....).

    -----

  2. #2
    JFSGeneva

    Re : Programmer un carte Arduino pour contrôler un moteur pas à pas

    J'ai simplifié les séquences en "full-step" deux bobines alimentées :

    Code:
    int etatPinA[8] = {1,0,1,1};
    int etatPinB[8] = {1,1,0,0};
    int etatPinC[8] = {0,0,1,0};
    int etatPinD[8] = {0,1,0,1};
    Comme cela ça fonctionne, et je peux m'arrêter au pas près.

    Par contre si je veux faire du "full-step" une bobine alimenté, le moteur fait un aller-retour entre deux pas, j'ai essayé d'intervertir les séquences, mais le résultat est toujours le même.....

    Quelle est l'erreur que je fais ?
    Dernière modification par JFSGeneva ; 19/05/2008 à 22h21. Motif: orthographe

  3. #3
    JFSGeneva

    Re : Programmer un carte Arduino pour contrôler un moteur pas à pas

    Problème réglé ici : Forum Arduino

Sur le même thème :

Discussions similaires

  1. [Programmation] contrôler un moteur pas a pas...
    Par davandg dans le forum Électronique
    Réponses: 5
    Dernier message: 21/03/2016, 22h33
  2. Carte driver moteur pas à pas
    Par FantomX dans le forum Électronique
    Réponses: 7
    Dernier message: 16/11/2009, 21h59
  3. Demande aide sur carte pour moteur Pas à pas
    Par Platipu$ dans le forum Électronique
    Réponses: 6
    Dernier message: 15/02/2008, 21h10
  4. Carte de commande de moteur pas à pas !
    Par Max91 dans le forum Électronique
    Réponses: 30
    Dernier message: 31/08/2006, 21h10
  5. Réponses: 1
    Dernier message: 30/04/2006, 16h45
Découvrez nos comparatifs produits sur l'informatique et les technologies.