Nema 17 et driver A4988

Bonjour,
j'ai projet de fabriquer ma sableuse j'ai donc :

J’ai le socle rouleau avec le nema 17
J’ai acheter le driver A 4988
Je possede un capteur de distance qui me servira a l'activer .

APres câblage et mise du code le moteur fait du bruit mais ce déplace pas .

Est ce que le câblabage et bon ?
Est ce que le code fabriquer avec ( le chat) et correcte?

JE n'ais jamais experimenter ce moteur .
'J´ai mis un fusible 25v 100 uf entre les borne ms de l'alim 12v 1,2a que j'avais pour le nema .
ESt ce que le condo de bonne ref :face_with_monocle: ..

Si quelqu'un a un code simple pour deja tester le moteur car je ne sais pas quel valeur lui mettre je me fie au chat :wink: jlui demande de verrifier que ya pas d'erreur quand meme.

Je ne c'est pas trop quoi faire je suis bloquer :frowning:

Voici des photos du montage et j'essaie de mettre le code aussi .

// Broches du module A4988
const int DIR_PIN = 8;  // Broche DIR
const int STEP_PIN = 9; // Broche STEP

void setup() {
  pinMode(DIR_PIN, OUTPUT);
  pinMode(STEP_PIN, OUTPUT);
}

void loop() {
  digitalWrite(DIR_PIN, HIGH); // Sens horaire

  // Faire tourner le moteur pas à pas
  for (int i = 0; i < 200; i++) { // Faire un tour (200 pas pour le NEMA 17)
    digitalWrite(STEP_PIN, HIGH);
    delay(5); // Réglage de la vitesse du moteur (ajustez si nécessaire)
    digitalWrite(STEP_PIN, LOW);
    delay(5); // Réglage de la vitesse du moteur (ajustez si nécessaire)
  }
  delay(1000); // Pause d'une seconde avant de changer de sens
  digitalWrite(DIR_PIN, LOW); // Sens anti-horaire

  // Faire tourner le moteur pas à pas dans l'autre sens
  for (int i = 0; i < 200; i++) {
    digitalWrite(STEP_PIN, HIGH);
    delay(5); // Réglage de la vitesse du moteur (ajustez si nécessaire)
    digitalWrite(STEP_PIN, LOW);
    delay(5); // Réglage de la vitesse du moteur (ajustez si nécessaire)
  }
  delay(1000); // Pause d'une seconde avant de recommencer
}


Merci 👐

Bonjour lefourbi

Au moyen de la bibliothèque AccelStepper et de son exemple Bounce.pde

