problème A4988 et moteur pas à pas

Bonjour,

Je n’arrive pas à faire fonctionner mon moteur récupéré sur une imprimante 3D (marche très bien sur cette dernière).
Je fais le montage suivant

avec ce code :

// --- Commande d'un StepStick/Driver A4988 ----------------------
// A4988_Test.ino
//
// Commande d'un moteur pas-à-pas à l'aide d'un pilote A4988 avec
//     Arduino.
//
// Un projet www.mchobby.be (vente de kit et composant)
// Meurisse D. - Licence CC-SA-BY
//
// Un tutoriel http://mchobby.be/wiki/index.php?title=A4988
// Ou Acheter un StepStick A4988
//    http://shop.mchobby.be/product.php?id_product=349
//

#define pinEnable 13 // Activation du driver/pilote
#define pinStep    9 // Signal de PAS (avancement)
#define pinDir     8 // Direction 


void setup(){
  Serial.begin(9600);
  Serial.println("Test A4988");
  
  pinMode( pinEnable, OUTPUT );
  pinMode( pinDir   , OUTPUT );
  pinMode( pinStep  , OUTPUT );
}

void loop(){
  int i = 0;
  
  digitalWrite( pinDir   , HIGH); // Direction avant
  digitalWrite( pinStep  , LOW);  // Initialisation de la broche step
  
  // Avance de 200 pas
  for( i=0; i<200; i++){
    Serial.println( i );
    digitalWrite( pinStep, HIGH );
    delay( 10 );
    digitalWrite( pinStep, LOW );
    delay( 10 );
  } 
  
  // Changer de direction
  digitalWrite( pinDir   , LOW); // Direction avant
  
  // Refaire 200 pas dans l'autre sens
  for( i=0; i<200; i++){
    Serial.println( i );
    digitalWrite( pinStep, HIGH );
    delay( 1 );
    digitalWrite( pinStep, LOW );
    delay( 1 );
  } 
  
  // Pas de step et pas d'ordre... 
  //   l'axe du moteur est donc bloqué 
  Serial.println("Axe bloqué + attendre 5 sec");
  delay( 5000 );
  
  // déblocage de l'axe moteur
  Serial.println("Deblocage axe");
  digitalWrite( pinEnable, HIGH ); // logique inversée
  
  // Fin et blocage du programme
  // Presser reset pour recommander
  Serial.println("Fin de programme");
  while( true );
}

Pompé sur le site de wiki.mchobby.be…

Je n’arrive pas à trouver la datasheet de mon moteur : tout ce que je sais c’est son petit nom : JD42HS40-1004A-02F
J’essaye avec une alimentation 12V/2A ou une 12V/3A, le résultat est le même dont voici la vidéo

Est ce que quelqu’un saurait me dire pourquoi mon moteur broute comme ça ?

Bonjour,

Avez-vous réglé la tension sur le drivers ?
Vos branchements sur les phases du moteur sont corrects ?

Jul17:
... le résultat est le même dont voici la vidéo

Est ce que quelqu'un saurait me dire pourquoi mon moteur broute comme ça ?

Bonjour
Symptome typique d'un inversion d'enroulement

Merci pour vos réponses rapides.

Je n'arrive pas à mettre la main sur la datasheet de ce moteur du coup je ne peux pas faire les calculs pour le réglage optimal.
voici la vidéo en remettant le moteur dans l'imprimante. il tourne nickel...

quand à l'inversion des enroulements ce serait dû à mes branchements ? mais je suis scrupuleusement le schéma cité plus haut. Pouvez vous me dire ce que je peux tester?

Une autre piste est un driver défectueux.

Ces drivers supportent très mal les décharges électrostatiques.
Il faut les manipuler avec précautions et éviter de toucher les broches avec les doigts.

Ouais j'y ai pensé aussi, j'ai acheté un lot de 5, du coup j'en ai testé un autre même résultat. Je crois que vais acheter un autre moteur des tensions et ampérages moins gourmands voir si ça peut venir de là.

J'ai vu qu'il y'a plusieurs couleurs A4988, est ce que mon moteur pourrait ne pas correspondre au rouge ?

Il me semble que la couleur correspond à un courant de sortie max.

Dans ton cas, le moteur n'est pas en charge donc le courant consommé est faible.
Cela ne devrait poser aucun problème avec ton NEMA 17.

Donc changer de moteur ne servirait à rien ?

Non, le moteur fonctionne bien.

Je penche plus pour un problème de câblage ou le réglage du driver.

Est ce que un condonsenteur pas assez élevé pourrait être le problème, le mien fait 47u (je l'avais commandé sur la base d'un autre tuto qui marchait bien aussi) dans ce tuto c'est un 100u

Le Condo est là pour absorber les pics de courant.

As tu testé tes enroulements à l’ohmmetre? Pour être sûr de bien identifier les 2 phases

Oui, les pins 1 et 4 vont ensemble ainsi que 3 et 6. Lorsque je teste à l'ohmmètre j'obtiens :
la même chose 1.6ohm sur 1/4 et 3/6.

Les branchements sont relativement basiques, je vois pas où j'aurais pu me planter...c'est frustrant (pour rester poli)

Les phases sont donc bien identifiées.
Tu as tenté d’inverser juste entre eux 2 fils d’une phase? Au hasard, 1 avec 4.

Ton moteur semble faire uniquement des aller-retour d’un pas, symptôme d’une phase polarisée à l’envers

