bonjour,
j'ai un phénomène que je ne 'explique pas.
j'ai connecté un moteur type nema17 avec un driver A4988 et une carte arduino UNO
j'ai exécuté un programme tout simple qui fait tourner le moteur un coup dans un sens puis l'autre
j'ai réalisé 3 tests:
le premier je ne fais tourner le moteur que dans 1 seul sens avec une pose de 1s entre chaque tour ,il fonctionne bien.
le second je ne fais tourner le moteur dans l'autre sens avec une pose de 1s entre chaque tour ,il fonctionne bien.
le troisième 1tour dans un sens puis 1tour dans l'autre sens et la le moteur fait n'importe quoi des fois il tourne toujours dans le même sens, des fois une rotation ne se fait pas, des fois les rotations ne sont pas complètent.
merci par avance de votre aide
Un code serait utile...
De plus il y a de nombreux tutos sur le net...
https://ec2-cli.com/fr/comment-contrôler-un-moteur-pas-à-pas-avec-pilote-a4988-et-arduino/
Voici le code
/* Simple Stepper Motor Control Exaple Code
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
*/
// defines pins numbers
const int stepPin = 3;
const int dirPin = 4;
void setup() {
// Sets the pins as Outputs
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
}
void loop() {
digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
// Makes 200 pulses for making one full cycle rotation
for(int x = 0; x < 200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(500);
digitalWrite(stepPin,LOW);
delayMicroseconds(500);
}
delay(1000); // One second delay
digitalWrite(dirPin,LOW); //Changes the rotations direction
// Makes 400 pulses for making two full cycle rotation
for(int x = 0; x < 400; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(500);
digitalWrite(stepPin,LOW);
delayMicroseconds(500);
}
delay(1000);
}
oui j'avais vu ce tuto
C' est toi qu l'a fait(sans mentir
) ou tu l'a pompé?
Je l'ai copié d'un tuto
Dans ce cas,ca doit etre ton montage,verifie les masses,et tes sorties
Oui je pense car quand je commente une partie du code pour avoir qu'un sens de rotation cela fonctionne
c'est tes sorties dans ce cas,il faut bien tout relire dans le code et verifie ton montage
sinon postez votre montage
Ce qui est étrange j'ai même essayé avec un Shield CNC sur Arduino Uno et modifié dans le programme les sorties correspondantes et j'ai le même résultat
Bonsoir didier91
Ton code fonctionne, quel tension d'alimentation des moteurs as-tu?
Cordialement
jpbbricole
.
La tension est de 12v pour le moteur
on y voit rien ![]()
je parlais d'un dessin un peu normalisé avec les pins et les connexion
Les branchement sont comme le schéma de flix09
Ce qui t'a été demandé, c'est pour contrôler s'il n'y a pas une erreur de branchement.
On sait très bien que tu ne te tromperas pas volontairement.
On sait aussi que parfois ses propres erreurs sont difficiles à voir et qu'une tierce personne aura plus de facilité pour les trouver.
Et comme toujours : Nema 17 ne donne aucun renseignement sur le moteur
Nema = National Electrical Manufacturers Association (USA)
17 = taille en pouce de la platine de fixation.
et c'est tout !
Des Nema17 on en trouve avec dizaines de modèles avec des valeurs de couples, de tension d'alimentation, de courant totalement différentes.
Derrière Nema 17 il y a une référence, donne là.
Exemple : HE19-2004S
Donne un lien vers le site marchand où tu l'as acheté.
Un site pour voir l'étendue des modèles Nema 17 :
Bonsoir didier91
D'après les explications du premier post, on peut en déduire que tes branchements sont bons.
Tu peux essayer 2 trucs:
Diminuer la vitesse, en augmentant la pause:
delayMicroseconds(500);
à
delayMicroseconds(600);
par exemple.
2èmement, régler le courant.
Quand le moteur tourne, est-ce que tu peux facilement le freiner en pinçant son axe? Si oui, tourne le petit trimmer du A4988 jusqu'à avoir un couple suffisant ou regardes les diverses méthodes sur le Net.
Cordialement
jpbbricole
Bonjour,
j'ai testé en modifiant :
delayMicroseconds(500); avec differentes valeurs cela à fait ronronné le moteur.
voici le datasheet du moteur

ce que je ne comprend pas c'est lorsque je commente une partie du programme pour avoir un seul sens de rotation cela fonctionne nickel et quand je mets les deux sens le moteur n'arrive pas à gérer la demande d'inversion du programme et là le moteur fait n'importe quoi.
j'ai réglé la vref à 480mv.