Il suffit de modifier cette ligne:
AccelStepper stepper; // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5
en
AccelStepper stepper(1, pinStep, pinDir;

Afin d'indiquer ton câblage, la pin du A4988 ENABLE étant "en l'air" ou à GND.

Après tu peux jouer avec les paramètres:

	stepper.setMaxSpeed(100);
	stepper.setAcceleration(20);

Autre documentation utile sur AccelStepper.

Cordialement
jpbbricole

Je pense avoir pas mal avancer,
J’ai pas tout compris encore :roll_eyes:

Mais j’ai réussi a faire ce dont je voulais :face_with_hand_over_mouth:

Le moteur grogne au debut je c’est pas si c’est a cause du condo que j’ai mis en 25v100uh
Qui fait pas le job ptet que je mette un condo 12v100uh ?

je n’arrive pas a poster de video pour montre .
Alors voici une photo

Le but etant de soit sabler des pieces d’impression avec le bocal sableux .

Soit,
de pouvoir utiliser mes bobine de 3 et 10 kilos sur l’imprimante 3d qui sans sa n’arriverais pas a tirer min fil .
Resultat pour 30€ je peut mettre de grosse bobine d’impression au top .

Sauf erreur de ma part, je ne vois pas du tout comment il est câblé!

Si un moteur ne tourne pas:

  • l'inversion des deux fils centraux du moteur permet souvent de résoudre le problème. C'est l'erreur la plus classique.
  • essayer avec une vitesse plus basse, par exemple 1 tour par minute. C'est l'erreur N°2.
  • essayer le moteur à vide
// Broches du module A4988
const int DIR_PIN = 8;  // Broche DIR
const int STEP_PIN = 9; // Broche STEP

void setup() {
  pinMode(DIR_PIN, OUTPUT);
  pinMode(STEP_PIN, OUTPUT);
}

void loop() {
  // Faire tourner le moteur pas à pas
  digitalWrite(STEP_PIN, HIGH);
  delay(500); // Réglage de la vitesse du moteur (ajustez si nécessaire)
  digitalWrite(STEP_PIN, LOW);
  delay(500); // Réglage de la vitesse du moteur (ajustez si nécessaire)
}

Pour les tests 1 pas par seconde est une bonne valeur.

En passant en 8 ou 16 micros pas, le moteur fera moins de bruit, tournera mieux, mais il faut dans ce cas envoyer 8 ou 16 fois plus d'impulsions, c'est à dire diminuer les temporisations par 8 ou 16 en mettant environ 50 à la place de 500.

Note: plus tu donnes de renseignements qui te paraissent inutiles, plus la réponse peut être adaptée. Dire "c'est un nema17" est comme dire "un véhicule à 4 roues". On ne sait pas du tout le type de moteur qui est utilisé.

je vous remercie grandement pour vos réponse j'imprime actuellement le chassis pour finir l'assemblage et je verrai en pratique les réglage a optimisé car je ne sais pas trop comment sa ce passe.

je débute en impression et arduino , je passe bcp de temps a chercher des infos et apprendre des choses .

je reviens des que tout est imprimer mais y en as pour 48 H

Hello ,
J’ai imprimé mon socle et la partie chassis
Mais le code me rend fou depuis 2 jours,
J’ai tester certaine librerie certaine fonctionne d’autres non .
Je modifie le code et sa fonctionne pas , les tutos sont bcp trop complex a mon gout .
Les explications sont compliquer et l’anglais m’aide pas meme si je me debrouille un peut quand meme .

Voici comment j’ai cablé .j’ai juste inversé le rouge et bleu sur le driver car d’apres mes bobines je pense que c’est comme sa sinon j’ai rien compris au bobine aussi :face_with_peeking_eye: .(c’est possible j’ai mal branché encore).

Je voudrais que mon capteur de distance ultrason me déclenche le moteur a moins de 15cm . Je voudrais pouvoir ajuster les paramettre de la vitesse de rotation .
En gros si la distance est inferieur a 15 cm le moteur s’engage ( si possible progressivement)
Sinon rien .
J’arrive pas a coder :expressionless::exploding_head: j’ai essayer ce que je connais mais sa marche pas comme je veux .

J’ai l’impression que ce arduino est plus fait pour les electricien et électronicien, sa fait un ans que je bidouille la dessu et c’est des galere pas possible pour coder un petit truc .
C’est pas fait pour les debutants on comprend la moitier des choses et c’est tres compliqué quand on connais rien en elec et electro.

J’espere qu’il vont faire un nouveau arduino facile a commander et en français.

Sa me rend fou cette carte arduino a reglé :exploding_head:

Et c’est pas ecrit dans la notice que quand on branche mal defois sa brule :face_with_peeking_eye:

Bonsoir lefourbi
Dans ton montage tu as un fil brun entre la pin 7 de l'Arduino et le signal ENABLE du A4988, or tu ne gères pas ce signal, le mieux est d'enlever ce fil.

Cordialement
jpbbricole

Je l’ai retiré oui j’ai vu effectivement que tt le monde ne l’utilise pas ni les ms1/2/3 .

J’attend de voir si quelqu’un(e)
A un schémas et un code valable car trop d’info et d’intox sur internet je c’est pas quoi faire ya trop d’infos divergente :confused:

Tu demande de l'aide, mais on ne sait pas du tout quel moteur tu as (j'ai un nema17 c'est comme dire j'ai une voiture à 4 roues), on ne sait pas vraiment quel est le câblage fait et on n'a aucune idée du programme de test. En gros il nous reste la boulle de cristal pour t'aider.

