Bonjour je suis actuellement entrain de réalisé un projet pour ma dernière année de qualification électricien automaticien, j'ai besoin a un moment de faire fonctionné un moteur pas a pas qui suite a un signal envoyé a la carte arduino doit effectuer une rotation de 90° puis s'arrête, ensuite la carte arduino reçois un signal qui vas faire encore tourné le moteur pas a pas de 90° puis s'arrêté, et finalement après avoir reçus un troisième signal le moteur doit effectuer une rotation de 180° dans le sens inverse pour revenir en position initial.
J'ai réussie a programmé un petit moteur pas a pas (28byj-48) mais malheureusement se dernier n'avais pas assez de couple. Je l'avais programmer de cette manière.
int iRotate;
void setup() {
Serial.begin(9600);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
}
void loop() {
//mouvement de 90° du moteur pas a pas
digitalWrite(5, HIGH);
do {
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delay(5);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delay(5);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
delay(5);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(5);
iRotate++;
} while (iRotate <= 128);
iRotate = 0;
//mouvement de 90° du moteur pas a pas
digitalWrite(6, HIGH);
do {
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delay(5);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delay(5);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
delay(5);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(5);
iRotate++;
} while (iRotate <= 128);
iRotate = 0;
//mouvement de -180° du moteur pas a pas
digitalWrite(7, HIGH);
do {
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
delay(5);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delay(5);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delay(5);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(5);
iRotate++;
} while (iRotate <= 256);
iRotate = 0;
}
J'ai donc opté pour un moteur pas a pas nema 4 fil (plus coupleux) et un driver tb6600, mais je ne trouve aucune documentation sur le fait de le faire tourner que d'un certain nombre de pas précis.
Merci d'avance pour votre aide et désolé pour les faute d'orthographe...
