Bonjour,
Depuis quelques jours j'essaye de piloter un moteur PaP d'imprimante avec la carte Arduino.
Le fil de discussions à ce sujet sur le forum Arduino. ICI
J'arrive à le faire tourner en continu, mais si je veux le faire avancer d'un nombre de pas déterminés, en dessous de 16 pas ça ne marche pas.
C'est un moteur bipolaire 48 pas que je tente d'utiliser en demi-pas.
Je n'arrive pas à trouver plusieurs choses:
-Lorsque je programme le nombre de pas à 96, seul un demi-tour est effectué, il me semble que le moteur devrait faire un tour ?
-Lorsque je programme 100 pas, le moteur fait seulement 96 pas et non 96 + 4 (100) ?
-Lorsque je programme un nombre de pas inférieur à 16, rien ne se passe ou du moins pas grand chose ?
Voici le code sur la carte Arduino :
J'aimerais pouvoir faire tourner le moteur un pas après l'autre ou par séries de plusieurs pas (Ex: 67, 102, 343....).Code:int pinA = 9; int pinB = 13; int pinC = 12; int pinD = 10; // ici il y a les séquences des différentes pin pour faire un tour int etatPinA[8] = {1,1,0,0,0,0,0,1}; int etatPinB[8] = {0,1,1,1,0,0,0,0}; int etatPinC[8] = {0,0,0,1,1,1,0,0}; int etatPinD[8] = {0,0,0,0,0,1,1,1}; int nbPas = 96; int i = 0; int delaiEntrePas = 1350; void setup() { pinMode(pinA, OUTPUT); pinMode(pinB, OUTPUT); pinMode(pinC, OUTPUT); pinMode(pinD, OUTPUT); } void loop() { // ici on écrit sur la pin la séquence correspondante digitalWrite(pinA, etatPinA[i]); digitalWrite(pinB, etatPinB[i]); digitalWrite(pinC, etatPinC[i]); digitalWrite(pinD, etatPinD[i]); delayMicroseconds(delaiEntrePas); nbPas--; if(nbPas != 0 && i != 7) // si nbPas différent de 0 et i différent de 3, on passe au pas suivant { i++; } else if(nbPas != 0 && i == 7) // si nbPas différent de 0 et i égal à 3, on retourne au premier pas { i = 0; } else // si nbPas égal à 0 fin { while(1) { // fin } } }
-----