Dans une imprimante j'ai récupéré des moteur PAP, 48 steps, 24volts bipolaire (4 fils).
J'ai essayer d'utiliser la librairie Stepper.h avec l'exemple sur Arduino-Playground, mais ça ne fonctionnait pas correctement.
J'ai trouvé un site sur le quels sont décrites les séquences de fonctionnement d'un PAP :
http://www.positron-libre.com/electronique/moteurpasapas/rappel-cours-moteur-pas-pas.htm
En m'inspirant du mode "demi-pas", j'ai fait ce petit code :
int A_Pin = 13; // H-bridge patte 1
int B_Pin = 9; // H-bridge patte 2
int C_Pin = 12; // H-bridge patte 9
int D_Pin = 10; // H-bridge patte 15
void Step_0();
void Step_1();
void Step_2();
void Step_3();
void Step_4();
void Step_5();
void Step_6();
void Step_7();
void Step_8();
void Step_0(){
digitalRead(A_Pin);
digitalRead(B_Pin);
digitalRead(C_Pin);
digitalRead(D_Pin);
}
void Step_1(){
digitalWrite(A_Pin, HIGH);
digitalWrite(B_Pin, LOW);
digitalRead(C_Pin);
digitalRead(D_Pin);
}
void Step_2(){
digitalWrite(A_Pin, HIGH);
digitalWrite(B_Pin, LOW);
digitalWrite(C_Pin, HIGH);
digitalWrite(D_Pin, LOW);
}
void Step_3(){
digitalRead(A_Pin);
digitalRead(B_Pin);
digitalWrite(C_Pin, HIGH);
digitalWrite(D_Pin, LOW);
}
void Step_4(){
digitalWrite(A_Pin, LOW);
digitalWrite(B_Pin, HIGH);
digitalWrite(C_Pin, HIGH);
digitalWrite(D_Pin, LOW);
}
void Step_5(){
digitalWrite(A_Pin, LOW);
digitalWrite(B_Pin, HIGH);
digitalRead(C_Pin);
digitalRead(D_Pin);
}
void Step_6(){
digitalWrite(A_Pin, LOW);
digitalWrite(B_Pin, HIGH);
digitalWrite(C_Pin, LOW);
digitalWrite(D_Pin, HIGH);
}
void Step_7(){
digitalRead(A_Pin);
digitalRead(B_Pin);
digitalWrite(C_Pin, LOW);
digitalWrite(D_Pin, HIGH);
}
void Step_8(){
digitalWrite(A_Pin, HIGH);
digitalWrite(B_Pin, LOW);
digitalWrite(C_Pin, LOW);
digitalWrite(D_Pin, HIGH);
}
void setup() {
pinMode(A_Pin, OUTPUT);
pinMode(B_Pin, OUTPUT);
pinMode(C_Pin, OUTPUT);
pinMode(D_Pin, OUTPUT);
}
void loop() {
Step_1();
delay(2);
Step_2();
delay(2);
Step_3();
delay(2);
Step_4();
delay(2);
Step_5();
delay(2);
Step_6();
delay(2);
Step_7();
delay(2);
Step_8();
delay(2);
}
Ce que je trouve bizarre c'est que tout les 5 tours environ le moteur me fait un "accrochage".
De plus j'aimerais trouver le moyen de le faire tourner sans vibrations, pour cela j'avais pensé à un truc du style :
....
Step_1();
Step_0();
Step_1();
Step_1();
delay(2);
Step_2();
Step_0();
Step_2();
Step_2();
delay(2);
...
Le Step_0 me permet de mettre les pins à zéro afin de faire une sorte de "hachage" du signal, style PWM, mais c'est pas trop concluant.
Si quelqu'un à une piste à me fournir... :-?