Avant de faire fonctionner tout ensemble, il est souvent opportun de faire fonctionner un seul élément à la fois. Si le moteur ne tourne pas correctement par exemple, il ne tournera pas mieux si tout est branché.

bonjour,
je m'excuse étant débutant? je ne pense effectivement pas a donner les bonne infos et surtout je pensais que c'était son nom qui le caractérisé.

d'autres part je vais un peut dans tout les sens car je n'ai que très peut de repère dans arduino je me perd assez vite.

j'essaie donc de pas aller plus vite que la musique et de contenir mes frustration .

le moteur est un NEMA 17 42x34 (pas plus d'info )
j'ai acheter ce kit:

object acheter amazon

j'ai ajouté un potentiomètre comme sur certain schemas pour géré la vitesse de rotation moteur (en plus d'un réglage des" pas" que je peut moduler dans le code)

j'ai repris le code pas a pas a l'aide du livre biblique (arduino guide complet) et chat gpt , afin de reprendre chaque étape de codage,

cela ne fonctionne pas, j'ai tester le moteur seul ok sa fonctionne , le capteur aussi j'ai meme les valeur qui s'afiche sur le (moniteur serie)

pouvez vous me dire etapes par etapes quoi faire avec des mots simple pour que je puisse etre aider .

// 1 Bibliotheque de controle utilisé (ultra son et driver A4988)

#include <NewPing.h>
#include <AccelStepper.h>

// 2 Déclaration des broches conecter a l'arduino

#define POTENTIOMETER_PIN A0  // Broche du potentiomètre
#define DIR_PIN 8             // Broche direction du moteur pas à pas
#define STEP_PIN 9            // Broche du nombres de pas du moteur pas à pas
#define TRIGGER_PIN 10        // Broche qui envoie l'onde capteur ultrasonique
#define ECHO_PIN 11           // Broche de réception de l'onde du capteur ultrasonique
#define ENABLE_PIN 6          // Broche d'activation/désactivation de la carte driver 4988

// 3 Initialisation du capteur et actioneur (moteur et capteur ultrason)

AccelStepper stepperMotor(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); // Initialise le moteur

NewPing sonar(TRIGGER_PIN, ECHO_PIN);  // Initialise le capteur ultrason

// 4 Déclaration des variables (integration vitesse et distance minimale)

int motorSpeed = 0;  // Variable pour la vitesse du moteur
int minDistance = 10;  // Distance minimale pour déclencher le moteur (en cm)

// 5 Fonction de contrôle du moteur :

void controlMotor() {
   int distance = sonar.ping_cm(); // analyse de la longueur de l'onde

   int potValue = analogRead(POTENTIOMETER_PIN);// Lecture de la valeur du potentiomètre pour ajuster manuellement la vitesse
   motorSpeed = map(potValue, 0, 1023, 0, 200); // remplacer (2OO) pour augmenter les nompre de pas (200 = tour complet)

   // Activation/Désactivation du moteur en fonction de la distance
   // si la distance est inf a distance mini=10 et vitesse moteur sup a zero
   if (distance < minDistance && motorSpeed > 0) {
      stepperMotor.enableOutputs(); //activation cable enable 
      stepperMotor.setSpeed(motorSpeed); //vitesse en fonction de motor speed
      stepperMotor.runSpeed(); // Fait tourner le moteur à la vitesse définie "200 pas" et intensité du potar
      Serial.println(distance); // ecrit la distance en cm du ultrason sur l'ecran de controle ide
   } else {  // sinon
      stepperMotor.disableOutputs();// pas du moteur eteint en sortie
   }
}


// 6 le setup le code qui ce lit qu'une fois

void setup() {
   Serial.begin(9600); // il escrit des choses dans l'ecran de controle ide(je c'est pas trop ce quil ecrit pour le moment)
   stepperMotor.disableOutputs(); // Désactive le moteur au demarrage
}

// 7 loop le programme qui tourne en rond (comme le chat)

