Moteur pas à pas vibre mais ne tourne pas [Résolu]

Bonjour,

Je suis en train d'essayer de faire fonctionner un moteur pas à pas Nema17 avec un driver A4988. J'avais réussi à le faire fonctionner, mais après une mauvaise manipulation, j'ai grillé le driver. Après en avoir racheté, le moteur ne tourne plus, mais vibre quand je lui envoie une commande.

Configuration :

  • ESP32 ;

  • driver A4988 ;

  • moteur Nema 17 ;

  • alimentation ATX de PC qui fournit du 12 V ;

Schéma :

Mon câblage est similaire à celui ci-dessous, mis à part la carte Uno qui, de mon côté, est un ESP32, les broches qui ne correspondent pas et le fait que j'ai ajouté un fil pour piloter la pin enable du driver et un fil pour relier les masses.


Code Arduino :

#define stepPin 5 
#define dirPin 18 
#define enablePin 4 


void setup() {
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  pinMode(enablePin, OUTPUT); 

  digitalWrite(enablePin, LOW);
  
  digitalWrite(dirPin, HIGH); 
  delay(1000);
}

void loop() {
  digitalWrite(enablePin, LOW);

  digitalWrite(dirPin, LOW); 


  for (int i = 0; i < 200; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(1000); 
    digitalWrite(stepPin, LOW);
    delayMicroseconds(1000); 
  }

}



Solutions testées :

  1. J'ai bien vérifié, les connexions au moteur ne sont pas inversées.

  2. J'ai essayé avec différents drivers, le problème persiste.

  3. J'ai une résistance de 4,8 ohms aux bornes de chaque bobine du moteur.

  4. J'ai essayé de modifier le delay entre chaque pas. Lorsque je l'augmente à 1300 microsecondes, le moteur tourne, mais la rotation est saccadée. Mais lorsque j'augmente encore, à 2000 microsecondes, il se remet à vibrer sans tourner.

Si vous avez d'autres suggestions, je suis preneur.

Est-ce que la limitation en courant est correctement réglée sur le driver?

J'ai essayé toutes les positions du potentiomètre. Suivant la position, le moteur est plus ou moins bloqué.

Bonjour,
est-ce que le breadboard à réchappé à l'incident ?

Bonjour August1ne

Quelle a été cette mauvaise manipulation

Pour info, le GND de la logique et le GND du VMOT se fait à travers le A4988.

As tu essayé de changer de pin sur l'ESP?

A+
Cordialement
jpbbricole

Je n'utilise pas de breadboard, je branche mes fils sur une plaque à souder. Et je branche le driver sur des "barettes femelles". voir photo

Sur la photo il y a plusieurs emplacements moteurs, car à terme, je souhaite utiliser 4 moteurs.

J'avais inversé les fils d'alimentation 12v et de 5v sur le driver. Comme je ne comprenais pas pourquoi mon montage ne fonctionnait pas j'ai essayé de changer de driver plusieurs fois, et au final j'ai cramé tous les driver, mais aussi l'esp32, car je pense qu'en cramant les driver ont court-circuité l'esp32.

Merci pour l'info, ça m'évitera des branchements encombrants.

Comme à terme je compte piloter plusieurs moteurs nema17, j'ai réalisé le montage en fois 4, chaque montage utilise des pins de direction et de pas différents. Mais sur tous les montages, le problème est le même.

Il faut savoir que la "forme" de l'impulsion au moteur, c'est le driver qui la fait.
Dans ton programme, mets de façon fixe le temps de l'impulsion ON à 30 microsecondes et joue sur le temps OFF pour varier la vitesse.
Si tu veux mettre plusieurs moteurs, tu aura intérêt à prendre une bibliothèque comme AccelStepper.
image

A+
Cordialement
jpbbricole

Merci @jpbbricole , je vais essayer cette librairie.

Ca signifie que mon code n'était pas bon ?

A la base non, mais ces "symptomes"

me font penser à un problème de tempo de la commande STEP.

J'ai essayé ton code, le moteur tourne très bien

Merci,
Effectivement, lors de mes premiers essais le moteur fonctionnait bien. Mais après avoir mis un nouveau driver parce que j'ai cramé le premier en le mettant sur l'installation (défectueuse) du 4eme moteur, plus rien ne marche.

Je viens d'essayer la librairie AccelStepper avec le code ci-dessous, mais le moteur ne tourne pas, et il ne vibre pas non plus. Il n'y a aucun couple dans le moteur.

// Include the AccelStepper Library
#include <AccelStepper.h>

// Define pin connections
const int dirPin = 18;
const int stepPin = 5;
const int enablePin = 4;

// Define motor interface type
#define motorInterfaceType 1

// Creates an instance
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

void setup() {
  pinMode(enablePin, OUTPUT);
  digitalWrite(enablePin, LOW);
	// set the maximum speed, acceleration factor,
	// initial speed and the target position
	myStepper.setMaxSpeed(1000);
	myStepper.setAcceleration(50);
	myStepper.setSpeed(200);
	myStepper.moveTo(200);
}

void loop() {
	// Change direction once the motor reaches target position
	if (myStepper.distanceToGo() == 0) 
		myStepper.moveTo(-myStepper.currentPosition());

	// Move the motor one step
	myStepper.run();
}

Je viens d'essayer, en faisant varier la vitesse je sens que la fréquence de vibration n'est pas la meme, mais le problème persiste.

Est tu sûre de ton ESP, as tu essayé de changer de pin pour DIR, STEP et ENA?

J'avais essayé de changer les pins et je viens d'essayer de changer d'ESP32, le problème persiste.

J'ai pu utiliser un oscilloscope de la prépa pour analyser le signal qui entrait et sortait du driver. Le signal qui sortait était du bruit qui alternait entre 0 et 12v lorsqu'il devait rester à 12v. J'ai donc acheté des nouveaux drivers malgré le fait que ceux utilisés soient déjà neufs. Le premier n'a pas fonctionné, mais en changeant à nouveau, le moteur fonctionne parfaitement.
Merci beaucoup pour votre aide !

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.