Jul17:
Oui, les pins 1 et 4 vont ensemble ainsi que 3 et 6. Lorsque je teste à l'ohmmètre j'obtiens :
la même chose 1.6ohm sur 1/4 et 3/6.

Les branchements sont relativement basiques, je vois pas où j'aurais pu me planter...c'est frustrant (pour rester poli)

permute une paire

Ah non à chaque fois que j'ai inversé j'ai échanger les 2 paires en même temps.

Vous me donnez de l'espoir ! ^^

Je ressorts le Matos, je vous tiens au jus !

Voilà la vidéo de ce que ça donne. inversion 1/4puis la même chose en inversant 3/6.

Vous avez l’air sûr que c’est une inversion de fil, je vais tenter plusieurs combinaisons, y’en aura peutêtre une de bonne…

hello
je repars de ton 1er post, donc 1er code et premiere video

tu ne sélectionnes pas le driver ( enable = 0)

ensuite, la durée des impulsions peux avoir de l’importance.

il faudra aussi fixer les entrées ms1,ms2,ms3 à GND par exemple si tu veux une résolution de 200 pas

veux tu passer ce test et regarder sur ton moniteur

// --- Commande d'un StepStick/Driver A4988 ----------------------
// A4988_Test.ino
//
// Commande d'un moteur pas-à-pas à l'aide d'un pilote A4988 avec
//     Arduino.
//
// Un projet www.mchobby.be (vente de kit et composant)
// Meurisse D. - Licence CC-SA-BY
//
// Un tutoriel http://mchobby.be/wiki/index.php?title=A4988
// Ou Acheter un StepStick A4988
//    http://shop.mchobby.be/product.php?id_product=349
//

#define pinEnable 13 // Activation du driver/pilote
#define pinStep    9 // Signal de PAS (avancement)
#define pinDir     8 // Direction


void setup() {
  Serial.begin(9600);
  Serial.println("Test A4988");

  pinMode( pinEnable, OUTPUT );
  pinMode( pinDir   , OUTPUT );
  pinMode( pinStep  , OUTPUT );
}
void loop()
{
  digitalWrite( pinEnable, LOW );
  int i = 0;
  digitalWrite( pinDir   , HIGH); // Direction avant
  digitalWrite( pinStep  , LOW);  // Initialisation de la broche step

  // Avance de 200 pas
  for (int f = 10; f < 100; f += 10)
  {
    Serial.print("test de 2 tours avec un delai de "); Serial.println(f);
    for ( i = 0; i < 400; i++)
    {
      //Serial.println( i );
      digitalWrite( pinStep, HIGH );
      delay( f );
      digitalWrite( pinStep, LOW );
      delay( f );
    }
  }

  // déblocage de l'axe moteur
  Serial.println("Deblocage axe");
  digitalWrite( pinEnable, HIGH ); // logique inversée

  // Fin et blocage du programme
  // Presser reset pour recommander
  Serial.println("Fin de programme");
  while ( true );
}

Alors déjà merci à tous pour votre aide, je suis bien content d'en trouver...

dfgh j'ai fait ton test voici la vidéo, jai branché ms1, ms2,ms3 sur le gnd.

Le moniteur m'affiche ceci :

Test A4988
test de 2 tours avec un delai de 10
test de 2 tours avec un delai de 20
test de 2 tours avec un delai de 30
test de 2 tours avec un delai de 40
test de 2 tours avec un delai de 50
test de 2 tours avec un delai de 60
test de 2 tours avec un delai de 70
test de 2 tours avec un delai de 80
test de 2 tours avec un delai de 90
Deblocage axe
Fin de programme

J'ai tenté en inversant 1/4 puis 3/6, mais le résultat est le même, quelle que soit la configuration le moteur broute.

Et mes câbles dupont aux pins du moteur ont commencé à chauffer et se ramollir. Je ne sais pas si ça peut aider pour la compréhension du problème.

un autre test
le but est que tu constates que le moteur tourne correctement et qu’à ce moment là, tu lises ce que le moniteur t’indique.
tu sauras ainsi quelle durée d’impulsion tu dois mettre dans ton programme

#define pinEnable 13 // Activation du driver/pilote
#define pinStep    9 // Signal de PAS (avancement)
#define pinDir     8 // Direction


void setup() {
  Serial.begin(9600);
  Serial.println("Test A4988");

  pinMode( pinEnable, OUTPUT );
  pinMode( pinDir   , OUTPUT );
  pinMode( pinStep  , OUTPUT );
}
void loop()
{
  digitalWrite( pinEnable, LOW );
  int i = 0;
  digitalWrite( pinDir   , HIGH); // Direction avant
  digitalWrite( pinStep  , LOW);  // Initialisation de la broche step

  // Avance de 200 pas
  for (int f = 10; f < 1000; f += 10)
  {
    Serial.print("test de 2 tours avec des impulsions de "); Serial.print(f);Serial.println(" microsecondes");
    for ( i = 0; i < 400; i++)
    {
      //Serial.println( i );
      digitalWrite( pinStep, HIGH );
      delayMicroseconds( f );
      digitalWrite( pinStep, LOW );
      delay( 5 );
    }
  }

  // déblocage de l'axe moteur
  Serial.println("Deblocage axe");
  digitalWrite( pinEnable, HIGH ); // logique inversée

  // Fin et blocage du programme
  // Presser reset pour recommander
  Serial.println("Fin de programme");
  while ( true );
}