Bonjour,
Voila que j’arrive plus a faire fonctionner ma machine .
J’ai donc tout repris, tout recabler ,mais sa fonctionne pas comme je veux ma bobine ne s’entraine plus . Jme suis dit que le moteur etait peut etre faible.
un nema 17 30ncm.
J’ai acheter un nema 17 plus performant un 59 ncm .
Mais sa me fait pareille. Je trouve le bruit du moteur complètement bizarre.
Je me suis peut être tromper dans le câblage de celui ci !
Voici mon moteur , sa fiche
Et le driver A4988 avec son schemas .
Est ce que l’ont peut m’expliquer qui brancher sur quoi car je m’en sort pas le moteur fait absolument n’importe quoi et le deuxième pareille .
Je vous remercie.
Merci pour votre réponse,
J’ai du 12volt sur v mot avec le condo
J’ai bien etudier les shemas que vous me renvoyer ,
Le probleme et que je ne c’est pas a quoi corrspond 1A 1B et 2A 2B
J’ai bien dissocier mes deux bobine mais pour le plus le moins comment savoir qui va ou ?
Par ce que d’un coter on parle en 1 et 2 a et b et de l’autre en a+ b+ a- b- du coup je comprend pas
est ce que je risque de cramer quelque chose si je branche mal ,sachant que les manip de branchement ce feront sans tension ?
aujourd’hui j’ai pas mal de choses a faire.
je vais voir si c’est faisable ce soir j’essaie de refaire mon projet sur bred bord , je vous mettrais le code avec .
Pour ce qui est du moteur je ne c’est pas mais il me semble que l’ont ne peut pas le tourné ya le courant qui le maintien en position , on entant l'électricité dans le nema
Petite question = le 1 represente un bobinage le 2 aussi un bobinage.
pourquoi le A sur une bobine représente le + et sur l’autre bobine le moins .
J’ai besoin de comprendre pourquoi si jamais on peut m’apporter la réponse sa m’aiderais a l’avenir savoir c’est bien avoir comprit c’est mieux .
Côté branchements du moteur, non, au pire le moteur tourne mal.
Le seul truc à ne pas faire avec ces drivers A4988, est de les mettre à l'envers sur leur support
C'est bon signe
Pour dire juste la commande des bobinages A et B
Cette dénomination prête à confusion
Si on prend le A4988 (D) d'un côté le le NEMA (N) de l'autre:
D = 1 N = A
D = 2 N = B
D = A N = +
D = B N = -
Donc, côté driver on nimérote les commandes de moteur 1 et 2, côté moteur on numérote les bobines A et B et on numérote les pôles, côté driver A et B et côté bobinage, + et -
Merci encore oui j’ai bien compris mais je relis mille fois pour pas me tromper car j’ai pas integrer encore mais j’ai compris vos explications merci beaucoup,
Du coup j’ai pas compris quelque choses sur le driver il y a une bobine brancher au millieu et l’autre bobine et cable au dessu et au dessous du premier bobinage si j’ai bien compris d’apres votre schemas que vous m’avez repondu ,
Car je vois cela sur le net :
Pas du tout d'accord avec ce qui a été dit. Il faut mettre une bobine sur les broches repérées 1 et l'autre bobine sur les broches repérées 2. Dans un premier temps, on se moque complètement des inversions entre les A et les B ou les + et les -, ainsi que de savoir quelle bobine est sur 1 ou sur 2. Si le moteur tourne dans le mauvais sens, on corrige en inversant une bobine ou directement par le logiciel. Cela permet de faire un câblage plus simplement.
Si le moteur tourne mal, c'est que l'on a mis les bobines à cheval sur 1 et 2. Croiser les fils d'une bobine fera seulement tourner le moteur dans l'autre sens.
Je suis d'accord avec la photo et avec la première phrase. Pas avec le fait de mettre une bobine sur les pins du milieu.
const int stepPin = 9;
const int dirPin = 8;
const int stepsPerRev=200;
int pulseWidthMicros = 100; // microseconds
int millisBtwnSteps = 1000;
void setup() {
Serial.begin(9600);
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
Serial.println(F("A4988 Initialized"));
}
void loop() {
Serial.println(F("Running clockwise"));
digitalWrite(dirPin, HIGH); // Enables the motor to move in a particular direction
// Makes 200 pulses for making one full cycle rotation
for (int i = 0; i < stepsPerRev; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, LOW);
delayMicroseconds(millisBtwnSteps);
}
delay(1000); // One second delay
Serial.println(F("Running counter-clockwise"));
digitalWrite(dirPin, LOW); //Changes the rotations direction
// Makes 400 pulses for making two full cycle rotation
for (int i = 0; i < 2*stepsPerRev; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, LOW);
delayMicroseconds(millisBtwnSteps);
}
delay(1000);
}```
`
saisissez ou collez du code ici
`, les code d'exemple stepper de l'ide font faire n'importe quoi au moteur .
j'ai besoin que le moteur tourne a condition que le capteur ultrason hc 04 ait une distance inferieur a 10 cm , j'arrive pas a tt faire le code emssemble , soit le moteur tourne bien soit le capteur marche bien mais les deux emssemble j'arrive plus :melting_face: sa rend fou
J’ai de petit bruit comme sa quand sa ne tourne pas est ce normal que puis je faire un stop moteur a chaque fin de boucle ?
Comment faire , quand le moteur et mal caller sa donne des petit a coup j’ai l’impression .
Voir deuxième lien :
const int DIR_PIN = 8;
const int STEP_PIN = 9;
const int ENABLE_PIN = 6;
const int TRIGGER_PIN = 10;
const int ECHO_PIN = 11;
const int MAX_DISTANCE = 200; // Distance maximale en centimètres
const int MIN_DISTANCE = 10; // Distance minimale en centimètres
const int LARGEUR_CRENEAU_H = 1000;
const int LARGEUR_CRENAU_L = 1000;
const int STEPS_PER_REVOLUTION = 1500; // Nombre de pas par révolution du moteur
NewPing sonar(TRIGGER_PIN, ECHO_PIN); // Crée une instance de l'objet sonar
void setup() {
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
pinMode(ENABLE_PIN, OUTPUT);
digitalWrite(ENABLE_PIN, LOW); // Active le moteur
Serial.begin(9600);
}
void loop() {
delay(50); // Attendre 50ms entre chaque mesure pour éviter les faux positifs
int distance = sonar.ping_cm(); // Mesure la distance en centimètres
if (distance < MIN_DISTANCE) { // Si la distance est inférieure à 10 cm
digitalWrite(DIR_PIN, LOW); // Inverse la direction du moteur (était HIGH, maintenant LOW)
for (int i = 0; i < STEPS_PER_REVOLUTION; i++) {
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(LARGEUR_CRENEAU_H); // Temps de pulse
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(LARGEUR_CRENAU_L); // Temps de pulse
}
delay(1000); // Attendre avant de faire une autre mesure
}
}
D'après le programme que je vois, il n'y a pas d'inversion du sens du moteur. Et le moteur est parfaitement à l'arrêt si il ne doit pas dérouler le fil. Le programme ci dessus est bien celui qui est dans la carte? Avant il y avait éventuellement une inversion du sens.
MAX_DISTANCE n'est plus utilisé et le commentaire
"// Inverse la direction du moteur (était HIGH, maintenant LOW)" est faux
Si on veut voir si c'est un problème d'ordre envoyés au moteur, il suffit de supprimer la partie incriminée, par exemple en envoyant le code:
void loop() {
delay(50); // Attendre 50ms entre chaque mesure pour éviter les faux positifs
int distance = sonar.ping_cm(); // Mesure la distance en centimètres
}