void loop() {
   controlMotor(); // Appelle la fonction de contrôle du moteur
   /*
void controlMotor() {
   int distance = sonar.ping_cm(); // analyse de la longueur de l'onde

   int potValue = analogRead(POTENTIOMETER_PIN);// Lecture de la valeur du potentiomètre pour ajuster manuellement la vitesse
   motorSpeed = map(potValue, 0, 1023, 0, 200); // remplacer (2OO) pour augmenter les nompre de pas (200 = tour complet)

   // Activation/Désactivation du moteur en fonction de la distance
   // si la distance est inf a distance mini=10 et vitesse moteur sup a zero
   if (distance < minDistance && motorSpeed > 0) {
      stepperMotor.enableOutputs(); //activation cable enable 
      stepperMotor.setSpeed(motorSpeed); //vitesse en fonction de motor speed
      stepperMotor.runSpeed(); // Fait tourner le moteur à la vitesse définie "200 pas" et intensité du potar
      Serial.println(distance); // ecrit la distance en cm du ultrason sur l'ecran de controle ide
   } else {  // sinon
      stepperMotor.disableOutputs();  pas du moteur eteint en sortie
   }
}*/

   delay(50); // delais entre chaque loop
}





Voici des photo du montage si jamais .
Merci a cous tous
Harold

Bonsoir lefourbi

Quelle doit être l'interaction entre le capteur et le moteur?
Le moteur avance quand la distance diminue et il recule quand la distance augmente?

A+
Cordialement
jpbbricole

Bonjour jpb,

Alors pour tout expliqué ,
je voudrais faire tourner une bobine de fil car mon imprimante n’arrive pas a tirer le fil . Car la bobine et trop grosse !

Je voudrais que la bobine ce déroule avec la tension du fil.

j’ai une palette posé sur mon fil avec un capteur ultrason au dessus, quand la distance est inférieur a 10cm le moteur dois s’active pour dérouler la bobine,
le fil ce détend (distance +10 cm) et le moteur ce coupe . Ainsi de suite .

Le potar c’est pour géré la vitesse, que la bobine valding pas je ne c’est ou ou sorte des rouleau.
Le potar pour géré la vitesse en plus du nombre de pas,car si je dois adapter les bobine j’aimerais éviter de remettre un code a chaque fois . Je cale mes pas et apres j’adapte la vitesse.
Voila je pense avoir tout dit .
Merci a vous pour votre aide :+1:

Bonjour lefourbi

Voilà qui est plus clair :wink:

Ca ne fonctionnait pas du fait d'un mauvais choix quand à la fonction AccelStepper choisie;

		stepperMotor.setSpeed(motorPas); //vitesse en fonction de motor speed
		stepperMotor.runSpeed(); // Fait tourner le moteur à la vitesse définie "200 pas" et intensité du potar

je les ai changées par:

		stepperMotor.move(motorPas);
		stepperMotor.runToPosition();

Je te laisses regarder la doc.

J'ai changé la variable:
int motorSpeed
en
int motorPas
Ainsi le potentiomètre règle le déplacement du moteur, en pas.

La vitesse du moteur ainsi que son accélération se règlent dans setup():

	stepperMotor.setMaxSpeed(200);     // Vitesse maximum du moteur
	stepperMotor.setAcceleration(200);     // Accélération du moteur

Le programme:

// 1 Bibliotheque de controle utilisé (ultra son et driver A4988)

#include <NewPing.h>
#include <AccelStepper.h>

// 2 Déclaration des broches conecter a l'arduino

#define POTENTIOMETER_PIN A0  // Broche du potentiomètre
#define DIR_PIN 8             // Broche direction du moteur pas à pas
#define STEP_PIN 9            // Broche du nombres de pas du moteur pas à pas
#define TRIGGER_PIN 10        // Broche qui envoie l'onde capteur ultrasonique
#define ECHO_PIN 11           // Broche de réception de l'onde du capteur ultrasonique
#define ENABLE_PIN 6          // Broche d'activation/désactivation de la carte driver 4988

// 3 Initialisation du capteur et actioneur (moteur et capteur ultrason)

AccelStepper stepperMotor(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); // Initialise le moteur

NewPing sonar(TRIGGER_PIN, ECHO_PIN);  // Initialise le capteur ultrason

// 4 Déclaration des variables (integration vitesse et distance minimale)

