Pourquoi mon moteur PAP fait 2 tours au lieu de 1?

J'utilise les 2 moteurs pas à pas et le programme Arduino exemple suivant:
Moteurs PAP :
ST 28 (12V) et
http://www.gongchang.com/Stepping_Motor_ST28-dp2768811/
28 BYJ - 48 - (5V)
http://www.seeedstudio.com/depot/Gear-Stepper-Motor-12V-p-335.html
Pilote de moteur : L293D
programme exemple "stepper_oneRevolution"

les deux moteurs ont les mêmes caractéristiques cinématiques:
Pas = 5.625°
Rapport de réduction: 1/64

Je devrais théoriquement avoir 4096 pas (en pas entier) pour faire un tour, or expérimentalement il faut configurer le programme à 2048 pas ("myStepper.step(2048);"

Pourquoi?

Pourtant en regardant la bibliothèque stepper la routine commande bien le moteur en pas entier (couple max) et le chrono gramme des entrés est cohérent avec la commande.

Merci de votre aide

Il y a 64 pas par tour, 4 phases, angle de 5.625° selon les spécifications du moteur.

La démultiplication mécanique est de 1:64 pour ce moteur réducté.

Un tour : 360° / 5.625° * 64 = 4096 angles avec la démultiplication.
360° / 5.625° * 64 * 4 bobines / 2 bipolaire = 2048 step / tour.

C'est ça ?

Je ne comprends pas pourquoi, il faut "4 bobines / 2 bipolaire" ?

j'ai écrit un programme sans la librairie stepper en pièce jointe.

A l'aide de l'animation flash suivante http://educypedia.karadimov.info/library/pas.swf
et si j'ai bien compris le fonctionnement, à chaque état des entrées du moteur PAP, je devrais parcourir un angle de 0,088° (5.625° * 1/64).

En conséquence pour chaque séquence du type ci-dessous, je devrais faire un pas (0,088°) et non pas le double.

...

  • // etape 1 : 0100*
  • digitalWrite(motorPin1, LOW);*
  • digitalWrite(motorPin2, HIGH);*
  • digitalWrite(motorPin3, LOW);*
  • digitalWrite(motorPin4, LOW);*
    ...

Moteur PAP_041.txt (1.29 KB)

bonjour,
c'est un unipolaire

pas-à-pas unipolaire
Alimentation : 12 Vcc.
Résistance: 280 ohms
Intensité: 42 mA
Réduction: 1/64
Nombre de pas: 64 (4096 en sortie d'axe après la réduction)
Couple: 310 gf.cm
Niveau sonore: 25 dB.
Entraxe de fixation: 35 mm
Axe: Ø5 mm avec double méplat (épaisseur 3 mm)
Longueur de l'axe: 8 mm

http://www.arduino.cc/en/Tutorial/StepperUnipolar

de plus dans ton code, tu saute des étapes

Pin2
Pin3
Pin1
Pin4

avec ca, ca devrait le faire

int motorPin1 = 8;
int motorPin2 = 10;
int motorPin3 = 11;
int motorPin4 = 12;
int delayTime = 500;

void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}

void loop() {
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
}

Malgré vos remarques, je ne comprends toujours pas.

1 impulsion -> 1 pas -> 5.625° -> (après réducteur) -> 5.625°/24

en conséquance

4096 implusions -> 4096 pas -> 5.625°/64 * 4096 = 360°

Pourquoi donc, dans le programme example "stepper_oneRevolution", je dois inscrire "myStepper.step(2048);" pour que le moteur fasse un tour au lieu de 4096 pas?

De plus pour le programme ci-joint, chaque implusion génère un déplacement angulaire de 5.625°/64, il me faudrait donc pour faire un tour 1024 cycles * 4 impulsions * 5.625°/64 pour faire un tour or je dois inscrire 512 cycles dans ma boucle.

Moteur PAP_V041.txt (1.36 KB)

In spite of your remarks, I do not still understand.

1 implusion -> 1 step -> 5.625/64°

so

4096 implusions -> 4096 steps -> 5.624°/64*4096 = 360 °

So why, in the example program "stepper_oneRevolution", I have to register " myStepper.step (2048); " so that the engine makes 1 revolution instead of 4096 steps?

Furthermore for the attached program, every implusion generates an angular movement of 5.625 °/64, I would thus need to make 1 revolution: 1024 cycles * 4 impulses * 5.625 °/64 to make 1 revolution yet I have to register 512 cycles in my loop.

Moteur PAP_V041.txt (1.36 KB)

Personne:
In spite of your remarks, I do not still understand.
1 implusion -> 1 step -> 5.625/64°
so
4096 implusions -> 4096 steps -> 5.624°/64*4096 = 360 °
So why, in the example program "stepper_oneRevolution", I have to register " myStepper.step (2048); " so that the engine makes 1 revolution instead of 4096 steps?
Furthermore for the attached program, every implusion generates an angular movement of 5.625 °/64, I would thus need to make 1 revolution: 1024 cycles * 4 impulses * 5.625 °/64 to make 1 revolution yet I have to register 512 cycles in my loop.

heuuuu pourquoi quand on fait un quote, ca passe en anglais?

sinon pour répondre
4096 en sortie d'axe après la réduction
arrête de penser en angle, pense en nb de pas.
si on suit la logique le moteur principale ferait 64 pas pour une réduction de 1/64, ce qui donne bien 4096 pas après la sortie réduction.

dans ton txt tu mélange encore les phases et tu en saute.
je t'ai donné un exemple au dessus.

infobarquee:
dans ton txt tu mélange encore les phases et tu en saute.
je t'ai donné un exemple au dessus.

Pas forcement, tout dépend comment c'est branché. Sur les 28 BYJ - 48 j'ai dû utiliser des séquences dans le même genre pour le faire tourner. Mais en unipolaire ... Comment est-il relié ? Autant il est branché en bi polaire ce qui expliquerait peut-être le problème

Ci-joint le câblage avec l'arduino.

Arduino - motor PAP - forum_bb.pdf (1010 KB)

infobarquee, j'ai testé ton code, j'ai le même problème; 2 tours avec nbpas=1024.
J'aimerai bien travailler avec uniquement avec les pas, mais je n'ai pas de corepondance pas et variation angulaire.

unipolar_stepper_motor_pas_entier_042.txt (1.31 KB)