Je rencontre un soucis avec mon moteur PàP (42BYGHW208 Stepper Motor).
Voila, pour des exo je le faisait tourner à 40 RPM, mais la pour mon utilisation réelle j'aurais besoin de 1200 RPM, je sais que ça peut être beaucoup pour un moteur PàP, mais en cherchant un peux il me semble qu'il est censé l'atteindre.
Sauf que dans mon cas même à 50 RPM il décroche, il ne tourne plus ou quasiment plus voir BIP uniquement(1200 RPM)
J'utilise un Arduino Uno avec un motor Shield V3 et ce moteur PàP mais la datasheet est plutôt incomplète.
Mais je devrais pouvoir monter un minimum, 40RPM c'est rien du tout, je trouve ça vraiment étrange non ?
Merci par avance aux personnes qui prendront le temps de me répondre.
Voici le code que j'utilise ( juste pour mes essais de vitesse):
#include <Stepper.h>
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on the motor shield
Stepper myStepper(stepsPerRevolution, 12,13);
// give the motor control pins names:
const int pwmA = 3;
const int pwmB = 11;
const int brakeA = 9;
const int brakeB = 8;
const int dirA = 12;
const int dirB = 13;
int x = 0;
void setup() {
Serial.begin(9600);
// set the PWM and brake pins so that the direction pins // can be used to control the motor:
pinMode(pwmA, OUTPUT);
pinMode(pwmB, OUTPUT);
pinMode(brakeA, OUTPUT);
pinMode(brakeB, OUTPUT);
digitalWrite(pwmA, HIGH);
digitalWrite(pwmB, HIGH);
digitalWrite(brakeA, LOW);
digitalWrite(brakeB, LOW);
// initialize the serial port:
Serial.begin(9600);
// set the motor speed (for multiple steps only):
myStepper.setSpeed(900);
}
void loop() {
myStepper.step(200);
delay(1000);
myStepper.step(-200);
delay(2000);
}
ces caractéristiques définissent - si tout est de bonne qualité - les performances max de votre stepper (qui ne sont pas prévu pour tourner super vite généralement)
Merci pour le site, très utile, j'ai beau avoir cherché sur internet toute la matinée je ne l'avais pas trouvé!
En revanche j'ai continué mes test en début d'après midi et j'arrive maintenant a monté dans les 400 RPM sans décrochage avec ce code ne faite pas attention au digital.read c'est unqiuement pour ne pas qu'il tourne non stop lorsque je téléverse)
#include <Stepper.h>
const int stepsPerRevolution = 100; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on the motor shield
Stepper myStepper(stepsPerRevolution, 12,13);
// give the motor control pins names:
const int pwmA = 3;
const int pwmB = 11;
const int brakeA = 9;
const int brakeB = 8;
const int dirA = 12;
const int dirB = 13;
const int ButPin = 4;
int buttonState = 0;
int x = 0;
void setup() {
Serial.begin(9600);
// set the PWM and brake pins so that the direction pins // can be used to control the motor:
pinMode(pwmA, OUTPUT);
pinMode(pwmB, OUTPUT);
pinMode(brakeA, OUTPUT);
pinMode(brakeB, OUTPUT);
digitalWrite(pwmA, HIGH);
digitalWrite(pwmB, HIGH);
digitalWrite(brakeA, LOW);
digitalWrite(brakeB, LOW);
pinMode(ButPin, INPUT_PULLUP);
// initialize the serial port:
Serial.begin(9600);
// set the motor speed (for multiple steps only):
myStepper.setSpeed(450);
myStepper.step(100);
}
void loop() {
buttonState = digitalRead(ButPin);
while (buttonState == HIGH) {
myStepper.step(200);
delay(1000);
myStepper.step(-200);
delay(2000);
buttonState = digitalRead(ButPin);}
}
Mon moteur est bien a 200 pas (1.8°), mais en disant qu'il en fait 100 il tourne plus vite je ne comprend pas tout, quelqu'un pourrait m'expliquer ?
@J-M-L
Non je ne dispose pas de tachymètre malheureusement mais je vois bien ou vous voulez en venir es-ce que les 400 RPM annoncés sont bien réels, bonne question
Article intéressant en effet, mais qui ne m'a pas permis de comprendre pourquoi je peux monter plus ou moins en vitesse uniquement en déclarant un nombre de pas inférieur (100 à la place de 200).
Arnaud_G:
... comprendre pourquoi je peux monter plus ou moins en vitesse uniquement en déclarant un nombre de pas inférieur (100 à la place de 200). ...
En déclarant 100 pas au lieu de 200, selon la fonction suivante de la bibliothèque Stepper :
vous avez simplement multiplié step_delay par deux. Votre moteur ne tourne donc pas plus vite. A une vitesse commandée de 450 tours/mn, il tourne en fait à 450 / 2 = 225 tours/mn
Vous auriez eu strictement la même chose en écrivant :
Hmm oui je pensais à ça également mais pourquoi alors lorsque je déclare mon stepper en 200 pas sa vitesse max est de 40 RPM(0.66HZ) il décroche avec des valeurs supérieures.
Tandis que si je le déclare en 100 Pas il monte à 400 RPM/2=200 RPM(3.33HZ) sans décrocher :o