int motorPas = 0;  // Variable pour la vitesse du moteur
int minDistance = 10;  // Distance minimale pour déclencher le moteur (en cm)

// 5 Fonction de contrôle du moteur :

void controlMotor() {
	int distance = sonar.ping_cm(); // analyse de la longueur de l'onde

	int potValue = analogRead(POTENTIOMETER_PIN);// Lecture de la valeur du potentiomètre pour ajuster manuellement la vitesse
	motorPas = map(potValue, 0, 1023, 0, 200); // remplacer (2OO) pour augmenter les nompre de pas (200 = tour complet)

	//distance = 7;     // Pour les essais jpbbricole
	//motorPas = 100;

	// Activation/Désactivation du moteur en fonction de la distance
	// si la distance est inf a distance mini=10 et vitesse moteur sup a zero
	if (distance < minDistance && motorPas > 0) {
		stepperMotor.enableOutputs(); //activation cable enable
		stepperMotor.move(motorPas);
		stepperMotor.runToPosition();
		//stepperMotor.setSpeed(motorPas); //vitesse en fonction de motor speed
		//stepperMotor.runSpeed(); // Fait tourner le moteur à la vitesse définie "200 pas" et intensité du potar
		Serial.println(distance); // ecrit la distance en cm du ultrason sur l'ecran de controle ide
		} else {  // sinon
		stepperMotor.disableOutputs();// pas du moteur eteint en sortie
	}
}


// 6 le setup le code qui ce lit qu'une fois

void setup() {
	Serial.begin(9600); // il escrit des choses dans l'ecran de controle ide(je c'est pas trop ce quil ecrit pour le moment)

	stepperMotor.disableOutputs(); // Désactive le moteur au demarrage
		stepperMotor.setMaxSpeed(200);     // Vitesse maximum du moteur
		stepperMotor.setAcceleration(200);     // Accélération du moteur
}

// 7 loop le programme qui tourne en rond (comme le chat)

void loop() {
	controlMotor(); // Appelle la fonction de contrôle du moteur
	/*
	void controlMotor() {
	int distance = sonar.ping_cm(); // analyse de la longueur de l'onde

	int potValue = analogRead(POTENTIOMETER_PIN);// Lecture de la valeur du potentiomètre pour ajuster manuellement la vitesse
	motorSpeed = map(potValue, 0, 1023, 0, 200); // remplacer (2OO) pour augmenter les nompre de pas (200 = tour complet)

	// Activation/Désactivation du moteur en fonction de la distance
	// si la distance est inf a distance mini=10 et vitesse moteur sup a zero
	if (distance < minDistance && motorSpeed > 0) {
	stepperMotor.enableOutputs(); //activation cable enable
	stepperMotor.setSpeed(motorSpeed); //vitesse en fonction de motor speed
	stepperMotor.runSpeed(); // Fait tourner le moteur à la vitesse définie "200 pas" et intensité du potar
	Serial.println(distance); // ecrit la distance en cm du ultrason sur l'ecran de controle ide
	} else {  // sinon
	stepperMotor.disableOutputs();  pas du moteur eteint en sortie
	}
	}*/

	delay(50); // delais entre chaque loop
}

J'ai laissé les lignes obsolètes en remarque.
C'est essayé "en vrai" mais sans le RADAR,

A+
Cordialement
jpbbricole

Je vous remercie grandement pour l’aide,
je ne peut malheureusement pas aller faire des test et surtout essayer de comprendre le pourquoi du comment .(le plus important pour comprendre et avancer a mon gout ).

Je suis papa depuis peut et je dois m’occuper de mon petit .
Demain maman sera plus dispo pour bb j’essaie et je vous donne un retour si c’est pas demain ce sera dans les jours qui suivent .
Encore merci .
:+1:

Bonsoir lefourbi

Il n'y a rien d'urgent, un petit bout d'choux est une occupation prioritaire :wink:

Une toute belle soirée!
jpbbricole

1 Like

Merci bcp oui ,
Sa ma changé ma vie, oui c’est ma priorité dans ma vie avant tout maintenant :smiling_face:

1 Like

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