Bonjour, je travaille actuellement sur un projet et je veux faire avancer un moteur pas à pas NEMA 17 sur l'axe y. Mon projet consiste à faire d'abord descendre un couteau et puis de le bouger horizontalement (axe y). Le moteur avance mais il ne veut pas aller jusqu'au capteur fin de course alors que dans mon code il est sensé l'atteindre pour s'arrêter. D'ailleurs, un truc qui est bizarre, c'est que le moteur de l'axe y va bien jusqu'au fin de course lorsque je débranche le driver d'un autre moteur Z1.
Est-ce que vous avez une idée de ce qui manque dans mon code ou peut-être mon cablage ? Merci d'avance.
Voici un bout de mon code :
const int RESET = 23; // Broche du bouton de réinitialisation
const int ENAY = 31;
const int DIRY = 32;
const int PULY = 33;
const int fdcY = 51; // Fin de course axe Y
void setup() {
// Initialisation des broches
pinMode(RESET, INPUT_PULLUP);
pinMode(ENAY, OUTPUT);
pinMode(DIRY, OUTPUT);
pinMode(PULY, OUTPUT);
pinMode(fdcY, INPUT_PULLUP);
// Initialisation du moniteur série
Serial.begin(9600);
// Configuration initiale des broches
digitalWrite(ENAY, HIGH);
digitalWrite(fdcY, HIGH);
}
void loop() {
if (digitalRead(RESET) == LOW) {
ResetMoteurY();
}
}
void ResetMoteurY() {
digitalWrite(ENAY, HIGH);
digitalWrite(DIRY, LOW);
// Boucle pour faire reculer le moteur jusqu'à l'activation du fin de course
while (digitalRead(fdcY) == HIGH) {
digitalWrite(PULY, HIGH);
delayMicroseconds(500);
digitalWrite(PULY, LOW);
delayMicroseconds(500);
}
delay(1000);
}
pouvez vous décrire le montage (schéma électronique), les alimentations et comment les fins de course sont connectés ? précisez aussi quel arduino vous avez
Ce sujet correspond au même projet sur lequel je travaille, nous sommes coéquipières. Etant donné que nous n'avons malheureusement pas encore mis à jour le schéma électrique du moteur, je vais vous envoyer celui de la data sheet du driver correspondant à notre câblage. Le câblage est identique pour les 3 moteurs (Z1 ,Z2 et Y). Le driver est un TB6600 alimenté en 24V et ENA-, DIR- , PUL- sont connectés au pins de l'Arduino Mega, tandis que ENA+, DIR+ , PUL+ sont connectés au 5V de l'Arduino.
Tu remarquera que da durée d'impulsion est très courte, ce n'est pas nécessaire d'en voyer de 50/50 au driver, c'est lui qui se chargera de la mise en forme des impulsions de commande du moteur.
S les impulsions sont trop courtes et que le moteur ou le contrôleur manque des pas, il mettrait plus de temps pour rejoindre la butée mais il finirait pas y arriver puisque c'est la condition de sortie de la boucle.
Une remarque, l'entrée du fin de course sur la carte CPU se fait avec un INPUT_PULLUP.
En théorie, cela fonctionne.
En pratique, l'entrée présente une impédance très élevée, plusieurs dizaines de kΩ, ce qui la rend sensible aux perturbations alentour. Je suggérerais l'ajout d'une résistance de pullup externe de 1 ou 2kΩ, par précaution.