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.
J'ai bien vérifié, les connexions au moteur ne sont pas inversées.
J'ai essayé avec différents drivers, le problème persiste.
J'ai une résistance de 4,8 ohms aux bornes de chaque bobine du moteur.
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.
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.
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();
}
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 !